--- a/eric7/Preferences/ShortcutDialog.py Wed May 19 17:36:34 2021 +0200 +++ b/eric7/Preferences/ShortcutDialog.py Wed May 19 18:16:45 2021 +0200 @@ -7,7 +7,7 @@ Module implementing a dialog for the configuration of a keyboard shortcut. """ -from PyQt6.QtCore import pyqtSignal, QEvent, Qt +from PyQt6.QtCore import pyqtSignal, Qt, QEvent, QKeyCombination from PyQt6.QtGui import QKeySequence from PyQt6.QtWidgets import QDialog, QDialogButtonBox @@ -38,8 +38,8 @@ self.setupUi(self) self.setWindowFlags(Qt.WindowType.Window) - self.keyIndex = 0 - self.keys = [0, 0, 0, 0] + self.__clearKeys() + self.noCheck = False self.objectType = "" @@ -63,7 +63,19 @@ msh = self.minimumSizeHint() self.resize(max(self.width(), msh.width()), msh.height()) - + + def __clearKeys(self): + """ + Private method to clear the list of recorded keys. + """ + self.keyIndex = 0 + self.keys = [ + QKeyCombination(), + QKeyCombination(), + QKeyCombination(), + QKeyCombination() + ] + def setKeys(self, key, alternateKey, noCheck, objectType): """ Public method to set the key to be configured. @@ -74,8 +86,8 @@ be performed (boolean) @param objectType type of the object (string). """ - self.keyIndex = 0 - self.keys = [0, 0, 0, 0] + self.__clearKeys() + self.keyEdit.setText(key.toString()) self.alternateKeyEdit.setText(alternateKey.toString()) self.primaryButton.setChecked(True) @@ -96,16 +108,14 @@ """ Private slot to handle the Clear button press. """ - self.keyIndex = 0 - self.keys = [0, 0, 0, 0] + self.__clearKeys() self.__setKeyEditText("") def __typeChanged(self): """ Private slot to handle the change of the shortcuts type. """ - self.keyIndex = 0 - self.keys = [0, 0, 0, 0] + self.__clearKeys() def __setKeyEditText(self, txt): """ @@ -138,7 +148,6 @@ @param evt the key event (QKeyEvent) """ - # TODO: change code to use QKeyCombination if evt.key() in [ Qt.Key.Key_Control, Qt.Key.Key_Meta, Qt.Key.Key_Shift, Qt.Key.Key_Alt, Qt.Key.Key_Menu, @@ -148,38 +157,41 @@ return if self.keyIndex == 4: - self.keyIndex = 0 - self.keys = [0, 0, 0, 0] + self.__clearKeys() if ( evt.key() == Qt.Key.Key_Backtab and evt.modifiers() & Qt.KeyboardModifier.ShiftModifier ): - self.keys[self.keyIndex] = Qt.Key.Key_Tab + self.keys[self.keyIndex] = QKeyCombination(evt.modifiers(), + Qt.Key.Key_Tab) else: - self.keys[self.keyIndex] = evt.key() - - if evt.modifiers() & Qt.KeyboardModifier.ShiftModifier: - self.keys[self.keyIndex] += Qt.Modifier.SHIFT - if evt.modifiers() & Qt.KeyboardModifier.ControlModifier: - self.keys[self.keyIndex] += Qt.Modifier.CTRL - if evt.modifiers() & Qt.KeyboardModifier.AltModifier: - self.keys[self.keyIndex] += Qt.Modifier.ALT - if evt.modifiers() & Qt.KeyboardModifier.MetaModifier: - self.keys[self.keyIndex] += Qt.Modifier.META + self.keys[self.keyIndex] = QKeyCombination(evt.modifiers(), + Qt.Key(evt.key())) self.keyIndex += 1 if self.keyIndex == 1: - self.__setKeyEditText(QKeySequence(self.keys[0]).toString()) + self.__setKeyEditText( + QKeySequence( + self.keys[0] + ).toString(QKeySequence.SequenceFormat.NativeText) + ) elif self.keyIndex == 2: self.__setKeyEditText( - QKeySequence(self.keys[0], self.keys[1]).toString()) + QKeySequence( + self.keys[0], self.keys[1] + ).toString(QKeySequence.SequenceFormat.NativeText) + ) elif self.keyIndex == 3: - self.__setKeyEditText(QKeySequence( - self.keys[0], self.keys[1], - self.keys[2]).toString()) + self.__setKeyEditText( + QKeySequence( + self.keys[0], self.keys[1], self.keys[2] + ).toString(QKeySequence.SequenceFormat.NativeText) + ) elif self.keyIndex == 4: - self.__setKeyEditText(QKeySequence( - self.keys[0], self.keys[1], - self.keys[2], self.keys[3]).toString()) + self.__setKeyEditText( + QKeySequence( + self.keys[0], self.keys[1], self.keys[2], self.keys[3] + ).toString(QKeySequence.SequenceFormat.NativeText) + )