changeset 31692:2422fb7f1e6c

move shortcut setting functions to gui_settings from shortcut_manager * gui-settings.h, gui-settings.cc (gui_settings::set_shortcut, gui_settings::shortcut): Move here from shortcut-manager.h and shortcut-manager.cc. * documentation-bookmarks.cc, documentation.cc, dw-main-window.cc, file-editor.cc, octave-qscintilla.cc, main-window.cc, octave-dock-widget.cc, variable-editor.cc: Change all uses of set_shortcut and shortcut. Only include shortcut-manager.h where necessary.
author John W. Eaton <jwe@octave.org>
date Sun, 25 Dec 2022 12:46:53 -0500
parents fc3bc1402b0d
children 88119be1f926
files libgui/src/documentation-bookmarks.cc libgui/src/documentation.cc libgui/src/dw-main-window.cc libgui/src/gui-settings.cc libgui/src/gui-settings.h libgui/src/m-editor/file-editor.cc libgui/src/m-editor/octave-qscintilla.cc libgui/src/main-window.cc libgui/src/octave-dock-widget.cc libgui/src/shortcut-manager.cc libgui/src/shortcut-manager.h libgui/src/variable-editor.cc
diffstat 12 files changed, 185 insertions(+), 196 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/src/documentation-bookmarks.cc	Sat Dec 24 14:54:52 2022 -0500
+++ b/libgui/src/documentation-bookmarks.cc	Sun Dec 25 12:46:53 2022 -0500
@@ -30,9 +30,10 @@
 #include <QCompleter>
 #include <QDir>
 #include <QFileInfo>
+#include <QLabel>
+#include <QLineEdit>
 #include <QMenu>
 #include <QMessageBox>
-#include <QShortcut>
 #include <QVBoxLayout>
 #include <QWidget>
 
@@ -44,7 +45,6 @@
 #include "gui-preferences-sc.h"
 #include "gui-settings.h"
 #include "octave-qtutils.h"
-#include "shortcut-manager.h"
 
 #include "defaults.h"
 #include "file-ops.h"
--- a/libgui/src/documentation.cc	Sat Dec 24 14:54:52 2022 -0500
+++ b/libgui/src/documentation.cc	Sun Dec 25 12:46:53 2022 -0500
@@ -58,7 +58,6 @@
 #include "gui-preferences-sc.h"
 #include "gui-settings.h"
 #include "octave-qobject.h"
-#include "shortcut-manager.h"
 
 #include "defaults.h"
 #include "file-ops.h"
@@ -624,18 +623,16 @@
     m_tool_bar->setIconSize (QSize (icon_size, icon_size));
 
     // Shortcuts
-    shortcut_manager& scmgr = m_octave_qobj.get_shortcut_manager ();
-
-    scmgr.set_shortcut (m_action_find, sc_edit_edit_find_replace);
-    scmgr.shortcut (m_findnext_shortcut, sc_edit_edit_find_next);
-    scmgr.shortcut (m_findprev_shortcut, sc_edit_edit_find_previous);
-    scmgr.set_shortcut (m_action_zoom_in, sc_edit_view_zoom_in);
-    scmgr.set_shortcut (m_action_zoom_out, sc_edit_view_zoom_out);
-    scmgr.set_shortcut (m_action_zoom_original, sc_edit_view_zoom_normal);
-    scmgr.set_shortcut (m_action_go_home, sc_doc_go_home);
-    scmgr.set_shortcut (m_action_go_prev, sc_doc_go_back);
-    scmgr.set_shortcut (m_action_go_next, sc_doc_go_next);
-    scmgr.set_shortcut (m_action_bookmark, sc_doc_bookmark);
+    settings.set_shortcut (m_action_find, sc_edit_edit_find_replace);
+    settings.shortcut (m_findnext_shortcut, sc_edit_edit_find_next);
+    settings.shortcut (m_findprev_shortcut, sc_edit_edit_find_previous);
+    settings.set_shortcut (m_action_zoom_in, sc_edit_view_zoom_in);
+    settings.set_shortcut (m_action_zoom_out, sc_edit_view_zoom_out);
+    settings.set_shortcut (m_action_zoom_original, sc_edit_view_zoom_normal);
+    settings.set_shortcut (m_action_go_home, sc_doc_go_home);
+    settings.set_shortcut (m_action_go_prev, sc_doc_go_back);
+    settings.set_shortcut (m_action_go_next, sc_doc_go_next);
+    settings.set_shortcut (m_action_bookmark, sc_doc_bookmark);
 
     // Settings for the browser
     m_doc_browser->notice_settings ();
--- a/libgui/src/dw-main-window.cc	Sat Dec 24 14:54:52 2022 -0500
+++ b/libgui/src/dw-main-window.cc	Sun Dec 25 12:46:53 2022 -0500
@@ -39,7 +39,6 @@
 #include "gui-preferences-sc.h"
 #include "gui-settings.h"
 #include "octave-qobject.h"
