any_keycode_dialog: pre-fill current keycode

main
Ilya Zhuravlev 2021-03-14 17:53:33 -04:00
parent 54972955cc
commit c1ff9f29a1
2 changed files with 18 additions and 12 deletions

View File

@ -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)

View File

@ -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)