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
+31 -18
View File
@@ -15,6 +15,7 @@ PRESETS_FILE = os.path.join(PRESETS_DIR, "presets.json")
os.makedirs(PRESETS_DIR, exist_ok=True)
def load_presets_file():
if os.path.exists(PRESETS_FILE):
with open(PRESETS_FILE, "r") as f:
@@ -27,32 +28,42 @@ def save_presets_file(data):
def ensure_preset_structure(presets):
if "presets" not in presets:
return {"__last_used__": None, "presets": presets}
return {"__last_used__": None, "presets": presets, "transport_preset": [], "transport_show_hide": False, "io_config": {}}
if "transport_preset" not in presets:
presets["transport_preset"] = []
if "transport_show_hide" not in presets:
presets["transport_show_hide"] = False
if "io_config" not in presets:
presets["io_config"] = {}
return presets
def on_preset_selected(menu_presets: QComboBox, app_window: QMainWindow, ready: bool, loaded_presets: dict):
def on_preset_selected(menu_presets: QComboBox, app_window: QMainWindow, ready: bool, loaded_presets: dict, on_load=None):
selectedOption = menu_presets.currentText()
if ready and selectedOption and selectedOption in loaded_presets["presets"]:
loaded_presets["__last_used__"] = selectedOption
save_presets_file(loaded_presets)
app_window.apply_preset(loaded_presets["presets"][selectedOption])
if on_load:
on_load(loaded_presets["presets"][selectedOption])
def save_preset(app_window: QMainWindow, menu_presets: QComboBox, loaded_presets: dict):
def save_preset(app_window: QMainWindow, menu_presets: QComboBox, loaded_presets: dict, on_save=None, on_build=None, on_save_as=None):
selectedOption = menu_presets.currentText()
if not selectedOption or selectedOption not in loaded_presets["presets"]:
app_window.save_preset_as() # not self
if on_save_as:
on_save_as()
return
loaded_presets["presets"][selectedOption] = app_window._build_preset_data(selectedOption) # not self
loaded_presets["presets"][selectedOption] = on_build(selectedOption) if on_build else {}
loaded_presets["__last_used__"] = selectedOption
save_presets_file(loaded_presets)
app_window._show_save_status() # not self
if on_save:
on_save()
print(f"Saved preset: {selectedOption}")
def save_preset_as(app_window: QMainWindow, menu_presets: QComboBox, loaded_presets: dict):
def save_preset_as(app_window: QMainWindow, menu_presets: QComboBox, loaded_presets: dict, on_save=None, on_refresh=None, on_build=None):
print(f"save as button tapped")
@@ -62,24 +73,25 @@ def save_preset_as(app_window: QMainWindow, menu_presets: QComboBox, loaded_pres
if not ok or not selectedOption.strip():
return
selectedOption = selectedOption.strip()
loaded_presets["presets"][selectedOption] = app_window._build_preset_data(selectedOption)
loaded_presets["presets"][selectedOption] = on_build(selectedOption) if on_build else {}
loaded_presets["__last_used__"] = selectedOption
save_presets_file(loaded_presets)
app_window.refresh_preset_combo()
if on_refresh:
on_refresh()
menu_presets.setCurrentText(selectedOption)
app_window._show_save_status()
if on_save:
on_save()
print(f"Saved preset as: {selectedOption}")
def delete_preset(app_window: QMainWindow, menu_presets: QComboBox, loaded_presets: dict):
selectedOption = menu_presets.currentText()
def delete_preset(app_window: QMainWindow, menu_presets: QComboBox, loaded_presets: dict, on_refresh=None):
selectedOption = menu_presets.currentText()
if not selectedOption or selectedOption not in loaded_presets["presets"]:
return
msg = QMessageBox(app_window)
msg.setWindowTitle("Remove Preset")
msg.setText(f'Are you sure you want to remove "{selectedOption}"?')
@@ -89,12 +101,13 @@ def delete_preset(app_window: QMainWindow, menu_presets: QComboBox, loaded_prese
if reply != QMessageBox.StandardButton.Yes:
return
del loaded_presets["presets"][selectedOption]
if loaded_presets["__last_used__"] == selectedOption:
loaded_presets["__last_used__"] = None
save_presets_file(loaded_presets)
app_window.refresh_preset_combo()
if on_refresh:
on_refresh()
print(f"Deleted preset: {selectedOption}")