rgb_configurator: initial implementation for single-color backlight

main
Ilya Zhuravlev 2021-05-22 13:02:00 -04:00
parent cb00696aae
commit 9cca2a28fe
1 changed files with 91 additions and 12 deletions

View File

@ -3,7 +3,7 @@ from PyQt5 import QtCore
from PyQt5.QtCore import pyqtSignal, QObject from PyQt5.QtCore import pyqtSignal, QObject
from PyQt5.QtGui import QColor from PyQt5.QtGui import QColor
from PyQt5.QtWidgets import QWidget, QPushButton, QHBoxLayout, QSizePolicy, QGridLayout, QLabel, QSlider, \ from PyQt5.QtWidgets import QWidget, QPushButton, QHBoxLayout, QSizePolicy, QGridLayout, QLabel, QSlider, \
QComboBox, QColorDialog QComboBox, QColorDialog, QCheckBox
from basic_editor import BasicEditor from basic_editor import BasicEditor
from clickable_label import ClickableLabel from clickable_label import ClickableLabel
@ -64,12 +64,16 @@ class BasicHandler(QObject):
update = pyqtSignal() update = pyqtSignal()
def __init__(self, contaxiner): def __init__(self, container):
super().__init__() super().__init__()
self.device = None self.device = None
def set_device(self, device): def set_device(self, device):
self.device = device self.device = device
if self.valid():
self.show()
else:
self.hide()
def show(self): def show(self):
raise NotImplementedError raise NotImplementedError
@ -86,38 +90,55 @@ class BasicHandler(QObject):
def update_from_keyboard(self): def update_from_keyboard(self):
raise NotImplementedError raise NotImplementedError
def valid(self):
raise NotImplementedError
class QmkRgblightHandler(BasicHandler): class QmkRgblightHandler(BasicHandler):
def __init__(self, container): def __init__(self, container):
super().__init__(container) super().__init__(container)
container.addWidget(QLabel(tr("RGBConfigurator", "Underglow Effect")), 0, 0) row = container.rowCount()
self.lbl_underglow_effect = QLabel(tr("RGBConfigurator", "Underglow Effect"))
container.addWidget(self.lbl_underglow_effect, row, 0)
self.underglow_effect = QComboBox() self.underglow_effect = QComboBox()
for ef in QMK_RGBLIGHT_EFFECTS: for ef in QMK_RGBLIGHT_EFFECTS:
self.underglow_effect.addItem(ef.name) self.underglow_effect.addItem(ef.name)
container.addWidget(self.underglow_effect, 0, 1) container.addWidget(self.underglow_effect, row, 1)
container.addWidget(QLabel(tr("RGBConfigurator", "Underglow Brightness")), 1, 0) self.lbl_underglow_brightness = QLabel(tr("RGBConfigurator", "Underglow Brightness"))
container.addWidget(self.lbl_underglow_brightness, row + 1, 0)
self.underglow_brightness = QSlider(QtCore.Qt.Horizontal) self.underglow_brightness = QSlider(QtCore.Qt.Horizontal)
self.underglow_brightness.setMinimum(0) self.underglow_brightness.setMinimum(0)
self.underglow_brightness.setMaximum(255) self.underglow_brightness.setMaximum(255)
self.underglow_brightness.valueChanged.connect(self.on_underglow_brightness_changed) self.underglow_brightness.valueChanged.connect(self.on_underglow_brightness_changed)
container.addWidget(self.underglow_brightness, 1, 1) container.addWidget(self.underglow_brightness, row + 1, 1)
self.lbl_underglow_color = QLabel(tr("RGBConfigurator", "Underglow Color")) self.lbl_underglow_color = QLabel(tr("RGBConfigurator", "Underglow Color"))
container.addWidget(self.lbl_underglow_color, 3, 0) container.addWidget(self.lbl_underglow_color, row + 2, 0)
self.underglow_color = ClickableLabel(" ") self.underglow_color = ClickableLabel(" ")
self.underglow_color.clicked.connect(self.on_underglow_color) self.underglow_color.clicked.connect(self.on_underglow_color)
container.addWidget(self.underglow_color, 3, 1) container.addWidget(self.underglow_color, row + 2, 1)
self.underglow_effect.currentIndexChanged.connect(self.on_underglow_effect_changed) self.underglow_effect.currentIndexChanged.connect(self.on_underglow_effect_changed)
def show(self): def show(self):
pass self.lbl_underglow_effect.show()
self.underglow_effect.show()
self.lbl_underglow_brightness.show()
self.underglow_brightness.show()
self.lbl_underglow_color.show()
self.underglow_color.show()
def hide(self): def hide(self):
pass self.lbl_underglow_effect.hide()
self.underglow_effect.hide()
self.lbl_underglow_brightness.hide()
self.underglow_brightness.hide()
self.lbl_underglow_color.hide()
self.underglow_color.hide()
def block_signals(self): def block_signals(self):
self.underglow_brightness.blockSignals(True) self.underglow_brightness.blockSignals(True)
@ -134,6 +155,9 @@ class QmkRgblightHandler(BasicHandler):
self.underglow_effect.setCurrentIndex(self.device.keyboard.underglow_effect) self.underglow_effect.setCurrentIndex(self.device.keyboard.underglow_effect)
self.underglow_color.setStyleSheet("QWidget { background-color: %s}" % self.current_color().name()) self.underglow_color.setStyleSheet("QWidget { background-color: %s}" % self.current_color().name())
def valid(self):
return self.device.keyboard.lighting_qmk_rgblight
def on_underglow_brightness_changed(self, value): def on_underglow_brightness_changed(self, value):
self.device.keyboard.set_qmk_rgblight_brightness(value) self.device.keyboard.set_qmk_rgblight_brightness(value)
self.update.emit() self.update.emit()
@ -161,6 +185,58 @@ class QmkRgblightHandler(BasicHandler):
self.device.keyboard.underglow_brightness / 255.0) self.device.keyboard.underglow_brightness / 255.0)
class QmkBacklightHandler(BasicHandler):
def __init__(self, container):
super().__init__(container)
row = container.rowCount()
self.lbl_backlight_brightness = QLabel(tr("RGBConfigurator", "Backlight Brightness"))
container.addWidget(self.lbl_backlight_brightness, row, 0)
self.backlight_brightness = QSlider(QtCore.Qt.Horizontal)
self.backlight_brightness.setMinimum(0)
self.backlight_brightness.setMaximum(255)
self.backlight_brightness.valueChanged.connect(self.on_backlight_brightness_changed)
container.addWidget(self.backlight_brightness, row, 1)
self.lbl_backlight_breathing = QLabel(tr("RGBConfigurator", "Backlight Breathing"))
container.addWidget(self.lbl_backlight_breathing, row + 1, 0)
self.backlight_breathing = QCheckBox()
self.backlight_breathing.stateChanged.connect(self.on_backlight_breathing_changed)
container.addWidget(self.backlight_breathing, row + 1, 1)
def show(self):
self.lbl_backlight_brightness.show()
self.backlight_brightness.show()
self.lbl_backlight_breathing.show()
self.backlight_breathing.show()
def hide(self):
self.lbl_backlight_brightness.hide()
self.backlight_brightness.hide()
self.lbl_backlight_breathing.hide()
self.backlight_breathing.hide()
def block_signals(self):
pass
def unblock_signals(self):
pass
def update_from_keyboard(self):
pass
def valid(self):
return self.device.keyboard.lighting_qmk_backlight
def on_backlight_brightness_changed(self):
pass
def on_backlight_breathing_changed(self):
pass
class RGBConfigurator(BasicEditor): class RGBConfigurator(BasicEditor):
def __init__(self): def __init__(self):
@ -175,9 +251,11 @@ class RGBConfigurator(BasicEditor):
self.addWidget(w) self.addWidget(w)
self.setAlignment(w, QtCore.Qt.AlignHCenter) self.setAlignment(w, QtCore.Qt.AlignHCenter)
self.handler_backlight = QmkBacklightHandler(self.container)
self.handler_backlight.update.connect(self.update_from_keyboard)
self.handler_rgblight = QmkRgblightHandler(self.container) self.handler_rgblight = QmkRgblightHandler(self.container)
self.handler_rgblight.update.connect(self.update_from_keyboard) self.handler_rgblight.update.connect(self.update_from_keyboard)
self.handlers = [self.handler_rgblight] self.handlers = [self.handler_backlight, self.handler_rgblight]
self.addStretch() self.addStretch()
buttons = QHBoxLayout() buttons = QHBoxLayout()
@ -191,7 +269,8 @@ class RGBConfigurator(BasicEditor):
self.device.keyboard.save_rgb() self.device.keyboard.save_rgb()
def valid(self): def valid(self):
return isinstance(self.device, VialKeyboard) and self.device.keyboard.lighting_qmk_rgblight return isinstance(self.device, VialKeyboard) and \
(self.device.keyboard.lighting_qmk_rgblight or self.device.keyboard.lighting_qmk_backlight)
def block_signals(self): def block_signals(self):
for h in self.handlers: for h in self.handlers: