From d6e9a14202cc28bee3dcab2cd76348abfc57c8ac Mon Sep 17 00:00:00 2001 From: Ilya Zhuravlev Date: Sun, 20 Dec 2020 19:29:48 -0500 Subject: [PATCH] layout_editor: initial --- src/main/python/basic_editor.py | 15 +++++++++++++++ src/main/python/firmware_flasher.py | 8 ++++---- src/main/python/keymap_editor.py | 7 +++---- src/main/python/layout_editor.py | 17 +++++++++++++++++ src/main/python/main_window.py | 12 ++++++++---- 5 files changed, 47 insertions(+), 12 deletions(-) create mode 100644 src/main/python/basic_editor.py create mode 100644 src/main/python/layout_editor.py diff --git a/src/main/python/basic_editor.py b/src/main/python/basic_editor.py new file mode 100644 index 0000000..df08623 --- /dev/null +++ b/src/main/python/basic_editor.py @@ -0,0 +1,15 @@ +from PyQt5.QtWidgets import QVBoxLayout + + +class BasicEditor(QVBoxLayout): + + def __init__(self, parent=None): + super().__init__(parent) + + self.device = None + + def valid(self): + raise NotImplementedError + + def rebuild(self, device): + self.device = device diff --git a/src/main/python/firmware_flasher.py b/src/main/python/firmware_flasher.py index 9019a7d..081d39c 100644 --- a/src/main/python/firmware_flasher.py +++ b/src/main/python/firmware_flasher.py @@ -7,9 +7,9 @@ import threading from PyQt5.QtCore import pyqtSignal from PyQt5.QtGui import QFontDatabase -from PyQt5.QtWidgets import QVBoxLayout, QHBoxLayout, QLineEdit, QToolButton, QPlainTextEdit, QProgressBar,\ - QFileDialog, QDialog +from PyQt5.QtWidgets import QHBoxLayout, QLineEdit, QToolButton, QPlainTextEdit, QProgressBar,QFileDialog, QDialog +from basic_editor import BasicEditor from util import tr, chunks from vial_device import VialBootloader @@ -66,7 +66,7 @@ def cmd_flash(device, firmware, log_cb, progress_cb, complete_cb, error_cb): complete_cb("Done!") -class FirmwareFlasher(QVBoxLayout): +class FirmwareFlasher(BasicEditor): log_signal = pyqtSignal(object) progress_signal = pyqtSignal(object) complete_signal = pyqtSignal(object) @@ -110,7 +110,7 @@ class FirmwareFlasher(QVBoxLayout): self.device = None def rebuild(self, device): - self.device = device + super().rebuild(device) self.txt_logger.clear() if isinstance(self.device, VialBootloader): self.log("Valid Vial Bootloader device at {}".format(self.device.desc["path"].decode("utf-8"))) diff --git a/src/main/python/keymap_editor.py b/src/main/python/keymap_editor.py index 8851eb0..01d2cc1 100644 --- a/src/main/python/keymap_editor.py +++ b/src/main/python/keymap_editor.py @@ -1,14 +1,13 @@ # SPDX-License-Identifier: GPL-2.0-or-later -from PyQt5.QtWidgets import QVBoxLayout - +from basic_editor import BasicEditor from keyboard_container import KeyboardContainer from keycodes import recreate_layer_keycodes from tabbed_keycodes import TabbedKeycodes from vial_device import VialKeyboard -class KeymapEditor(QVBoxLayout): +class KeymapEditor(BasicEditor): def __init__(self, parent=None): super().__init__(parent) @@ -32,7 +31,7 @@ class KeymapEditor(QVBoxLayout): self.keyboard_container.set_key(code) def rebuild(self, device): - self.device = device + super().rebuild(device) if isinstance(self.device, VialKeyboard): self.keyboard_container.rebuild(device.keyboard) diff --git a/src/main/python/layout_editor.py b/src/main/python/layout_editor.py new file mode 100644 index 0000000..80ff8a4 --- /dev/null +++ b/src/main/python/layout_editor.py @@ -0,0 +1,17 @@ +# SPDX-License-Identifier: GPL-2.0-or-later + +from basic_editor import BasicEditor +from vial_device import VialKeyboard + + +class LayoutEditor(BasicEditor): + + def __init__(self, parent=None): + super().__init__(parent) + self.device = None + + def rebuild(self, device): + super().rebuild(device) + + def valid(self): + return isinstance(self.device, VialKeyboard) diff --git a/src/main/python/main_window.py b/src/main/python/main_window.py index 77a9130..f6f9684 100644 --- a/src/main/python/main_window.py +++ b/src/main/python/main_window.py @@ -8,6 +8,7 @@ import json from firmware_flasher import FirmwareFlasher from keymap_editor import KeymapEditor +from layout_editor import LayoutEditor from util import tr, find_vial_devices @@ -33,8 +34,12 @@ class MainWindow(QMainWindow): layout_combobox.addWidget(self.btn_refresh_devices) self.keymap_editor = KeymapEditor() + self.layout_editor = LayoutEditor() self.firmware_flasher = FirmwareFlasher(self) + self.editors = [(self.keymap_editor, "Keymap"), (self.layout_editor, "Layout"), + (self.firmware_flasher, "Firmware updater")] + self.tabs = QTabWidget() self.refresh_tabs() @@ -66,7 +71,6 @@ class MainWindow(QMainWindow): exit_act.setShortcut("Ctrl+Q") exit_act.triggered.connect(qApp.exit) - menubar = self.menuBar() file_menu = self.menuBar().addMenu(tr("Menu", "File")) file_menu.addAction(layout_load_act) file_menu.addAction(layout_save_act) @@ -112,14 +116,14 @@ class MainWindow(QMainWindow): if self.current_device is not None: self.current_device.open(self.sideload_json if self.current_device.sideload else None) - self.keymap_editor.rebuild(self.current_device) - self.firmware_flasher.rebuild(self.current_device) + for editor, lbl in self.editors: + editor.rebuild(self.current_device) self.refresh_tabs() def refresh_tabs(self): self.tabs.clear() - for container, lbl in [(self.keymap_editor, "Keymap"), (self.firmware_flasher, "Firmware updater")]: + for container, lbl in self.editors: if not container.valid(): continue