UI: add layout save/restore
parent
50b1c40d13
commit
498b2bebb1
|
|
@ -151,3 +151,10 @@ class KeyboardContainer(QWidget):
|
|||
self.selected_col = col
|
||||
break
|
||||
self.refresh_layer_display()
|
||||
|
||||
def save_layout(self):
|
||||
return self.keyboard.save_layout()
|
||||
|
||||
def restore_layout(self, data):
|
||||
self.keyboard.restore_layout(data)
|
||||
self.refresh_layer_display()
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
from PyQt5.QtCore import Qt
|
||||
from PyQt5.QtWidgets import QWidget, QComboBox, QToolButton, QHBoxLayout, QVBoxLayout
|
||||
from PyQt5.QtWidgets import QWidget, QComboBox, QToolButton, QHBoxLayout, QVBoxLayout, QMainWindow, QAction, qApp, \
|
||||
QFileDialog, QDialog
|
||||
|
||||
from keyboard import Keyboard
|
||||
from keyboard_container import KeyboardContainer
|
||||
|
|
@ -10,7 +11,7 @@ from tabbed_keycodes import TabbedKeycodes
|
|||
from util import tr, find_vial_keyboards, open_device
|
||||
|
||||
|
||||
class MainWindow(QWidget):
|
||||
class MainWindow(QMainWindow):
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
|
|
@ -39,11 +40,54 @@ class MainWindow(QWidget):
|
|||
layout.addLayout(layout_combobox)
|
||||
layout.addWidget(self.keyboard_container)
|
||||
layout.addWidget(self.tabbed_keycodes)
|
||||
self.setLayout(layout)
|
||||
w = QWidget()
|
||||
w.setLayout(layout)
|
||||
self.setCentralWidget(w)
|
||||
|
||||
self.init_menu()
|
||||
|
||||
# make sure initial state is valid
|
||||
self.on_click_refresh()
|
||||
|
||||
def init_menu(self):
|
||||
layout_load_act = QAction(tr("MenuFile", "Load saved layout"), self)
|
||||
layout_load_act.setShortcut("Ctrl+O")
|
||||
layout_load_act.triggered.connect(self.on_layout_load)
|
||||
|
||||
layout_save_act = QAction(tr("MenuFile", "Save current layout"), self)
|
||||
layout_save_act.setShortcut("Ctrl+S")
|
||||
layout_save_act.triggered.connect(self.on_layout_save)
|
||||
|
||||
exit_act = QAction(tr("MenuFile", "Exit"), self)
|
||||
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)
|
||||
file_menu.addSeparator()
|
||||
file_menu.addAction(exit_act)
|
||||
|
||||
def on_layout_load(self):
|
||||
dialog = QFileDialog()
|
||||
dialog.setDefaultSuffix("vil")
|
||||
dialog.setAcceptMode(QFileDialog.AcceptOpen)
|
||||
dialog.setNameFilters(["Vial layout (*.vil)"])
|
||||
if dialog.exec_() == QDialog.Accepted:
|
||||
with open(dialog.selectedFiles()[0], "rb") as inf:
|
||||
data = inf.read()
|
||||
self.keyboard_container.restore_layout(data)
|
||||
|
||||
def on_layout_save(self):
|
||||
dialog = QFileDialog()
|
||||
dialog.setDefaultSuffix("vil")
|
||||
dialog.setAcceptMode(QFileDialog.AcceptSave)
|
||||
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())
|
||||
|
||||
def on_click_refresh(self):
|
||||
self.devices = find_vial_keyboards()
|
||||
self.combobox_devices.clear()
|
||||
|
|
|
|||
Loading…
Reference in New Issue