annotate libgui/src/shortcuts-tree-widget.cc @ 33658:b1d6e40ac737 stable tip

NEWS.9.md: Fix typo and minor formatting changes. * etc/NEWS.9.md: Fix typo. Adjust whitespace. Use markdown syntax for code snippets.
author Markus Mützel <markus.muetzel@gmx.de>
date Wed, 05 Jun 2024 11:27:35 +0200
parents 370a2de931a0
children 3cf213d5b479
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1 ////////////////////////////////////////////////////////////////////////
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2 //
32632
2e484f9f1f18 maint: update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents: 32519
diff changeset
3 // Copyright (C) 2014-2024 The Octave Project Developers
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
4 //
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
5 // See the file COPYRIGHT.md in the top-level directory of this
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
6 // distribution or <https://octave.org/copyright/>.
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
7 //
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
8 // This file is part of Octave.
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
9 //
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
10 // Octave is free software: you can redistribute it and/or modify it
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
11 // under the terms of the GNU General Public License as published by
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
12 // the Free Software Foundation, either version 3 of the License, or
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
13 // (at your option) any later version.
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
14 //
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
15 // Octave is distributed in the hope that it will be useful, but
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
16 // WITHOUT ANY WARRANTY; without even the implied warranty of
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
18 // GNU General Public License for more details.
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
19 //
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
20 // You should have received a copy of the GNU General Public License
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
21 // along with Octave; see the file COPYING. If not, see
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
22 // <https://www.gnu.org/licenses/>.
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
23 //
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
24 ////////////////////////////////////////////////////////////////////////
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
25
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
26 #if defined (HAVE_CONFIG_H)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
27 # include "config.h"
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
28 #endif
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
29
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
30 #include <QApplication>
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
31 #include <QDialog>
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
32 #include <QDialogButtonBox>
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
33 #include <QGridLayout>
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
34 #include <QHeaderView>
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
35 #include <QKeyEvent>
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
36 #include <QLabel>
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
37 #include <QMessageBox>
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
38 #include <QPushButton>
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
39 #include <QVBoxLayout>
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
40
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
41 #include "gui-preferences-sc.h"
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
42 #include "gui-settings.h"
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
43 #include "shortcuts-tree-widget.h"
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
44
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
45 OCTAVE_BEGIN_NAMESPACE(octave)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
46
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
47 // enter_shortcut:
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
48 // class derived from QLineEdit for directly entering key sequences which
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
49
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
50 enter_shortcut::enter_shortcut (QWidget *p) : QLineEdit (p)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
51 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
52 m_direct_shortcut = true; // the shortcut is directly entered
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
53 m_shift_modifier = false; // the shift modifier is not added
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
54 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
55
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
56 // new keyPressEvent
33414
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
57 void
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
58 enter_shortcut::keyPressEvent (QKeyEvent *e)
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
59 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
60 if (! m_direct_shortcut)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
61 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
62 QLineEdit::keyPressEvent (e);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
63 return;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
64 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
65
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
66 if (e->type () == QEvent::KeyPress)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
67 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
68 int key = e->key ();
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
69
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
70 if (key == Qt::Key_unknown || key == 0)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
71 return;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
72
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
73 Qt::KeyboardModifiers modifiers = QGuiApplication::keyboardModifiers (); //e->modifiers ();
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
74
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
75 if (m_shift_modifier || (modifiers & Qt::ShiftModifier))
31995
49d21a7b25a8 Replace deprecated QKeyCombination::operator+ by QKeyCombination::operator|.
Markus Mützel <markus.muetzel@gmx.de>
parents: 31771
diff changeset
76 key |= Qt::SHIFT;
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
77 if (modifiers & Qt::ControlModifier)
31995
49d21a7b25a8 Replace deprecated QKeyCombination::operator+ by QKeyCombination::operator|.
Markus Mützel <markus.muetzel@gmx.de>
parents: 31771
diff changeset
78 key |= Qt::CTRL;
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
79 if (modifiers & Qt::AltModifier)
31995
49d21a7b25a8 Replace deprecated QKeyCombination::operator+ by QKeyCombination::operator|.
Markus Mützel <markus.muetzel@gmx.de>
parents: 31771
diff changeset
80 key |= Qt::ALT;
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
81 if (modifiers & Qt::MetaModifier)
31995
49d21a7b25a8 Replace deprecated QKeyCombination::operator+ by QKeyCombination::operator|.
Markus Mützel <markus.muetzel@gmx.de>
parents: 31771
diff changeset
82 key |= Qt::META;
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
83
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
84 setText (QKeySequence (key).toString ());
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
85 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
86 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
87
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
88 // slot for checkbox whether the shortcut is directly entered or not
33414
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
89 void
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
90 enter_shortcut::handle_direct_shortcut (int state)
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
91 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
92 if (state)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
93 m_direct_shortcut = true; // the shortcut is directly entered
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
94 else
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
95 m_direct_shortcut = false; // the shortcut has to be written as text
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
96 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
97
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
98 // slot for checkbox whether the shift modifier should be added
33414
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
99 void
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
100 enter_shortcut::handle_shift_modifier (int state)
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
101 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
102 if (state)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
103 m_shift_modifier = true; // the shortcut is directly entered
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
104 else
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
105 m_shift_modifier = false; // the shortcut has to be written as text
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
106 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
107
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
108 tree_widget_shortcut_item::tree_widget_shortcut_item
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
109 (QTreeWidgetItem *parent, const sc_pref& scpref, const QString& actual_text)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
110 : QTreeWidgetItem (parent), m_settings_key (scpref.settings_key ())
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
111 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
112 // set a slightly transparent foreground for default columns
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
113 QColor fg = QColor (foreground (DEFAULT_COLUMN).color ());
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
114 fg.setAlpha (128);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
115 setForeground (DEFAULT_COLUMN, QBrush (fg));
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
116
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
117 // write the shortcuts
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
118 set_description (scpref.description ());
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
119 set_default_text (scpref.def_text ());
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
120 set_actual_text (actual_text);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
121 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
122
33414
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
123 QString
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
124 tree_widget_shortcut_item::settings_key () const
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
125 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
126 return m_settings_key;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
127 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
128
33414
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
129 QString
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
130 tree_widget_shortcut_item::description () const
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
131 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
132 return text (DESCRIPTION_COLUMN);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
133 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
134
33414
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
135 void
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
136 tree_widget_shortcut_item::set_description (const QString& text)
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
137 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
138 setText (DESCRIPTION_COLUMN, text);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
139 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
140
33414
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
141 QString
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
142 tree_widget_shortcut_item::default_text () const
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
143 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
144 return text (DEFAULT_COLUMN);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
145 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
146
33414
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
147 void
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
148 tree_widget_shortcut_item::set_default_text (const QString& text)
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
149 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
150 setText (DEFAULT_COLUMN, text);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
151 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
152
33414
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
153 QString
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
154 tree_widget_shortcut_item::actual_text () const
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
155 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
156 return text (ACTUAL_COLUMN);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
157 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
158
33414
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
159 void
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
160 tree_widget_shortcut_item::set_actual_text (const QString& text)
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
161 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
162 setText (ACTUAL_COLUMN, text);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
163 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
164
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
165 shortcut_edit_dialog::shortcut_edit_dialog
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
166 (tree_widget_shortcut_item *shortcut_item, QWidget *parent)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
167 : QDialog (parent), m_shortcut_item (shortcut_item),
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
168 m_settings_key (shortcut_item->settings_key ())
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
169 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
170 setAttribute (Qt::WA_DeleteOnClose);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
171
32519
6ff63f154144 maint: Review and update strings that appear in GUI.
Rik <rik@octave.org>
parents: 31995
diff changeset
172 setWindowTitle (tr ("Enter New Shortcut"));
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
173
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
174 QVBoxLayout *box = new QVBoxLayout (this);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
175
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
176 box->setSpacing (2);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
177 box->setContentsMargins (12, 12, 12, 12);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
178
32519
6ff63f154144 maint: Review and update strings that appear in GUI.
Rik <rik@octave.org>
parents: 31995
diff changeset
179 QLabel *help = new QLabel (tr ("Enter custom shortcut\n"
6ff63f154144 maint: Review and update strings that appear in GUI.
Rik <rik@octave.org>
parents: 31995
diff changeset
180 "Action: %1")
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
181 .arg (m_settings_key));
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
182
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
183 help->setWordWrap (true);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
184
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
185 box->addWidget (help);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
186
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
187 QCheckBox *direct
32519
6ff63f154144 maint: Review and update strings that appear in GUI.
Rik <rik@octave.org>
parents: 31995
diff changeset
188 = new QCheckBox (tr ("Enter shortcut by typing it"));
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
189
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
190 QCheckBox *shift
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
191 = new QCheckBox (tr ("Add Shift modifier\n"
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
192 "(allows one to enter number keys)"));
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
193
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
194 shift->setStyleSheet
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
195 ("QCheckBox::indicator { subcontrol-position: left top; }");
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
196
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
197 connect (direct, &QCheckBox::clicked, shift, &QCheckBox::setEnabled);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
198
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
199 direct->setCheckState (Qt::Checked);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
200
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
201 box->addWidget (direct);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
202 box->addWidget (shift);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
203
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
204 box->addSpacing (15);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
205
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
206 QGridLayout *grid = new QGridLayout ();
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
207
32519
6ff63f154144 maint: Review and update strings that appear in GUI.
Rik <rik@octave.org>
parents: 31995
diff changeset
208 QLabel *actual = new QLabel (tr ("Actual Shortcut"));
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
209
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
210 m_edit_actual = new enter_shortcut (this);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
211 m_edit_actual->setAlignment (Qt::AlignHCenter);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
212
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
213 grid->addWidget (actual, 0, 0);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
214 grid->addWidget (m_edit_actual, 0, 1);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
215
32519
6ff63f154144 maint: Review and update strings that appear in GUI.
Rik <rik@octave.org>
parents: 31995
diff changeset
216 QLabel *def = new QLabel (tr ("Default Shortcut"));
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
217
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
218 QLabel *label_default = new QLabel (this);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
219 label_default->setAlignment (Qt::AlignHCenter);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
220
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
221 grid->addWidget (def, 1, 0);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
222 grid->addWidget (label_default, 1, 1);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
223
33414
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
224 QPushButton *clear_text = new QPushButton (tr ("Clear"));
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
225 QPushButton *set_default = new QPushButton (tr ("Set to default"));
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
226
33414
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
227 grid->addWidget (clear_text, 0, 2);
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
228 grid->addWidget (set_default, 0, 3);
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
229
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
230 box->addLayout (grid);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
231 box->addSpacing (18);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
232
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
233 QDialogButtonBox *button_box = new QDialogButtonBox (QDialogButtonBox::Ok
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
234 | QDialogButtonBox::Cancel);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
235 QList<QAbstractButton *> buttons = button_box->buttons ();
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
236 for (int i = 0; i < buttons.count (); i++)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
237 buttons.at (i)->setShortcut (QKeySequence ());
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
238
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
239 connect (button_box, &QDialogButtonBox::accepted,
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
240 this, &QDialog::accept);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
241
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
242 connect (button_box, &QDialogButtonBox::rejected,
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
243 this, &QDialog::reject);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
244
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
245 box->addWidget (button_box);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
246
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
247 setLayout (box);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
248
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
249 connect (direct, &QCheckBox::stateChanged,
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
250 m_edit_actual, &enter_shortcut::handle_direct_shortcut);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
251
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
252 connect (shift, &QCheckBox::stateChanged,
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
253 m_edit_actual, &enter_shortcut::handle_shift_modifier);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
254
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
255 connect (this, &QDialog::finished,
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
256 this, &shortcut_edit_dialog::finished);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
257
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
258 gui_settings settings;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
259
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
260 const sc_pref scpref = all_shortcut_preferences::value (m_settings_key);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
261
33414
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
262 m_default_text = scpref.def_text ();
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
263 label_default->setText (m_default_text);
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
264
33414
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
265 QString actual_text = shortcut_item->actual_text ();
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
266 m_edit_actual->setText (actual_text);
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
267
33414
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
268 connect (clear_text, &QPushButton::clicked,
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
269 [this] () { m_edit_actual->setText (QString ()); });
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
270 connect (set_default, &QPushButton::clicked,
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
271 [this] () { m_edit_actual->setText (m_default_text); });
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
272
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
273 m_edit_actual->setFocus ();
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
274
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
275 setFocusProxy (m_edit_actual);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
276 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
277
33414
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
278 void
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
279 shortcut_edit_dialog::finished (int result)
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
280 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
281 if (result == QDialog::Rejected)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
282 return;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
283
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
284 // Check whether the chosen shortcut is already in use either in the
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
285 // current context (section of the shortcut settings) or as a global
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
286 // (main_) shortcut. This job might have been easier if we had
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
287 // organized the sections as child groups instead of using a colon in
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
288 // the settings key to separate the section from the shortcut name.
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
289
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
290 // Note that m_settings_key doesn't begin with the sc_group prefix.
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
291
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
292 QString my_section = get_shortcut_section (m_settings_key);
33415
370a2de931a0 fix checking for duplicate shortcuts
Torsten Lilge <ttl-octave@mailbox.org>
parents: 33414
diff changeset
293 if (my_section.contains ('_')) // get top level section
370a2de931a0 fix checking for duplicate shortcuts
Torsten Lilge <ttl-octave@mailbox.org>
parents: 33414
diff changeset
294 my_section = my_section.section ('_', 0, 0, QString::SectionSkipEmpty);
370a2de931a0 fix checking for duplicate shortcuts
Torsten Lilge <ttl-octave@mailbox.org>
parents: 33414
diff changeset
295
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
296 QString actual_text = m_edit_actual->text ();
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
297
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
298 bool conflict = false;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
299 QString other_settings_key;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
300
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
301 gui_settings settings;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
302
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
303 settings.beginGroup (sc_group);
33415
370a2de931a0 fix checking for duplicate shortcuts
Torsten Lilge <ttl-octave@mailbox.org>
parents: 33414
diff changeset
304 const QStringList shortcut_settings_keys = all_shortcut_preferences::keys ();
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
305 settings.endGroup ();
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
306
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
307 for (const auto& settings_key : shortcut_settings_keys)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
308 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
309 if (settings_key == m_settings_key)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
310 continue;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
311
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
312 QString section = get_shortcut_section (settings_key);
33415
370a2de931a0 fix checking for duplicate shortcuts
Torsten Lilge <ttl-octave@mailbox.org>
parents: 33414
diff changeset
313 if (section.contains ('_')) // get top level section
370a2de931a0 fix checking for duplicate shortcuts
Torsten Lilge <ttl-octave@mailbox.org>
parents: 33414
diff changeset
314 section = section.section ('_', 0, 0, QString::SectionSkipEmpty);
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
315
33415
370a2de931a0 fix checking for duplicate shortcuts
Torsten Lilge <ttl-octave@mailbox.org>
parents: 33414
diff changeset
316 if (section == my_section || section == "main")
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
317 {
33415
370a2de931a0 fix checking for duplicate shortcuts
Torsten Lilge <ttl-octave@mailbox.org>
parents: 33414
diff changeset
318 const sc_pref scpref = all_shortcut_preferences::value (settings_key);
370a2de931a0 fix checking for duplicate shortcuts
Torsten Lilge <ttl-octave@mailbox.org>
parents: 33414
diff changeset
319 QString shortcut_text = settings.sc_value (scpref);
370a2de931a0 fix checking for duplicate shortcuts
Torsten Lilge <ttl-octave@mailbox.org>
parents: 33414
diff changeset
320
370a2de931a0 fix checking for duplicate shortcuts
Torsten Lilge <ttl-octave@mailbox.org>
parents: 33414
diff changeset
321 if (shortcut_text.isEmpty ())
370a2de931a0 fix checking for duplicate shortcuts
Torsten Lilge <ttl-octave@mailbox.org>
parents: 33414
diff changeset
322 continue;
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
323
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
324 if (shortcut_text == actual_text)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
325 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
326 other_settings_key = settings_key;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
327 conflict = true;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
328 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
329 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
330 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
331
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
332 if (conflict)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
333 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
334 // We only need the description of the other shortcut, not the
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
335 // complete sc_pref info.
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
336
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
337 const sc_pref other_scpref
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
338 = all_shortcut_preferences::value (other_settings_key);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
339
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
340 int ret = QMessageBox::warning (this, tr ("Double Shortcut"),
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
341 tr ("The chosen shortcut\n \"%1\"\n"
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
342 "is already used for the action\n \"%2\".\n"
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
343 "Do you want to use the shortcut and remove it "
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
344 "from the previous action?")
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
345 .arg (actual_text)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
346 .arg (other_scpref.description ()),
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
347 QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
348
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
349 if (ret == QMessageBox::Yes)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
350 emit set_shortcut (other_settings_key, "");
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
351 else
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
352 return;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
353 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
354
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
355 m_shortcut_item->set_actual_text (actual_text);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
356 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
357
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
358 shortcuts_tree_widget::shortcuts_tree_widget (QWidget *parent)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
359 : QTreeWidget (parent)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
360 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
361 QHash <QString, QTreeWidgetItem *> level_hash;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
362
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
363 header ()->setSectionResizeMode (QHeaderView::ResizeToContents);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
364
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
365 int dsc_col = tree_widget_shortcut_item::DESCRIPTION_COLUMN;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
366
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
367 QTreeWidgetItem *main = new QTreeWidgetItem (this);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
368 main->setText (dsc_col, tr ("Global"));
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
369 main->setExpanded (true);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
370
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
371 QTreeWidgetItem *main_file = new QTreeWidgetItem (main);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
372 main_file->setText (dsc_col, tr ("File Menu"));
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
373
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
374 QTreeWidgetItem *main_edit = new QTreeWidgetItem (main);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
375 main_edit->setText (dsc_col, tr ("Edit Menu"));
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
376
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
377 QTreeWidgetItem *main_debug = new QTreeWidgetItem (main);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
378 main_debug->setText (dsc_col, tr ("Debug Menu"));
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
379
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
380 QTreeWidgetItem *main_tools = new QTreeWidgetItem (main);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
381 main_tools->setText (dsc_col, tr ("Tools Menu"));
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
382
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
383 QTreeWidgetItem *main_window = new QTreeWidgetItem (main);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
384 main_window->setText (dsc_col, tr ("Window Menu"));
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
385
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
386 QTreeWidgetItem *main_help = new QTreeWidgetItem (main);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
387 main_help->setText (dsc_col, tr ("Help Menu"));
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
388
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
389 QTreeWidgetItem *main_news = new QTreeWidgetItem (main);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
390 main_news->setText (dsc_col, tr ("News Menu"));
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
391
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
392 QTreeWidgetItem *main_dock_widgets = new QTreeWidgetItem (main);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
393 main_dock_widgets->setText (dsc_col, tr ("Handling of Dock Widgets"));
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
394
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
395 QTreeWidgetItem *main_tabs = new QTreeWidgetItem (main);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
396 main_tabs->setText (dsc_col, tr ("Tab Handling in Dock Widgets"));
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
397
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
398 QTreeWidgetItem *main_find = new QTreeWidgetItem (main);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
399 main_find->setText (dsc_col, tr ("Find & Replace in Dock Widgets"));
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
400
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
401 QTreeWidgetItem *main_zoom = new QTreeWidgetItem (main);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
402 main_zoom->setText (dsc_col, tr ("Zooming in Editor and Documentation"));
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
403
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
404 level_hash[sc_main_file] = main_file;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
405 level_hash[sc_main_edit] = main_edit;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
406 level_hash[sc_main_debug] = main_debug;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
407 level_hash[sc_main_tools] = main_tools;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
408 level_hash[sc_main_window] = main_window;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
409 level_hash[sc_main_help] = main_help;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
410 level_hash[sc_main_news] = main_news;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
411 level_hash[sc_dock_widget] = main_dock_widgets;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
412 level_hash[sc_edit_tabs] = main_tabs;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
413 level_hash[sc_edit_find] = main_find;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
414 level_hash[sc_edit_zoom] = main_zoom;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
415
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
416 QTreeWidgetItem *editor = new QTreeWidgetItem (this);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
417 editor->setText (dsc_col, tr ("Editor"));
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
418 editor->setExpanded (true);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
419
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
420 QTreeWidgetItem *editor_file = new QTreeWidgetItem (editor);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
421 editor_file->setText (dsc_col, tr ("File Menu"));
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
422
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
423 QTreeWidgetItem *editor_edit = new QTreeWidgetItem (editor);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
424 editor_edit->setText (dsc_col, tr ("Edit Menu"));
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
425
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
426 QTreeWidgetItem *editor_view = new QTreeWidgetItem (editor);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
427 editor_view->setText (dsc_col, tr ("View Menu"));
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
428
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
429 QTreeWidgetItem *editor_debug = new QTreeWidgetItem (editor);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
430 editor_debug->setText (dsc_col, tr ("Debug Menu"));
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
431
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
432 QTreeWidgetItem *editor_run = new QTreeWidgetItem (editor);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
433 editor_run->setText (dsc_col, tr ("Run Menu"));
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
434
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
435 QTreeWidgetItem *editor_help = new QTreeWidgetItem (editor);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
436 editor_help->setText (dsc_col, tr ("Help Menu"));
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
437
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
438 level_hash[sc_edit_file] = editor_file;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
439 level_hash[sc_edit_edit] = editor_edit;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
440 level_hash[sc_edit_view] = editor_view;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
441 level_hash[sc_edit_debug] = editor_debug;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
442 level_hash[sc_edit_run] = editor_run;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
443 level_hash[sc_edit_help] = editor_help;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
444
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
445 QTreeWidgetItem *doc = new QTreeWidgetItem (this);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
446 doc->setText (dsc_col, tr ("Documentation Viewer"));
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
447 doc->setExpanded (true);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
448
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
449 QTreeWidgetItem *doc_browser = new QTreeWidgetItem (doc);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
450 doc_browser->setText (dsc_col, tr ("Browser"));
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
451
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
452 level_hash[sc_doc] = doc_browser;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
453
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
454 connect (this, &QTreeWidget::itemDoubleClicked,
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
455 this, &shortcuts_tree_widget::edit_selection);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
456
33414
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
457 QList<QString> shortcut_settings_keys
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
458 = all_shortcut_preferences::keys ();
33414
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
459 shortcut_settings_keys.sort ();
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
460
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
461 gui_settings settings;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
462
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
463 for (const auto& settings_key : shortcut_settings_keys)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
464 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
465 QTreeWidgetItem *section = level_hash[settings_key.section (':', 0, 0)];
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
466
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
467 // handle sections which have changed and do not correspond to the
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
468 // previously defined keyname
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
469 if (section == editor_file)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
470 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
471 // Closing tabs now in global tab handling section
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
472 if (settings_key.contains (sc_edit_file_cl))
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
473 section = main_tabs;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
474 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
475 else if (section == editor_edit)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
476 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
477 // Find & replace now in global file & replace handling section
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
478 if (settings_key.contains (sc_edit_edit_find))
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
479 section = main_find;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
480 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
481 else if (section == editor_view)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
482 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
483 // Zooming now in global zoom handling section
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
484 if (settings_key.contains (sc_edit_view_zoom))
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
485 section = main_zoom;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
486 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
487
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
488 const sc_pref scpref = all_shortcut_preferences::value (settings_key);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
489
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
490 // Inserts itself in the tree widget in SECTION. The parent
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
491 // object will delete it.
33414
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
492 QString actual_text = settings.sc_value (scpref);
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
493 new tree_widget_shortcut_item (section, scpref, actual_text);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
494 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
495 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
496
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
497 void
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
498 shortcuts_tree_widget::edit_selection (QTreeWidgetItem *item, int col)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
499 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
500 if (col != 2)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
501 return;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
502
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
503 tree_widget_shortcut_item *shortcut_item
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
504 = dynamic_cast<tree_widget_shortcut_item *> (item);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
505
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
506 if (! shortcut_item)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
507 return; // top-level-item clicked
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
508
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
509 shortcut_edit_dialog *dialog
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
510 = new shortcut_edit_dialog (shortcut_item);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
511
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
512 connect (dialog, &shortcut_edit_dialog::set_shortcut,
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
513 this, &shortcuts_tree_widget::update_widget_value);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
514
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
515 dialog->show ();
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
516 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
517
33414
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
518 void
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
519 shortcuts_tree_widget::update_widget_value (const QString& settings_key,
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
520 const QString& sc_text)
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
521 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
522 tree_widget_shortcut_item *item = get_item (settings_key);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
523
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
524 if (item)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
525 item->set_actual_text (sc_text);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
526 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
527
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
528 tree_widget_shortcut_item *
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
529 shortcuts_tree_widget::get_item (const QString& settings_key)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
530 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
531 // There aren't many shortcuts so iterating over all of them to find
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
532 // an individual item isn't a big performance issue. If we had many
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
533 // more items we could use a QHash <settings_key, sc_pref> data member.
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
534
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
535 tree_widget_shortcut_item *item = nullptr;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
536
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
537 QTreeWidgetItemIterator it (this, QTreeWidgetItemIterator::NoChildren);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
538 while (*it)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
539 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
540 tree_widget_shortcut_item *shortcut_item
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
541 = dynamic_cast<tree_widget_shortcut_item *> (*it);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
542
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
543 if (settings_key == shortcut_item->settings_key ())
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
544 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
545 item = shortcut_item;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
546 break;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
547 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
548
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
549 it++;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
550 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
551
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
552 // FIXME: Should it be an error to not find a match?
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
553
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
554 if (! item)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
555 qWarning () << (tr ("item %1 not found in shortcut settings dialog")
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
556 .arg (settings_key));
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
557
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
558 return item;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
559 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
560
33414
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
561 void
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
562 shortcuts_tree_widget::update_settings_value (gui_settings& settings,
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
563 const QString& settings_key)
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
564 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
565 tree_widget_shortcut_item *item = get_item (settings_key);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
566
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
567 if (item)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
568 settings.setValue (settings_key, item->actual_text ());
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
569 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
570
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
571 // Refresh the tree view with values from the settings object.
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
572
33414
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
573 void
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
574 shortcuts_tree_widget::import_shortcuts (gui_settings& settings)
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
575 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
576 settings.beginGroup (sc_group);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
577
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
578 const QStringList shortcut_settings_keys = settings.allKeys ();
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
579
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
580 for (const auto& settings_key : shortcut_settings_keys)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
581 {
31709
3a23b89bd21d define some convenience functions to reduce clutter
John W. Eaton <jwe@octave.org>
parents: 31708
diff changeset
582 // We don't want to apply default value here.
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
583 QString sc_text = settings.value (settings_key).toString ();
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
584
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
585 update_widget_value (settings_key, sc_text);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
586 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
587
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
588 settings.endGroup ();
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
589
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
590 bool sc_ctrld = false;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
591
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
592 QTreeWidgetItemIterator it (this, QTreeWidgetItemIterator::NoChildren);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
593 while (*it)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
594 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
595 tree_widget_shortcut_item *shortcut_item
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
596 = dynamic_cast<tree_widget_shortcut_item *> (*it);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
597
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
598 if (! shortcut_item)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
599 continue;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
600
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
601 QString settings_key = shortcut_item->settings_key ();
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
602 QString sc_text = shortcut_item->actual_text ();
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
603
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
604 if (sc_text.isEmpty ())
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
605 sc_text = shortcut_item->default_text ();
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
606
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
607 QString section = get_shortcut_section (settings_key);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
608
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
609 // special: check main-window for Ctrl-D (Terminal)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
610 if (section.startsWith ("main_")
31995
49d21a7b25a8 Replace deprecated QKeyCombination::operator+ by QKeyCombination::operator|.
Markus Mützel <markus.muetzel@gmx.de>
parents: 31771
diff changeset
611 && QKeySequence (sc_text)
49d21a7b25a8 Replace deprecated QKeyCombination::operator+ by QKeyCombination::operator|.
Markus Mützel <markus.muetzel@gmx.de>
parents: 31771
diff changeset
612 == QKeySequence (Qt::ControlModifier | Qt::Key_D))
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
613
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
614 sc_ctrld = true;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
615
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
616 it++;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
617 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
618
31702
aae24eaf89ad update gui_pref class to match recent changes to sc_pref class
John W. Eaton <jwe@octave.org>
parents: 31696
diff changeset
619 settings.setValue (sc_main_ctrld.settings_key (), sc_ctrld);
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
620
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
621 settings.sync ();
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
622 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
623
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
624 // Export all shortcuts from the tree view to the settings object.
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
625
33414
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
626 void
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
627 shortcuts_tree_widget::export_shortcuts (gui_settings& settings, bool full)
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
628 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
629 settings.beginGroup (sc_group);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
630
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
631 bool sc_ctrld = false;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
632
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
633 QTreeWidgetItemIterator it (this, QTreeWidgetItemIterator::NoChildren);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
634 while (*it)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
635 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
636 tree_widget_shortcut_item *shortcut_item
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
637 = dynamic_cast<tree_widget_shortcut_item *> (*it);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
638
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
639 if (! shortcut_item)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
640 continue;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
641
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
642 QString settings_key = shortcut_item->settings_key ();
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
643 QString sc_text = shortcut_item->actual_text ();
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
644
33414
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
645 if (full || sc_text != shortcut_item->default_text ())
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
646 {
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
647 // Only write the shortcut to the settings file if it is
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
648 // different to its default value or if an export into a
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
649 // custom file is desired by the user.
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
650 settings.setValue (settings_key, sc_text);
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
651 }
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
652 else
33414
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
653 {
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
654 // Remove the key otherwise, the default value will be
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
655 // chosen for non existing shortcut keys.
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
656 settings.remove (settings_key);
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
657 }
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
658
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
659 QString section = get_shortcut_section (settings_key);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
660
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
661 // special: check main-window for Ctrl-D (Terminal)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
662 if (section.startsWith ("main_")
31995
49d21a7b25a8 Replace deprecated QKeyCombination::operator+ by QKeyCombination::operator|.
Markus Mützel <markus.muetzel@gmx.de>
parents: 31771
diff changeset
663 && QKeySequence (sc_text)
49d21a7b25a8 Replace deprecated QKeyCombination::operator+ by QKeyCombination::operator|.
Markus Mützel <markus.muetzel@gmx.de>
parents: 31771
diff changeset
664 == QKeySequence (Qt::ControlModifier | Qt::Key_D))
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
665
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
666 sc_ctrld = true;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
667
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
668 it++;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
669 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
670
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
671 settings.endGroup ();
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
672
31702
aae24eaf89ad update gui_pref class to match recent changes to sc_pref class
John W. Eaton <jwe@octave.org>
parents: 31696
diff changeset
673 settings.setValue (sc_main_ctrld.settings_key (), sc_ctrld);
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
674
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
675 settings.sync ();
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
676 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
677
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
678 // Clear all user-defined settings from the tree widget and the
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
679 // application settings.
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
680
33414
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
681 void
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
682 shortcuts_tree_widget::set_default_shortcuts ()
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
683 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
684 gui_settings settings;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
685
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
686 settings.beginGroup (sc_group);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
687
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
688 settings.remove ("");
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
689
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
690 settings.endGroup ();
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
691
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
692 bool sc_ctrld = false;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
693
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
694 QTreeWidgetItemIterator it (this, QTreeWidgetItemIterator::NoChildren);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
695 while (*it)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
696 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
697 tree_widget_shortcut_item *shortcut_item
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
698 = dynamic_cast<tree_widget_shortcut_item *> (*it);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
699
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
700 if (! shortcut_item)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
701 continue;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
702
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
703 QString settings_key = shortcut_item->settings_key ();
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
704
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
705 shortcut_item->set_actual_text ("");
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
706
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
707 QString sc_text = shortcut_item->default_text ();
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
708
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
709 QString section = get_shortcut_section (settings_key);
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
710
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
711 // special: check main-window for Ctrl-D (Terminal)
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
712 if (section.startsWith ("main_")
31995
49d21a7b25a8 Replace deprecated QKeyCombination::operator+ by QKeyCombination::operator|.
Markus Mützel <markus.muetzel@gmx.de>
parents: 31771
diff changeset
713 && QKeySequence (sc_text)
49d21a7b25a8 Replace deprecated QKeyCombination::operator+ by QKeyCombination::operator|.
Markus Mützel <markus.muetzel@gmx.de>
parents: 31771
diff changeset
714 == QKeySequence (Qt::ControlModifier | Qt::Key_D))
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
715
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
716 sc_ctrld = true;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
717
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
718 it++;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
719 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
720
31702
aae24eaf89ad update gui_pref class to match recent changes to sc_pref class
John W. Eaton <jwe@octave.org>
parents: 31696
diff changeset
721 settings.setValue (sc_main_ctrld.settings_key (), sc_ctrld);
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
722
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
723 settings.sync ();
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
724 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
725
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
726 // For each key found in application settings object, transfer
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
727 // corresponding setting to the application settings object.
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
728
33414
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
729 void
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
730 shortcuts_tree_widget::write_settings ()
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
731 {
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
732 gui_settings settings;
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
733
33414
ec8b3c32effa allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 32632
diff changeset
734 export_shortcuts (settings, false); // false: omit values identical to the default
31696
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
735 }
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
736
8fed04d0607c eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff changeset
737 OCTAVE_END_NAMESPACE(octave)