From 0bbc49c500e7c7bd29dd4e801fde63777911773f Mon Sep 17 00:00:00 2001 From: Ilya Zhuravlev Date: Tue, 2 Feb 2021 09:14:55 -0500 Subject: [PATCH] keyboard_widget: pop up any key dialog on double click --- src/main/python/keyboard_widget.py | 5 ++++- src/main/python/keymap_editor.py | 9 ++++++++- src/main/python/tabbed_keycodes.py | 13 ++++--------- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/main/python/keyboard_widget.py b/src/main/python/keyboard_widget.py index a9ca63d..a48b435 100644 --- a/src/main/python/keyboard_widget.py +++ b/src/main/python/keyboard_widget.py @@ -135,6 +135,7 @@ class EncoderWidget(KeyWidget): class KeyboardWidget(QWidget): clicked = pyqtSignal() + anykey = pyqtSignal() def __init__(self, layout_editor): super().__init__() @@ -359,8 +360,10 @@ class KeyboardWidget(QWidget): QToolTip.showText(ev.globalPos(), key.tooltip) else: QToolTip.hideText() - if ev.type() == QEvent.LayoutRequest: + elif ev.type() == QEvent.LayoutRequest: self.update_layout() + elif ev.type() == QEvent.MouseButtonDblClick and self.active_key: + self.anykey.emit() return super().event(ev) def set_enabled(self, val): diff --git a/src/main/python/keymap_editor.py b/src/main/python/keymap_editor.py index 4484b1b..a0c5d47 100644 --- a/src/main/python/keymap_editor.py +++ b/src/main/python/keymap_editor.py @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-2.0-or-later - +from any_keycode_dialog import AnyKeycodeDialog from basic_editor import BasicEditor from keyboard_container import KeyboardContainer from keycodes import recreate_keyboard_keycodes @@ -13,9 +13,11 @@ class KeymapEditor(BasicEditor): super().__init__() self.keyboard_container = KeyboardContainer(layout_editor) + self.keyboard_container.container.anykey.connect(self.on_any_keycode) self.tabbed_keycodes = TabbedKeycodes() self.tabbed_keycodes.keycode_changed.connect(self.on_keycode_changed) + self.tabbed_keycodes.anykey.connect(self.on_any_keycode) self.addWidget(self.keyboard_container) self.addWidget(self.tabbed_keycodes) @@ -45,3 +47,8 @@ class KeymapEditor(BasicEditor): def set_keymap_override(self, override): self.keyboard_container.set_keymap_override(override) self.tabbed_keycodes.set_keymap_override(override) + + def on_any_keycode(self): + dlg = AnyKeycodeDialog() + if dlg.exec_() and dlg.value >= 0: + self.on_keycode_changed(dlg.value) diff --git a/src/main/python/tabbed_keycodes.py b/src/main/python/tabbed_keycodes.py index 2acd500..2ebf721 100644 --- a/src/main/python/tabbed_keycodes.py +++ b/src/main/python/tabbed_keycodes.py @@ -1,10 +1,9 @@ # SPDX-License-Identifier: GPL-2.0-or-later -from PyQt5.QtCore import Qt, QSize, pyqtSignal -from PyQt5.QtWidgets import QTabWidget, QWidget, QPushButton, QScrollArea, QApplication +from PyQt5.QtCore import Qt, pyqtSignal +from PyQt5.QtWidgets import QTabWidget, QWidget, QScrollArea, QApplication from PyQt5.QtGui import QPalette -from any_keycode_dialog import AnyKeycodeDialog from constants import KEYCODE_BTN_RATIO from flowlayout import FlowLayout from keycodes import keycode_tooltip, KEYCODES_BASIC, KEYCODES_ISO, KEYCODES_MACRO, KEYCODES_LAYERS, KEYCODES_QUANTUM, \ @@ -17,6 +16,7 @@ from util import tr class TabbedKeycodes(QTabWidget): keycode_changed = pyqtSignal(int) + anykey = pyqtSignal() def __init__(self, parent=None): super().__init__(parent) @@ -54,7 +54,7 @@ class TabbedKeycodes(QTabWidget): btn = SquareButton() btn.setText("Any") btn.setRelSize(KEYCODE_BTN_RATIO) - btn.clicked.connect(self.on_any_keycode) + btn.clicked.connect(lambda: self.anykey.emit()) layout.addWidget(btn) self.widgets += self.create_buttons(layout, keycodes) @@ -111,8 +111,3 @@ class TabbedKeycodes(QTabWidget): label = widget.keycode.label widget.setStyleSheet("QPushButton {}") widget.setText(label.replace("&", "&&")) - - def on_any_keycode(self): - dlg = AnyKeycodeDialog() - if dlg.exec_() and dlg.value >= 0: - self.keycode_changed.emit(dlg.value)