-#include "shortcut-manager.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
 
@@ -130,14 +129,14 @@
   // Update the settings
   void dw_main_window::notice_settings (void)
   {
-    shortcut_manager& scmgr = m_octave_qobj.get_shortcut_manager ();
+    gui_settings settings;
 
-    scmgr.set_shortcut (m_close_action, sc_edit_file_close);
-    scmgr.set_shortcut (m_close_all_action, sc_edit_file_close_all);
-    scmgr.set_shortcut (m_close_others_action, sc_edit_file_close_other);
+    settings.set_shortcut (m_close_action, sc_edit_file_close);
+    settings.set_shortcut (m_close_all_action, sc_edit_file_close_all);
+    settings.set_shortcut (m_close_others_action, sc_edit_file_close_other);
 
-    scmgr.set_shortcut (m_switch_left_action, sc_edit_tabs_switch_left_tab);
-    scmgr.set_shortcut (m_switch_right_action, sc_edit_tabs_switch_right_tab);
+    settings.set_shortcut (m_switch_left_action, sc_edit_tabs_switch_left_tab);
+    settings.set_shortcut (m_switch_right_action, sc_edit_tabs_switch_right_tab);
   }
 
   // Slots for handling actions
--- a/libgui/src/gui-settings.cc	Sat Dec 24 14:54:52 2022 -0500
+++ b/libgui/src/gui-settings.cc	Sun Dec 25 12:46:53 2022 -0500
@@ -29,7 +29,9 @@
 
 #include <cmath>
 
+#include <QAction>
 #include <QApplication>
+#include <QDebug>
 #include <QFile>
 #include <QFileInfo>
 #include <QFontDatabase>
@@ -37,6 +39,7 @@
 #include <QMessageBox>
 #include <QNetworkProxy>
 #include <QSettings>
+#include <QShortcut>
 #include <QString>
 #include <QStringList>
 
@@ -137,6 +140,34 @@
     return key_seq;
   }
 
