jdxi_editor.ui.widgets.editor.mode_button_group
Reusable mode button group widget.
This widget encapsulates the pattern used by the Digital Filter mode buttons: - A row of mutually-exclusive buttons (via QButtonGroup) - Consistent analog/digital styling - Optional MIDI send on selection - Optional Python callback and Qt signal on mode change
It can be reused for oscillator waveforms or any other small finite set of enumerated modes.
Classes
Specification for a single mode button. |
|
A reusable mode button group widget. |
Module Contents
- class jdxi_editor.ui.widgets.editor.mode_button_group.ModeButtonSpec[source]
Specification for a single mode button.
- class jdxi_editor.ui.widgets.editor.mode_button_group.ModeButtonGroup(specs: Iterable[ModeButtonSpec], *, analog: bool = False, send_midi_parameter: Callable[[Any, int], None] | None = None, midi_param: Any | None = None, on_mode_changed: Callable[[Any], None] | None = None, icon_factory: Callable[[Any], PySide6.QtGui.QIcon | PySide6.QtGui.QPixmap | None] | None = None, parent: jdxi_editor.ui.common.QWidget | None = None)[source]
Bases:
jdxi_editor.ui.common.QWidgetA reusable mode button group widget.
Features: - Mutually exclusive buttons driven by a QButtonGroup - Analog/digital styling via JDXi.UI.Theme helpers - Optional MIDI send via send_midi_parameter(midi_param, mode.value) - Optional Python callback and Qt signal on mode changes
- _build_button(spec: ModeButtonSpec) → PySide6.QtWidgets.QPushButton[source]
- _on_group_toggled(_id: int, checked: bool) → None[source]
Handle QButtonGroup toggles; update UI + callbacks for the checked button.
- set_mode(mode: Any, *, send_midi: bool = False) → None[source]
Programmatically select a mode.
Updates button checked state and styles (exclusive)
Optionally sends MIDI
Triggers callback and Qt signal