feat: per-strip CC/CH translation, layout groups, show/hide improvements

This commit is contained in:
Paul Lipscomb
2026-06-27 02:26:24 -04:00
parent 460515ba0d
commit 0a5cfa88f1
10 changed files with 1925 additions and 1932 deletions
+11 -9
View File
@@ -4,7 +4,7 @@ from PyQt6.QtWidgets import (
QWidget, QVBoxLayout, QHBoxLayout, QPushButton,
QLabel, QSpinBox, QLineEdit, QFrame, QSizePolicy
)
from PyQt6.QtCore import Qt, QEvent
from PyQt6.QtCore import Qt, QEvent, QTimer
from palette import PALETTE_HEX, PALETTE_VIVID
from styles import TITLE_STYLE
@@ -24,13 +24,13 @@ class TransportWidget(QWidget):
self.toggle_state = False
self.hw_cc = None
self.is_learning = False
self.current_color = "transparent"
self.current_color = PALETTE_HEX.get("Gray", "#263238")
self.color_name = "Gray"
self.on_select_callback = None
self.on_zone_change_callback = None
self._label = label
self.setSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Preferred)
self.setSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Maximum)
self.setFixedWidth(100)
outer = QVBoxLayout(self)
@@ -57,6 +57,7 @@ class TransportWidget(QWidget):
self.cc_input_lbl = QLabel("")
self.cc_input_lbl.setAlignment(Qt.AlignmentFlag.AlignHCenter)
self.cc_input_lbl.setStyleSheet("background-color: #000000; color: #888888; font-size: 10px; padding: 1px;")
self.cc_input_lbl.setFixedHeight(16)
inner.addWidget(self.cc_input_lbl)
# CC spin
@@ -71,6 +72,7 @@ class TransportWidget(QWidget):
self.cc_output_lbl = QLabel(f"Out CC{default_cc} [--]")
self.cc_output_lbl.setAlignment(Qt.AlignmentFlag.AlignHCenter)
self.cc_output_lbl.setStyleSheet("background-color: #000000; color: #00e676; font-size: 10px; padding: 1px;")
self.cc_output_lbl.setFixedHeight(16)
inner.addWidget(self.cc_output_lbl)
# MIDI / OSC mode selector
@@ -114,10 +116,9 @@ class TransportWidget(QWidget):
# OSC address field (hidden by default)
self.osc_addr_edit = QLineEdit("/play")
self.osc_addr_edit.setAlignment(Qt.AlignmentFlag.AlignHCenter)
self.osc_addr_edit.setFixedWidth(75)
self.osc_addr_edit.setPlaceholderText("/address")
self.osc_addr_edit.setVisible(False)
inner.addWidget(self.osc_addr_edit, alignment=Qt.AlignmentFlag.AlignHCenter)
inner.addWidget(self.osc_addr_edit)
self.output_mode = "midi" # "midi" or "osc"
@@ -140,6 +141,7 @@ class TransportWidget(QWidget):
self.title_edit = QLineEdit(label)
self.title_edit.setAlignment(Qt.AlignmentFlag.AlignHCenter)
self.title_edit.setStyleSheet(TITLE_STYLE)
self.title_edit.textChanged.connect(self.btn.setText)
inner.addWidget(self.title_edit)
# Color swatch
@@ -170,10 +172,10 @@ class TransportWidget(QWidget):
inner.addWidget(self.zone_btn)
# Separator + ID label
id_sep = QWidget()
id_sep.setFixedHeight(1)
id_sep.setStyleSheet("background-color: #3a3a3a;")
inner.addWidget(id_sep)
self.id_sep = QWidget()
self.id_sep.setFixedHeight(1)
self.id_sep.setStyleSheet("background-color: #3a3a3a;")
inner.addWidget(self.id_sep)
self.id_label = QLabel("")
self.id_label.setAlignment(Qt.AlignmentFlag.AlignHCenter)