From c1ff9f29a152d091e7fbb94c97c423b318d78e4a Mon Sep 17 00:00:00 2001 From: Ilya Zhuravlev Date: Sun, 14 Mar 2021 17:53:33 -0400 Subject: [PATCH] any_keycode_dialog: pre-fill current keycode --- src/main/python/any_keycode_dialog.py | 12 ++++++------ src/main/python/keymap_editor.py | 18 ++++++++++++------ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/main/python/any_keycode_dialog.py b/src/main/python/any_keycode_dialog.py index 0a42785..833e5c5 100644 --- a/src/main/python/any_keycode_dialog.py +++ b/src/main/python/any_keycode_dialog.py @@ -7,7 +7,7 @@ from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QVBoxLayout, QLineEdit, Q from keycodes import KEYCODES_SPECIAL, KEYCODES_BASIC, KEYCODES_SHIFTED, KEYCODES_ISO, KEYCODES_BACKLIGHT, \ KEYCODES_MEDIA, KEYCODES_USER, QK_LCTL, QK_LSFT, QK_LALT, QK_LGUI, QK_RCTL, QK_RSFT, QK_RALT, QK_RGUI, QK_LAYER_TAP, \ - MOD_MEH, MOD_HYPR + MOD_MEH, MOD_HYPR, Keycode from util import tr @@ -138,8 +138,8 @@ class AnyKeycode: class AnyKeycodeDialog(QDialog): - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) + def __init__(self, initial): + super().__init__() self.setWindowTitle(tr("AnyKeycodeDialog", "Enter an arbitrary keycode")) @@ -157,15 +157,15 @@ class AnyKeycodeDialog(QDialog): self.layout.addWidget(self.buttons) self.setLayout(self.layout) - self.any = AnyKeycode() - self.value = -1 + self.value = initial + self.txt_entry.setText(Keycode.serialize(initial)) self.on_change() def on_change(self): text = self.txt_entry.text() value = err = None try: - value = self.any.decode(text) + value = Keycode.deserialize(text) except Exception as e: err = str(e) diff --git a/src/main/python/keymap_editor.py b/src/main/python/keymap_editor.py index dbd8508..b964aea 100644 --- a/src/main/python/keymap_editor.py +++ b/src/main/python/keymap_editor.py @@ -118,7 +118,10 @@ class KeymapEditor(BasicEditor): self.tabbed_keycodes.set_keymap_override(override) def on_any_keycode(self): - dlg = AnyKeycodeDialog() + if self.container.active_key is None: + return + current_code = self.code_for_widget(self.container.active_key) + dlg = AnyKeycodeDialog(current_code) if dlg.exec_() and dlg.value >= 0: self.on_keycode_changed(dlg.value) @@ -133,6 +136,13 @@ class KeymapEditor(BasicEditor): return self.keymap_override[Keycode.find_outer_keycode(code).qmk_id] return Keycode.label(code) + def code_for_widget(self, widget): + if widget.desc.row is not None: + return self.keyboard.layout[(self.current_layer, widget.desc.row, widget.desc.col)] + else: + return self.keyboard.encoder_layout[(self.current_layer, widget.desc.encoder_idx, + widget.desc.encoder_dir)] + def refresh_layer_display(self): """ Refresh text on key widgets to display data corresponding to current layer """ @@ -143,11 +153,7 @@ class KeymapEditor(BasicEditor): btn.setChecked(idx == self.current_layer) for widget in self.container.widgets: - if widget.desc.row is not None: - code = self.keyboard.layout[(self.current_layer, widget.desc.row, widget.desc.col)] - else: - code = self.keyboard.encoder_layout[(self.current_layer, widget.desc.encoder_idx, - widget.desc.encoder_dir)] + code = self.code_for_widget(widget) text = self.get_label(code) tooltip = Keycode.tooltip(code) mask = Keycode.is_mask(code)