diff libgui/src/main-window.cc @ 16970:78116b88dbf5

enable readline key bindings in terminal widget of gui (bug #36986) * TerminalView.cpp(constructor): connect signal indicating focus change to related slot of main window for setting/resetting shortcuts, (focusInEvent,focusOutEvent): emit focus change signal * TerminalView.h: new signal set_global_shortcuts_signal for focus change * QWinTerminalImpl.cpp(constructor): connect signal indicating focus change to related slot in main window, (focusInEvent,focusOutEvent): emit focus change signal * QWinTerminalImpl.h: new signal set_global_shortcuts_signal for focus change * main-window.cc(construct): connect signal emitted on terminal focus change to related slot of the editor for setting/resetting shortcuts, call new function set_global_shortcuts for initializing shortcuts (construct_file_menu): add shortcut conext for open action, class variable for exit action (construct_new_menu): add shortcut conext for new action, (construct_edit_menu): make find files action a class variable, (set_global_shortcuts): new slot for setting or resetting some shortcuts, also emits signal for child widgets * main-window.h: new slot set_global_shortcuts, new signal set_widget_shortcuts_signal, class wide variables for find files and exit action * file-editor.cc(construct): change QActions into class wide variables and add _ before variale names, do not set shortcuts, call set_shortcuts instead, (set_shortcuts): new function for setting or resetting shortcuts * file-editor.h: new function set_shortcuts, new names for QActions
author Torsten <ttl@justmail.de>
date Sat, 13 Jul 2013 10:28:57 +0200
parents eefcfeb37446
children c50ee84842a9
line wrap: on
line diff
--- a/libgui/src/main-window.cc	Fri Jul 12 20:31:08 2013 -0700
+++ b/libgui/src/main-window.cc	Sat Jul 13 10:28:57 2013 +0200
@@ -799,6 +799,9 @@
   connect (file_browser_window, SIGNAL (find_files_signal (const QString&)),
            this, SLOT (find_files (const QString&)));
 
+  connect (this, SIGNAL (set_widget_shortcuts_signal (bool)),
+           editor_window, SLOT (set_shortcuts (bool)));
+
   connect_uiwidget_links ();
 
   setWindowTitle ("Octave");
@@ -835,6 +838,8 @@
 
   construct_octave_qt_link ();
 
+  set_global_shortcuts (true);
+
 #ifdef HAVE_QSCINTILLA
   connect (this,
            SIGNAL (insert_debugger_pointer_signal (const QString&, int)),
@@ -966,6 +971,8 @@
   _open_action
     = file_menu->addAction (QIcon (":/actions/icons/fileopen.png"),
                             tr ("Open..."));
+  _open_action->setShortcutContext (Qt::ApplicationShortcut);
+
 
 #ifdef HAVE_QSCINTILLA
   file_menu->addMenu (editor_window->get_mru_menu ());
@@ -987,8 +994,8 @@
 
   file_menu->addSeparator ();
 
-  QAction *exit_action = file_menu->addAction (tr ("Exit"));
-  exit_action->setShortcut (QKeySequence::Quit);
+  _exit_action = file_menu->addAction (tr ("Exit"));
+  _exit_action->setShortcutContext (Qt::ApplicationShortcut);
 
   connect (preferences_action, SIGNAL (triggered ()),
            this, SLOT (process_settings_dialog_request ()));
@@ -1004,7 +1011,7 @@
   connect (save_workspace_action, SIGNAL (triggered ()),
            this, SLOT (handle_save_workspace_request ()));
 
-  connect (exit_action, SIGNAL (triggered ()),
+  connect (_exit_action, SIGNAL (triggered ()),
            this, SLOT (close ()));
 }
 
@@ -1016,6 +1023,7 @@
   _new_script_action
     = new_menu->addAction (QIcon (":/actions/icons/filenew.png"),
                            tr ("Script"));
+  _new_script_action->setShortcutContext (Qt::ApplicationShortcut);
 
   QAction *new_function_action = new_menu->addAction (tr ("Function"));
   new_function_action->setEnabled (true);
@@ -1060,9 +1068,8 @@
 
   edit_menu->addSeparator ();
 
-  QAction *find_files_action
+  _find_files_action
     = edit_menu->addAction (tr ("Find Files..."));
-  find_files_action->setShortcut (ctrl_shift + Qt::Key_F);
 
   edit_menu->addSeparator ();
 
@@ -1075,7 +1082,7 @@
   QAction *clear_workspace_action
     = edit_menu->addAction (tr ("Clear Workspace"));
 
-  connect (find_files_action, SIGNAL (triggered()),
+  connect (_find_files_action, SIGNAL (triggered()),
            this, SLOT (find_files ()));
 
   connect (clear_command_window_action, SIGNAL (triggered ()),
@@ -1571,4 +1578,33 @@
 
 }
 
+void
+main_window::set_global_shortcuts (bool set_shortcuts)
+{
+  if (set_shortcuts)
+    {
 
+      _open_action->setShortcut (QKeySequence::Open);
+      _new_script_action->setShortcut (QKeySequence::New);
+
+      _exit_action->setShortcut (QKeySequence::Quit);
+
+      _find_files_action->setShortcut (Qt::ControlModifier + Qt::ShiftModifier + Qt::Key_F);
+
+    }
+  else
+    {
+
+      QKeySequence no_key = QKeySequence ();
+
+      _open_action->setShortcut (no_key);
+      _new_script_action->setShortcut (no_key);
+
+      _exit_action->setShortcut (no_key);
+
+      _find_files_action->setShortcut (no_key);
+
+    }
+
+  emit set_widget_shortcuts_signal (set_shortcuts);
+}