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

ModeButtonSpec

Specification for a single mode button.

ModeButtonGroup

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.

mode: Any[source]
label: str[source]
icon_name: str | None = None[source]
tooltip: str | None = None[source]
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.QWidget

A 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

mode_changed[source]
_analog = False[source]
_send_midi_parameter = None[source]
_midi_param = None[source]
_on_mode_changed = None[source]
_icon_factory = None[source]
_buttons: dict[Any, PySide6.QtWidgets.QPushButton][source]
_group[source]
_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

property buttons: dict[Any, PySide6.QtWidgets.QPushButton][source]

Read-only mapping of mode -> QPushButton.

value() Any[source]

Get the current mode value (the mode object).