jdxi_editor.ui.style

Submodules

Classes

JDXiUIDimensions

A class to store dimensions for the JD-Xi editor UI.

JDXiUIIconRegistry

Centralized icon definitions and retrieval

JDXiUIStyle

Central style definitions for JD-Xi Manager

JDXiUIThemeManager

Centralized theme management for JD-Xi Editor

Functions

get_theme_manager(→ JDXiUIThemeManager)

Get the singleton ThemeManager instance

Package Contents

class jdxi_editor.ui.style.JDXiUIDimensions[source]

Bases: Dimensions

A class to store dimensions for the JD-Xi editor UI.

group
patch
slider_vertical
slider_horizontal
Icon: IconDimensions
Combo: ComboBoxDimensions
WaveformIcon: WaveformIconDimensions
LFOIcon: LfoIconDimensions
SPLASH: SplashScreenDimensions
Config: MidiConfig
INSTRUMENT: InstrumentDimensions
EDITOR: EditorDimensions
EDITOR_DIGITAL: DigitalEditorDimensions
EDITOR_BASIC: BasicEditorDimensions
EDITOR_ANALOG: AnalogEditorDimensions
EDITOR_DRUM: DrumEditorDimensions
ANALOG
ARPEGGIATOR: ArpDimensions
PWM_WIDGET: PWMWidgetDimensions
BUTTON_ROUND: RoundButtonDimensions
CHART: ChartMetrics
LED: LEDDisplayDimensions
DIGITAL_TITLE: DigitalTitleDimensions
TITLE: TitleDimensions
KEYBOARD: KeyboardDimensions
SEQUENCER: SequencerDimensions
SLIDER: SliderDimensions
PARTS: PartsDimensions
OCTAVE: OctaveButtonDimensions
PROGRAM: ProgramButtonDimensions
TONE: ToneButtonDimensions
EFFECTS: EffectsButtonDimensions
class jdxi_editor.ui.style.JDXiUIIconRegistry[source]

Centralized icon definitions and retrieval

MIXER = 'mdi.equalizer'
WaveForm: JDXiUIIconRegistry.WaveForm
Wave: WaveSpec
FILTER = 'ri.filter-3-fill'
POWER: str = 'mdi.power'
AMPLIFIER = 'mdi.amplifier'
CLEAR = 'ei.broom'
RUN = 'msc.run'
SAVE = 'fa5.save'
DELETE = 'mdi.delete-empty-outline'
REFRESH = 'ei.refresh'
SETTINGS = 'msc.settings'
EXPORT = 'fa5s.file-export'
HELP = 'mdi.help-rhombus-outline'
HELP_RHOMBUS = 'mdi6.help-rhombus-outline'
QUIT = 'mdi6.exit-to-app'
FOLDER = 'ph.folders-light'
FOLDER_OPENED = 'msc.folder-opened'
FOLDER_NOTCH_OPEN = 'ph.folder-notch-open-fill'
FILE_TEXT = 'ph.file-text-light'
FILE_TABLE1 = 'mdi.book-information-variant'
FILE_DOCUMENT = 'mdi6.file-document-check-outline'
EXCEL = 'mdi.microsoft-excel'
FILE_MTZ = 'mdi.data-matrix-edit'
FILE_MOLECULE = 'mdi.molecule'
FLOPPY_DISK = 'ph.floppy-disk-fill'
USB = 'ri.usb-line'
MAGIC = 'mdi6.auto-fix'
MIDI_PORT = 'mdi.midi-port'
MUSIC = 'mdi.file-music-outline'
MUSIC_NOTES = 'ph.music-notes-fill'
KEYBOARD = 'mdi6.keyboard-settings-outline'
PLAY = 'ri.play-line'
STOP = 'ri.stop-line'
PAUSE = 'ri.pause-line'
SHUFFLE = 'mdi.shuffle'
MUTE = 'msc.mute'
PIANO = 'msc.piano'
DRUM = 'fa5s.drum'
DRUM_KIT = 'drum_kit.png'
KICK_DRUM = 'kick_drum-icon.png'
KICK_DRUM_2 = 'kick_drum2-icon.png'
CYMBAL = 'cymbal-icon.png'
DISTORTION = 'mdi6.signal-distance-variant'
EFFECT = 'mdi.effect'
DELAY = 'mdi.timer-outline'
REVERB = 'mdi.wave'
MICROPHONE = 'mdi.microphone'
EQUALIZER = 'mdi.equalizer'
TUNE = 'mdi.tune'
CLOCK = 'mdi.clock-outline'
MUSIC_NOTE = 'mdi.music-note'
MUSIC_NOTE_MULTIPLE = 'fa5s.music'
CODE_BRACES = 'mdi.code-braces'
CIRCLE_OUTLINE = 'mdi.circle-outline'
VOLUME_HIGH = 'mdi.volume-high'
COG_OUTLINE = 'mdi.cog-outline'
DOTS_HORIZONTAL = 'mdi.dots-horizontal'
PAN_HORIZONTAL = 'mdi.pan-horizontal'
SEARCH_WEB = 'mdi6.search-web'
DATASET_PROCESSING = 'mdi.database'
PROCESSED_DATASETS = 'mdi.database-check'
MODELLED_STRUCTURES = 'mdi.molecule'
RHOFIT_PIPELINE = 'mdi.pipe'
BACK = 'ri.arrow-go-back-fill'
FORWARD = 'ri.arrow-go-forward-fill'
FORK = 'ei.fork'
CPU = 'mdi6.cpu-64-bit'
PANDA = 'mdi6.panda'
DATASETS = 'mdi.image-edit-outline'
DATABASE = 'mdi.database'
SHIELD = 'mdi.shield-account'
TRASH = 'mdi.delete'
TRASH_FILL = 'ph.trash-fill'
CLEANUP = 'mdi.broom'
CANCEL = 'mdi.cancel'
ADD = 'mdi.plus'
PLUS_CIRCLE = 'ph.plus-circle-fill'
PAUSE_ICON = 'mdi.pause'
SERVER_PROCESS = 'msc.server-process'
REPORT: str = 'msc.report'
static get_icon(icon_name: str, color: str = None, size: int = None, fallback: str = None) PySide6.QtGui.QIcon[source]

Get icon with fallback support.

