Source code for preset.panel

"""
Panel for loading/saving presets
"""

from PySide6.QtCore import Signal
from PySide6.QtWidgets import (
    QComboBox,
    QHBoxLayout,
    QPushButton,
    QWidget,
)

from jdxi_editor.jdxi.synth.type import JDXiSynth
from jdxi_editor.midi.io.helper import MidiIOHelper
from jdxi_editor.ui.editors.io.preset import PresetEditor


[docs] class PresetPanel(QWidget): """Panel for loading/saving presets""" # Define signals
[docs] load_clicked = Signal(int) # Emits preset number when load clicked
[docs] save_clicked = Signal(int) # Emits preset number when save clicked
def __init__(self, midi_helper: MidiIOHelper, parent=None): super().__init__(parent) layout = QHBoxLayout(self) # Preset selector
[docs] self.preset_combo = QComboBox()
layout.addWidget(self.preset_combo) # Load button load_btn = QPushButton("Load") load_btn.clicked.connect(self._on_load) layout.addWidget(load_btn) # Save button save_btn = QPushButton("Save") save_btn.clicked.connect(self._on_save) layout.addWidget(save_btn) # Create preset editors for each preset_type
[docs] self.analog_editor = PresetEditor(midi_helper, self, JDXiSynth.ANALOG_SYNTH)
[docs] self.digital_1_editor = PresetEditor( midi_helper, self, JDXiSynth.DIGITAL_SYNTH_1 )
[docs] self.digital_2_editor = PresetEditor( midi_helper, self, JDXiSynth.DIGITAL_SYNTH_2 )
[docs] self.drums_editor = PresetEditor(midi_helper, self, JDXiSynth.DRUM_KIT)
[docs] def _on_load(self): """Handle load button click""" preset_num = self.preset_combo.currentIndex() self.load_clicked.emit(preset_num) # convert from 0-based index
[docs] def _on_save(self): """Handle save button click""" preset_num = self.preset_combo.currentIndex() self.save_clicked.emit(preset_num)