Mercurial > octave-nkf
changeset 18751:f017240310fb gui-release
disabling global shortcuts when terminal has focus as user preference
* main-window.h: new flag _prevent_readline__conflicts, new function
configure_shortcuts
* main-window.cc (constructor): initialize new flag to true;
(notice_settings): read value of flag from settings, configure shortcuts;
(configure_shortcuts): new function setting all shortcuts from the settings;
(construct): configure shortcuts via new function;
(set_global_shortcuts): return if global shortcuts should not be disabled
when terminal has focus, use new function configure_shortcuts;
* settings-dialog.ui: new checkbox in the shortcut tab whether global shortcuts
should be desabled when terminal has focus or not
* settings-dialog.cc (constructor): read value for checkbox from settings;
(write_changed_settings): write value of checkbox to the settings
author | Torsten <ttl@justmail.de> |
---|---|
date | Fri, 02 May 2014 17:44:44 +0200 |
parents | 9ef65c422f53 |
children | 95249367d6fa |
files | libgui/src/main-window.cc libgui/src/main-window.h libgui/src/settings-dialog.cc libgui/src/settings-dialog.ui |
diffstat | 4 files changed, 116 insertions(+), 67 deletions(-) [+] |
line wrap: on
line diff
--- a/libgui/src/main-window.cc Thu May 01 13:24:27 2014 +0200 +++ b/libgui/src/main-window.cc Fri May 02 17:44:44 2014 +0200 @@ -95,7 +95,8 @@ _cmd_queue_mutex (), _dbg_queue (new QStringList ()), // no debug pending _dbg_processing (1), - _dbg_queue_mutex () + _dbg_queue_mutex (), + _prevent_readline_conflicts (true) { QSettings *settings = resource_manager::get_settings (); @@ -681,7 +682,9 @@ int icon_size = settings->value ("toolbar_icon_size",16).toInt (); _main_tool_bar->setIconSize (QSize (icon_size,icon_size)); - set_global_shortcuts (true); + _prevent_readline_conflicts = + settings->value ("shortcuts/prevent_readline_conflicts", true).toBool (); + configure_shortcuts (); set_global_shortcuts (command_window_has_focus ()); resource_manager::update_network_settings (); @@ -1282,7 +1285,7 @@ Fregister_graphics_toolkit (ovl ("qt")); - set_global_shortcuts (true); + configure_shortcuts (); } @@ -2191,15 +2194,16 @@ void main_window::set_global_edit_shortcuts (bool enable) { + // this slot is called when editor gets/loses focus if (enable) - { + { // editor loses focus, set the global shortcuts shortcut_manager::set_shortcut (_copy_action, "main_edit:copy"); shortcut_manager::set_shortcut (_paste_action, "main_edit:paste"); shortcut_manager::set_shortcut (_undo_action, "main_edit:undo"); shortcut_manager::set_shortcut (_select_all_action, "main_edit:select_all"); } else - { + { // disable shortcuts that are also provided by the editor itself QKeySequence no_key = QKeySequence (); _copy_action->setShortcut (no_key); _paste_action->setShortcut (no_key); @@ -2209,71 +2213,81 @@ } void +main_window::configure_shortcuts () +{ + // file menu + shortcut_manager::set_shortcut (_open_action, "main_file:open_file"); + shortcut_manager::set_shortcut (_new_script_action, "main_file:new_file"); + shortcut_manager::set_shortcut (_new_function_action, "main_file:new_function"); + shortcut_manager::set_shortcut (_new_function_action, "main_file:new_figure"); + shortcut_manager::set_shortcut (_load_workspace_action, "main_file:load_workspace"); + shortcut_manager::set_shortcut (_save_workspace_action, "main_file:save_workspace"); + shortcut_manager::set_shortcut (_preferences_action, "main_file:preferences"); + shortcut_manager::set_shortcut (_exit_action,"main_file:exit"); + + // edit menu + shortcut_manager::set_shortcut (_copy_action, "main_edit:copy"); + shortcut_manager::set_shortcut (_paste_action, "main_edit:paste"); + shortcut_manager::set_shortcut (_undo_action, "main_edit:undo"); + shortcut_manager::set_shortcut (_select_all_action, "main_edit:select_all"); + shortcut_manager::set_shortcut (_clear_clipboard_action, "main_edit:clear_clipboard"); + shortcut_manager::set_shortcut (_find_files_action, "main_edit:find_in_files"); + shortcut_manager::set_shortcut (_clear_command_history_action, "main_edit:clear_history"); + shortcut_manager::set_shortcut (_clear_command_window_action, "main_edit:clear_command_window"); + shortcut_manager::set_shortcut (_clear_workspace_action, "main_edit:clear_workspace"); + + // debug menu + shortcut_manager::set_shortcut (_debug_step_over, "main_debug:step_over"); + shortcut_manager::set_shortcut (_debug_step_into, "main_debug:step_into"); + shortcut_manager::set_shortcut (_debug_step_out, "main_debug:step_out"); + shortcut_manager::set_shortcut (_debug_continue, "main_debug:continue"); + shortcut_manager::set_shortcut (_debug_quit, "main_debug:quit"); + + // window menu + shortcut_manager::set_shortcut (_show_command_window_action, "main_window:show_command"); + shortcut_manager::set_shortcut (_show_history_action, "main_window:show_history"); + shortcut_manager::set_shortcut (_show_workspace_action, "main_window:show_workspace"); + shortcut_manager::set_shortcut (_show_file_browser_action, "main_window:show_file_browser"); + shortcut_manager::set_shortcut (_show_editor_action, "main_window:show_editor"); + shortcut_manager::set_shortcut (_show_documentation_action, "main_window:show_doc"); + shortcut_manager::set_shortcut (_command_window_action, "main_window:command"); + shortcut_manager::set_shortcut (_history_action, "main_window:history"); + shortcut_manager::set_shortcut (_workspace_action, "main_window:workspace"); + shortcut_manager::set_shortcut (_file_browser_action, "main_window:file_browser"); + shortcut_manager::set_shortcut (_editor_action, "main_window:editor"); + shortcut_manager::set_shortcut (_documentation_action, "main_window:doc"); + shortcut_manager::set_shortcut (_reset_windows_action, "main_window:reset"); + + // help menu + shortcut_manager::set_shortcut (_ondisk_doc_action, "main_help:ondisk_doc"); + shortcut_manager::set_shortcut (_online_doc_action, "main_help:online_doc"); + shortcut_manager::set_shortcut (_report_bug_action, "main_help:report_bug"); + shortcut_manager::set_shortcut (_octave_packages_action, "main_help:packages"); + shortcut_manager::set_shortcut (_agora_action, "main_help:agora"); + shortcut_manager::set_shortcut (_contribute_action, "main_help:contribute"); + shortcut_manager::set_shortcut (_developer_action, "main_help:developer"); + shortcut_manager::set_shortcut (_about_octave_action, "main_help:about"); + + // news menu + shortcut_manager::set_shortcut (_release_notes_action, "main_news:release_notes"); + shortcut_manager::set_shortcut (_current_news_action, "main_news:community_news"); +} + +void main_window::set_global_shortcuts (bool set_shortcuts) { + // this slot is called when the terminal gets/loses focus + + // return if the user don't want to use readline shortcuts + if (! _prevent_readline_conflicts) + return; + if (set_shortcuts) - { - - // file menu - shortcut_manager::set_shortcut (_open_action, "main_file:open_file"); - shortcut_manager::set_shortcut (_new_script_action, "main_file:new_file"); - shortcut_manager::set_shortcut (_new_function_action, "main_file:new_function"); - shortcut_manager::set_shortcut (_new_function_action, "main_file:new_figure"); - shortcut_manager::set_shortcut (_load_workspace_action, "main_file:load_workspace"); - shortcut_manager::set_shortcut (_save_workspace_action, "main_file:save_workspace"); - shortcut_manager::set_shortcut (_preferences_action, "main_file:preferences"); - shortcut_manager::set_shortcut (_exit_action,"main_file:exit"); - - // edit menu - shortcut_manager::set_shortcut (_copy_action, "main_edit:copy"); - shortcut_manager::set_shortcut (_paste_action, "main_edit:paste"); - shortcut_manager::set_shortcut (_undo_action, "main_edit:undo"); - shortcut_manager::set_shortcut (_select_all_action, "main_edit:select_all"); - shortcut_manager::set_shortcut (_clear_clipboard_action, "main_edit:clear_clipboard"); - shortcut_manager::set_shortcut (_find_files_action, "main_edit:find_in_files"); - shortcut_manager::set_shortcut (_clear_command_history_action, "main_edit:clear_history"); - shortcut_manager::set_shortcut (_clear_command_window_action, "main_edit:clear_command_window"); - shortcut_manager::set_shortcut (_clear_workspace_action, "main_edit:clear_workspace"); - - // debug menu - shortcut_manager::set_shortcut (_debug_step_over, "main_debug:step_over"); - shortcut_manager::set_shortcut (_debug_step_into, "main_debug:step_into"); - shortcut_manager::set_shortcut (_debug_step_out, "main_debug:step_out"); - shortcut_manager::set_shortcut (_debug_continue, "main_debug:continue"); - shortcut_manager::set_shortcut (_debug_quit, "main_debug:quit"); - - // window menu - shortcut_manager::set_shortcut (_show_command_window_action, "main_window:show_command"); - shortcut_manager::set_shortcut (_show_history_action, "main_window:show_history"); - shortcut_manager::set_shortcut (_show_workspace_action, "main_window:show_workspace"); - shortcut_manager::set_shortcut (_show_file_browser_action, "main_window:show_file_browser"); - shortcut_manager::set_shortcut (_show_editor_action, "main_window:show_editor"); - shortcut_manager::set_shortcut (_show_documentation_action, "main_window:show_doc"); - shortcut_manager::set_shortcut (_command_window_action, "main_window:command"); - shortcut_manager::set_shortcut (_history_action, "main_window:history"); - shortcut_manager::set_shortcut (_workspace_action, "main_window:workspace"); - shortcut_manager::set_shortcut (_file_browser_action, "main_window:file_browser"); - shortcut_manager::set_shortcut (_editor_action, "main_window:editor"); - shortcut_manager::set_shortcut (_documentation_action, "main_window:doc"); - shortcut_manager::set_shortcut (_reset_windows_action, "main_window:reset"); - - // help menu - shortcut_manager::set_shortcut (_ondisk_doc_action, "main_help:ondisk_doc"); - shortcut_manager::set_shortcut (_online_doc_action, "main_help:online_doc"); - shortcut_manager::set_shortcut (_report_bug_action, "main_help:report_bug"); - shortcut_manager::set_shortcut (_octave_packages_action, "main_help:packages"); - shortcut_manager::set_shortcut (_agora_action, "main_help:agora"); - shortcut_manager::set_shortcut (_contribute_action, "main_help:contribute"); - shortcut_manager::set_shortcut (_developer_action, "main_help:developer"); - shortcut_manager::set_shortcut (_about_octave_action, "main_help:about"); - - // news menu - shortcut_manager::set_shortcut (_release_notes_action, "main_news:release_notes"); - shortcut_manager::set_shortcut (_current_news_action, "main_news:community_news"); + { // terminal loses focus: set the global shortcuts + configure_shortcuts (); } else - { - + { // terminal gets focus: disable some shortcuts QKeySequence no_key = QKeySequence (); // file menu @@ -2311,7 +2325,6 @@ _release_notes_action->setShortcut (no_key); _current_news_action->setShortcut (no_key); } - } void
--- a/libgui/src/main-window.h Thu May 01 13:24:27 2014 +0200 +++ b/libgui/src/main-window.h Fri May 02 17:44:44 2014 +0200 @@ -270,6 +270,8 @@ void execute_debug_callback (); + void configure_shortcuts (); + bool confirm_exit_octave (); workspace_model *_workspace_model; @@ -389,6 +391,8 @@ QStringList *_dbg_queue; QSemaphore _dbg_processing; QMutex _dbg_queue_mutex; + + bool _prevent_readline_conflicts; }; class news_reader : public QObject
--- a/libgui/src/settings-dialog.cc Thu May 01 13:24:27 2014 +0200 +++ b/libgui/src/settings-dialog.cc Fri May 02 17:44:44 2014 +0200 @@ -271,6 +271,10 @@ // terminal colors read_terminal_colors (settings); + // shortcuts + ui->cb_prevent_readline_conflicts->setChecked ( + settings->value ("shortcuts/prevent_readline_conflicts", true).toBool ()); + #ifdef HAVE_QSCINTILLA // editor styles: create lexer, read settings, and create dialog elements QsciLexer *lexer; @@ -650,7 +654,6 @@ case 2: cursorType = "underline"; break; } settings->setValue ("terminal/cursorType", cursorType); - settings->sync (); #ifdef HAVE_QSCINTILLA // editor styles: create lexer, get dialog contents, and write settings @@ -685,10 +688,15 @@ write_terminal_colors (settings); + // shortcuts + settings->setValue ("shortcuts/prevent_readline_conflicts", + ui->cb_prevent_readline_conflicts->isChecked ()); shortcut_manager::write_shortcuts (); + // settings dialog's geometry settings->setValue ("settings/last_tab",ui->tabWidget->currentIndex ()); settings->setValue ("settings/geometry",saveGeometry ()); + settings->sync (); }
--- a/libgui/src/settings-dialog.ui Thu May 01 13:24:27 2014 +0200 +++ b/libgui/src/settings-dialog.ui Fri May 02 17:44:44 2014 +0200 @@ -1684,6 +1684,30 @@ <number>0</number> </property> <item> + <layout class="QHBoxLayout" name="horizontalLayout_15"> + <item> + <widget class="QCheckBox" name="cb_prevent_readline_conflicts"> + <property name="toolTip"> + <string>Select this option to prevent conflicts with readline shortcuts</string> + </property> + <property name="text"> + <string>Disable global shortcuts when terminal window has focus</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="Line" name="line_9"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item> <widget class="QLabel" name="label_21"> <property name="text"> <string>Enter a new shortcut by double clicking on the related row.</string>