Parameters:
  • icon_name – Icon identifier (e.g., “msc.run”)

  • color – Optional color string (e.g., “#FF0000” or JDXiStyle.FOREGROUND)

  • size – Optional size in pixels (defaults to JDXiStyle.ICON_SIZE)

  • fallback – Fallback icon if primary fails

Returns:

QIcon or None if both fail

static get_icon_from_resource(filename: str, size: int = None) PySide6.QtGui.QIcon | None[source]

Load an icon from the resources directory (e.g. cymbal-icon.png).

Parameters:
  • filename – Basename of the file in resources/ (e.g. “cymbal-icon.png”)

  • size – Optional size to scale the pixmap (width and height)

Returns:

QIcon or None if file not found or load fails

static get_icon_pixmap(icon_name: str, color: str = None, size: int = None, fallback: str = None)[source]

Get icon as QPixmap with fallback support.

Parameters:
  • icon_name – Icon identifier

  • color – Optional color string

  • size – Optional size in pixels (defaults to JDXiStyle.ICON_SIZE)

  • fallback – Fallback icon if primary fails

Returns:

QPixmap or None if all fail

static get_icon_safe(icon_name: str, color: str = None, size: int = None, fallback: str = None) PySide6.QtGui.QIcon[source]

Get icon with fallback support, returns empty QIcon if all fail.

This version always returns a QIcon object (may be empty).

Parameters:
  • icon_name – Icon identifier

  • color – Optional color string

  • size – Optional size in pixels (unused, kept for compatibility)

  • fallback – Fallback icon if primary fails

Returns:

QIcon (may be empty if all fail)

static create_adsr_icons_row() PySide6.QtWidgets.QHBoxLayout[source]

Create ADSR icons row

static create_oscillator_icons_row() PySide6.QtWidgets.QHBoxLayout[source]

Create oscillator/waveform icons row for oscillator sections

static create_generic_musical_icon_row() PySide6.QtWidgets.QHBoxLayout[source]
classmethod get_icon_by_qta_name(name, color, scale_factor=1)[source]

get icon by qta name

classmethod get_generated_icon(name: Literal['adsr', 'upsaw', 'square', 'pwsqu', 'triangle', 'sine', 'saw', 'spsaw', 'pcm', 'noise', 'lpf_filter', 'hpf_filter', 'bypass_filter', 'bpf_filter', 'filter_sine'])[source]

get generated icon

static generate_waveform_icon_by_name(icon: PySide6.QtGui.QIcon | None, icon_name_str: Any | None) PySide6.QtGui.QIcon[source]

generate waveform Icon by name

classmethod icon_for_synth(synth) PySide6.QtGui.QIcon[source]
class jdxi_editor.ui.style.JDXiUIStyle[source]

Central style definitions for JD-Xi Manager

BUTTON_SEQUENCER_SMALL = 'QPushButton:checked { background-color: #cc0000; color: white; }'
WHITE = '#FFFFFF'
TRACK_LABEL_WIDTH = 70
BUTTON_TRACK_WIDTH = 20
TRACK_SPINBOX_WIDTH = 40
PWM_WIDGET_HEIGHT = 200
ADSR_PLOT_WIDTH = 300
ADSR_PLOT_HEIGHT = 200
INSTRUMENT_IMAGE_WIDTH = 350
INSTRUMENT_IMAGE_HEIGHT = 200
TITLE_TEXT = '#FFFFFF'
BACKGROUND = '#000000'
BACKGROUND_GRADIENT = 'qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #000000, stop:1 #1A1A1A)'
BACKGROUND_PRESSED = '#666666'
BUTTON_BACKGROUND = '#222222'
BUTTON_BACKGROUND_PRESSED = '#333333'
FOREGROUND = '#FFFFFF'
PADDING = 10
SPACING = 10
ICON_PIXMAP_SIZE = 30
TRACK_ICON_PIXMAP_SIZE = 50
BUTTON_PADDING = 1
BUTTON_WAVEFORM_RADIUS = 8
BUTTON_WAVEFORM_BORDER_WIDTH = 2
ACCENT = '#FF2200'
ACCENT_HOVER = '#FF4400'
ACCENT_ANALOG = '#00A0E9'
ACCENT_ANALOG_HOVER = '#00C0FF'
ACCENT_GLOW = '#FF6666'
ACCENT_ANALOG_GLOW = '#66C0FF'
BORDER = '#333333'
SLIDER_HANDLE = '#000000'
SLIDER_HANDLE_BORDER = '#666666'
SLIDER_GROOVE = '#666666'
SLIDER_NEON = '#ff1a1a'
SLIDER_NEON_GRADIENT_STOP = '#660000'
SLIDER_NEON_ANALOG = '#1a1aff'
SLIDER_NEON_GRADIENT_STOP_ANALOG = '#000066'
SLIDER_NEON_GRADIENT = 'qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #660000, stop:0.5 #ff1a1a, stop:1 #ff3333)'
SLIDER_NEON_ANALOG_GRADIENT = 'qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #000066, stop:0.5 #1a1aff, stop:1 #3399ff)'
ACCENT_PRESSED = '#FF6666'
FONT_SIZE = '10'
ACCENT_ANALOG_PRESSED = '#417ffa'
BUTTON_ROUND_RADIUS = 15
BUTTON_RECT_RADIUS = 6
BUTTON_BORDER_WIDTH = 4
BUTTON_BORDER_WIDTH_WAVEFORM = 2
HANDLE_SIZE = '6px'
GROOVE_WIDTH = '2px'
ICON_SIZE = 20
TAB_BUTTON_RECT_RADIUS = 6
MAX_RULER_HEIGHT = 200
TRACK_HEIGHT_MINIMUM = 40
FONT_RED = '#d51e35'
FONT_FAMILY = 'Segoe UI'
FONT_FAMILY_MONOSPACE = 'Consolas'
FONT_SIZE_MAIN_TABS = '14px'
FONT_WEIGHT_BOLD = 'bold'
FONT_WEIGHT_NORMAL = 'normal'
GREY = '#666666'
BUTTON_ROUND = Multiline-String
Show Value
"""
            QPushButton {
                font-family: Segoe UI;
                background-color: #000000;
                border: 4px solid #333333;
                border-radius: 15px;
                color: #FFFFFF;
                font-family: "Segoe UI";
                font-size: 12px;
                padding: 4px;
            }
            QPushButton:hover {
                background-color: #FF4400;
                background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                stop:0 #660000, stop:1 #FF4400);
                border: 4px solid #FF4400;
            }
            QPushButton:border_pressed, QPushButton:checked {
                background-color: #666666;
                border: 4px solid #FF6666;
                background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                stop:0 #330000, stop:1 #666666);
            }
        """
BORDER_PRESSED = '#2D2D2D'
BUTTON_ROUND_SELECTED = Multiline-String
Show Value
"""
            QPushButton {
                font-family: Segoe UI;
                background-color: #000000;
                border: 4px solid #333333;
                border-radius: 15px;
                color: #FFFFFF;
                font-family: "Segoe UI";
                font-size: 12px;
                padding: 4px;
            }
            QPushButton:hover {
                background-color: #FF4400;
                background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                stop:0 #660000, stop:1 #FF4400);
                border: 4px solid #FF4400;
            }
            QPushButton:border_pressed, QPushButton:checked {
                background-color: #666666;
                border: 4px solid #FF6666;
                background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                stop:0 #330000, stop:1 #666666);
            }
        """
BUTTON_ROUND_ACTIVE = Multiline-String
Show Value
"""
            QPushButton {
                font-family: Segoe UI;
                background-color: #222222;
                border: 4px solid #FF4400;
                border-radius: 15px;
                color: #FFFFFF;
                font-family: "Segoe UI";
                font-size: 12px;
                padding: 4px;
            }
            QPushButton:hover {
                background-color: #FF4400;
                background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                stop:0 #660000, stop:1 #FF4400);
                border: 4px solid #FF4400;
            }
            QPushButton:border_pressed, QPushButton:checked {
                background-color: #666666;
                border: 4px solid #FF6666;
                background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                stop:0 #330000, stop:1 #666666);
            }
        """
BUTTON_ROUND_SMALL = Multiline-String
Show Value
"""
            QPushButton {
                font-family: Segoe UI;
                background-color: #333333;
                border: 1px solid black;
                border-radius: 10px;
                color: #AAAAAA;
                font-family: "Segoe UI";
                font-size: 10;
                padding: 1px;
            }
            QPushButton:hover {
                background-color: #FF4400;
                background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                stop:0 #660000, stop:1 #FF4400);
                border: 1px solid #FF4400;
            }
            QPushButton:border_pressed, QPushButton:checked {
                background-color: #666666;
                border: 1px solid #FF6666;
                background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                stop:0 #330000, stop:1 #666666);
            }
        """
BUTTON_RECT = Multiline-String
Show Value
"""
            QPushButton {
                font-family: Segoe UI;
                background-color: #000000;
                border: 4px solid #333333;
                border-radius: 6px;
                color: #FFFFFF;
                font-family: "Segoe UI";
                font-size: 12px;
                padding: 4px;
            }
            QPushButton:hover {
                background-color: #FF4400;
                background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                stop:0 #660000, stop:1 #FF4400);
                border: 4px solid #FF4400;
            }
            QPushButton:border_pressed, QPushButton:checked {
                background-color: #666666;
                border: 4px solid #FF6666;
                background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                stop:0 #330000, stop:1 #666666);
            }
        """
BUTTON_RECT_ANALOG = generate_button_style(

BACKGROUND, BORDER, BUTTON_RECT_RADIUS, FOREGROUND, ACCENT_HOVER, ACCENT_PRESSED

)

BUTTON_RECT_SELECTED = Multiline-String
Show Value
"""
            QPushButton {
                font-family: Segoe UI;
                background-color: #000000;
                border: 4px solid #333333;
                border-radius: 6px;
                color: #FFFFFF;
                font-family: "Segoe UI";
                font-size: 12px;
                padding: 4px;
            }
            QPushButton:hover {
                background-color: #FF4400;
                background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                stop:0 #660000, stop:1 #FF4400);
                border: 4px solid #FF4400;
            }
            QPushButton:border_pressed, QPushButton:checked {
                background-color: #666666;
                border: 4px solid #FF6666;
                background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                stop:0 #330000, stop:1 #666666);
            }
        """
BUTTON_RECT_ACTIVE = Multiline-String
Show Value
"""
            QPushButton {
                font-family: Segoe UI;
                background-color: #222222;
                border: 4px solid #FF4400;
                border-radius: 6px;
                color: #FFFFFF;
                font-family: "Segoe UI";
                font-size: 12px;
                padding: 4px;
            }
            QPushButton:hover {
                background-color: #FF4400;
                background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                stop:0 #660000, stop:1 #FF4400);
                border: 4px solid #FF4400;
            }
            QPushButton:border_pressed, QPushButton:checked {
                background-color: #666666;
                border: 4px solid #FF6666;
                background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                stop:0 #330000, stop:1 #666666);
            }
        """
STYLE_FOREGROUND = 'color: #FFFFFF;'
BUTTON_RECT_ANALOG = Multiline-String
Show Value
"""
            QPushButton {
                font-family: Segoe UI;
                background-color: #000000;
                border: 4px solid #00A0E9;
                border-radius: 6px;
                color: #FFFFFF;
                font-family: "Segoe UI";
                font-size: 12px;
                padding: 4px;
            }
            QPushButton:hover {
                background-color: #00C0FF;
                background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                stop:0 #000066, stop:1 #00C0FF);
                border: 4px solid #00C0FF;
            }
            QPushButton:border_pressed, QPushButton:checked {
                background-color: #666666;
                border: 4px solid #FF6666;
                background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                stop:0 #000033, stop:1 #666666);
            }
        """
BUTTON_ANALOG_ACTIVE = Multiline-String
Show Value
"""
            QPushButton {
                font-family: Segoe UI;
                background-color: #222222;
                border: 4px solid #00A0E9;
                border-radius: 6px;
                color: #FFFFFF;
                font-family: "Segoe UI";
                font-size: 12px;
                padding: 4px;
            }
            QPushButton:hover {
                background-color: #00C0FF;
                background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                stop:0 #000066, stop:1 #00C0FF);
                border: 4px solid #00C0FF;
            }
            QPushButton:border_pressed, QPushButton:checked {
                background-color: #666666;
                border: 4px solid #417ffa;
                background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                stop:0 #000033, stop:1 #666666);
            }
        """
BUTTON_WAVEFORM = Multiline-String
Show Value
"""
            QPushButton {
                font-family: Segoe UI;
                background-color: #222222;
                border: 2px solid #666666;
                border-radius: 8px;
                color: #FFFFFF;
                font-family: "Segoe UI";
                font-size: 10;
                padding: 1px;
            }
            QPushButton:hover {
                background-color: #FF4400;
                background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                stop:0 #660000, stop:1 #FF4400);
                border: 2px solid #FF4400;
            }
            QPushButton:border_pressed, QPushButton:checked {
                background-color: #333333;
                border: 2px solid #FF6666;
                background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                stop:0 #330000, stop:1 #333333);
            }
        """
BUTTON_WAVEFORM_ANALOG = Multiline-String
Show Value
"""
            QPushButton {
                font-family: Segoe UI;
                background-color: #222222;
                border: 2px solid #00A0E9;
                border-radius: 8px;
                color: #FFFFFF;
                font-family: "Segoe UI";
                font-size: 10;
                padding: 1px;
            }
            QPushButton:hover {
                background-color: #00C0FF;
                background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                stop:0 #000066, stop:1 #00C0FF);
                border: 2px solid #00C0FF;
            }
            QPushButton:border_pressed, QPushButton:checked {
                background-color: #333333;
                border: 2px solid #417ffa;
                background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                stop:0 #000033, stop:1 #333333);
            }
        """
CREDITS_LABEL_STYLE = Multiline-String
Show Value
"""
            /* QLabels */
                QLabel {
                    font-family: Segoe UI;
                    color: 'black';
                    background: #FFFFFF;
            }
            """
EDITOR = Multiline-String
Show Value
"""
        QWidget {
            font-family: Segoe UI;
            background-color: #000000;
            color: #FFFFFF;
            font-family: "Segoe UI";
            font-size: 10;
            padding: 1px;
        }
               QGroupBox {
             font-family: Segoe UI;
             width: 200px;
             border: none;
             border-top: 1px solid #FF2200;
             margin: 1px;
             padding: 1px;
         }
        /* Groove (Track) */
        QSlider::groove:vertical {
            font-family: Segoe UI;
            background: #111; /* Dark background */
            width: 6px;
            border-radius: 3px;
        }

        /* Handle (Knob) */
        QSlider::handle:vertical {
            background: black;
            border: 2px solid #ff1a1a; /* Neon red border */
            width: 10px;  /* More rectangular */
            height: 10px;
            margin: -8px;
            margin-bottom: 2px;
            margin-top: 1px;
            border-radius: 5px;
        }
        /* Handle (Knob) */
        QSlider::handle:vertical:disabled {
            background: black;
            border: 2px solid #333333; /* grey border */
            width: 10px;  /* More rectangular */
            height: 10px;
            margin: -10px;
            border-radius: 5px;
        }
        /* greyed out groove */
        QSlider::sub-page:vertical:disabled {
            background: #333333;
            border-radius: 3px;
        }

        /* Glowing effect when moving */
        QSlider::sub-page:vertical {
            background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                         stop:0 #660000, stop:1 #ff1a1a);
            border-radius: 3px;
        }
        /* Glowing effect when moving */
        QSlider::sub-page:vertical:disabled:hover {
            background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                         stop:0 #660000, stop:1 #ff1a1a);
            border-radius: 3px;
        }

        /* Unfilled portion */
        QSlider::add-page:vertical {
            font-family: Segoe UI;
            background: #222;
            border-radius: 3px;
        }

        /* Tick Marks (Small dashes on both sides) */
        QSlider::tick-mark {
            background: #ff1a1a;
            width: 4px;
            height: 2px;
            border-radius: 1px;
            margin-left: -8px;
            margin-right: 8px;
        }
        QSlider::horizontal {
            margin-left: 6px;
            margin-right: 6x;
        }

        /* Handle Hover Effect */
        QSlider::handle:vertical:hover {
            border: 2px solid #ff3333;
            background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
             stop:0 #660000, stop:1 #ff1a1a);
        }
        /* Spin Box - upper bar only (JD-Xi style) */
        QSpinBox, QDoubleSpinBox {
            background-color: #222;
            border: none;
            border-top: 2px solid #ff1a1a;
            border-radius: 0;
            padding: 1px;
            margin: -2px;
            color: #ff1a1a;
        }

        QGroupBox {
            font-family: Segoe UI;
            border: none;
            border-top: 1px solid #FF2200;
            border-radius: 3px;
            margin-top: 1px;
            width: 200px;
            padding: 10px;
        }

        QPushButton {
            width: 100px;
        }

        QGroupBox[adsr="true"] {
            min-height: 300px;  /* Reduced height for horizontal layout */
            width: 200px;
        }

        QSlider::handle:vertical {
            background: #000000;
            border: 2px solid #666666;
            margin: 1px 0;
            border-radius: 4px;
        }

        QSlider::handle:vertical:hover {
            border-color: #FF4400;
        }

        QGroupBox::title {
            subcontrol-origin: margin;
            subcontrol-position: top center;
            padding: 0 1px;
            color: #FFFFFF;
            font-weight: normal;
        }

        QPushButton {
            font-family: Segoe UI;
            background-color: #000000;
            border: 1px solid #FF2200;
            border-radius: 3px;
            padding: 1px;
            color: #FFFFFF;
        }

        QPushButton:hover, QPushButton:checked {
            background-color: #FF2200;
            color: #000000;
        }

        QComboBox {
            font-family: Segoe UI;
            background-color: #000000;
            border: none;
            border-top: 2px solid #FF2200;
            border-radius: 0;
            padding: 1px;
            color: #FFFFFF;
            width: 100px;
        }
        QComboBox:disabled {
            color: #333333;
        }
        QScrollBar {
            font-family: Segoe UI;
            background-color: #000000;
            border: 1px solid #FF2200;
            border-radius: 3px;
            padding: 1px;
            color: #FFFFFF;
        }

        QScrollBar::handle {
            background: #666666;
            border-radius: 3px;
        }

        QScrollBar::handle:hover {
            border: 2px solid #FF2200;
        }

        QSlider::groove:horizontal {
            background: #666666;
            height: 6px;
            border-radius: 2px;
        }

        QSlider::handle:horizontal{
            background: #000000;
            border: 3px solid #ff1a1a; /* Neon red border */
            width: 8px;  /* More rectangular */
            height: 2px;
            margin: -6px;
            padding: 1px;
            border-radius: 4px;
        }
        QSlider::handle:disabled{
            background: #000000;
            border: 2px solid #333333; /* grey border */
            width: 8px;  /* More rectangular */
            height: 2px;
            margin: -6px;
            padding: 1px;
            border-radius: 4px;
        }
        /* Unfilled portion */
        QSlider::add-page:horizontal {
            background: #222;
            border-radius: 3px;
        }
        QSlider::handle:vertical {
            background: #000000;
            border: 2px solid #666666;
            width: 18px;
            height: 12px;
            margin: -9px 0;
            border-radius: 9px;
            background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                         stop:0 #660000, stop:1 #ff1a1a);
            border-radius: 3px;
        }
        QSlider::handle:vertical:disabled{
            background: #000000;
            border: 2px solid #333333; /* grey border */
            width: 18px;  /* More rectangular */
            height: 12px;
            margin: -9px;
            border-radius: 4px;
        }
        /* Glowing effect when moving */
        QSlider::sub-page:horizontal {
            background: qlineargradient(x1:0, y1:0, x2:1, y2:0,
                         stop:0 #660000, stop:1 #ff1a1a);
            border-radius: 3px;
        }
        /* Glowing effect when moving */
        QSlider::sub-page:horizontal:disabled {
            background: #333333;
            border-radius: 3px;
        }

        /* Unfilled portion */
        QSlider::add-page:horizontal {
            background: #222;
            border-radius: 3px;
        }
        /* QLabels */
        QLabel {
            color: #FFFFFF;
            font-family: Segoe UI;
        }
        QSlider::horizontal {
            margin-left: 5px;
            margin-right: 5px;
        }
        QLabel { width: 100px; }
    """
EDITOR_ANALOG = Multiline-String
Show Value
"""
        QWidget {
            font-family: Segoe UI;
            background-color: #000000;
            color: #FFFFFF;
            font-family: "Segoe UI";
            font-size: 10;
            padding: 1px;
        }
               QGroupBox {
             font-family: Segoe UI;
             width: 200px;
             border: none;
             border-top: 1px solid #00A0E9;
             margin: 1px;
             padding: 1px;
         }
        /* Groove (Track) */
        QSlider::groove:vertical {
            font-family: Segoe UI;
            background: #111; /* Dark background */
            width: 6px;
            border-radius: 3px;
        }

        /* Handle (Knob) */
        QSlider::handle:vertical {
            background: black;
            border: 2px solid #ff1a1a; /* Neon red border */
            width: 10px;  /* More rectangular */
            height: 10px;
            margin: -8px;
            margin-bottom: 2px;
            margin-top: 1px;
            border-radius: 5px;
        }
        /* Handle (Knob) */
        QSlider::handle:vertical:disabled {
            background: black;
            border: 2px solid #333333; /* grey border */
            width: 10px;  /* More rectangular */
            height: 10px;
            margin: -10px;
            border-radius: 5px;
        }
        /* greyed out groove */
        QSlider::sub-page:vertical:disabled {
            background: #333333;
            border-radius: 3px;
        }

        /* Glowing effect when moving */
        QSlider::sub-page:vertical {
            background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                         stop:0 #660000, stop:1 #ff1a1a);
            border-radius: 3px;
        }
        /* Glowing effect when moving */
        QSlider::sub-page:vertical:disabled:hover {
            background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                         stop:0 #660000, stop:1 #ff1a1a);
            border-radius: 3px;
        }

        /* Unfilled portion */
        QSlider::add-page:vertical {
            font-family: Segoe UI;
            background: #222;
            border-radius: 3px;
        }

        /* Tick Marks (Small dashes on both sides) */
        QSlider::tick-mark {
            background: #ff1a1a;
            width: 4px;
            height: 2px;
            border-radius: 1px;
            margin-left: -8px;
            margin-right: 8px;
        }
        QSlider::horizontal {
            margin-left: 6px;
            margin-right: 6x;
        }

        /* Handle Hover Effect */
        QSlider::handle:vertical:hover {
            border: 2px solid #ff3333;
            background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
             stop:0 #660000, stop:1 #ff1a1a);
        }
        /* Spin Box - upper bar only (JD-Xi style) */
        QSpinBox, QDoubleSpinBox {
            background-color: #222;
            border: none;
            border-top: 2px solid #ff1a1a;
            border-radius: 0;
            padding: 1px;
            margin: -2px;
            color: #ff1a1a;
        }

        QGroupBox {
            font-family: Segoe UI;
            border: none;
            border-top: 1px solid #00A0E9;
            border-radius: 3px;
            margin-top: 1px;
            width: 200px;
            padding: 10px;
        }

        QPushButton {
            width: 100px;
        }

        QGroupBox[adsr="true"] {
            min-height: 300px;  /* Reduced height for horizontal layout */
            width: 200px;
        }

        QSlider::handle:vertical {
            background: #000000;
            border: 2px solid #666666;
            margin: 1px 0;
            border-radius: 4px;
        }

        QSlider::handle:vertical:hover {
            border-color: #00C0FF;
        }

        QGroupBox::title {
            subcontrol-origin: margin;
            subcontrol-position: top center;
            padding: 0 1px;
            color: #FFFFFF;
            font-weight: normal;
        }

        QPushButton {
            font-family: Segoe UI;
            background-color: #000000;
            border: 1px solid #00A0E9;
            border-radius: 3px;
            padding: 1px;
            color: #FFFFFF;
        }

        QPushButton:hover, QPushButton:checked {
            background-color: #00A0E9;
            color: #000000;
        }

        QComboBox {
            font-family: Segoe UI;
            background-color: #000000;
            border: none;
            border-top: 2px solid #00A0E9;
            border-radius: 0;
            padding: 1px;
            color: #FFFFFF;
            width: 100px;
        }
        QComboBox:disabled {
            color: #333333;
        }
        QScrollBar {
            font-family: Segoe UI;
            background-color: #000000;
            border: 1px solid #00A0E9;
            border-radius: 3px;
            padding: 1px;
            color: #FFFFFF;
        }

        QScrollBar::handle {
            background: #666666;
            border-radius: 3px;
        }

        QScrollBar::handle:hover {
            border: 2px solid #00A0E9;
        }

        QSlider::groove:horizontal {
            background: #666666;
            height: 6px;
            border-radius: 2px;
        }

        QSlider::handle:horizontal{
            background: #000000;
            border: 3px solid #1a1aff; /* Neon red border */
            width: 8px;  /* More rectangular */
            height: 2px;
            margin: -6px;
            padding: 1px;
            border-radius: 4px;
        }
        QSlider::handle:disabled{
            background: #000000;
            border: 2px solid #333333; /* grey border */
            width: 8px;  /* More rectangular */
            height: 2px;
            margin: -6px;
            padding: 1px;
            border-radius: 4px;
        }
        /* Unfilled portion */
        QSlider::add-page:horizontal {
            background: #222;
            border-radius: 3px;
        }
        QSlider::handle:vertical {
            background: #000000;
            border: 2px solid #666666;
            width: 18px;
            height: 12px;
            margin: -9px 0;
            border-radius: 9px;
            background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                         stop:0 #000066, stop:1 #1a1aff);
            border-radius: 3px;
        }
        QSlider::handle:vertical:disabled{
            background: #000000;
            border: 2px solid #333333; /* grey border */
            width: 18px;  /* More rectangular */
            height: 12px;
            margin: -9px;
            border-radius: 4px;
        }
        /* Glowing effect when moving */
        QSlider::sub-page:horizontal {
            background: qlineargradient(x1:0, y1:0, x2:1, y2:0,
                         stop:0 #000066, stop:1 #1a1aff);
            border-radius: 3px;
        }
        /* Glowing effect when moving */
        QSlider::sub-page:horizontal:disabled {
            background: #333333;
            border-radius: 3px;
        }

        /* Unfilled portion */
        QSlider::add-page:horizontal {
            background: #222;
            border-radius: 3px;
        }
        /* QLabels */
        QLabel {
            color: #FFFFFF;
            font-family: Segoe UI;
        }
        QSlider::horizontal {
            margin-left: 5px;
            margin-right: 5px;
        }
        QLabel { width: 100px; }
    """
EDITOR_TITLE_LABEL = Multiline-String
Show Value
"""
                font-family: Segoe UI, sans-serif;
                font-size: 20px;
                font-weight: bold;
                letter-spacing: 2px;
                color: #FF2200;
            """
ANALOG_SECTION_HEADER = Multiline-String
Show Value
"""
                font-family: Segoe UI, sans-serif;
                font-weight: bold;
                font-size: 18px;
                color: #00A0E9;
                letter-spacing: 1px;
            """
DATABASE_TABLE_STYLE = Multiline-String
Show Value
"""
                QTableWidget {
                    background-color: #1a1a1a;
                    border: 1px solid #333333;
                    border-radius: 8px;
                    gridline-color: #2a2a2a;
                    color: #ffffff;
                    selection-background-color: #3a3a3a;
                    selection-color: #ffffff;
                }

                QTableWidget::item {
                    background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                        stop:0 #2a2a2a,
                        stop:0.5 #252525,
                        stop:1 #1f1f1f);
                    border: 1px solid #1a1a1a;
                    border-radius: 4px;
                    padding: 4px;
                    color: #ffffff;
                }

                QTableWidget::item:selected {
                    background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                        stop:0 #3a3a3a,
                        stop:0.5 #353535,
                        stop:1 #2f2f2f);
                    border: 1px solid #4a4a4a;
                }

                QTableWidget::item:hover {
                    background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                        stop:0 #323232,
                        stop:0.5 #2d2d2d,
                        stop:1 #282828);
                    border: 1px solid #3a3a3a;
                }

                QTableWidget::item:focus {
                    background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                        stop:0 #3a3a3a,
                        stop:0.5 #353535,
                        stop:1 #2f2f2f);
                    border: 1px solid #ff2200;
                }

                QHeaderView::section {
                    background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                        stop:0 #2a2a2a,
                        stop:1 #1f1f1f);
                    color: #ffffff;
                    padding: 6px;
                    border: 1px solid #1a1a1a;
                    border-radius: 4px;
                    font-weight: bold;
                }

                QHeaderView::section:hover {
                    background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                        stop:0 #323232,
                        stop:1 #272727);
                }

                QTableCornerButton::section {
                    background-color: #1a1a1a;
                    border: 1px solid #333333;
                    border-radius: 8px 0 0 0;
                }
            """
DIGITAL_SECTION_HEADER = Multiline-String
Show Value
"""
                font-family: Segoe UI, sans-serif;
                font-weight: bold;
                font-size: 18px;
                color: #FF2200;
                letter-spacing: 1px;
            """
INSTRUMENT = Multiline-String
Show Value
"""
            QMainWindow {
                background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #000000, stop:1 #1A1A1A);
            }
            QWidget {
                font-family: Segoe UI;
                margin: 0px;
                padding: 0px;
                background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #000000, stop:1 #1A1A1A);
                color: white;
            }
            QMenuBar {
                background-color: black;
                color: white;
            }
            QMenuBar::item:selected {
                background-color: #333333;
            }
            QMenu {
                background-color: black;
                color: white;
            }
            QMenu::item:selected {
                background-color: #333333;
            }
            QGroupBox {
                font-family: Segoe UI;
                border: none;
                border-top: 1px solid #333333;
                margin: 1px;
                padding: 1px;
            }
            QGroupBox::title {
                font-family: Segoe UI;
                subcontrol-origin: margin;
                subcontrol-position: top center;
                padding: 0 1px;
                background-color: black;
            }
            QLabel {
                background-color: transparent;
                color: white;
            }
            QStatusBar {
                background-color: black;
                color: "#FF2200";
            }
            QSlider {
                margin-bottom: 2px;
                margin-top: 2px;
            }
        """
INSTRUMENT_IMAGE_LABEL = Multiline-String
Show Value
"""
            QLabel {
                    height: 150px;
                    background-color: transparent;
                    border: none;
                }
        """
LOG_VIEWER = Multiline-String
Show Value
"""
            QMainWindow {
                background-color: #2E2E2E;
            }
            QWidget {
                background-color: #2E2E2E;
                color: #FFFFFF;
                font-family: 'Myriad Pro';
            }
            QTextEdit {
                background-color: #1A1A1A;
                color: #FFFFFF;
                border: 1px solid #FF0000;
                border-radius: 3px;
                padding: 5px;
                font-family: 'Consolas';
            }
            QPushButton {
                background-color: #3D3D3D;
                color: #FFFFFF;
                border: 1px solid #FF0000;
                border-radius: 3px;
                padding: 5px 15px;
                font-family: 'Myriad Pro';
            }
            QPushButton:hover {
                background-color: #4D4D4D;
                border: 1px solid #FF3333;
            }
            QPushButton:pressed {
                background-color: #2D2D2D;
            }
        """
WINDOW_MIDI_MESSAGE_MONITOR = Multiline-String
Show Value
"""
            QTextEdit {
                font-family: 'Consolas', 'Courier New', monospace;
                background-color: #1E1E1E;
                color: #FFCC00;
                border: none;
                border-top: 2px solid #FF2200;
                border-radius: 0;
                padding: 5px;
                font-size: 11px;
            }
            QTextEdit:focus {
                border: none;
                border-top: 2px solid #FF2200;
                background-color: #252525;
            }
        """
MIXER_LABEL_ANALOG = Multiline-String
Show Value
"""
                font-size: 16px;
                font-weight: bold;
                color: #00A0E9;
            """
MIXER_LABEL = Multiline-String
Show Value
"""
        QLabel {
                font-family: Segoe UI;
                font-size: 16px;
                font-weight: bold;
                color: #FF2200;
                }
    """
PROGRAM_PRESET_GROUPS = Multiline-String
Show Value
"""
         QGroupBox {
                 font-family: Segoe UI;
                 width: 300px;
                 border: none;
                 border-top: 1px solid #FF2200;
                 margin: 1px;
                 padding: 1px;
             }"""
PROGRAM_PRESET_GROUP_WIDTH = 300
PROGRESS_BAR = Multiline-String
Show Value
"""
        QProgressBar {
            background-color: #333;
            color: white;
            font-family: 'Consolas';
            border: 2px solid #444;
            border-radius: 10px;
            text-align: center;
        }
        QProgressBar::chunk {
            background-color: qlineargradient(x1:0, y1:0, x2:1, y2:0,
                             stop:0 #660000, stop:1 #ff1a1a);
            border-radius: 10px;
        }
        """
SLIDER_VERTICAL = Multiline-String
Show Value
"""
        /* Groove (Track) */
        QSlider::groove:vertical {
            font-family: Segoe UI;
            background: #111; /* Dark background */
            width: 6px;
            border-radius: 3px;
        }

        /* Handle (Knob) */
        QSlider::handle:vertical {
            background: black;
            border: 2px solid #ff1a1a; /* Neon red border */
            width: 10px;  /* More rectangular */
            height: 10px;
            margin: -8px;
            margin-bottom: 2px;
            margin-top: 1px;
            border-radius: 5px;
        }
        /* Handle (Knob) */
        QSlider::handle:vertical:disabled {
            background: black;
            border: 2px solid #333333; /* grey border */
            width: 10px;  /* More rectangular */
            height: 10px;
            margin: -10px;
            border-radius: 5px;
        }
        /* greyed out groove */
        QSlider::sub-page:vertical:disabled {
            background: #333333;
            border-radius: 3px;
        }

        /* Glowing effect when moving */
        QSlider::sub-page:vertical {
            background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                         stop:0 #660000, stop:1 #ff1a1a);
            border-radius: 3px;
        }
        /* Glowing effect when moving */
        QSlider::sub-page:vertical:disabled:hover {
            background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                         stop:0 #660000, stop:1 #ff1a1a);
            border-radius: 3px;
        }

        /* Unfilled portion */
        QSlider::add-page:vertical {
            font-family: Segoe UI;
            background: #222;
            border-radius: 3px;
        }

        /* Tick Marks (Small dashes on both sides) */
        QSlider::tick-mark {
            background: #ff1a1a;
            width: 4px;
            height: 2px;
            border-radius: 1px;
            margin-left: -8px;
            margin-right: 8px;
        }
        QSlider::horizontal {
            margin-left: 6px;
            margin-right: 6x;
        }

        /* Handle Hover Effect */
        QSlider::handle:vertical:hover {
            border: 2px solid #ff3333;
            background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
             stop:0 #660000, stop:1 #ff1a1a);
        }
        /* Spin Box - upper bar only (JD-Xi style) */
        QSpinBox, QDoubleSpinBox {
            background-color: #222;
            border: none;
            border-top: 2px solid #ff1a1a;
            border-radius: 0;
            padding: 1px;
            margin: -2px;
            color: #ff1a1a;
        }
        /* QLabels */
        QLabel {
            color: "#d51e35";
        }
    """
SPLASH_SCREEN = Multiline-String
Show Value
"""
        QWidget {
            font-family: Segoe UI;
            background-color: #000000;
            color: #FFFFFF;
            font-family: "Segoe UI";
            font-size: 14px;
            padding: 1px;
        }
               QGroupBox {
             font-family: Segoe UI;
             width: 200px;
             border: none;
             border-top: 1px solid #FF2200;
             margin: 1px;
             padding: 1px;
         }
        /* Groove (Track) */
        QSlider::groove:vertical {
            font-family: Segoe UI;
            background: #111; /* Dark background */
            width: 6px;
            border-radius: 3px;
        }

        /* Handle (Knob) */
        QSlider::handle:vertical {
            background: black;
            border: 2px solid #ff1a1a; /* Neon red border */
            width: 10px;  /* More rectangular */
            height: 10px;
            margin: -8px;
            margin-bottom: 2px;
            margin-top: 1px;
            border-radius: 5px;
        }
        /* Handle (Knob) */
        QSlider::handle:vertical:disabled {
            background: black;
            border: 2px solid #333333; /* grey border */
            width: 10px;  /* More rectangular */
            height: 10px;
            margin: -10px;
            border-radius: 5px;
        }
        /* greyed out groove */
        QSlider::sub-page:vertical:disabled {
            background: #333333;
            border-radius: 3px;
        }

        /* Glowing effect when moving */
        QSlider::sub-page:vertical {
            background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                         stop:0 #660000, stop:1 #ff1a1a);
            border-radius: 3px;
        }
        /* Glowing effect when moving */
        QSlider::sub-page:vertical:disabled:hover {
            background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                         stop:0 #660000, stop:1 #ff1a1a);
            border-radius: 3px;
        }

        /* Unfilled portion */
        QSlider::add-page:vertical {
            font-family: Segoe UI;
            background: #222;
            border-radius: 3px;
        }

        /* Tick Marks (Small dashes on both sides) */
        QSlider::tick-mark {
            background: #ff1a1a;
            width: 4px;
            height: 2px;
            border-radius: 1px;
            margin-left: -8px;
            margin-right: 8px;
        }
        QSlider::horizontal {
            margin-left: 6px;
            margin-right: 6x;
        }

        /* Handle Hover Effect */
        QSlider::handle:vertical:hover {
            border: 2px solid #ff3333;
            background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
             stop:0 #660000, stop:1 #ff1a1a);
        }
        /* Spin Box - upper bar only (JD-Xi style) */
        QSpinBox, QDoubleSpinBox {
            background-color: #222;
            border: none;
            border-top: 2px solid #ff1a1a;
            border-radius: 0;
            padding: 1px;
            margin: -2px;
            color: #ff1a1a;
        }

        QGroupBox {
            font-family: Segoe UI;
            border: none;
            border-top: 1px solid #FF2200;
            border-radius: 3px;
            margin-top: 1px;
            width: 200px;
            padding: 10px;
        }

        QPushButton {
            width: 100px;
        }

        QGroupBox[adsr="true"] {
            min-height: 300px;  /* Reduced height for horizontal layout */
            width: 200px;
        }

        QSlider::handle:vertical {
            background: #000000;
            border: 2px solid #666666;
            margin: 1px 0;
            border-radius: 4px;
        }

        QSlider::handle:vertical:hover {
            border-color: #FF4400;
        }

        QGroupBox::title {
            subcontrol-origin: margin;
            subcontrol-position: top center;
            padding: 0 1px;
            color: #FFFFFF;
            font-weight: bold;
        }

        QPushButton {
            font-family: Segoe UI;
            background-color: #000000;
            border: 1px solid #FF2200;
            border-radius: 3px;
            padding: 1px;
            color: #FFFFFF;
        }

        QPushButton:hover, QPushButton:checked {
            background-color: #FF2200;
            color: #000000;
        }

        QComboBox {
            font-family: Segoe UI;
            background-color: #000000;
            border: none;
            border-top: 2px solid #FF2200;
            border-radius: 0;
            padding: 1px;
            color: #FFFFFF;
            width: 100px;
        }
        QComboBox:disabled {
            color: #333333;
        }
        QScrollBar {
            font-family: Segoe UI;
            background-color: #000000;
            border: 1px solid #FF2200;
            border-radius: 3px;
            padding: 1px;
            color: #FFFFFF;
        }

        QScrollBar::handle {
            background: #666666;
            border-radius: 3px;
        }

        QScrollBar::handle:hover {
            border: 2px solid #FF2200;
        }

        QSlider::groove:horizontal {
            background: #666666;
            height: 6px;
            border-radius: 2px;
        }

        QSlider::handle:horizontal{
            background: #000000;
            border: 3px solid #ff1a1a; /* Neon red border */
            width: 8px;  /* More rectangular */
            height: 2px;
            margin: -6px;
            padding: 1px;
            border-radius: 4px;
        }
        QSlider::handle:disabled{
            background: #000000;
            border: 2px solid #333333; /* grey border */
            width: 8px;  /* More rectangular */
            height: 2px;
            margin: -6px;
            padding: 1px;
            border-radius: 4px;
        }
        /* Unfilled portion */
        QSlider::add-page:horizontal {
            background: #222;
            border-radius: 3px;
        }
        QSlider::handle:vertical {
            background: #000000;
            border: 2px solid #666666;
            width: 18px;
            height: 12px;
            margin: -9px 0;
            border-radius: 9px;
            background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                         stop:0 #660000, stop:1 #ff1a1a);
            border-radius: 3px;
        }
        QSlider::handle:vertical:disabled{
            background: #000000;
            border: 2px solid #333333; /* grey border */
            width: 18px;  /* More rectangular */
            height: 12px;
            margin: -9px;
            border-radius: 4px;
        }
        /* Glowing effect when moving */
        QSlider::sub-page:horizontal {
            background: qlineargradient(x1:0, y1:0, x2:1, y2:0,
                         stop:0 #660000, stop:1 #ff1a1a);
            border-radius: 3px;
        }
        /* Glowing effect when moving */
        QSlider::sub-page:horizontal:disabled {
            background: #333333;
            border-radius: 3px;
        }

        /* Unfilled portion */
        QSlider::add-page:horizontal {
            background: #222;
            border-radius: 3px;
        }
        /* QLabels */
        QLabel {
            color: #FFFFFF;
            font-family: Segoe UI;
        }
        QSlider::horizontal {
            margin-left: 5px;
            margin-right: 5px;
        }
        QLabel { width: 100px; }
    """
SPLITTER = Multiline-String
Show Value
"""
                 QSplitter::handle {
                     background-color: #444;
                     border: 1px solid #666;
                 }
                 QSplitter::handle:vertical {
                     height: 6px;
                 }
                 QSplitter::handle:horizontal {
                     width: 6px;
                 }
             """
TABS = Multiline-String
Show Value
"""
                QTabBar::tab {
                font-family: Segoe UI;
                background: #000000;
                color: white;
                padding: 1px 1px;
                margin: 1px;
                border: 2px solid #666666;
                border-radius: 6px;
                font-family: "Segoe UI";
                font-size: 12px;
            }

            QTabBar::tab:selected {
                font-family: Segoe UI;
                background: #222222;
                color: white;
                border: 2px solid #FF2200;
                font-family: "Segoe UI";
                font-size: 12px;
            }

            QTabBar {
                qproperty-drawBase: 0;
            }

            QTabBar::tab:hover {
                background: #222222;
                border: 2px solid #ff9999;
                font-family: "Segoe UI";
                font-size: 12px;
            }
            QTabWidget {
                font-family: Segoe UI;
                border: none;
            }
            QTabWidget::pane {
                border: none;
            }
            QTabWidget::tab-bar {
                alignment: center;
            }
        """
TABS_ANALOG = Multiline-String
Show Value
"""
                QTabBar::tab {
                font-family: Segoe UI;
                background: #000000;
                color: white;
                padding: 1px 1px;
                margin: 1px;
                border: 2px solid #666666;
                border-radius: 6px;
                font-family: "Segoe UI";
                font-size: 12px;
            }

            QTabBar::tab:selected {
                font-family: Segoe UI;
                background: #222222;
                color: white;
                border: 2px solid #00A0E9;
                font-family: "Segoe UI";
                font-size: 12px;
            }

            QTabBar {
                qproperty-drawBase: 0;
            }

            QTabBar::tab:hover {
                background: #00A0C1;
                border: 2px solid #00A0E9;
                font-family: "Segoe UI";
                font-size: 12px;
            }
            QTabWidget {
                font-family: Segoe UI;
                border: none;
            }
            QTabWidget::pane {
                border: none;
            }
            QTabWidget::tab-bar {
                alignment: center;
            }
        """
TABS_DRUMS = Multiline-String
Show Value
"""
                QTabBar::tab {
                font-family: Segoe UI;
                background: #000000;
                color: white;
                padding: 1px 1px;
                margin: 1px;
                border: 2px solid #666666;
                border-radius: 6px;
                font-family: "Segoe UI";
                font-size: 12px;
            }

            QTabBar::tab:selected {
                font-family: Segoe UI;
                background: #222222;
                color: white;
                border: 2px solid #ff6666;
                font-family: "Segoe UI";
                font-size: 12px;
            }

            QTabBar {
                qproperty-drawBase: 0;
            }

            QTabBar::tab:hover {
                background: #222222;
                border: 2px solid #ff9999;
                font-family: "Segoe UI";
                font-size: 12px;
            }
            QTabWidget {
                font-family: Segoe UI;
                border: none;
            }
            QTabWidget::pane {
                border: none;
            }
            QTabWidget::tab-bar {
                alignment: center;
            }
        """
TABS_MAIN_EDITOR
SLIDER = Multiline-String
Show Value
"""
            QSlider::handle:horizontal{
                background: #000000;
                border: 3px solid #ff1a1a; /* Neon red border */
                width: 8px;  /* More rectangular */
                height: 2px;
                margin: -6px;
                padding: 1px;
                border-radius: 4px;
            }
            QSlider::handle:disabled{
                background: #000000;
                border: 2px solid #333333; /* grey border */
                width: 8px;  /* More rectangular */
                height: 2px;
                margin: -6px;
                padding: 1px;
                border-radius: 4px;
            }
            /* Unfilled portion */
            QSlider::add-page:horizontal {
                background: #222;
                border-radius: 3px;
            }
            QSlider::handle:vertical {
                background: #000000;
                border: 2px solid #666666;
                width: 18px;
                height: 12px;
                margin: -9px 0;
                border-radius: 9px;
            }
            QSlider::handle:vertical:disabled{
                background: #000000;
                border: 2px solid #333333; /* grey border */
                width: 18px;  /* More rectangular */
                height: 12px;
                margin: -9px;
                border-radius: 4px;
            }
            /* Glowing effect when moving */
            QSlider::sub-page:horizontal {
                background: qlineargradient(x1:1, y1:0, x2:0, y2:0,
                             stop:0 #660000, stop:1 #ff1a1a);
                border-radius: 3px;
            }
            /* Glowing effect when moving */
            QSlider::sub-page:horizontal:disabled {
                background: #333333;
                border-radius: 3px;
            }

            /* Unfilled portion */
            QSlider::add-page:horizontal {
                background: #222;
                border-radius: 3px;
            }
            /* QLabels */
            QLabel {
                color: #FF2200;
            }
            QSlider::horizontal {
                margin-left: 5px;
                margin-right: 5px;
            }
        """
SLIDER_DISABLED = Multiline-String
Show Value
"""
                QSlider::handle:horizontal{
                background: #000000;
                border: 3px solid #333333; /* Neon red border */
                width: 8px;  /* More rectangular */
                height: 2px;
                margin: -6px;
                padding: 1px;
                border-radius: 4px;
            }
            QSlider::handle:disabled{
                background: #000000;
                border: 2px solid #333333; /* grey border */
                width: 8px;  /* More rectangular */
                height: 2px;
                margin: -6px;
                padding: 1px;
                border-radius: 4px;
            }
            /* Unfilled portion */
            QSlider::add-page:horizontal {
                background: #222;
                border-radius: 3px;
            }
            QSlider::handle:vertical {
                background: #000000;
                border: 2px solid #333333;
                width: 18px;
                height: 12px;
                margin: -9px 0;
                border-radius: 9px;
            }
            QSlider::handle:vertical:disabled{
                background: #000000;
                border: 2px solid #333333; /* grey border */
                width: 18px;  /* More rectangular */
                height: 12px;
                margin: -9px;
                border-radius: 4px;
            }
            /* Glowing effect when moving */
            QSlider::sub-page:horizontal {
                background: qlineargradient(x1:1, y1:0, x2:0, y2:0,
                             stop:0 #660000, stop:1 #ff1a1a);
                border-radius: 3px;
            }
            /* Glowing effect when moving */
            QSlider::sub-page:horizontal:disabled {
                background: #333333;
                border-radius: 3px;
            }

            /* Unfilled portion */
            QSlider::add-page:horizontal {
                background: #222;
                border-radius: 3px;
            }
            /* QLabels */
            QLabel {
                color: #FF2200;
            }
            QSlider::horizontal {
                margin-left: 5px;
                margin-right: 5px;
            }
        """
TRANSPARENT = Multiline-String
Show Value
"""
        QMainWindow, QWidget, QMenuBar {
            background-color: transparent;
            color: "#d51e35";
        }
        QSlider {
            border: #333333;
        }
        QPushButton {
            background-color: transparent;
            border: 1px solid red;
            color: "#d51e35";
        }
        QPushButton:hover {
            background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
            stop:0 #660000, stop:1 #ff1a1a);
        }
        QStatusBar {
            background-color: transparent;
            color: "#d51e35";
        }
    """
TRANSPARENT_WHITE = Multiline-String
Show Value
"""
        QMainWindow, QWidget, QMenuBar {
            background-color: transparent;
            color: "#d51e35";
        }
        QLabel {
            background-color: transparent;
            color: "white";
        }
        QPushButton {
            background-color: transparent;
            border: 1px solid red;
            color: "#d51e35";
        }
        QPushButton:hover {
            background-color: rgba(255, 0, 0, 30);
        }
        QStatusBar {
            background-color: transparent;
            color: "#d51e35";
        }
    """
STATUS_INDICATOR_ACTIVE = Multiline-String
Show Value
"""
        QLabel {
            background-color: #FF2200;
            border-radius: 8px;
            min-width: 12px;
            min-height: 12px;
            max-width: 12px;
            max-height: 12px;
        }
    """
STATUS_INDICATOR_INACTIVE = Multiline-String
Show Value
"""
        QLabel {{
            background-color: #333333;
            border: 1px solid #666666;
            border-radius: 8px;
            min-width: 12px;
            min-height: 12px;
            max-width: 12px;
            max-height: 12px;
        }}
    """
STATUS_INDICATOR_ANALOG_ACTIVE = Multiline-String
Show Value
"""
        QLabel {
            background-color: #00A0E9;
            border-radius: 8px;
            min-width: 12px;
            min-height: 12px;
            max-width: 12px;
            max-height: 12px;
        }
    """
BUTTON_GLOW_RED = Multiline-String
Show Value
"""
        QPushButton {
            border: 2px solid #FF2200;
            background-color: #222222;
        }
        QPushButton:hover {
            border: 2px solid #FF4400;
            background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                stop:0 #330000, stop:1 #FF4400);
        }
        QPushButton:pressed {
            border: 2px solid #FF6666;
            background-color: #333333;
        }
    """
BUTTON_GLOW_ANALOG = Multiline-String
Show Value
"""
        QPushButton {
            border: 2px solid #00A0E9;
            background-color: #222222;
        }
        QPushButton:hover {
            border: 2px solid #00C0FF;
            background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                stop:0 #003333, stop:1 #00C0FF);
        }
        QPushButton:pressed {
            border: 2px solid #417ffa;
            background-color: #333333;
        }
    """
ADSR_ANALOG = Multiline-String
Show Value
"""
        QGroupBox {
             font-family: Segoe UI;
             width: 300px;
             border: none;
             border-top: 1px solid #00A0E9;
             margin: 1px;
             padding: 1px;
         }
        /* Groove (Track) */
        QSlider::groove:vertical {
            font-family: Segoe UI;
            background: #111; /* Dark background */
            width: 6px;
            border-radius: 3px;
            border-radius: 3px;
            border-radius: 3px;
        }

        /* Handle (Knob) */
        QSlider::handle:vertical {
            background: black;
            border: 2px solid #1a1aff; /* Neon blue border */
            width: 10px;  /* More rectangular */
            height: 10px;
            margin: -10px;
            margin-bottom: 2px;
            margin-top: 2px;
            border-radius: 5px;
            padding: 1px;
        }

        /* Glowing effect when moving */
        QSlider::sub-page:vertical {
            background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                         stop:0 #000066, stop:1 #1a1aff);
            border-radius: 3px;
        }
        /* Handle (Knob) */
        QSlider::handle:vertical:disabled {
            background: black;
            border: 2px solid #333333; /* grey border */
            width: 10px;  /* More rectangular */
            height: 10px;
            margin: -10px;
            border-radius: 5px;
        }
        /* greyed out groove */
        QSlider::sub-page:vertical:disabled {
            background: #333333;
            border-radius: 3px;
        }

        /* Unfilled portion */
        QSlider::add-page:vertical {
            background: #222;
            border-radius: 3px;
        }

        /* Tick Marks (Small dashes on both sides) */
        QSlider::tick-mark {
            background: #1a1aff;
            width: 4px;
            height: 2px;
            border-radius: 1px;
            margin-left: 2px;
            margin-right: 2px;
        }

        /* Handle Hover Effect */
        QSlider::handle:vertical:hover {
            border: 2px solid #3333ff;
        }
        /* Spin Box - upper bar only (JD-Xi style) */
        QSpinBox, QDoubleSpinBox {
            background-color: #222;
            border: none;
            border-top: 2px solid #00A0E9;
            border-radius: 0;
            padding: 1px;
            margin: -2px;
            width: 40px;
            color: #00A0E9;
        }
        /* QLabels */
        QLabel {
            color: #00A0E9;
        }
    """
ADSR = Multiline-String
Show Value
"""
         QGroupBox {
             font-family: Segoe UI;
             width: 200px;
             border: none;
             border-top: 1px solid #FF2200;
             margin: 1px;
             padding: 1px;
         }
        /* Groove (Track) */
        QSlider::groove:vertical {
            font-family: Segoe UI;
            background: #111; /* Dark background */
            width: 6px;
            border-radius: 3px;
        }

        /* Handle (Knob) */
        QSlider::handle:vertical {
            background: black;
            border: 2px solid #ff1a1a; /* Neon red border */
            width: 10px;  /* More rectangular */
            height: 10px;
            margin: -8px;
            margin-bottom: 2px;
            margin-top: 1px;
            border-radius: 5px;
        }
        /* Handle (Knob) */
        QSlider::handle:vertical:disabled {
            background: black;
            border: 2px solid #333333; /* grey border */
            width: 10px;  /* More rectangular */
            height: 10px;
            margin: -10px;
            border-radius: 5px;
        }
        /* greyed out groove */
        QSlider::sub-page:vertical:disabled {
            background: #333333;
            border-radius: 3px;
        }

        /* Glowing effect when moving */
        QSlider::sub-page:vertical {
            background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                         stop:0 #660000, stop:1 #ff1a1a);
            border-radius: 3px;
        }
        /* Glowing effect when moving */
        QSlider::sub-page:vertical:disabled:hover {
            background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                         stop:0 #660000, stop:1 #ff1a1a);
            border-radius: 3px;
        }

        /* Unfilled portion */
        QSlider::add-page:vertical {
            font-family: Segoe UI;
            background: #222;
            border-radius: 3px;
        }

        /* Tick Marks (Small dashes on both sides) */
        QSlider::tick-mark {
            background: #ff1a1a;
            width: 4px;
            height: 2px;
            border-radius: 1px;
            margin-left: -8px;
            margin-right: 8px;
        }
        QSlider::horizontal {
            margin-left: 6px;
            margin-right: 6x;
        }

        /* Handle Hover Effect */
        QSlider::handle:vertical:hover {
            border: 2px solid #ff3333;
            background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
             stop:0 #660000, stop:1 #ff1a1a);
        }
        /* Spin Box - upper bar only (JD-Xi style) */
        QSpinBox, QDoubleSpinBox {
            background-color: #222;
            border: none;
            border-top: 2px solid #ff1a1a;
            border-radius: 0;
            padding: 1px;
            margin: -2px;
            color: #ff1a1a;
        }
        /* QLabels */
        QLabel {
            color: "#d51e35";
        }
    """
ADSR_DISABLED = Multiline-String
Show Value
"""
            QSlider {
                font-family: Segoe UI;
            }
            QLabel {
                font-family: Segoe UI;
            }
            /* Groove (Track) */
            QSlider::groove:vertical {
                background: #111; /* Dark background */
                width: 6px;
                border-radius: 3px;
            }

            /* Handle (Knob) */
            QSlider::handle:vertical {
                background: black;
                border: 2px solid #333333; /* Neon red border */
                width: 10px;  /* More rectangular */
                height: 10px;
                margin: -8px;
                margin-bottom: 2px;
                margin-top: 2px;
                border-radius: 5px;
            }
            /* Handle (Knob) */
            QSlider::handle:vertical:disabled {
                background: black;
                border: 2px solid #333333; /* grey border */
                width: 10px;  /* More rectangular */
                height: 10px;
                margin: -10px;
                border-radius: 5px;
            }
            /* greyed out groove */
            QSlider::sub-page:vertical:disabled {
                background: #333333;
                border-radius: 3px;
            }

            /* Glowing effect when moving */
            QSlider::sub-page:vertical {
                font-family: Segoe UI;
                background: #333333;
                border-radius: 3px;
            }

            /* Unfilled portion */
            QSlider::add-page:vertical {
                background: #222;
                border-radius: 3px;
            }

            /* Tick Marks (Small dashes on both sides) */
            QSlider::tick-mark {
                background: #333333;
                width: 4px;
                height: 2px;
                border-radius: 1px;
                margin-left: -8px;
                margin-right: 8px;
            }
            QSlider::horizontal {
                margin-left: 6px;
                margin-right: 6x;
            }

            /* Handle Hover Effect */
            QSlider::handle:vertical:hover {
                border: 2px solid #ff1a1a;
            }
            /* Spin Box - upper bar only (JD-Xi style) */
            QSpinBox, QDoubleSpinBox {
                background-color: #222;
                border: none;
                border-top: 2px solid #ff1a1a;
                border-radius: 0;
                padding: 1px;
                margin: -2px;
                color: #ff1a1a;
            }
            /* QLabels */
            QLabel {
                color: "#d51e35";
            }
        """
ADSR_PLOT = Multiline-String
Show Value
"""
        QWidget {
            background-color: #333333;
        }
    """
COMBO_BOX = Multiline-String
Show Value
"""
    QComboBox {
        font-family: Segoe UI;
        background-color: #000000;
        border: none;
        border-top: 2px solid #FF2200;
        border-radius: 0;
        padding: 1px;
        color: #FFFFFF;
    }

    /* Style for the dropdown button */
    QComboBox::drop-down {
        border: none;
        width: 20px;
        height: 20px;
    }

    /* Custom small down arrow */
    QComboBox::down-arrow {
        width: 16px; /* Adjust arrow size */
        height: 10px;
    }

    /* Custom small up arrow (if needed for editable combobox) */
    QComboBox::up-arrow {
        width: 16px; /* Adjust arrow size */
        height: 10px;
    }

    /* Scrollbar styling */
    QScrollBar:vertical {
        background: black;
        border: 2px solid #ff4500;
        width: 20px;
        border-radius: 5px;
    }
    """
COMBO_BOX_ANALOG = Multiline-String
Show Value
"""
        QComboBox {
            font-family: Segoe UI;
            background-color: #000000;
            border: none;
            border-top: 2px solid #00A0E9;
            border-radius: 0;
            padding: 1px;
            color: #FFFFFF;
        }

        /* Style for the dropdown button */
        QComboBox::drop-down {
            border: none;
            width: 20px;
            height: 20px;
        }

        /* Custom small down arrow */
        QComboBox::down-arrow {
            width: 16px; /* Adjust arrow size */
            height: 10px;
        }

        /* Custom small up arrow (if needed for editable combobox) */
        QComboBox::up-arrow {
            width: 16px; /* Adjust arrow size */
            height: 10px;
        }

        /* Scrollbar styling */
        QScrollBar:vertical {
            background: black;
            border: 2px solid #ff4500;
            width: 20px;
            border-radius: 5px;
        }
    """
LABEL_SUB = Multiline-String
Show Value
"""
            font-family: "Segoe UI";
            font-size: 13px;
            color: #d51e35;
            font-weight: bold;
        """
LABEL = Multiline-String
Show Value
"""
            font-family: "Segoe UI";
            font-size: 14px;
            color: #d51e35;
            font-weight: bold;
            background: transparent;
        """
QLABEL = Multiline-String
Show Value
"""
        QLabel {
            font-family: "Segoe UI";
            font-size: 14px;
            color: #d51e35;
            font-weight: bold;
            background: transparent;
        }
    """
QLINEEDIT = Multiline-String
Show Value
"""
        QLineEdit {
            font-family: "Segoe UI";
            font-size: 12px;
            color: #FFFFFF;
            background: #1a1a1a;
            border: none;
            border-top: 2px solid #FF2200;
            border-radius: 0;
        }
    """
QLINEEDIT_ANALOG = Multiline-String
Show Value
"""
        QLineEdit {
            font-family: "Segoe UI";
            font-size: 12px;
            color: #FFFFFF;
            background: #1a1a1a;
            border: none;
            border-top: 2px solid #00A0E9;
            border-radius: 0;
        }
    """
KEYBOARD_DRUM_LABELS = Multiline-String
Show Value
"""
                QLabel {
                    color: #808080;
                    font-size: 7px;
                    font-family: monospace;
                    padding: 2px;
                    min-width: 30px;
                }
            """
INSTRUMENT_TITLE_LABEL = Multiline-String
Show Value
"""
            font-family: "Consolas";
            color: #FFBB33;
            font-size: 16px;
            font-weight: bold;

            QGroupBox {
                height: 60;
                border: 2px solid black;
                border-radius: 5px;
                padding: 1px;
                margin: 1px;
                background: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 1,
                    stop: 0 #321212,
                    stop: 0.3 #331111,
                    stop: 0.5 #551100,
                    stop: 0.7 #331111,
                    stop: 1 #321212
                );
            }
            """
INSTRUMENT_SUBTITLE_LABEL = Multiline-String
Show Value
"""
            font-family: "Consolas";
            color: #FFBB33;
            font-size: 24px;
            font-weight: bold;
            """
LABEL_SYNTH_PART = Multiline-String
Show Value
"""
                font-family: "Segoe UI";
                font-size: 13px;
                color: "#d51e35";  /* Base red */
                font-weight: bold;
            """
LABEL_ANALOG_SYNTH_PART = Multiline-String
Show Value
"""
                font-family: "Segoe UI";
                font-size: 13px;
                color: #00A0E9;  /* Blue for Analog */
                font-weight: bold;
            """
DRUM_GROUP = Multiline-String
Show Value
"""
                QGroupBox {
                font-family: Segoe UI;
                width: 50px;
                height: 60;
            }
            """
TAB_TITLE = Multiline-String
Show Value
"""
            QTabBar::tab {
            font-family: Segoe UI;
            font-size: 13px;
            font-weight: bold;
            color: #666666;
        }
        QTabBar::tab:selected {
            font-family: Segoe UI;
            font-size: 13px;
            font-weight: bold;
            color: #FF2200;
        }
        QTabBar::tab:hover {
            font-family: Segoe UI;
            font-size: 13px;
            font-weight: bold;
            color: #FF2200;
        }
        QTabBar::tab:disabled {
            font-family: Segoe UI;
            font-size: 13px;
            font-weight: bold;
            color: #666666;
        }
        QTabWidget::tab-bar {
            alignment: center;
        }
        """
TAB_TITLE_ANALOG = Multiline-String
Show Value
"""
        QTabBar::tab:selected:analog {
        font-family: Segoe UI;
        font-size: 13px;
        font-weight: bold;
        color: #00A0E9;
    }
    QTabBar::tab:hover:analog {
    font-family: Segoe UI;
        font-size: 13px;
        font-weight: bold;
        color: #00A0E9;
    }
    QTabBar::tab:selected {
        font-family: Segoe UI;
        font-size: 13px;
        font-weight: bold;
        color: #00A0E9;
    }
    QTabWidget::tab-bar {
        alignment: center;
    }
    """
GROUP_BOX_ANALOG = Multiline-String
Show Value
"""
        QGroupBox {
            font-family: Segoe UI;
            border: none;
            color: #FFFFFF;
            border-top: 1px solid #00A0E9;
            margin: 10px;
            padding: 10px;
        }
        QGroupBox::title {
            font-family: Segoe UI;
            subcontrol-origin: margin;
            subcontrol-position: top center;
            padding: 10 10px;
            background-color: black;
        }
        """
PATCH_MANAGER = Multiline-String
Show Value
"""
            QMainWindow {
                background-color: #2E2E2E;
                font-family: Segoe UI;
            }
            QWidget {
                background-color: #2E2E2E;
                color: #FFFFFF;
                font-family: "Segoe UI";
            }
            QLineEdit {
                background-color: #1A1A1A;
                color: #FFFFFF;
                border: 1px solid #FF0000;
                border-radius: 3px;
                padding: 1px;
                font-family: 'Consolas';
            }
            QPushButton {
                background-color: #3D3D3D;
                color: #FFFFFF;
                border: 1px solid #FF0000;
                border-radius: 3px;
                padding: 1px 1px;
                font-family: "Segoe UI";
            }
            QPushButton:hover {
                background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                         stop:0 #660000, stop:1 #ff1a1a);
                border: 1px solid #FF3333;
            }
            QPushButton:pressed {
                background-color: #2D2D2D;
            }
            QLabel {
                color: #FFFFFF;
                font-family: "Segoe UI";
            }
        """
LABEL_WHEEL = Multiline-String
Show Value
"""
        QLabel {
                color: red;
                font-family: "Segoe UI";
            }
        """
PARTIAL_SWITCH = Multiline-String
Show Value
"""
                QCheckBox {
                    color: #666666;
                    font-size: 10px;
                }
                QCheckBox::indicator {
                    width: 16px;
                    height: 16px;
                    background: #333333;
                    border: 1px solid #555555;
                    border-radius: 8px;
                }
                QCheckBox::indicator:checked {
                    background: #666666;
                    border-color: #FF4444;
                }
            """
PARTIALS_PANEL = Multiline-String
Show Value
"""
        QGroupBox {
            font-family: Segoe UI;
            color: #666666;
            height: 60;
            font-size: 12px;
            border: 0px;
            border-top: 2px solid #444444;  /* Only top border */
            border-radius: 3px;
            margin-top: 1px;
            padding: 1px;
        }
        QGroupBox::title {
            subcontrol-origin: margin;
            subcontrol-position: top center;
            padding: 0 1px;
            margin-top: 1px;
            background-color: #2D2D2D;
        }
    """
WINDOW_DEBUGGER = Multiline-String
Show Value
"""
            QMainWindow {
                background-color: #2E2E2E;
            }
            QWidget {
                background-color: #2E2E2E;
                color: #FFFFFF;
                font-family: 'Segoe UI';
            }
            QPlainTextEdit {
                background-color: #1A1A1A;
                color: #FFFFFF;
                border: 1px solid #FF0000;
                border-radius: 3px;
                padding: 1px;
                font-family: 'Consolas';
            }
            QTextEdit {
                background-color: #1A1A1A;
                color: #FFFFFF;
                border: 1px solid #FF0000;
                border-radius: 3px;
                padding: 2px;
                font-family: 'Consolas';
            }
            QPushButton {
                background-color: #3D3D3D;
                color: #FFFFFF;
                border: 1px solid #FF0000;
                border-radius: 3px;
                padding: 1px 1px;
                font-family: "Segoe UI";
            }
            QPushButton:hover {
                background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                         stop:0 #660000, stop:1 #ff1a1a);
                border: 1px solid #FF3333;
            }
            QPushButton:pressed {
                background-color: #666666;
            }
        """
SEQUENCER = Multiline-String
Show Value
"""
            font-family: "Segoe UI";
            font-size: 14px;
            color: #d51e35;
            font-weight: bold;
            background: transparent;
        """
PARTS_SELECT = Multiline-String
Show Value
"""
            font-family: Segoe UI;
            font-size: 14px;
            color: #d51e35;
            font-weight: bold;
            background: transparent;
            padding-bottom: 1px;
        """
static generate_sequencer_button_style(is_checked: bool, is_current: bool = False, is_selected_bar: bool = False) str[source]

Generate button style based on state and current step

class jdxi_editor.ui.style.JDXiUIThemeManager[source]

Bases: PySide6.QtCore.QObject

Centralized theme management for JD-Xi Editor

_instance: JDXiUIThemeManager | None = None
_initialized = True
static apply_theme(theme: str = 'auto')[source]

apply theme

static apply_dark_theme(theme: str = 'dark')[source]

apply theme

static apply_style(widget: PySide6.QtWidgets.QWidget, style: str) None[source]

Apply a style string to a widget.

Parameters:
  • widget – QWidget to apply style to

  • style – str Style sheet string

static apply_editor_title_label(widget: PySide6.QtWidgets.QWidget) None[source]

Apply editor title label style

static apply_analog_section_header(widget: PySide6.QtWidgets.QWidget) None[source]

Apply analog section header style

static apply_digital_section_header(widget: PySide6.QtWidgets.QWidget) None[source]

Apply digital section header style

static apply_midi_monitor(widget: PySide6.QtWidgets.QWidget) None[source]

Apply MIDI message monitor style

static apply_status_indicator_active(widget: PySide6.QtWidgets.QWidget, analog: bool = False) None[source]

Apply active status indicator style

Parameters:
  • widget – QWidget to style

  • analog – bool If True, use analog (blue) style, else digital (red)

static apply_status_indicator_inactive(widget: PySide6.QtWidgets.QWidget) None[source]

Apply inactive status indicator style

static apply_button_glow_red(widget: PySide6.QtWidgets.QWidget) None[source]

Apply red glow button style

static apply_button_glow_analog(widget: PySide6.QtWidgets.QWidget) None[source]

Apply analog (blue) glow button style

static apply_waveform_button(widget: PySide6.QtWidgets.QWidget, analog: bool = False) None[source]

Apply waveform button style

Parameters:
  • widget – QWidget to style

  • analog – bool If True, use analog style, else digital

static apply_instrument_background(widget: PySide6.QtWidgets.QWidget) None[source]

Apply instrument background gradient style

static apply_editor_style(widget: PySide6.QtWidgets.QWidget, analog: bool = False) None[source]

Apply editor style

Parameters:
  • widget – QWidget to style

  • analog – bool If True, use analog editor style, else standard

static apply_instrument_title_label(widget: PySide6.QtWidgets.QWidget) None[source]

Apply instrument title label style

static apply_mixer_label(widget: PySide6.QtWidgets.QWidget, analog: bool = False) None[source]

Apply mixer label style

Parameters:
  • widget – QWidget to style

  • analog – bool If True, use analog mixer label style, else standard

static apply_button_mini_style(widget: PySide6.QtWidgets.QWidget) None[source]

Apply partial switch (checkbox) style

static apply_adsr_style(widget: PySide6.QtWidgets.QWidget, analog: bool = False) None[source]

Apply ADSR envelope style

Parameters:
  • widget – QWidget to style

  • analog – bool If True, use analog ADSR style, else standard

static apply_adsr_plot(widget: PySide6.QtWidgets.QWidget) None[source]

Apply ADSR plot style

static apply_adsr_disabled(widget: PySide6.QtWidgets.QWidget) None[source]

Apply ADSR disabled style

static apply_tabs_style(widget: PySide6.QtWidgets.QWidget, analog: bool = False) None[source]

Apply tabs style

Parameters:
  • widget – QWidget to style

  • analog – bool If True, use analog tabs style, else standard

static apply_transparent(widget: PySide6.QtWidgets.QWidget) None[source]

Apply transparent style

static apply_debugger_window(widget: PySide6.QtWidgets.QWidget) None[source]

Apply debugger window style

static apply_combo_box(widget: PySide6.QtWidgets.QWidget, analog: bool = False) None[source]

Apply combo box style

Parameters:
  • widget – QWidget to style

  • analog – bool If True, use analog combo box style, else standard

static apply_line_edit(widget: PySide6.QtWidgets.QWidget) None[source]

Apply line edit style

static apply_button_rect_analog(widget: PySide6.QtWidgets.QWidget) None[source]

Apply analog rectangular button style (blue)

static apply_button_rect(widget: PySide6.QtWidgets.QWidget, analog: bool = False) None[source]

Apply analog rectangular button style (blue)

static apply_button_active(widget: PySide6.QtWidgets.QWidget, analog: bool) None[source]
static apply_button_analog_active(widget: PySide6.QtWidgets.QWidget) None[source]

Apply analog active button style (blue, active state)

static apply_table_style(widget: PySide6.QtWidgets.QWidget) None[source]

Apply table style with rounded corners and charcoal embossed cells

static get_application_style() str[source]

Get the complete application-wide stylesheet.

This combines all the recent styling improvements into a single stylesheet that can be applied to the QApplication instance.

Returns:

str Complete stylesheet string

static apply_application_style() bool[source]

Apply the complete application-wide stylesheet to the QApplication instance.

Returns:

bool True if successful, False otherwise

static initialize() bool[source]

Initialize the theme system.

This is the main entry point for theme initialization.

Returns:

bool True if initialization was successful, False otherwise

jdxi_editor.ui.style.get_theme_manager() JDXiUIThemeManager[source]

Get the singleton ThemeManager instance