Source code for jdxi_editor.ui.editors.base.oscillator.widget

"""
OscillatorWidgets class

Single container for all oscillator UI widgets used by both Analog and Digital
oscillator sections. Optional fields default to None so either section can
populate only what it uses.
"""

from dataclasses import dataclass, field
from typing import Any

from PySide6.QtWidgets import QWidget

from jdxi_editor.ui.widgets.pitch.envelope import PitchEnvWidget
from jdxi_editor.ui.widgets.pulse_width.pwm import PWMWidget


@dataclass
[docs] class OscillatorWidgets: """Common oscillator widgets in one place to be extended (by Analog and Digital)."""
[docs] waveform_buttons: dict[Any, QWidget] | None = None
[docs] osc_pitch_coarse_slider: QWidget | None = None
[docs] osc_pitch_fine_slider: QWidget | None = None
[docs] pitch_env_widget: PitchEnvWidget | None = None
[docs] pwm_widget: PWMWidget | None = None
[docs] switches: list[QWidget] | None = field(default_factory=list)
[docs] tuning: list[QWidget] | None = field(default_factory=list)
[docs] env: list[QWidget] | None = field(default_factory=list)