Add an editor container to handle mouse click event

- Adds an editor container to handle mouse click events that are detected on an editor's container widget.
    - Adds a handler for container click to the keymap editor to deselect and cancel a key selection.
main
zoo 2021-04-28 21:49:22 -07:00
parent a22ea578fd
commit fb9df2462c
4 changed files with 31 additions and 3 deletions

View File

@ -13,3 +13,6 @@ class BasicEditor(QVBoxLayout):
def rebuild(self, device):
self.device = device
def on_container_clicked(self):
pass

View File

@ -0,0 +1,16 @@
from PyQt5.QtWidgets import QWidget
from PyQt5.QtCore import pyqtSignal
class EditorContainer(QWidget):
clicked = pyqtSignal()
def __init__(self, editor):
super().__init__()
self.setLayout(editor)
self.clicked.connect(editor.on_container_clicked)
def mousePressEvent(self, ev):
self.clicked.emit()

View File

@ -59,6 +59,11 @@ class KeymapEditor(BasicEditor):
self.device = None
def on_container_clicked(self):
""" Called when a mouse click event is bubbled up to the editor's container """
self.container.deselect()
self.container.update()
def on_keycode_changed(self, code):
self.set_key(code)
@ -143,6 +148,10 @@ class KeymapEditor(BasicEditor):
return self.keyboard.encoder_layout[(self.current_layer, widget.desc.encoder_idx,
widget.desc.encoder_dir)]
def mousePressEvent(self, ev):
self.container.deselect()
self.container.update()
def refresh_layer_display(self):
""" Refresh text on key widgets to display data corresponding to current layer """

View File

@ -8,6 +8,7 @@ import json
import os
from urllib.request import urlopen
from editor_container import EditorContainer
from firmware_flasher import FirmwareFlasher
from keymap_editor import KeymapEditor
from keymaps import KEYMAPS
@ -245,9 +246,8 @@ class MainWindow(QMainWindow):
if not container.valid():
continue
w = QWidget()
w.setLayout(container)
self.tabs.addTab(w, tr("MainWindow", lbl))
c = EditorContainer(container)
self.tabs.addTab(c, tr("MainWindow", lbl))
def load_via_stack_json(self):
data = urlopen("https://github.com/vial-kb/via-keymap-precompiled/raw/main/via_keyboard_stack.json")