Abstract layout editor into a separate class

main
Ilya Zhuravlev 2020-12-02 02:58:52 -05:00
parent 513ec71600
commit 80492bc940
2 changed files with 44 additions and 24 deletions

View File

@ -0,0 +1,38 @@
# SPDX-License-Identifier: GPL-2.0-or-later
from PyQt5.QtWidgets import QVBoxLayout
from keyboard_container import KeyboardContainer
from keycodes import recreate_layer_keycodes
from tabbed_keycodes import TabbedKeycodes
class LayoutEditor(QVBoxLayout):
def __init__(self, parent=None):
super().__init__(parent)
self.keyboard_container = KeyboardContainer()
self.keyboard_container.number_layers_changed.connect(self.on_number_layers_changed)
self.tabbed_keycodes = TabbedKeycodes()
self.tabbed_keycodes.keycode_changed.connect(self.on_keycode_changed)
self.addWidget(self.keyboard_container)
self.addWidget(self.tabbed_keycodes)
def on_number_layers_changed(self):
recreate_layer_keycodes(self.keyboard_container.keyboard.layers)
self.tabbed_keycodes.recreate_layer_keycode_buttons()
def on_keycode_changed(self, code):
self.keyboard_container.set_key(code)
def rebuild(self, keyboard):
self.keyboard_container.rebuild(keyboard)
def save_layout(self):
return self.keyboard_container.save_layout()
def restore_layout(self, data):
self.keyboard_container.restore_layout(data)

View File

@ -8,9 +8,7 @@ import json
from firmware_flasher import FirmwareFlasher
from keyboard import Keyboard
from keyboard_container import KeyboardContainer
from keycodes import recreate_layer_keycodes
from tabbed_keycodes import TabbedKeycodes
from layout_editor import LayoutEditor
from util import tr, find_vial_keyboards, open_device
@ -23,12 +21,6 @@ class MainWindow(QMainWindow):
self.sideload_json = None
self.sideload_vid = self.sideload_pid = -1
self.keyboard_container = KeyboardContainer()
self.keyboard_container.number_layers_changed.connect(self.on_number_layers_changed)
self.tabbed_keycodes = TabbedKeycodes()
self.tabbed_keycodes.keycode_changed.connect(self.on_keycode_changed)
self.combobox_devices = QComboBox()
self.combobox_devices.currentIndexChanged.connect(self.on_device_selected)
@ -41,14 +33,11 @@ class MainWindow(QMainWindow):
layout_combobox.addWidget(self.combobox_devices)
layout_combobox.addWidget(btn_refresh_devices)
kb_and_codes = QVBoxLayout()
kb_and_codes.addWidget(self.keyboard_container)
kb_and_codes.addWidget(self.tabbed_keycodes)
self.layout_editor = LayoutEditor()
flasher = FirmwareFlasher()
tabs = QTabWidget()
for container, lbl in [(kb_and_codes, "Layout"), (flasher, "Firmware updater")]:
for container, lbl in [(self.layout_editor, "Layout"), (flasher, "Firmware updater")]:
w = QWidget()
w.setLayout(container)
tabs.addTab(w, tr("MainWindow", lbl))
@ -98,7 +87,7 @@ class MainWindow(QMainWindow):
if dialog.exec_() == QDialog.Accepted:
with open(dialog.selectedFiles()[0], "rb") as inf:
data = inf.read()
self.keyboard_container.restore_layout(data)
self.layout_editor.restore_layout(data)
def on_layout_save(self):
dialog = QFileDialog()
@ -107,7 +96,7 @@ class MainWindow(QMainWindow):
dialog.setNameFilters(["Vial layout (*.vil)"])
if dialog.exec_() == QDialog.Accepted:
with open(dialog.selectedFiles()[0], "wb") as outf:
outf.write(self.keyboard_container.save_layout())
outf.write(self.layout_editor.save_layout())
def on_click_refresh(self):
self.devices = find_vial_keyboards(self.sideload_vid, self.sideload_pid)
@ -130,14 +119,7 @@ class MainWindow(QMainWindow):
self.keyboard.reload(self.sideload_json)
else:
self.keyboard.reload()
self.keyboard_container.rebuild(self.keyboard)
def on_number_layers_changed(self):
recreate_layer_keycodes(self.keyboard_container.keyboard.layers)
self.tabbed_keycodes.recreate_layer_keycode_buttons()
def on_keycode_changed(self, code):
self.keyboard_container.set_key(code)
self.layout_editor.rebuild(self.keyboard)
def on_sideload_json(self):
dialog = QFileDialog()