layout_editor: initial

main
Ilya Zhuravlev 2020-12-20 19:29:48 -05:00
parent 657a4a18f1
commit d6e9a14202
5 changed files with 47 additions and 12 deletions

View File

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

View File

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

View File

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

View File

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

View File

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