keyboard_container: get rid of selected_/active_ duplication

main
Ilya Zhuravlev 2020-12-18 22:44:51 -05:00
parent d06e22c754
commit f7f4de7770
2 changed files with 10 additions and 17 deletions

View File

@ -40,8 +40,6 @@ class KeyboardContainer(QWidget):
self.keys = []
self.layer_labels = []
self.widgets = []
self.selected_widget = None
self.selected_mask = False
self.keyboard = None
self.current_layer = 0
@ -112,23 +110,22 @@ class KeyboardContainer(QWidget):
def switch_layer(self, idx):
self.container.deselect()
self.current_layer = idx
self.selected_widget = None
self.refresh_layer_display()
def set_key(self, keycode):
""" Change currently selected key to provided keycode """
if isinstance(self.selected_widget, EncoderWidget):
if isinstance(self.container.active_key, EncoderWidget):
self.set_key_encoder(keycode)
else:
self.set_key_matrix(keycode)
def set_key_encoder(self, keycode):
l, i, d = self.current_layer, self.selected_widget.desc.encoder_idx,\
self.selected_widget.desc.encoder_dir
l, i, d = self.current_layer, self.container.active_key.desc.encoder_idx,\
self.container.active_key.desc.encoder_dir
# if masked, ensure that this is a byte-sized keycode
if self.selected_mask:
if self.container.active_mask:
if keycode > 0xFF:
return
keycode = (self.keyboard.encoder_layout[(l, i, d)] & 0xFF00) | keycode
@ -137,11 +134,11 @@ class KeyboardContainer(QWidget):
self.refresh_layer_display()
def set_key_matrix(self, keycode):
l, r, c = self.current_layer, self.selected_widget.desc.row, self.selected_widget.desc.col
l, r, c = self.current_layer, self.container.active_key.desc.row, self.container.active_key.desc.col
if r >= 0 and c >= 0:
# if masked, ensure that this is a byte-sized keycode
if self.selected_mask:
if self.container.active_mask:
if keycode > 0xFF:
return
keycode = (self.keyboard.layout[(l, r, c)] & 0xFF00) | keycode
@ -149,12 +146,8 @@ class KeyboardContainer(QWidget):
self.keyboard.set_key(l, r, c, keycode)
self.refresh_layer_display()
def on_key_clicked(self, widget, is_mask):
""" Change which key is currently selected """
self.selected_mask = is_mask
self.selected_widget = widget
def on_key_clicked(self):
""" Called when a key on the keyboard widget is clicked """
self.refresh_layer_display()
def save_layout(self):

View File

@ -111,7 +111,7 @@ class EncoderWidget(KeyWidget):
class KeyboardWidget(QWidget):
clicked = pyqtSignal(KeyWidget, bool)
clicked = pyqtSignal()
def __init__(self):
super().__init__()
@ -221,7 +221,7 @@ class KeyboardWidget(QWidget):
def mousePressEvent(self, ev):
self.active_key, self.active_mask = self.hit_test(ev.pos())
if self.active_key is not None:
self.clicked.emit(self.active_key, self.active_mask)
self.clicked.emit()
self.update()
def deselect(self):