26 #if defined (HAVE_CONFIG_H)
31 #include <QApplication>
34 #include <QDialogButtonBox>
35 #include <QFileDialog>
36 #include <QGridLayout>
37 #include <QHeaderView>
38 #include <QKeySequence>
40 #include <QMessageBox>
41 #include <QPushButton>
42 #include <QVBoxLayout>
67 QLineEdit::keyPressEvent (e);
71 if (e->type () == QEvent::KeyPress)
75 if (key == Qt::Key_unknown || key == 0)
78 #if defined (HAVE_QGUIAPPLICATION)
79 Qt::KeyboardModifiers modifiers = QGuiApplication::keyboardModifiers ();
81 Qt::KeyboardModifiers modifiers = QApplication::keyboardModifiers ();
86 if (modifiers & Qt::ControlModifier)
88 if (modifiers & Qt::AltModifier)
90 if (modifiers & Qt::MetaModifier)
93 setText (QKeySequence (key).toString ());
117 : m_octave_qobj (oct_qobj)
119 setObjectName (
"Shortcut_Manager");
122 #if defined (Q_OS_MAC)
123 QCoreApplication::setAttribute (Qt::AA_MacDontSwapCtrlAndMeta,
true);
216 #if defined (Q_OS_MAC)
253 #if defined (Q_OS_MAC)
313 bool sc_ctrld =
false;
317 for (
int i = 0; i <
m_sc.count (); i++)
320 m_sc.at (i).m_actual_sc.toString ());
322 if (
m_sc.at (i).m_settings_key.startsWith (sc_main)
323 &&
m_sc.at (i).m_actual_sc == QKeySequence (Qt::ControlModifier+Qt::Key_D))
344 if (index > -1 && index <
m_sc.count ())
348 action->setShortcut (QKeySequence (
settings->sc_value (scpref)));
351 qDebug () <<
"Key: " << scpref.
key <<
" not found in m_action_hash";
360 if (index > -1 && index <
m_sc.count ())
364 sc->setKey (QKeySequence (
settings->sc_value (scpref)));
367 qDebug () <<
"Key: " << scpref.
key <<
" not found in m_action_hash";
375 #if defined (HAVE_QHEADERVIEW_SETSECTIONRESIZEMODE)
376 tree_view->header ()->setSectionResizeMode (QHeaderView::ResizeToContents);
378 tree_view->header ()->setResizeMode (QHeaderView::ResizeToContents);
381 QTreeWidgetItem *
main =
new QTreeWidgetItem (tree_view);
382 main->setText (0, tr (
"Global"));
383 main->setExpanded (
true);
384 QTreeWidgetItem *main_file =
new QTreeWidgetItem (
main);
385 main_file->setText (0, tr (
"File Menu"));
386 QTreeWidgetItem *main_edit =
new QTreeWidgetItem (
main);
387 main_edit->setText (0, tr (
"Edit Menu"));
388 QTreeWidgetItem *main_debug =
new QTreeWidgetItem (
main);
389 main_debug->setText (0, tr (
"Debug Menu"));
392 QTreeWidgetItem *main_help =
new QTreeWidgetItem (
main);
393 main_help->setText (0, tr (
"Help Menu"));
394 QTreeWidgetItem *main_news =
new QTreeWidgetItem (
main);
395 main_news->setText (0, tr (
"News Menu"));
396 QTreeWidgetItem *main_dock_widgets =
new QTreeWidgetItem (
main);
397 main_dock_widgets->setText (0, tr (
"Handling of Dock Widgets"));
398 QTreeWidgetItem *main_tabs =
new QTreeWidgetItem (
main);
399 main_tabs->setText (0, tr (
"Tab Handling in Dock Widgets"));
400 QTreeWidgetItem *main_find =
new QTreeWidgetItem (
main);
401 main_find->setText (0, tr (
"Find & Replace in Dock Widgets"));
402 QTreeWidgetItem *main_zoom =
new QTreeWidgetItem (
main);
403 main_zoom->setText (0, tr (
"Zooming in Editor and Documentation"));
416 QTreeWidgetItem *editor =
new QTreeWidgetItem (tree_view);
417 editor->setText (0, tr (
"Editor"));
418 editor->setExpanded (
true);
419 QTreeWidgetItem *editor_file =
new QTreeWidgetItem (editor);
420 editor_file->setText (0, tr (
"File Menu"));
421 QTreeWidgetItem *editor_edit =
new QTreeWidgetItem (editor);
422 editor_edit->setText (0, tr (
"Edit Menu"));
423 QTreeWidgetItem *editor_view =
new QTreeWidgetItem (editor);
424 editor_view->setText (0, tr (
"View Menu"));
425 QTreeWidgetItem *editor_debug =
new QTreeWidgetItem (editor);
426 editor_debug->setText (0, tr (
"Debug Menu"));
427 QTreeWidgetItem *editor_run =
new QTreeWidgetItem (editor);
428 editor_run->setText (0, tr (
"Run Menu"));
429 QTreeWidgetItem *editor_help =
new QTreeWidgetItem (editor);
430 editor_help->setText (0, tr (
"Help Menu"));
439 QTreeWidgetItem *doc =
new QTreeWidgetItem (tree_view);
440 doc->setText (0, tr (
"Documentation Viewer"));
441 doc->setExpanded (
true);
443 QTreeWidgetItem *doc_browser =
new QTreeWidgetItem (doc);
444 doc_browser->setText (0, tr (
"Browser"));
448 connect (tree_view, SIGNAL (itemDoubleClicked (QTreeWidgetItem*,
int)),
451 for (
int i = 0; i <
m_sc.count (); i++)
459 if (section == editor_file)
465 if (section == editor_edit)
471 if (section == editor_view)
478 QTreeWidgetItem *tree_item =
new QTreeWidgetItem (section);
481 QColor fg = QColor (tree_item->foreground (1).color ());
483 tree_item->setForeground (1, QBrush (fg));
488 tree_item->setText (2, sc.
m_actual_sc.toString ());
519 opts = QFileDialog::DontUseNativeDialog;
522 file = QFileDialog::getOpenFileName (
this,
523 tr (
"Import shortcuts from file..."), QString (),
524 tr (
"Octave Shortcut Files (*.osc);;All Files (*)"),
525 nullptr, QFileDialog::Option (opts));
527 file = QFileDialog::getSaveFileName (
this,
528 tr (
"Export shortcuts to file..."), QString (),
529 tr (
"Octave Shortcut Files (*.osc);;All Files (*)"),
530 nullptr, QFileDialog::Option (opts));
537 if (osc_settings.status () != QSettings::NoError)
539 qWarning () << tr (
"Failed to open %1 as Octave shortcut file")
573 if (result == QDialog::Rejected)
582 tr (
"The chosen shortcut\n \"%1\"\n"
583 "is already used for the action\n \"%2\".\n"
584 "Do you want to use the shortcut anyhow removing it "
585 "from the previous action?")
587 .arg (
m_sc.at (double_index).m_description),
588 QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
590 if (ret == QMessageBox::Yes)
594 m_sc.replace (double_index, double_shortcut);
602 if (!
shortcut.m_actual_sc.isEmpty ())
609 if (!
shortcut.m_actual_sc.isEmpty ())
623 QKeySequence actual = QKeySequence (
settings->sc_value (sc));
631 m_sc << shortcut_info;
634 if (! actual.isEmpty ())
639 QString main_group_prefix
641 if (sc.
key.startsWith (main_group_prefix)
642 && actual == QKeySequence (Qt::ControlModifier+Qt::Key_D))
652 m_dialog->setWindowTitle (tr (
"Enter new Shortcut"));
656 box->setContentsMargins (12, 12, 12, 12);
658 QLabel *help =
new QLabel (tr (
"Apply the desired shortcut or click "
659 "on the right button to reset the "
660 "shortcut to its default."));
661 help->setWordWrap (
true);
662 box->addWidget (help);
665 =
new QCheckBox (tr (
"Enter shortcut directly by performing it"));
668 =
new QCheckBox (tr (
"Add Shift modifier\n"
669 "(allows to enter number keys)"));
672 (
"QCheckBox::indicator { subcontrol-position: left top; }");
674 connect (direct, SIGNAL (clicked (
bool)),
675 shift, SLOT (setEnabled (
bool)));
677 direct->setCheckState (Qt::Checked);
679 box->addWidget (direct);
680 box->addWidget (shift);
682 box->addSpacing (15);
684 QGridLayout *grid =
new QGridLayout ();
686 QLabel *actual =
new QLabel (tr (
"Actual shortcut"));
689 grid->addWidget (actual, 0, 0);
692 QLabel *def =
new QLabel (tr (
"Default shortcut"));
695 grid->addWidget (def, 1, 0);
699 grid->addWidget (set_default, 0, 2);
700 connect (set_default, SIGNAL (clicked ()),
703 box->addLayout (grid);
705 box->addSpacing (18);
707 QDialogButtonBox *button_box =
new QDialogButtonBox (QDialogButtonBox::Ok
708 | QDialogButtonBox::Cancel);
710 for (
int i = 0; i < buttons.count (); i++)
711 buttons.at (i)->setShortcut (QKeySequence ());
712 connect (button_box, SIGNAL (accepted ()),
m_dialog, SLOT (accept ()));
713 connect (button_box, SIGNAL (rejected ()),
m_dialog, SLOT (reject ()));
714 box->addWidget (button_box);
718 connect (direct, SIGNAL (stateChanged (
int)),
720 connect (shift, SIGNAL (stateChanged (
int)),
722 connect (
m_dialog, SIGNAL (finished (
int)),
740 for (
int i = 0; i <
m_sc.count (); i++)
756 tree_item->setText (2, sc.
m_actual_sc.toString ());
765 msg_box.setWindowTitle (tr (
"Overwriting Shortcuts"));
766 msg_box.setIcon (QMessageBox::Warning);
767 msg_box.setText (tr (
"You are about to overwrite all shortcuts.\n"
768 "Would you like to save the current shortcut set or cancel the action?"));
769 msg_box.setStandardButtons (QMessageBox::Save | QMessageBox::Cancel);
770 QPushButton *discard = msg_box.addButton (tr (
"Don't save"),
771 QMessageBox::DestructiveRole);
772 msg_box.setDefaultButton (QMessageBox::Save);
774 int ret = msg_box.exec ();
776 if (msg_box.clickedButton () == discard)
779 if (ret == QMessageBox::Save)
Base class for Octave interfaces that use Qt.
resource_manager & get_resource_manager(void)
void handle_direct_shortcut(int)
virtual void keyPressEvent(QKeyEvent *e)
enter_shortcut(QWidget *p=nullptr)
void handle_shift_modifier(int)
Represents the main window.
gui_settings * get_settings(void) const
QKeySequence m_default_sc
void shortcut_dialog(int)
void init(const QString &, const sc_pref &scpref)
bool import_export(int action)
void shortcut_dialog_finished(int)
void fill_treewidget(QTreeWidget *tree_view)
enter_shortcut * m_edit_actual
void write_shortcuts(gui_settings *settings, bool closing)
void shortcut(QShortcut *sc, const sc_pref &scpref)
void shortcut_dialog_set_default()
bool overwrite_all_shortcuts(void)
base_qobject & m_octave_qobj
QHash< QString, int > m_shortcut_hash
QHash< int, QTreeWidgetItem * > m_index_item_hash
void set_shortcut(QAction *action, const sc_pref &scpref)
QHash< QString, int > m_action_hash
QHash< QString, QTreeWidgetItem * > m_level_hash
QHash< QTreeWidgetItem *, int > m_item_index_hash
void handle_double_clicked(QTreeWidgetItem *, int)
shortcut_manager(base_qobject &oct_qobj)
void import_shortcuts(gui_settings *settings)
void warning(const char *fmt,...)
const gui_pref global_use_native_dialogs("use_native_file_dialogs", QVariant(true))
const sc_pref sc_main_help_online_doc(sc_main_help+":online_doc", QKeySequence::UnknownKey)
const sc_pref sc_edit_view_show_long_line(sc_edit_view+":show_long_line", QKeySequence::UnknownKey)
const QString sc_edit_view_zoom(sc_edit_view+":zoom")
const sc_pref sc_edit_file_close(sc_edit_file_cl, QKeySequence::Close)
const sc_pref sc_edit_edit_completion_list(sc_edit_edit+":completion_list", CTRL+Qt::Key_Space)
const sc_pref sc_edit_debug_next_breakpoint(sc_edit_debug+":next_breakpoint", QKeySequence::UnknownKey)
const sc_pref sc_doc_go_home(sc_doc+":go_home", Qt::AltModifier+Qt::Key_Home)
const sc_pref sc_main_file_exit(sc_main_file+":exit", QKeySequence::Quit)
const sc_pref sc_edit_debug_previous_breakpoint(sc_edit_debug+":previous_breakpoint", QKeySequence::UnknownKey)
const sc_pref sc_edit_edit_delete_line(sc_edit_edit+":delete_line", CTRL_SHIFT+Qt::Key_L)
const sc_pref sc_main_file_new_file(sc_main_file+":new_file", QKeySequence::New)
const sc_pref sc_edit_edit_move_to_brace(sc_edit_edit+":move_to_brace", CTRL+Qt::Key_M)
const sc_pref sc_edit_edit_toggle_bookmark(sc_edit_edit+":toggle_bookmark", PRE+Qt::Key_F7)
const sc_pref sc_doc_go_back(sc_doc+":go_back", QKeySequence::Back)
const sc_pref sc_edit_edit_delete_start_line(sc_edit_edit+":delete_start_line", CTRL_SHIFT+Qt::Key_Backspace)
const sc_pref sc_main_news_release_notes(sc_main_news+":release_notes", QKeySequence::UnknownKey)
const QString sc_dock_widget("dock_widget")
const sc_pref sc_main_window_workspace(sc_main_window+":workspace", PRE+CTRL+Qt::Key_3)
const sc_pref sc_edit_edit_uncomment_selection(sc_edit_edit+":uncomment_selection", CTRL_SHIFT+Qt::Key_R)
const QString sc_edit_run("editor_run")
const sc_pref sc_edit_edit_cut_line(sc_edit_edit+":cut_line", CTRL_SHIFT+Qt::Key_X)
const sc_pref sc_edit_view_show_hscrollbar(sc_edit_view+":show_hscrollbar", QKeySequence::UnknownKey)
const sc_pref sc_main_file_new_figure(sc_main_file+":new_figure", QKeySequence::UnknownKey)
const sc_pref sc_edit_edit_remove_bookmark(sc_edit_edit+":remove_bookmark", QKeySequence::UnknownKey)
const sc_pref sc_main_window_doc(sc_main_window+":doc", PRE+CTRL+Qt::Key_5)
const sc_pref sc_main_debug_step_over(sc_main_debug+":step_over", PRE+Qt::Key_F10)
const sc_pref sc_main_window_show_editor(sc_main_window+":show_editor", PRE+CTRL_SHIFT+Qt::Key_4)
const sc_pref sc_main_edit_set_path(sc_main_edit+":set_path", QKeySequence::UnknownKey)
const sc_pref sc_edit_edit_upper_case(sc_edit_edit+":upper_case", CTRL+Qt::Key_U)
const sc_pref sc_edit_file_save(sc_edit_file+":save", QKeySequence::Save)
const sc_pref sc_edit_edit_styles_preferences(sc_edit_edit+":styles_preferences", QKeySequence::UnknownKey)
const sc_pref sc_main_window_file_browser(sc_main_window+":file_browser", PRE+CTRL+Qt::Key_2)
const sc_pref sc_edit_file_print(sc_edit_file+":print", QKeySequence::Print)
const sc_pref sc_edit_edit_goto_line(sc_edit_edit+":goto_line", CTRL+Qt::Key_L)
const sc_pref sc_edit_edit_smart_indent_line_or_selection(sc_edit_edit+":smart_indent_line_or_selection", QKeySequence::UnknownKey)
const sc_pref sc_main_debug_continue(sc_main_debug+":continue", PRE+Qt::Key_F5)
const sc_pref sc_edit_view_show_statusbar(sc_edit_view+":show_statusbar", QKeySequence::UnknownKey)
const sc_pref sc_main_edit_clear_clipboard(sc_main_edit+":clear_clipboard", QKeySequence::UnknownKey)
const sc_pref sc_edit_view_show_eol_chars(sc_edit_view+":show_eol_chars", QKeySequence::UnknownKey)
const sc_pref sc_main_window_show_history(sc_main_window+":show_history", PRE+CTRL_SHIFT+Qt::Key_1)
const sc_pref sc_edit_file_edit_function(sc_edit_file+":edit_function", CTRL+Qt::Key_E)
const sc_pref sc_edit_edit_comment_selection(sc_edit_edit+":comment_selection", CTRL+Qt::Key_R)
const sc_pref sc_main_window_show_workspace(sc_main_window+":show_workspace", PRE+CTRL_SHIFT+Qt::Key_3)
const sc_pref sc_main_edit_clear_workspace(sc_main_edit+":clear_workspace", QKeySequence::UnknownKey)
const sc_pref sc_edit_edit_comment_var_selection(sc_edit_edit+":comment_var_selection", CTRL_ALT+Qt::Key_R)
const QString sc_edit_find("editor_find")
const QString sc_main_window("main_window")
const sc_pref sc_dock_widget_dock(sc_dock_widget+":dock", CTRL_ALT+Qt::Key_D)
const gui_pref sc_main_ctrld("shortcuts/main_ctrld", QVariant(false))
const sc_pref sc_edit_run_run_file(sc_edit_run+":run_file", PRE+Qt::Key_F5)
const sc_pref sc_edit_file_save_as(sc_edit_file+":save_as", QKeySequence::SaveAs)
const sc_pref sc_main_file_open_file(sc_main_file+":open_file", QKeySequence::Open)
const sc_pref sc_main_window_show_doc(sc_main_window+":show_doc", PRE+CTRL_SHIFT+Qt::Key_5)
const sc_pref sc_main_file_new_function(sc_main_file+":new_function", CTRL_SHIFT+Qt::Key_N)
const sc_pref sc_main_debug_step_into(sc_main_debug+":step_into", PRE+Qt::Key_F11)
const QString sc_edit_debug("editor_debug")
const sc_pref sc_main_help_about(sc_main_help+":about", QKeySequence::UnknownKey)
const sc_pref sc_edit_view_zoom_normal(sc_edit_view_zoom+"_normal", CTRL+Qt::Key_Period)
const sc_pref sc_edit_edit_find_replace(sc_edit_edit_find+"_replace", QKeySequence::Find)
const sc_pref sc_edit_view_show_ind_guides(sc_edit_view+":show_ind_guides", QKeySequence::UnknownKey)
const sc_pref sc_main_window_show_variable_editor(sc_main_window+":show_variable_editor", PRE+CTRL_SHIFT+Qt::Key_6)
const sc_pref sc_main_window_show_command(sc_main_window+":show_command", PRE+CTRL_SHIFT+Qt::Key_0)
const sc_pref sc_main_window_editor(sc_main_window+":editor", PRE+CTRL+Qt::Key_4)
const sc_pref sc_main_window_variable_editor(sc_main_window+":variable_editor", PRE+CTRL+Qt::Key_6)
const sc_pref sc_edit_file_close_other(sc_edit_file_cl+"_other", QKeySequence::UnknownKey)
const QString sc_main_news("main_news")
const sc_pref sc_main_window_command(sc_main_window+":command", PRE+CTRL+Qt::Key_0)
const QString sc_edit_help("editor_help")
const sc_pref sc_main_debug_quit(sc_main_debug+":quit", PRE+Qt::ShiftModifier+Qt::Key_F5)
const QString sc_main_file("main_file")
const sc_pref sc_main_edit_copy(sc_main_edit+":copy", QKeySequence::Copy)
const sc_pref sc_main_help_ondisk_doc(sc_main_help+":ondisk_doc", QKeySequence::UnknownKey)
const sc_pref sc_edit_edit_copy_line(sc_edit_edit+":copy_line", CTRL_SHIFT+Qt::Key_C)
const sc_pref sc_edit_edit_transpose_line(sc_edit_edit+":transpose_line", CTRL+Qt::Key_T)
const sc_pref sc_edit_edit_find_next(sc_edit_edit_find+"_next", QKeySequence::FindNext)
const sc_pref sc_edit_help_help_keyword(sc_edit_help+":help_keyword", QKeySequence::HelpContents)
const Qt::KeyboardModifier CTRL
const sc_pref sc_edit_edit_duplicate_selection(sc_edit_edit+":duplicate_selection", CTRL+Qt::Key_D)
const sc_pref sc_edit_view_show_toolbar(sc_edit_view+":show_toolbar", QKeySequence::UnknownKey)
const sc_pref sc_edit_help_doc_keyword(sc_edit_help+":doc_keyword", Qt::SHIFT+Qt::Key_F1)
const sc_pref sc_edit_edit_delete_end_line(sc_edit_edit+":delete_end_line", CTRL_SHIFT+Qt::Key_Delete)
const sc_pref sc_edit_tabs_move_tab_right(sc_edit_tabs+":move_tab_right", Qt::AltModifier+Qt::Key_PageDown)
const sc_pref sc_main_help_developer(sc_main_help+":developer", QKeySequence::UnknownKey)
const sc_pref sc_edit_edit_cut(sc_edit_edit+":cut", QKeySequence::Cut)
const sc_pref sc_main_edit_undo(sc_main_edit+":undo", QKeySequence::Undo)
const QString sc_doc("doc_browser")
const sc_pref sc_main_edit_clear_command_window(sc_main_edit+":clear_command_window", QKeySequence::UnknownKey)
const sc_pref sc_edit_debug_remove_breakpoints(sc_edit_debug+":remove_breakpoints", QKeySequence::UnknownKey)
const sc_pref sc_edit_edit_unindent_selection(sc_edit_edit+":unindent_selection", CTRL_SHIFT+Qt::Key_Tab)
const sc_pref sc_edit_edit_next_bookmark(sc_edit_edit+":next_bookmark", PRE+Qt::Key_F2)
const sc_pref sc_main_window_reset(sc_main_window+":reset", QKeySequence::UnknownKey)
const QString sc_edit_edit("editor_edit")
const QString sc_edit_edit_find(sc_edit_edit+":find")
const sc_pref sc_main_window_previous_dock(sc_main_window+":previous_widget", PRE+CTRL_ALT+Qt::Key_P)
const QString sc_edit_file("editor_file")
const sc_pref sc_main_help_contribute(sc_main_help+":contribute", QKeySequence::UnknownKey)
const sc_pref sc_main_window_history(sc_main_window+":history", PRE+CTRL+Qt::Key_1)
const sc_pref sc_edit_run_run_selection(sc_edit_run+":run_selection", PRE+Qt::Key_F9)
const sc_pref sc_edit_edit_find_previous(sc_edit_edit_find+"_previous", QKeySequence::FindPrevious)
const sc_pref sc_edit_view_show_white_spaces(sc_edit_view+":show_white_spaces", QKeySequence::UnknownKey)
const sc_pref sc_edit_file_close_all(sc_edit_file_cl+"_all", QKeySequence::UnknownKey)
const sc_pref sc_edit_edit_select_to_brace(sc_edit_edit+":select_to_brace", CTRL_SHIFT+Qt::Key_M)
const sc_pref sc_edit_debug_toggle_breakpoint(sc_edit_debug+":toggle_breakpoint", QKeySequence::UnknownKey)
const sc_pref sc_edit_edit_lower_case(sc_edit_edit+":lower_case", CTRL_ALT+Qt::Key_U)
const sc_pref sc_edit_edit_indent_selection(sc_edit_edit+":indent_selection", CTRL+Qt::Key_Tab)
const QString sc_edit_view("editor_view")
const sc_pref sc_edit_view_zoom_in(sc_edit_view_zoom+"_in", QKeySequence::ZoomIn)
const QString sc_edit_zoom("editor_zoom")
const sc_pref sc_main_edit_preferences(sc_main_edit+":preferences", QKeySequence::UnknownKey)
const sc_pref sc_main_help_packages(sc_main_help+":packages", QKeySequence::UnknownKey)
const sc_pref sc_doc_go_next(sc_doc+":go_next", QKeySequence::Forward)
const QString sc_main_help("main_help")
const sc_pref sc_edit_tabs_move_tab_left(sc_edit_tabs+":move_tab_left", Qt::AltModifier+Qt::Key_PageUp)
const sc_pref sc_edit_edit_delete_end_word(sc_edit_edit+":delete_end_word", QKeySequence::DeleteEndOfWord)
const sc_pref sc_edit_edit_preferences(sc_edit_edit+":preferences", QKeySequence::UnknownKey)
const QString sc_edit_tabs("editor_tabs")
const sc_pref sc_edit_tabs_switch_right_tab(sc_edit_tabs+":switch_right_tab", CTRL+Qt::Key_PageDown)
const sc_pref sc_edit_edit_redo(sc_edit_edit+":redo", QKeySequence::Redo)
const sc_pref sc_main_file_save_workspace(sc_main_file+":save_workspace", QKeySequence::UnknownKey)
const sc_pref sc_main_edit_paste(sc_main_edit+":paste", QKeySequence::Paste)
const sc_pref sc_main_edit_find_in_files(sc_main_edit+":find_in_files", CTRL_SHIFT+Qt::Key_F)
const sc_pref sc_main_edit_select_all(sc_main_edit+":select_all", QKeySequence::SelectAll)
const sc_pref sc_main_window_show_file_browser(sc_main_window+":show_file_browser", PRE+CTRL_SHIFT+Qt::Key_2)
const sc_pref sc_main_edit_clear_history(sc_main_edit+":clear_history", QKeySequence::UnknownKey)
const sc_pref sc_main_debug_step_out(sc_main_debug+":step_out", PRE+Qt::ShiftModifier+Qt::Key_F11)
const sc_pref sc_dock_widget_close(sc_dock_widget+":close", CTRL_ALT+Qt::Key_C)
const QString sc_main_edit("main_edit")
const sc_pref sc_edit_edit_conv_eol_unix(sc_edit_edit+":conv_eol_unix", QKeySequence::UnknownKey)
const sc_pref sc_edit_view_sort_tabs(sc_edit_view+":sort_tabs", QKeySequence::UnknownKey)
const sc_pref sc_edit_tabs_switch_left_tab(sc_edit_tabs+":switch_left_tab", CTRL+Qt::Key_PageUp)
const sc_pref sc_edit_view_show_line_numbers(sc_edit_view+":show_line_numbers", QKeySequence::UnknownKey)
const QString sc_main_debug("main_debug")
const sc_pref sc_edit_view_zoom_out(sc_edit_view_zoom+"_out", QKeySequence::ZoomOut)
const sc_pref sc_edit_edit_conv_eol_mac(sc_edit_edit+":conv_eol_mac", QKeySequence::UnknownKey)
const sc_pref sc_main_news_community_news(sc_main_news+":community_news", QKeySequence::UnknownKey)
const sc_pref sc_edit_edit_conv_eol_winows(sc_edit_edit+":conv_eol_winows", QKeySequence::UnknownKey)
const QString sc_edit_file_cl(sc_edit_file+":close")
const sc_pref sc_edit_edit_previous_bookmark(sc_edit_edit+":previous_bookmark", PRE+Qt::SHIFT+Qt::Key_F2)
const sc_pref sc_main_help_report_bug(sc_main_help+":report_bug", QKeySequence::UnknownKey)
const sc_pref sc_main_file_load_workspace(sc_main_file+":load_workspace", QKeySequence::UnknownKey)
const sc_pref sc_edit_edit_delete_start_word(sc_edit_edit+":delete_start_word", QKeySequence::DeleteStartOfWord)
const QString sc_group("shortcuts/")
int main(int argc, char **argv)
static uint32_t state[624]
static octave_value box(JNIEnv *jni_env, void *jobj, void *jcls_arg=nullptr)