+  void gui_settings::set_shortcut (QAction *action, const sc_pref& scpref,
+                                   bool enable)
+  {
+    if (! enable)
+      {
+        // Disable => remove existing shortcut from the action
+        action->setShortcut (QKeySequence ());
+        return;
+      }
+
+    QString shortcut = sc_value (scpref);
+
+    if (! shortcut.isEmpty ())
+      action->setShortcut (QKeySequence (shortcut));
+    else
+      qDebug () << "Key: " << scpref.key << " not found in settings";
+  }
+
+  void gui_settings::shortcut (QShortcut *sc, const sc_pref& scpref)
+  {
+    QString shortcut = sc_value (scpref);
+
+    if (! shortcut.isEmpty ())
+      sc->setKey (QKeySequence (shortcut));
+    else
+      qDebug () << "Key: " << scpref.key << " not found in settings";
+  }
+
   void gui_settings::config_icon_theme (void)
   {
     int theme_index;
--- a/libgui/src/gui-settings.h	Sat Dec 24 14:54:52 2022 -0500
+++ b/libgui/src/gui-settings.h	Sun Dec 25 12:46:53 2022 -0500
@@ -28,7 +28,6 @@
 
 #include <QComboBox>
 #include <QIcon>
-#include <QString>
 #include <QSettings>
 #include <QShortcut>
 #include <QString>
@@ -139,6 +138,11 @@
 
     QKeySequence sc_def_value (const sc_pref& pref) const;
 
+    void set_shortcut (QAction *action, const sc_pref& scpref,
+                       bool enable = true);
+
+    void shortcut (QShortcut *sc, const sc_pref& scpref);
+
     // config_icon_theme, icon, get_default_font_family,
     // get_default_font, and possibly reload and check could be global
     // functions instead of member functions.  But at least for the icon
--- a/libgui/src/m-editor/file-editor.cc	Sat Dec 24 14:54:52 2022 -0500
+++ b/libgui/src/m-editor/file-editor.cc	Sun Dec 25 12:46:53 2022 -0500
@@ -54,7 +54,6 @@
 #include "main-window.h"
 #include "octave-qobject.h"
 #include "octave-qtutils.h"
-#include "shortcut-manager.h"
 
 #include "oct-env.h"
 
@@ -196,8 +195,8 @@
 
   void file_editor::handle_exit_debug_mode (void)
   {
-    shortcut_manager& scmgr = m_octave_qobj.get_shortcut_manager ();
-    scmgr.set_shortcut (m_run_action, sc_edit_run_run_file);
+    gui_settings settings;
+    settings.set_shortcut (m_run_action, sc_edit_run_run_file);
     m_run_action->setToolTip (tr ("Save File and Run"));  // update tool tip
 
     emit exit_debug_mode_signal ();
@@ -1387,91 +1386,90 @@
     // Shortcuts also available in the main window, as well as the related
     // shortcuts, are defined in main_window and added to the editor
 
-    shortcut_manager& scmgr = m_octave_qobj.get_shortcut_manager ();
+    gui_settings settings;
 
     // File menu
-    scmgr.set_shortcut (m_edit_function_action, sc_edit_file_edit_function);
-    scmgr.set_shortcut (m_save_action, sc_edit_file_save);
-    scmgr.set_shortcut (m_save_as_action, sc_edit_file_save_as);
-    scmgr.set_shortcut (m_close_action, sc_edit_file_close);
-    scmgr.set_shortcut (m_close_all_action, sc_edit_file_close_all);
-    scmgr.set_shortcut (m_close_others_action, sc_edit_file_close_other);
-    scmgr.set_shortcut (m_print_action, sc_edit_file_print);
+    settings.set_shortcut (m_edit_function_action, sc_edit_file_edit_function);
+    settings.set_shortcut (m_save_action, sc_edit_file_save);
+    settings.set_shortcut (m_save_as_action, sc_edit_file_save_as);
+    settings.set_shortcut (m_close_action, sc_edit_file_close);
+    settings.set_shortcut (m_close_all_action, sc_edit_file_close_all);
+    settings.set_shortcut (m_close_others_action, sc_edit_file_close_other);
+    settings.set_shortcut (m_print_action, sc_edit_file_print);
 
     // Edit menu
-    scmgr.set_shortcut (m_redo_action, sc_edit_edit_redo);
-    scmgr.set_shortcut (m_cut_action, sc_edit_edit_cut);
-    scmgr.set_shortcut (m_find_action, sc_edit_edit_find_replace);
-    scmgr.set_shortcut (m_find_next_action, sc_edit_edit_find_next);
-    scmgr.set_shortcut (m_find_previous_action, sc_edit_edit_find_previous);
-
-    scmgr.set_shortcut (m_delete_start_word_action, sc_edit_edit_delete_start_word);
-    scmgr.set_shortcut (m_delete_end_word_action, sc_edit_edit_delete_end_word);
-    scmgr.set_shortcut (m_delete_start_line_action, sc_edit_edit_delete_start_line);
-    scmgr.set_shortcut (m_delete_end_line_action, sc_edit_edit_delete_end_line);
-    scmgr.set_shortcut (m_delete_line_action, sc_edit_edit_delete_line);
-    scmgr.set_shortcut (m_copy_line_action, sc_edit_edit_copy_line);
-    scmgr.set_shortcut (m_cut_line_action, sc_edit_edit_cut_line);
-    scmgr.set_shortcut (m_duplicate_selection_action, sc_edit_edit_duplicate_selection);
-    scmgr.set_shortcut (m_transpose_line_action, sc_edit_edit_transpose_line);
-    scmgr.set_shortcut (m_comment_selection_action, sc_edit_edit_comment_selection);
-    scmgr.set_shortcut (m_uncomment_selection_action, sc_edit_edit_uncomment_selection);
-    scmgr.set_shortcut (m_comment_var_selection_action, sc_edit_edit_comment_var_selection);
-
-    scmgr.set_shortcut (m_upper_case_action, sc_edit_edit_upper_case);
-    scmgr.set_shortcut (m_lower_case_action, sc_edit_edit_lower_case);
-    scmgr.set_shortcut (m_indent_selection_action, sc_edit_edit_indent_selection);
-    scmgr.set_shortcut (m_unindent_selection_action, sc_edit_edit_unindent_selection);
-    scmgr.set_shortcut (m_smart_indent_line_or_selection_action, sc_edit_edit_smart_indent_line_or_selection);
-    scmgr.set_shortcut (m_completion_action, sc_edit_edit_completion_list);
-    scmgr.set_shortcut (m_goto_line_action, sc_edit_edit_goto_line);
-    scmgr.set_shortcut (m_move_to_matching_brace, sc_edit_edit_move_to_brace);
-    scmgr.set_shortcut (m_sel_to_matching_brace, sc_edit_edit_select_to_brace);
-    scmgr.set_shortcut (m_toggle_bookmark_action, sc_edit_edit_toggle_bookmark);
-    scmgr.set_shortcut (m_next_bookmark_action, sc_edit_edit_next_bookmark);
-    scmgr.set_shortcut (m_previous_bookmark_action, sc_edit_edit_previous_bookmark);
-    scmgr.set_shortcut (m_remove_bookmark_action, sc_edit_edit_remove_bookmark);
-    scmgr.set_shortcut (m_preferences_action, sc_edit_edit_preferences);
-    scmgr.set_shortcut (m_styles_preferences_action, sc_edit_edit_styles_preferences);
-
-    scmgr.set_shortcut (m_conv_eol_windows_action, sc_edit_edit_conv_eol_winows);
-    scmgr.set_shortcut (m_conv_eol_unix_action,    sc_edit_edit_conv_eol_unix);
-    scmgr.set_shortcut (m_conv_eol_mac_action,     sc_edit_edit_conv_eol_mac);
+    settings.set_shortcut (m_redo_action, sc_edit_edit_redo);
+    settings.set_shortcut (m_cut_action, sc_edit_edit_cut);
+    settings.set_shortcut (m_find_action, sc_edit_edit_find_replace);
+    settings.set_shortcut (m_find_next_action, sc_edit_edit_find_next);
+    settings.set_shortcut (m_find_previous_action, sc_edit_edit_find_previous);
+
+    settings.set_shortcut (m_delete_start_word_action, sc_edit_edit_delete_start_word);
+    settings.set_shortcut (m_delete_end_word_action, sc_edit_edit_delete_end_word);
+    settings.set_shortcut (m_delete_start_line_action, sc_edit_edit_delete_start_line);
+    settings.set_shortcut (m_delete_end_line_action, sc_edit_edit_delete_end_line);
+    settings.set_shortcut (m_delete_line_action, sc_edit_edit_delete_line);
+    settings.set_shortcut (m_copy_line_action, sc_edit_edit_copy_line);
+    settings.set_shortcut (m_cut_line_action, sc_edit_edit_cut_line);
+    settings.set_shortcut (m_duplicate_selection_action, sc_edit_edit_duplicate_selection);
+    settings.set_shortcut (m_transpose_line_action, sc_edit_edit_transpose_line);
+    settings.set_shortcut (m_comment_selection_action, sc_edit_edit_comment_selection);
+    settings.set_shortcut (m_uncomment_selection_action, sc_edit_edit_uncomment_selection);
+    settings.set_shortcut (m_comment_var_selection_action, sc_edit_edit_comment_var_selection);
+
+    settings.set_shortcut (m_upper_case_action, sc_edit_edit_upper_case);
+    settings.set_shortcut (m_lower_case_action, sc_edit_edit_lower_case);
+    settings.set_shortcut (m_indent_selection_action, sc_edit_edit_indent_selection);
+    settings.set_shortcut (m_unindent_selection_action, sc_edit_edit_unindent_selection);
+    settings.set_shortcut (m_smart_indent_line_or_selection_action, sc_edit_edit_smart_indent_line_or_selection);
+    settings.set_shortcut (m_completion_action, sc_edit_edit_completion_list);
+    settings.set_shortcut (m_goto_line_action, sc_edit_edit_goto_line);
+    settings.set_shortcut (m_move_to_matching_brace, sc_edit_edit_move_to_brace);
+    settings.set_shortcut (m_sel_to_matching_brace, sc_edit_edit_select_to_brace);
+    settings.set_shortcut (m_toggle_bookmark_action, sc_edit_edit_toggle_bookmark);
+    settings.set_shortcut (m_next_bookmark_action, sc_edit_edit_next_bookmark);
+    settings.set_shortcut (m_previous_bookmark_action, sc_edit_edit_previous_bookmark);
+    settings.set_shortcut (m_remove_bookmark_action, sc_edit_edit_remove_bookmark);
+    settings.set_shortcut (m_preferences_action, sc_edit_edit_preferences);
+    settings.set_shortcut (m_styles_preferences_action, sc_edit_edit_styles_preferences);
+
+    settings.set_shortcut (m_conv_eol_windows_action, sc_edit_edit_conv_eol_winows);
+    settings.set_shortcut (m_conv_eol_unix_action,    sc_edit_edit_conv_eol_unix);
+    settings.set_shortcut (m_conv_eol_mac_action,     sc_edit_edit_conv_eol_mac);
 
     // View menu
-    scmgr.set_shortcut (m_show_linenum_action, sc_edit_view_show_line_numbers);
-    scmgr.set_shortcut (m_show_whitespace_action, sc_edit_view_show_white_spaces);
-    scmgr.set_shortcut (m_show_eol_action, sc_edit_view_show_eol_chars);
-    scmgr.set_shortcut (m_show_indguide_action, sc_edit_view_show_ind_guides);
-    scmgr.set_shortcut (m_show_longline_action, sc_edit_view_show_long_line);
-    scmgr.set_shortcut (m_show_toolbar_action, sc_edit_view_show_toolbar);
-    scmgr.set_shortcut (m_show_statusbar_action, sc_edit_view_show_statusbar);
-    scmgr.set_shortcut (m_show_hscrollbar_action, sc_edit_view_show_hscrollbar);
-    scmgr.set_shortcut (m_zoom_in_action, sc_edit_view_zoom_in);
-    scmgr.set_shortcut (m_zoom_out_action, sc_edit_view_zoom_out);
-    scmgr.set_shortcut (m_zoom_normal_action, sc_edit_view_zoom_normal);
-    scmgr.set_shortcut (m_sort_tabs_action, sc_edit_view_sort_tabs);
+    settings.set_shortcut (m_show_linenum_action, sc_edit_view_show_line_numbers);
+    settings.set_shortcut (m_show_whitespace_action, sc_edit_view_show_white_spaces);
+    settings.set_shortcut (m_show_eol_action, sc_edit_view_show_eol_chars);
+    settings.set_shortcut (m_show_indguide_action, sc_edit_view_show_ind_guides);
+    settings.set_shortcut (m_show_longline_action, sc_edit_view_show_long_line);
+    settings.set_shortcut (m_show_toolbar_action, sc_edit_view_show_toolbar);
+    settings.set_shortcut (m_show_statusbar_action, sc_edit_view_show_statusbar);
+    settings.set_shortcut (m_show_hscrollbar_action, sc_edit_view_show_hscrollbar);
+    settings.set_shortcut (m_zoom_in_action, sc_edit_view_zoom_in);
+    settings.set_shortcut (m_zoom_out_action, sc_edit_view_zoom_out);
+    settings.set_shortcut (m_zoom_normal_action, sc_edit_view_zoom_normal);
+    settings.set_shortcut (m_sort_tabs_action, sc_edit_view_sort_tabs);
 
     // Debug menu
-    scmgr.set_shortcut (m_toggle_breakpoint_action, sc_edit_debug_toggle_breakpoint);
-    scmgr.set_shortcut (m_next_breakpoint_action, sc_edit_debug_next_breakpoint);
-    scmgr.set_shortcut (m_previous_breakpoint_action, sc_edit_debug_previous_breakpoint);
-    scmgr.set_shortcut (m_remove_all_breakpoints_action, sc_edit_debug_remove_breakpoints);
+    settings.set_shortcut (m_toggle_breakpoint_action, sc_edit_debug_toggle_breakpoint);
+    settings.set_shortcut (m_next_breakpoint_action, sc_edit_debug_next_breakpoint);
+    settings.set_shortcut (m_previous_breakpoint_action, sc_edit_debug_previous_breakpoint);
+    settings.set_shortcut (m_remove_all_breakpoints_action, sc_edit_debug_remove_breakpoints);
 
     // Run menu
-    scmgr.set_shortcut (m_run_action, sc_edit_run_run_file);
-    scmgr.set_shortcut (m_run_selection_action, sc_edit_run_run_selection);
+    settings.set_shortcut (m_run_action, sc_edit_run_run_file);
+    settings.set_shortcut (m_run_selection_action, sc_edit_run_run_selection);
 
     // Help menu
-    scmgr.set_shortcut (m_context_help_action, sc_edit_help_help_keyword);
-    scmgr.set_shortcut (m_context_doc_action,  sc_edit_help_doc_keyword);
+    settings.set_shortcut (m_context_help_action, sc_edit_help_help_keyword);
+    settings.set_shortcut (m_context_doc_action,  sc_edit_help_doc_keyword);
 
     // Tab navigation without menu entries
-    scmgr.set_shortcut (m_switch_left_tab_action, sc_edit_tabs_switch_left_tab);
-    scmgr.set_shortcut (m_switch_right_tab_action, sc_edit_tabs_switch_right_tab);
-    scmgr.set_shortcut (m_move_tab_left_action, sc_edit_tabs_move_tab_left);
-    scmgr.set_shortcut (m_move_tab_right_action, sc_edit_tabs_move_tab_right);
-
+    settings.set_shortcut (m_switch_left_tab_action, sc_edit_tabs_switch_left_tab);
+    settings.set_shortcut (m_switch_right_tab_action, sc_edit_tabs_switch_right_tab);
+    settings.set_shortcut (m_move_tab_left_action, sc_edit_tabs_move_tab_left);
+    settings.set_shortcut (m_move_tab_right_action, sc_edit_tabs_move_tab_right);
   }
 
   // This slot is a reimplementation of the virtual slot in octave_dock_widget.
--- a/libgui/src/m-editor/octave-qscintilla.cc	Sat Dec 24 14:54:52 2022 -0500
+++ b/libgui/src/m-editor/octave-qscintilla.cc	Sun Dec 25 12:46:53 2022 -0500
@@ -35,7 +35,6 @@
 #include <QKeySequence>
 #include <QMessageBox>
 #include <QMimeData>
-#include <QShortcut>
 #include <QPointer>
 #include <QTemporaryFile>
 #include <QToolTip>
@@ -61,7 +60,6 @@
 #include "marker.h"
 #include "octave-qobject.h"
 #include "octave-qscintilla.h"
-#include "shortcut-manager.h"
 #include "workspace-model.h"
 
 #include "builtin-defun-decls.h"
--- a/libgui/src/main-window.cc	Sat Dec 24 14:54:52 2022 -0500
+++ b/libgui/src/main-window.cc	Sun Dec 25 12:46:53 2022 -0500
@@ -2642,77 +2642,77 @@
 
   void main_window::configure_shortcuts (void)
   {
+    gui_settings settings;
+
     bool enable
       = ! ((m_active_dock == m_command_window) && m_prevent_readline_conflicts);
 
-    shortcut_manager& scmgr = m_octave_qobj.get_shortcut_manager ();
-
     // file menu
-    scmgr.set_shortcut (m_open_action, sc_main_file_open_file, enable);
-    scmgr.set_shortcut (m_new_script_action, sc_main_file_new_file, enable);
-    scmgr.set_shortcut (m_new_function_action, sc_main_file_new_function, enable);
-    scmgr.set_shortcut (m_new_figure_action, sc_main_file_new_figure, enable);
-    scmgr.set_shortcut (m_load_workspace_action, sc_main_file_load_workspace, enable);
-    scmgr.set_shortcut (m_save_workspace_action, sc_main_file_save_workspace, enable);
-    scmgr.set_shortcut (m_exit_action, sc_main_file_exit, enable);
+    settings.set_shortcut (m_open_action, sc_main_file_open_file, enable);
+    settings.set_shortcut (m_new_script_action, sc_main_file_new_file, enable);
+    settings.set_shortcut (m_new_function_action, sc_main_file_new_function, enable);
+    settings.set_shortcut (m_new_figure_action, sc_main_file_new_figure, enable);
+    settings.set_shortcut (m_load_workspace_action, sc_main_file_load_workspace, enable);
+    settings.set_shortcut (m_save_workspace_action, sc_main_file_save_workspace, enable);
+    settings.set_shortcut (m_exit_action, sc_main_file_exit, enable);
 
     // edit menu
-    scmgr.set_shortcut (m_copy_action, sc_main_edit_copy, enable);
-    scmgr.set_shortcut (m_paste_action, sc_main_edit_paste, enable);
-    scmgr.set_shortcut (m_undo_action, sc_main_edit_undo, enable);
-    scmgr.set_shortcut (m_select_all_action, sc_main_edit_select_all, enable);
-    scmgr.set_shortcut (m_clear_clipboard_action, sc_main_edit_clear_clipboard, enable);
-    scmgr.set_shortcut (m_find_files_action, sc_main_edit_find_in_files, enable);
-    scmgr.set_shortcut (m_clear_command_history_action, sc_main_edit_clear_history, enable);
-    scmgr.set_shortcut (m_clear_command_window_action, sc_main_edit_clear_command_window, enable);
-    scmgr.set_shortcut (m_clear_workspace_action, sc_main_edit_clear_workspace, enable);
-    scmgr.set_shortcut (m_set_path_action, sc_main_edit_set_path, enable);
-    scmgr.set_shortcut (m_preferences_action, sc_main_edit_preferences, enable);
+    settings.set_shortcut (m_copy_action, sc_main_edit_copy, enable);
+    settings.set_shortcut (m_paste_action, sc_main_edit_paste, enable);
+    settings.set_shortcut (m_undo_action, sc_main_edit_undo, enable);
+    settings.set_shortcut (m_select_all_action, sc_main_edit_select_all, enable);
+    settings.set_shortcut (m_clear_clipboard_action, sc_main_edit_clear_clipboard, enable);
+    settings.set_shortcut (m_find_files_action, sc_main_edit_find_in_files, enable);
+    settings.set_shortcut (m_clear_command_history_action, sc_main_edit_clear_history, enable);
+    settings.set_shortcut (m_clear_command_window_action, sc_main_edit_clear_command_window, enable);
+    settings.set_shortcut (m_clear_workspace_action, sc_main_edit_clear_workspace, enable);
+    settings.set_shortcut (m_set_path_action, sc_main_edit_set_path, enable);
+    settings.set_shortcut (m_preferences_action, sc_main_edit_preferences, enable);
 
     // debug menu
-    scmgr.set_shortcut (m_debug_step_over, sc_main_debug_step_over, enable);
-    scmgr.set_shortcut (m_debug_step_into, sc_main_debug_step_into, enable);
-    scmgr.set_shortcut (m_debug_step_out, sc_main_debug_step_out, enable);
-    scmgr.set_shortcut (m_debug_continue, sc_main_debug_continue, enable);
-    scmgr.set_shortcut (m_debug_quit, sc_main_debug_quit, enable);
+    settings.set_shortcut (m_debug_step_over, sc_main_debug_step_over, enable);
+    settings.set_shortcut (m_debug_step_into, sc_main_debug_step_into, enable);
+    settings.set_shortcut (m_debug_step_out, sc_main_debug_step_out, enable);
+    settings.set_shortcut (m_debug_continue, sc_main_debug_continue, enable);
+    settings.set_shortcut (m_debug_quit, sc_main_debug_quit, enable);
 
     // tools menu
-    scmgr.set_shortcut (m_profiler_start, sc_main_tools_start_profiler, enable);
-    scmgr.set_shortcut (m_profiler_resume, sc_main_tools_resume_profiler, enable);
-    scmgr.set_shortcut (m_profiler_stop, sc_main_tools_start_profiler, enable); // same, toggling
-    scmgr.set_shortcut (m_profiler_show, sc_main_tools_show_profiler, enable);
+    settings.set_shortcut (m_profiler_start, sc_main_tools_start_profiler, enable);
+    settings.set_shortcut (m_profiler_resume, sc_main_tools_resume_profiler, enable);
+    settings.set_shortcut (m_profiler_stop, sc_main_tools_start_profiler, enable); // same, toggling
+    settings.set_shortcut (m_profiler_show, sc_main_tools_show_profiler, enable);
 
     // window menu
-    scmgr.set_shortcut (m_show_command_window_action, sc_main_window_show_command, enable);
-    scmgr.set_shortcut (m_show_history_action, sc_main_window_show_history, enable);
-    scmgr.set_shortcut (m_show_workspace_action, sc_main_window_show_workspace, enable);
-    scmgr.set_shortcut (m_show_file_browser_action, sc_main_window_show_file_browser, enable);
-    scmgr.set_shortcut (m_show_editor_action, sc_main_window_show_editor, enable);
-    scmgr.set_shortcut (m_show_documentation_action, sc_main_window_show_doc, enable);
-    scmgr.set_shortcut (m_show_variable_editor_action, sc_main_window_show_variable_editor, enable);
-    scmgr.set_shortcut (m_reset_windows_action, sc_main_window_reset, enable);
-    scmgr.set_shortcut (m_command_window_action, sc_main_window_command, enable);
+    settings.set_shortcut (m_show_command_window_action, sc_main_window_show_command, enable);
+    settings.set_shortcut (m_show_history_action, sc_main_window_show_history, enable);
+    settings.set_shortcut (m_show_workspace_action, sc_main_window_show_workspace, enable);
+    settings.set_shortcut (m_show_file_browser_action, sc_main_window_show_file_browser, enable);
+    settings.set_shortcut (m_show_editor_action, sc_main_window_show_editor, enable);
+    settings.set_shortcut (m_show_documentation_action, sc_main_window_show_doc, enable);
+    settings.set_shortcut (m_show_variable_editor_action, sc_main_window_show_variable_editor, enable);
+    settings.set_shortcut (m_reset_windows_action, sc_main_window_reset, enable);
+    settings.set_shortcut (m_command_window_action, sc_main_window_command, enable);
     // Switching to the other widgets (including the previous one) is always enabled
-    scmgr.set_shortcut (m_history_action, sc_main_window_history, true);
-    scmgr.set_shortcut (m_workspace_action, sc_main_window_workspace, true);
-    scmgr.set_shortcut (m_file_browser_action, sc_main_window_file_browser, true);
-    scmgr.set_shortcut (m_editor_action, sc_main_window_editor, true);
-    scmgr.set_shortcut (m_documentation_action, sc_main_window_doc, true);
-    scmgr.set_shortcut (m_variable_editor_action, sc_main_window_variable_editor, true);
-    scmgr.set_shortcut (m_previous_dock_action, sc_main_window_previous_dock, true);
+    settings.set_shortcut (m_history_action, sc_main_window_history, true);
+    settings.set_shortcut (m_workspace_action, sc_main_window_workspace, true);
+    settings.set_shortcut (m_file_browser_action, sc_main_window_file_browser, true);
+    settings.set_shortcut (m_editor_action, sc_main_window_editor, true);
+    settings.set_shortcut (m_documentation_action, sc_main_window_doc, true);
+    settings.set_shortcut (m_variable_editor_action, sc_main_window_variable_editor, true);
+    settings.set_shortcut (m_previous_dock_action, sc_main_window_previous_dock, true);
 
     // help menu
-    scmgr.set_shortcut (m_ondisk_doc_action, sc_main_help_ondisk_doc, enable);
-    scmgr.set_shortcut (m_online_doc_action, sc_main_help_online_doc, enable);
-    scmgr.set_shortcut (m_report_bug_action, sc_main_help_report_bug, enable);
-    scmgr.set_shortcut (m_octave_packages_action, sc_main_help_packages, enable);
-    scmgr.set_shortcut (m_contribute_action, sc_main_help_contribute, enable);
-    scmgr.set_shortcut (m_developer_action, sc_main_help_developer, enable);
-    scmgr.set_shortcut (m_about_octave_action, sc_main_help_about, enable);
+    settings.set_shortcut (m_ondisk_doc_action, sc_main_help_ondisk_doc, enable);
+    settings.set_shortcut (m_online_doc_action, sc_main_help_online_doc, enable);
+    settings.set_shortcut (m_report_bug_action, sc_main_help_report_bug, enable);
+    settings.set_shortcut (m_octave_packages_action, sc_main_help_packages, enable);
+    settings.set_shortcut (m_contribute_action, sc_main_help_contribute, enable);
+    settings.set_shortcut (m_developer_action, sc_main_help_developer, enable);
+    settings.set_shortcut (m_about_octave_action, sc_main_help_about, enable);
 
     // news menu
-    scmgr.set_shortcut (m_release_notes_action, sc_main_news_release_notes, enable);
-    scmgr.set_shortcut (m_current_news_action, sc_main_news_community_news, enable);
+    settings.set_shortcut (m_release_notes_action, sc_main_news_release_notes, enable);
+    settings.set_shortcut (m_current_news_action, sc_main_news_community_news, enable);
   }
 
   QList<octave_dock_widget *> main_window::dock_widget_list (void)
--- a/libgui/src/octave-dock-widget.cc	Sat Dec 24 14:54:52 2022 -0500
+++ b/libgui/src/octave-dock-widget.cc	Sun Dec 25 12:46:53 2022 -0500
@@ -219,14 +219,15 @@
     connect (this, &octave_dock_widget::queue_make_widget,
              this, [=] () { make_widget (); }, Qt::QueuedConnection);
 
-    shortcut_manager& scmgr = m_octave_qobj.get_shortcut_manager ();
-    scmgr.set_shortcut (m_dock_action, sc_dock_widget_dock);
+    gui_settings settings;
+
+    settings.set_shortcut (m_dock_action, sc_dock_widget_dock);
     m_dock_action->setShortcutContext (Qt::WidgetWithChildrenShortcut);
     addAction (m_dock_action);
     connect (m_dock_action, &QAction::triggered,
              this, &octave_dock_widget::make_window);
 
-    scmgr.set_shortcut (m_close_action, sc_dock_widget_close);
+    settings.set_shortcut (m_close_action, sc_dock_widget_close);
     m_close_action->setShortcutContext (Qt::WidgetWithChildrenShortcut);
     addAction (m_close_action);
     connect (m_close_action, &QAction::triggered,
--- a/libgui/src/shortcut-manager.cc	Sat Dec 24 14:54:52 2022 -0500
+++ b/libgui/src/shortcut-manager.cc	Sun Dec 25 12:46:53 2022 -0500
@@ -30,7 +30,6 @@
 #include <QAction>
 #include <QApplication>
 #include <QCheckBox>
-#include <QDebug>
 #include <QDialogButtonBox>
 #include <QFileDialog>
 #include <QGridLayout>
@@ -333,38 +332,6 @@
     settings.sync ();      // sync the settings file
   }
 
-  void shortcut_manager::set_shortcut (QAction *action, const sc_pref& scpref,
-                                       bool enable)
-  {
-    if (! enable)
-      {
-        // Disable => remove existing shortcut from the action
-        action->setShortcut (QKeySequence ());
-        return;
-      }
-
-    gui_settings settings;
-
-    QString shortcut = settings.sc_value (scpref);
-
-    if (! shortcut.isEmpty ())
-      action->setShortcut (QKeySequence (shortcut));
-    else
-      qDebug () << "Key: " << scpref.key << " not found in settings";
-  }
-
-  void shortcut_manager::shortcut (QShortcut *sc, const sc_pref& scpref)
-  {
-    gui_settings settings;
-
-    QString shortcut = settings.sc_value (scpref);
-
-    if (! shortcut.isEmpty ())
-      sc->setKey (QKeySequence (shortcut));
-    else
-      qDebug () << "Key: " << scpref.key << " not found in settings";
-  }
-
   void shortcut_manager::fill_treewidget (QTreeWidget *tree_view)
   {
     m_dialog = nullptr;
--- a/libgui/src/shortcut-manager.h	Sat Dec 24 14:54:52 2022 -0500
+++ b/libgui/src/shortcut-manager.h	Sun Dec 25 12:46:53 2022 -0500
@@ -90,10 +90,6 @@
 
     void write_shortcuts (gui_settings& settings, bool closing);
 
-    void set_shortcut (QAction *action, const sc_pref& scpref, bool enable = true);
-
-    void shortcut (QShortcut *sc, const sc_pref& scpref);
-
     void fill_treewidget (QTreeWidget *tree_view);
 
     bool import_export (int action);
--- a/libgui/src/variable-editor.cc	Sat Dec 24 14:54:52 2022 -0500
+++ b/libgui/src/variable-editor.cc	Sun Dec 25 12:46:53 2022 -0500
@@ -60,7 +60,6 @@
 #include "octave-qtutils.h"
 #include "ovl.h"
 #include "qt-utils.h"
-#include "shortcut-manager.h"
 #include "variable-editor-model.h"
 #include "variable-editor.h"
 
@@ -1470,8 +1469,7 @@
       }
 
     // Shortcuts (same as file editor)
-    shortcut_manager& scmgr = m_octave_qobj.get_shortcut_manager ();
-    scmgr.set_shortcut (m_save_action, sc_edit_file_save);
+    settings.set_shortcut (m_save_action, sc_edit_file_save);
   }
 
   void