layout_editor: initial
parent
657a4a18f1
commit
d6e9a14202
|
|
@ -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
|
||||||
|
|
@ -7,9 +7,9 @@ import threading
|
||||||
|
|
||||||
from PyQt5.QtCore import pyqtSignal
|
from PyQt5.QtCore import pyqtSignal
|
||||||
from PyQt5.QtGui import QFontDatabase
|
from PyQt5.QtGui import QFontDatabase
|
||||||
from PyQt5.QtWidgets import QVBoxLayout, QHBoxLayout, QLineEdit, QToolButton, QPlainTextEdit, QProgressBar,\
|
from PyQt5.QtWidgets import QHBoxLayout, QLineEdit, QToolButton, QPlainTextEdit, QProgressBar,QFileDialog, QDialog
|
||||||
QFileDialog, QDialog
|
|
||||||
|
|
||||||
|
from basic_editor import BasicEditor
|
||||||
from util import tr, chunks
|
from util import tr, chunks
|
||||||
from vial_device import VialBootloader
|
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!")
|
complete_cb("Done!")
|
||||||
|
|
||||||
|
|
||||||
class FirmwareFlasher(QVBoxLayout):
|
class FirmwareFlasher(BasicEditor):
|
||||||
log_signal = pyqtSignal(object)
|
log_signal = pyqtSignal(object)
|
||||||
progress_signal = pyqtSignal(object)
|
progress_signal = pyqtSignal(object)
|
||||||
complete_signal = pyqtSignal(object)
|
complete_signal = pyqtSignal(object)
|
||||||
|
|
@ -110,7 +110,7 @@ class FirmwareFlasher(QVBoxLayout):
|
||||||
self.device = None
|
self.device = None
|
||||||
|
|
||||||
def rebuild(self, device):
|
def rebuild(self, device):
|
||||||
self.device = device
|
super().rebuild(device)
|
||||||
self.txt_logger.clear()
|
self.txt_logger.clear()
|
||||||
if isinstance(self.device, VialBootloader):
|
if isinstance(self.device, VialBootloader):
|
||||||
self.log("Valid Vial Bootloader device at {}".format(self.device.desc["path"].decode("utf-8")))
|
self.log("Valid Vial Bootloader device at {}".format(self.device.desc["path"].decode("utf-8")))
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,13 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
from PyQt5.QtWidgets import QVBoxLayout
|
from basic_editor import BasicEditor
|
||||||
|
|
||||||
from keyboard_container import KeyboardContainer
|
from keyboard_container import KeyboardContainer
|
||||||
from keycodes import recreate_layer_keycodes
|
from keycodes import recreate_layer_keycodes
|
||||||
from tabbed_keycodes import TabbedKeycodes
|
from tabbed_keycodes import TabbedKeycodes
|
||||||
from vial_device import VialKeyboard
|
from vial_device import VialKeyboard
|
||||||
|
|
||||||
|
|
||||||
class KeymapEditor(QVBoxLayout):
|
class KeymapEditor(BasicEditor):
|
||||||
|
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
super().__init__(parent)
|
super().__init__(parent)
|
||||||
|
|
@ -32,7 +31,7 @@ class KeymapEditor(QVBoxLayout):
|
||||||
self.keyboard_container.set_key(code)
|
self.keyboard_container.set_key(code)
|
||||||
|
|
||||||
def rebuild(self, device):
|
def rebuild(self, device):
|
||||||
self.device = device
|
super().rebuild(device)
|
||||||
if isinstance(self.device, VialKeyboard):
|
if isinstance(self.device, VialKeyboard):
|
||||||
self.keyboard_container.rebuild(device.keyboard)
|
self.keyboard_container.rebuild(device.keyboard)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
@ -8,6 +8,7 @@ import json
|
||||||
|
|
||||||
from firmware_flasher import FirmwareFlasher
|
from firmware_flasher import FirmwareFlasher
|
||||||
from keymap_editor import KeymapEditor
|
from keymap_editor import KeymapEditor
|
||||||
|
from layout_editor import LayoutEditor
|
||||||
from util import tr, find_vial_devices
|
from util import tr, find_vial_devices
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -33,8 +34,12 @@ class MainWindow(QMainWindow):
|
||||||
layout_combobox.addWidget(self.btn_refresh_devices)
|
layout_combobox.addWidget(self.btn_refresh_devices)
|
||||||
|
|
||||||
self.keymap_editor = KeymapEditor()
|
self.keymap_editor = KeymapEditor()
|
||||||
|
self.layout_editor = LayoutEditor()
|
||||||
self.firmware_flasher = FirmwareFlasher(self)
|
self.firmware_flasher = FirmwareFlasher(self)
|
||||||
|
|
||||||
|
self.editors = [(self.keymap_editor, "Keymap"), (self.layout_editor, "Layout"),
|
||||||
|
(self.firmware_flasher, "Firmware updater")]
|
||||||
|
|
||||||
self.tabs = QTabWidget()
|
self.tabs = QTabWidget()
|
||||||
self.refresh_tabs()
|
self.refresh_tabs()
|
||||||
|
|
||||||
|
|
@ -66,7 +71,6 @@ class MainWindow(QMainWindow):
|
||||||
exit_act.setShortcut("Ctrl+Q")
|
exit_act.setShortcut("Ctrl+Q")
|
||||||
exit_act.triggered.connect(qApp.exit)
|
exit_act.triggered.connect(qApp.exit)
|
||||||
|
|
||||||
menubar = self.menuBar()
|
|
||||||
file_menu = self.menuBar().addMenu(tr("Menu", "File"))
|
file_menu = self.menuBar().addMenu(tr("Menu", "File"))
|
||||||
file_menu.addAction(layout_load_act)
|
file_menu.addAction(layout_load_act)
|
||||||
file_menu.addAction(layout_save_act)
|
file_menu.addAction(layout_save_act)
|
||||||
|
|
@ -112,14 +116,14 @@ class MainWindow(QMainWindow):
|
||||||
if self.current_device is not None:
|
if self.current_device is not None:
|
||||||
self.current_device.open(self.sideload_json if self.current_device.sideload else None)
|
self.current_device.open(self.sideload_json if self.current_device.sideload else None)
|
||||||
|
|
||||||
self.keymap_editor.rebuild(self.current_device)
|
for editor, lbl in self.editors:
|
||||||
self.firmware_flasher.rebuild(self.current_device)
|
editor.rebuild(self.current_device)
|
||||||
|
|
||||||
self.refresh_tabs()
|
self.refresh_tabs()
|
||||||
|
|
||||||
def refresh_tabs(self):
|
def refresh_tabs(self):
|
||||||
self.tabs.clear()
|
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():
|
if not container.valid():
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue