minor style refactoring

main
Ilya Zhuravlev 2020-10-16 15:26:11 -04:00
parent 92a4d6e3f4
commit 347fa7c421
7 changed files with 25 additions and 17 deletions

View File

@ -3,3 +3,6 @@ KEY_HEIGHT = KEY_WIDTH
KEY_SPACING = 4 KEY_SPACING = 4
WINDOW_WIDTH, WINDOW_HEIGHT = 1024, 768 WINDOW_WIDTH, WINDOW_HEIGHT = 1024, 768
LAYER_BTN_STYLE = "border: 1px solid black; padding: 5px"
ACTIVE_LAYER_BTN_STYLE = "border: 1px solid black; padding: 5px; background-color: black; color: white"

View File

@ -14,6 +14,11 @@ class Keyboard:
def __init__(self, dev): def __init__(self, dev):
self.dev = dev self.dev = dev
self.rowcol = set()
self.layout = dict()
self.layers = 0
self.keys = []
def reload(self): def reload(self):
""" Load information about the keyboard: number of layers, physical key layout """ """ Load information about the keyboard: number of layers, physical key layout """

View File

@ -5,7 +5,7 @@ from PyQt5.QtWidgets import QWidget, QHBoxLayout, QLabel, QVBoxLayout
from clickable_label import ClickableLabel from clickable_label import ClickableLabel
from keycodes import keycode_label, keycode_tooltip from keycodes import keycode_label, keycode_tooltip
from constants import KEY_WIDTH, KEY_SPACING, KEY_HEIGHT from constants import KEY_WIDTH, KEY_SPACING, KEY_HEIGHT, LAYER_BTN_STYLE, ACTIVE_LAYER_BTN_STYLE
from util import tr from util import tr
@ -39,9 +39,10 @@ class KeyboardContainer(QWidget):
self.selected_key = None self.selected_key = None
self.selected_row = -1 self.selected_row = -1
self.selected_col = -1 self.selected_col = -1
self.keyboard = None
self.current_layer = 0
def rebuild_layers(self): def rebuild_layers(self):
self.layers = self.keyboard.layers
self.number_layers_changed.emit() self.number_layers_changed.emit()
# delete old layer labels # delete old layer labels
@ -50,7 +51,7 @@ class KeyboardContainer(QWidget):
self.layer_labels = [] self.layer_labels = []
# create new layer labels # create new layer labels
for x in range(self.layers): for x in range(self.keyboard.layers):
label = ClickableLabel(str(x)) label = ClickableLabel(str(x))
label.setAlignment(Qt.AlignCenter) label.setAlignment(Qt.AlignCenter)
label.clicked.connect(lambda idx=x: self.switch_layer(idx)) label.clicked.connect(lambda idx=x: self.switch_layer(idx))
@ -105,8 +106,8 @@ class KeyboardContainer(QWidget):
""" Refresh text on key widgets to display data corresponding to current layer """ """ Refresh text on key widgets to display data corresponding to current layer """
for label in self.layer_labels: for label in self.layer_labels:
label.setStyleSheet("border: 1px solid black; padding: 5px") label.setStyleSheet(LAYER_BTN_STYLE)
self.layer_labels[self.current_layer].setStyleSheet("border: 1px solid black; padding: 5px; background-color: black; color: white") self.layer_labels[self.current_layer].setStyleSheet(ACTIVE_LAYER_BTN_STYLE)
for (row, col), widgets in self.rowcol.items(): for (row, col), widgets in self.rowcol.items():
code = self.keyboard.layout[(self.current_layer, row, col)] code = self.keyboard.layout[(self.current_layer, row, col)]
@ -142,4 +143,4 @@ class KeyboardContainer(QWidget):
self.selected_row = row self.selected_row = row
self.selected_col = col self.selected_col = col
break break
self.refresh_layer_display() self.refresh_layer_display()

View File

@ -211,18 +211,21 @@ KEYCODES = KEYCODES_BASIC + KEYCODES_ISO + KEYCODES_MACRO + KEYCODES_LAYERS + KE
K = None K = None
def find_keycode(code): def find_keycode(code):
for keycode in KEYCODES: for keycode in KEYCODES:
if keycode.code == code: if keycode.code == code:
return keycode return keycode
return None return None
def keycode_label(code): def keycode_label(code):
keycode = find_keycode(code) keycode = find_keycode(code)
if keycode is None: if keycode is None:
return "0x{:X}".format(code) return "0x{:X}".format(code)
return keycode.label return keycode.label
def keycode_tooltip(code): def keycode_tooltip(code):
keycode = find_keycode(code) keycode = find_keycode(code)
if keycode is None: if keycode is None:
@ -232,6 +235,7 @@ def keycode_tooltip(code):
tooltip = "{}: {}".format(tooltip, keycode.tooltip) tooltip = "{}: {}".format(tooltip, keycode.tooltip)
return tooltip return tooltip
def recreate_layer_keycodes(layers): def recreate_layer_keycodes(layers):
""" Generates layer keycodes based on number of layers a keyboard provides """ """ Generates layer keycodes based on number of layers a keyboard provides """

View File

@ -193,12 +193,3 @@ class Serial:
# TODO: add tests # TODO: add tests
# serial = Serial()
# data = open("plain60.json", "r").read()
# data = json.loads(data)
# kb = serial.deserialize(data["layouts"]["keymap"])
# for key in kb.keys:
# print("{} {}x{}+{}x{}".format(key.labels, key.x, key.y, key.width, key.height))

View File

@ -58,8 +58,8 @@ class MainWindow(QWidget):
self.keyboard_container.rebuild(keyboard) self.keyboard_container.rebuild(keyboard)
def on_number_layers_changed(self): def on_number_layers_changed(self):
recreate_layer_keycodes(self.keyboard_container.layers) recreate_layer_keycodes(self.keyboard_container.keyboard.layers)
self.tabbed_keycodes.recreate_layer_keycode_buttons() self.tabbed_keycodes.recreate_layer_keycode_buttons()
def on_keycode_changed(self, code): def on_keycode_changed(self, code):
self.keyboard_container.set_key(code) self.keyboard_container.set_key(code)

View File

@ -16,6 +16,7 @@ VIAL_SERIAL_NUMBER_MAGIC = "vial:f64c2b3c"
MSG_LEN = 32 MSG_LEN = 32
def hid_send(dev, msg): def hid_send(dev, msg):
if len(msg) > MSG_LEN: if len(msg) > MSG_LEN:
raise RuntimeError("message must be less than 32 bytes") raise RuntimeError("message must be less than 32 bytes")
@ -26,10 +27,12 @@ def hid_send(dev, msg):
return bytes(dev.read(MSG_LEN)) return bytes(dev.read(MSG_LEN))
def is_rawhid(dev): def is_rawhid(dev):
# TODO: this is only broken on linux, other platforms should be able to check usage_page # TODO: this is only broken on linux, other platforms should be able to check usage_page
return dev["interface_number"] == 1 return dev["interface_number"] == 1
def find_vial_keyboards(): def find_vial_keyboards():
filtered = [] filtered = []
for dev in hid.enumerate(): for dev in hid.enumerate():
@ -37,6 +40,7 @@ def find_vial_keyboards():
filtered.append(dev) filtered.append(dev)
return filtered return filtered
def open_device(desc): def open_device(desc):
# TODO: error handling here # TODO: error handling here
dev = hid.device() dev = hid.device()