Source code for jdxi_editor.ui.windows.jdxi.containers.arpeggiator
from PySide6.QtCore import Qt
from PySide6.QtWidgets import QHBoxLayout, QLabel, QPushButton, QVBoxLayout, QWidget
from jdxi_editor.jdxi.style import JDXiStyle
from jdxi_editor.ui.windows.jdxi.dimensions import JDXiDimensions
[docs]
def add_arpeggiator_buttons(widget):
"""Add arpeggiator up/down buttons to the interface"""
# Create container
arpeggiator_buttons_container = QWidget(widget)
# Apply the height offset to the Y position
arpeggiator_buttons_container.setGeometry(
JDXiDimensions.ARPEGGIATOR_X,
JDXiDimensions.ARPEGGIATOR_Y, # Move up by offset_y (now 25% instead of 20%)
JDXiDimensions.ARPEGGIATOR_WIDTH,
JDXiDimensions.ARPEGGIATOR_HEIGHT,
)
arpeggiator_layout = QVBoxLayout(arpeggiator_buttons_container)
arpeggiator_layout.setSpacing(5)
# Add "ARPEGGIO" label at the top
arpeggiator_label = QLabel("ARPEGGIO")
arpeggiator_label.setStyleSheet(JDXiStyle.LABEL)
arpeggiator_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
arpeggiator_layout.addWidget(arpeggiator_label)
# Create horizontal layout for Down/Up labels
labels_row = QHBoxLayout()
labels_row.setSpacing(20) # Space between labels
# On label
on_label = QLabel("On")
on_label.setStyleSheet(JDXiStyle.LABEL_SUB)
labels_row.addWidget(on_label)
# Add labels row
arpeggiator_layout.addLayout(labels_row)
# Create horizontal layout for buttons
buttons_row = QHBoxLayout()
buttons_row.setSpacing(20) # Space between buttons
# Down label
key_hold_label = QLabel("Key Hold")
key_hold_label.setStyleSheet(JDXiStyle.LABEL_SUB)
labels_row.addWidget(key_hold_label)
# Create and store arpeggiator button
arpeggiator_button = QPushButton()
arpeggiator_button.setFixedSize(30, 30)
arpeggiator_button.setCheckable(True)
arpeggiator_button.setStyleSheet(JDXiStyle.BUTTON_ROUND)
buttons_row.addWidget(arpeggiator_button)
# Create and store octave down button
key_hold_button = QPushButton()
key_hold_button.setFixedSize(30, 30)
key_hold_button.setCheckable(True)
key_hold_button.setStyleSheet(JDXiStyle.BUTTON_ROUND)
buttons_row.addWidget(key_hold_button)
# Add buttons row
arpeggiator_layout.addLayout(buttons_row)
# Make container transparent
arpeggiator_buttons_container.setStyleSheet("background: transparent;")
return arpeggiator_button, key_hold_button