changeset 25813:d98d7df9fd15

updated context menus in editor and console window (bug #46884) * QTerminal.cc (handleCustomContextMenuRequest): enable new run selection action depending on selected text; (run_selection): new slot for the action on running the selection; * QTerminal.h: new signal execute_command_in_terminal_signal, new slot run_selection with related action; (QTerminal): adding the action to the context menu and connecting the new signal to the related slot in main_window * file-editor.cc (create_context_menu): remove redo/undo from context menu
author Torsten <mttl@mailbox.org>
date Sat, 18 Aug 2018 08:21:45 +0200
parents fc74c8d2a584
children 849f1a7e9a30
files libgui/qterminal/libqterminal/QTerminal.cc libgui/qterminal/libqterminal/QTerminal.h libgui/src/m-editor/file-editor.cc
diffstat 3 files changed, 24 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/qterminal/libqterminal/QTerminal.cc	Fri Aug 17 14:49:10 2018 -0700
+++ b/libgui/qterminal/libqterminal/QTerminal.cc	Sat Aug 18 08:21:45 2018 +0200
@@ -126,6 +126,7 @@
 
     _paste_action->setEnabled (cb->text().length() > 0);
     _copy_action->setEnabled (has_selected_text);
+    _run_selection_action->setEnabled (has_selected_text);
 
     // Get the actions of any hotspots the filters may have found
     QList<QAction*> actions = get_hotspot_actions (at);
@@ -142,6 +143,17 @@
       _contextMenu->removeAction (actions.at(i));
   }
 
+// slot for running the selected code
+void
+QTerminal::run_selection ()
+{
+  QStringList commands = selectedText ().split (QRegExp ("[\r\n]"),
+                                                QString::SkipEmptyParts);
+  for (int i = 0; i < commands.size (); i++)
+    emit execute_command_in_terminal_signal (commands.at (i));
+
+}
+
 // slot for edit files in error messages
 void
 QTerminal::edit_file ()
--- a/libgui/qterminal/libqterminal/QTerminal.h	Fri Aug 17 14:49:10 2018 -0700
+++ b/libgui/qterminal/libqterminal/QTerminal.h	Sat Aug 18 08:21:45 2018 +0200
@@ -99,6 +99,8 @@
 
   void edit_mfile_request (const QString&, int);
 
+  void execute_command_in_terminal_signal (const QString&);
+
 public slots:
 
   virtual void copyClipboard (void) = 0;
@@ -117,6 +119,8 @@
 
   void set_global_shortcuts (bool focus_out);
 
+  void run_selection (void);
+
   void edit_file (void);
 
   virtual void handle_visibility_changed (bool) { };
@@ -143,6 +147,9 @@
     _selectall_action = _contextMenu->addAction (
                           tr ("Select All"), this, SLOT (selectAll ()));
 
+    _run_selection_action = _contextMenu->addAction (
+                     tr ("Run Selection"), this, SLOT (run_selection ()));
+
     _edit_action = _contextMenu->addAction (
                      tr (""), this, SLOT (edit_file ()));
 
@@ -160,6 +167,9 @@
     connect (this, SIGNAL (edit_mfile_request (const QString&, int)),
              xparent, SLOT (edit_mfile (const QString&, int)));
 
+    connect (this, SIGNAL (execute_command_in_terminal_signal (const QString&)),
+             xparent, SLOT (execute_command_in_terminal (const QString&)));
+
     connect (xparent, SIGNAL (settings_changed (const QSettings *)),
              this, SLOT (notice_settings (const QSettings *)));
 
@@ -200,6 +210,7 @@
   QAction * _paste_action;
   QAction * _selectall_action;
   QAction * _edit_action;
+  QAction * _run_selection_action;
 
   QAction *_interrupt_action;
   QAction *_nop_action;
--- a/libgui/src/m-editor/file-editor.cc	Fri Aug 17 14:49:10 2018 -0700
+++ b/libgui/src/m-editor/file-editor.cc	Sat Aug 18 08:21:45 2018 +0200
@@ -1516,9 +1516,6 @@
       menu->removeAction (a);
 
     // add editor's actions with icons and customized shortcuts
-    menu->addAction (m_undo_action);
-    menu->addAction (m_redo_action);
-    menu->addSeparator ();
     menu->addAction (m_cut_action);
     menu->addAction (m_copy_action);
     menu->addAction (m_paste_action);
@@ -2086,6 +2083,7 @@
     m_tool_bar->addSeparator ();
     // m_undo_action: later via main window
     m_tool_bar->addAction (m_redo_action);
+    m_tool_bar->addSeparator ();
     // m_copy_action: later via the main window
     m_tool_bar->addAction (m_cut_action);
     // m_paste_action: later via the main window