jdxi_editor.ui.style
====================
.. py:module:: jdxi_editor.ui.style
Submodules
----------
.. toctree::
:maxdepth: 1
/autoapi/jdxi_editor/ui/style/dimensions/index
/autoapi/jdxi_editor/ui/style/factory/index
/autoapi/jdxi_editor/ui/style/icons/index
/autoapi/jdxi_editor/ui/style/jdxi/index
/autoapi/jdxi_editor/ui/style/theme_manager/index
Classes
-------
.. autoapisummary::
jdxi_editor.ui.style.JDXiUIDimensions
jdxi_editor.ui.style.JDXiUIIconRegistry
jdxi_editor.ui.style.JDXiUIStyle
jdxi_editor.ui.style.JDXiUIThemeManager
Functions
---------
.. autoapisummary::
jdxi_editor.ui.style.get_theme_manager
Package Contents
----------------
.. py:class:: JDXiUIDimensions
Bases: :py:obj:`Dimensions`
A class to store dimensions for the JD-Xi editor UI.
.. py:attribute:: group
.. py:attribute:: patch
.. py:attribute:: slider_vertical
.. py:attribute:: slider_horizontal
.. py:attribute:: Icon
:type: IconDimensions
.. py:attribute:: Combo
:type: ComboBoxDimensions
.. py:attribute:: WaveformIcon
:type: WaveformIconDimensions
.. py:attribute:: LFOIcon
:type: LfoIconDimensions
.. py:attribute:: SPLASH
:type: SplashScreenDimensions
.. py:attribute:: Config
:type: MidiConfig
.. py:attribute:: INSTRUMENT
:type: InstrumentDimensions
.. py:attribute:: EDITOR
:type: EditorDimensions
.. py:attribute:: EDITOR_DIGITAL
:type: DigitalEditorDimensions
.. py:attribute:: EDITOR_BASIC
:type: BasicEditorDimensions
.. py:attribute:: EDITOR_ANALOG
:type: AnalogEditorDimensions
.. py:attribute:: EDITOR_DRUM
:type: DrumEditorDimensions
.. py:attribute:: ANALOG
.. py:attribute:: ARPEGGIATOR
:type: ArpDimensions
.. py:attribute:: PWM_WIDGET
:type: PWMWidgetDimensions
.. py:attribute:: BUTTON_ROUND
:type: RoundButtonDimensions
.. py:attribute:: CHART
:type: ChartMetrics
.. py:attribute:: LED
:type: LEDDisplayDimensions
.. py:attribute:: DIGITAL_TITLE
:type: DigitalTitleDimensions
.. py:attribute:: TITLE
:type: TitleDimensions
.. py:attribute:: KEYBOARD
:type: KeyboardDimensions
.. py:attribute:: SEQUENCER
:type: SequencerDimensions
.. py:attribute:: SLIDER
:type: SliderDimensions
.. py:attribute:: PARTS
:type: PartsDimensions
.. py:attribute:: OCTAVE
:type: OctaveButtonDimensions
.. py:attribute:: PROGRAM
:type: ProgramButtonDimensions
.. py:attribute:: TONE
:type: ToneButtonDimensions
.. py:attribute:: EFFECTS
:type: EffectsButtonDimensions
.. py:class:: JDXiUIIconRegistry
Centralized icon definitions and retrieval
.. py:attribute:: MIXER
:value: 'mdi.equalizer'
.. py:attribute:: WaveForm
:type: JDXiUIIconRegistry.WaveForm
.. py:attribute:: Wave
:type: WaveSpec
.. py:attribute:: FILTER
:value: 'ri.filter-3-fill'
.. py:attribute:: POWER
:type: str
:value: 'mdi.power'
.. py:attribute:: AMPLIFIER
:value: 'mdi.amplifier'
.. py:attribute:: CLEAR
:value: 'ei.broom'
.. py:attribute:: RUN
:value: 'msc.run'
.. py:attribute:: SAVE
:value: 'fa5.save'
.. py:attribute:: DELETE
:value: 'mdi.delete-empty-outline'
.. py:attribute:: REFRESH
:value: 'ei.refresh'
.. py:attribute:: SETTINGS
:value: 'msc.settings'
.. py:attribute:: EXPORT
:value: 'fa5s.file-export'
.. py:attribute:: HELP
:value: 'mdi.help-rhombus-outline'
.. py:attribute:: HELP_RHOMBUS
:value: 'mdi6.help-rhombus-outline'
.. py:attribute:: QUIT
:value: 'mdi6.exit-to-app'
.. py:attribute:: FOLDER
:value: 'ph.folders-light'
.. py:attribute:: FOLDER_OPENED
:value: 'msc.folder-opened'
.. py:attribute:: FOLDER_NOTCH_OPEN
:value: 'ph.folder-notch-open-fill'
.. py:attribute:: FILE_TEXT
:value: 'ph.file-text-light'
.. py:attribute:: FILE_TABLE1
:value: 'mdi.book-information-variant'
.. py:attribute:: FILE_DOCUMENT
:value: 'mdi6.file-document-check-outline'
.. py:attribute:: FILE_SEARCH
:value: 'ph.file-search'
.. py:attribute:: EXCEL
:value: 'mdi.microsoft-excel'
.. py:attribute:: FILE_MTZ
:value: 'mdi.data-matrix-edit'
.. py:attribute:: FILE_MOLECULE
:value: 'mdi.molecule'
.. py:attribute:: FLOPPY_DISK
:value: 'ph.floppy-disk-fill'
.. py:attribute:: USB
:value: 'ri.usb-line'
.. py:attribute:: MAGIC
:value: 'mdi6.auto-fix'
.. py:attribute:: MIDI_PORT
:value: 'mdi.midi-port'
.. py:attribute:: MUSIC
:value: 'mdi.file-music-outline'
.. py:attribute:: MUSIC_NOTES
:value: 'ph.music-notes-fill'
.. py:attribute:: KEYBOARD
:value: 'mdi6.keyboard-settings-outline'
.. py:attribute:: PLAY
:value: 'ri.play-line'
.. py:attribute:: STOP
:value: 'ri.stop-line'
.. py:attribute:: PAUSE
:value: 'ri.pause-line'
.. py:attribute:: SHUFFLE
:value: 'mdi.shuffle'
.. py:attribute:: MUTE
:value: 'msc.mute'
.. py:attribute:: PIANO
:value: 'msc.piano'
.. py:attribute:: DRUM
:value: 'fa5s.drum'
.. py:attribute:: DRUM_KIT
:value: 'drum_kit.png'
.. py:attribute:: KICK_DRUM
:value: 'kick_drum-icon.png'
.. py:attribute:: KICK_DRUM_2
:value: 'kick_drum2-icon.png'
.. py:attribute:: CYMBAL
:value: 'cymbal-icon.png'
.. py:attribute:: DISTORTION
:value: 'mdi6.signal-distance-variant'
.. py:attribute:: EFFECT
:value: 'mdi.effect'
.. py:attribute:: DELAY
:value: 'mdi.timer-outline'
.. py:attribute:: REVERB
:value: 'mdi.wave'
.. py:attribute:: MICROPHONE
:value: 'mdi.microphone'
.. py:attribute:: EQUALIZER
:value: 'mdi.equalizer'
.. py:attribute:: TUNE
:value: 'mdi.tune'
.. py:attribute:: CLOCK
:value: 'mdi.clock-outline'
.. py:attribute:: MUSIC_NOTE
:value: 'mdi.music-note'
.. py:attribute:: MUSIC_NOTE_MULTIPLE
:value: 'fa5s.music'
.. py:attribute:: CODE_BRACES
:value: 'mdi.code-braces'
.. py:attribute:: CIRCLE_OUTLINE
:value: 'mdi.circle-outline'
.. py:attribute:: VOLUME_HIGH
:value: 'mdi.volume-high'
.. py:attribute:: COG_OUTLINE
:value: 'mdi.cog-outline'
.. py:attribute:: DOTS_HORIZONTAL
:value: 'mdi.dots-horizontal'
.. py:attribute:: PAN_HORIZONTAL
:value: 'mdi.pan-horizontal'
.. py:attribute:: SEARCH_WEB
:value: 'mdi6.search-web'
.. py:attribute:: DATASET_PROCESSING
:value: 'mdi.database'
.. py:attribute:: PROCESSED_DATASETS
:value: 'mdi.database-check'
.. py:attribute:: MODELLED_STRUCTURES
:value: 'mdi.molecule'
.. py:attribute:: RHOFIT_PIPELINE
:value: 'mdi.pipe'
.. py:attribute:: BACK
:value: 'ri.arrow-go-back-fill'
.. py:attribute:: FORWARD
:value: 'ri.arrow-go-forward-fill'
.. py:attribute:: FORK
:value: 'ei.fork'
.. py:attribute:: CPU
:value: 'mdi6.cpu-64-bit'
.. py:attribute:: PANDA
:value: 'mdi6.panda'
.. py:attribute:: DATASETS
:value: 'mdi.image-edit-outline'
.. py:attribute:: DATABASE
:value: 'mdi.database'
.. py:attribute:: SHIELD
:value: 'mdi.shield-account'
.. py:attribute:: TRASH
:value: 'mdi.delete'
.. py:attribute:: TRASH_FILL
:value: 'ph.trash-fill'
.. py:attribute:: CLEANUP
:value: 'mdi.broom'
.. py:attribute:: CANCEL
:value: 'mdi.cancel'
.. py:attribute:: ADD
:value: 'mdi.plus'
.. py:attribute:: PLUS_CIRCLE
:value: 'ph.plus-circle-fill'
.. py:attribute:: PAUSE_ICON
:value: 'mdi.pause'
.. py:attribute:: SERVER_PROCESS
:value: 'msc.server-process'
.. py:attribute:: REPORT
:type: str
:value: 'msc.report'
.. py:method:: get_icon(icon_name: str, color: str = None, size: int = None, fallback: str = None) -> PySide6.QtGui.QIcon
:staticmethod:
Get icon with fallback support.
:param icon_name: Icon identifier (e.g., "msc.run")
:param color: Optional color string (e.g., "#FF0000" or JDXiStyle.FOREGROUND)
:param size: Optional size in pixels (defaults to JDXiStyle.ICON_SIZE)
:param fallback: Fallback icon if primary fails
:return: QIcon or None if both fail
.. py:method:: get_icon_from_resource(filename: str, size: int = None) -> PySide6.QtGui.QIcon | None
:staticmethod:
Load an icon from the resources directory (e.g. cymbal-icon.png).
:param filename: Basename of the file in resources/ (e.g. "cymbal-icon.png")
:param size: Optional size to scale the pixmap (width and height)
:return: QIcon or None if file not found or load fails
.. py:method:: get_icon_pixmap(icon_name: str, color: str = None, size: int = None, fallback: str = None)
:staticmethod:
Get icon as QPixmap with fallback support.
:param icon_name: Icon identifier
:param color: Optional color string
:param size: Optional size in pixels (defaults to JDXiStyle.ICON_SIZE)
:param fallback: Fallback icon if primary fails
:return: QPixmap or None if all fail
.. py:method:: get_icon_safe(icon_name: str, color: str = None, size: int = None, fallback: str = None) -> PySide6.QtGui.QIcon
:staticmethod:
Get icon with fallback support, returns empty QIcon if all fail.
This version always returns a QIcon object (may be empty).
:param icon_name: Icon identifier
:param color: Optional color string
:param size: Optional size in pixels (unused, kept for compatibility)
:param fallback: Fallback icon if primary fails
:return: QIcon (may be empty if all fail)
.. py:method:: create_adsr_icons_row() -> PySide6.QtWidgets.QHBoxLayout
:staticmethod:
Create ADSR icons row
.. py:method:: create_oscillator_icons_row() -> PySide6.QtWidgets.QHBoxLayout
:staticmethod:
Create oscillator/waveform icons row for oscillator sections
.. py:method:: create_generic_musical_icon_row() -> PySide6.QtWidgets.QHBoxLayout
:staticmethod:
.. py:method:: get_icon_by_qta_name(name, color, scale_factor=1)
:classmethod:
get icon by qta name
.. py:method:: 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'])
:classmethod:
get generated icon
.. py:method:: generate_waveform_icon_by_name(icon: PySide6.QtGui.QIcon | None, icon_name_str: Any | None) -> PySide6.QtGui.QIcon
:staticmethod:
generate waveform Icon by name
.. py:method:: icon_for_synth(synth) -> PySide6.QtGui.QIcon
:classmethod:
.. py:class:: JDXiUIStyle
Central style definitions for JD-Xi Manager
.. py:attribute:: BUTTON_SEQUENCER_SMALL
:value: 'QPushButton:checked { background-color: #cc0000; color: white; }'
.. py:attribute:: WHITE
:value: '#FFFFFF'
.. py:attribute:: TRACK_LABEL_WIDTH
:value: 70
.. py:attribute:: BUTTON_TRACK_WIDTH
:value: 20
.. py:attribute:: TRACK_SPINBOX_WIDTH
:value: 40
.. py:attribute:: PWM_WIDGET_HEIGHT
:value: 200
.. py:attribute:: ADSR_PLOT_WIDTH
:value: 300
.. py:attribute:: ADSR_PLOT_HEIGHT
:value: 200
.. py:attribute:: INSTRUMENT_IMAGE_WIDTH
:value: 350
.. py:attribute:: INSTRUMENT_IMAGE_HEIGHT
:value: 200
.. py:attribute:: TITLE_TEXT
:value: '#FFFFFF'
.. py:attribute:: BACKGROUND
:value: '#000000'
.. py:attribute:: BACKGROUND_GRADIENT
:value: 'qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #000000, stop:1 #1A1A1A)'
.. py:attribute:: BACKGROUND_PRESSED
:value: '#666666'
.. py:attribute:: BUTTON_BACKGROUND
:value: '#222222'
.. py:attribute:: BUTTON_BACKGROUND_PRESSED
:value: '#333333'
.. py:attribute:: FOREGROUND
:value: '#FFFFFF'
.. py:attribute:: PADDING
:value: 10
.. py:attribute:: SPACING
:value: 10
.. py:attribute:: ICON_PIXMAP_SIZE
:value: 30
.. py:attribute:: TRACK_ICON_PIXMAP_SIZE
:value: 50
.. py:attribute:: BUTTON_PADDING
:value: 1
.. py:attribute:: BUTTON_WAVEFORM_RADIUS
:value: 8
.. py:attribute:: BUTTON_WAVEFORM_BORDER_WIDTH
:value: 2
.. py:attribute:: ACCENT
:value: '#FF2200'
.. py:attribute:: ACCENT_HOVER
:value: '#FF4400'
.. py:attribute:: ACCENT_ANALOG
:value: '#00A0E9'
.. py:attribute:: ACCENT_ANALOG_HOVER
:value: '#00C0FF'
.. py:attribute:: ACCENT_GLOW
:value: '#FF6666'
.. py:attribute:: ACCENT_ANALOG_GLOW
:value: '#66C0FF'
.. py:attribute:: BORDER
:value: '#333333'
.. py:attribute:: SLIDER_HANDLE
:value: '#000000'
.. py:attribute:: SLIDER_HANDLE_BORDER
:value: '#666666'
.. py:attribute:: SLIDER_GROOVE
:value: '#666666'
.. py:attribute:: SLIDER_NEON
:value: '#ff1a1a'
.. py:attribute:: SLIDER_NEON_GRADIENT_STOP
:value: '#660000'
.. py:attribute:: SLIDER_NEON_ANALOG
:value: '#1a1aff'
.. py:attribute:: SLIDER_NEON_GRADIENT_STOP_ANALOG
:value: '#000066'
.. py:attribute:: SLIDER_NEON_GRADIENT
:value: 'qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #660000, stop:0.5 #ff1a1a, stop:1 #ff3333)'
.. py:attribute:: SLIDER_NEON_ANALOG_GRADIENT
:value: 'qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #000066, stop:0.5 #1a1aff, stop:1 #3399ff)'
.. py:attribute:: ACCENT_PRESSED
:value: '#FF6666'
.. py:attribute:: FONT_SIZE
:value: '10'
.. py:attribute:: ACCENT_ANALOG_PRESSED
:value: '#417ffa'
.. py:attribute:: BUTTON_ROUND_RADIUS
:value: 15
.. py:attribute:: BUTTON_RECT_RADIUS
:value: 6
.. py:attribute:: BUTTON_BORDER_WIDTH
:value: 4
.. py:attribute:: BUTTON_BORDER_WIDTH_WAVEFORM
:value: 2
.. py:attribute:: HANDLE_SIZE
:value: '6px'
.. py:attribute:: GROOVE_WIDTH
:value: '2px'
.. py:attribute:: ICON_SIZE
:value: 20
.. py:attribute:: TAB_BUTTON_RECT_RADIUS
:value: 6
.. py:attribute:: MAX_RULER_HEIGHT
:value: 200
.. py:attribute:: TRACK_HEIGHT_MINIMUM
:value: 40
.. py:attribute:: FONT_RED
:value: '#d51e35'
.. py:attribute:: FONT_FAMILY
:value: 'Segoe UI'
.. py:attribute:: FONT_FAMILY_MONOSPACE
:value: 'Consolas'
.. py:attribute:: FONT_SIZE_MAIN_TABS
:value: '14px'
.. py:attribute:: FONT_WEIGHT_BOLD
:value: 'bold'
.. py:attribute:: FONT_WEIGHT_NORMAL
:value: 'normal'
.. py:attribute:: GREY
:value: '#666666'
.. py:attribute:: BUTTON_ROUND
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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);
}
"""
.. raw:: html
.. py:attribute:: BORDER_PRESSED
:value: '#2D2D2D'
.. py:attribute:: BUTTON_ROUND_SELECTED
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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);
}
"""
.. raw:: html
.. py:attribute:: BUTTON_ROUND_ACTIVE
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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);
}
"""
.. raw:: html
.. py:attribute:: BUTTON_ROUND_SMALL
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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);
}
"""
.. raw:: html
.. py:attribute:: BUTTON_RECT
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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);
}
"""
.. raw:: html
BUTTON_RECT_ANALOG = generate_button_style(
BACKGROUND, BORDER, BUTTON_RECT_RADIUS, FOREGROUND, ACCENT_HOVER, ACCENT_PRESSED
)
.. py:attribute:: BUTTON_RECT_SELECTED
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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);
}
"""
.. raw:: html
.. py:attribute:: BUTTON_RECT_ACTIVE
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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);
}
"""
.. raw:: html
.. py:attribute:: STYLE_FOREGROUND
:value: 'color: #FFFFFF;'
.. py:attribute:: BUTTON_RECT_ANALOG
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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);
}
"""
.. raw:: html
.. py:attribute:: BUTTON_ANALOG_ACTIVE
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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);
}
"""
.. raw:: html
.. py:attribute:: BUTTON_WAVEFORM
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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);
}
"""
.. raw:: html
.. py:attribute:: BUTTON_WAVEFORM_ANALOG
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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);
}
"""
.. raw:: html
.. py:attribute:: CREDITS_LABEL_STYLE
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
/* QLabels */
QLabel {
font-family: Segoe UI;
color: 'black';
background: #FFFFFF;
}
"""
.. raw:: html
.. py:attribute:: EDITOR
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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; }
"""
.. raw:: html
.. py:attribute:: EDITOR_ANALOG
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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; }
"""
.. raw:: html
.. py:attribute:: EDITOR_TITLE_LABEL
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
font-family: Segoe UI, sans-serif;
font-size: 20px;
font-weight: bold;
letter-spacing: 2px;
color: #FF2200;
"""
.. raw:: html
.. py:attribute:: ANALOG_SECTION_HEADER
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
font-family: Segoe UI, sans-serif;
font-weight: bold;
font-size: 18px;
color: #00A0E9;
letter-spacing: 1px;
"""
.. raw:: html
.. py:attribute:: DATABASE_TABLE_STYLE
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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;
}
"""
.. raw:: html
.. py:attribute:: DIGITAL_SECTION_HEADER
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
font-family: Segoe UI, sans-serif;
font-weight: bold;
font-size: 18px;
color: #FF2200;
letter-spacing: 1px;
"""
.. raw:: html
.. py:attribute:: INSTRUMENT
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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;
}
"""
.. raw:: html
.. py:attribute:: INSTRUMENT_IMAGE_LABEL
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
QLabel {
height: 150px;
background-color: transparent;
border: none;
}
"""
.. raw:: html
.. py:attribute:: LOG_VIEWER
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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;
}
"""
.. raw:: html
.. py:attribute:: WINDOW_MIDI_MESSAGE_MONITOR
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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;
}
"""
.. raw:: html
.. py:attribute:: MIXER_LABEL_ANALOG
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
font-size: 16px;
font-weight: bold;
color: #00A0E9;
"""
.. raw:: html
.. py:attribute:: MIXER_LABEL
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
QLabel {
font-family: Segoe UI;
font-size: 16px;
font-weight: bold;
color: #FF2200;
}
"""
.. raw:: html
.. py:attribute:: PROGRAM_PRESET_GROUPS
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
QGroupBox {
font-family: Segoe UI;
width: 300px;
border: none;
border-top: 1px solid #FF2200;
margin: 1px;
padding: 1px;
}"""
.. raw:: html
.. py:attribute:: PROGRAM_PRESET_GROUP_WIDTH
:value: 300
.. py:attribute:: PROGRESS_BAR
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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;
}
"""
.. raw:: html
.. py:attribute:: SLIDER_VERTICAL
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
/* 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";
}
"""
.. raw:: html
.. py:attribute:: SPLASH_SCREEN
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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; }
"""
.. raw:: html
.. py:attribute:: SPLITTER
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
QSplitter::handle {
background-color: #444;
border: 1px solid #666;
}
QSplitter::handle:vertical {
height: 6px;
}
QSplitter::handle:horizontal {
width: 6px;
}
"""
.. raw:: html
.. py:attribute:: TABS
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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;
}
"""
.. raw:: html
.. py:attribute:: TABS_ANALOG
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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;
}
"""
.. raw:: html
.. py:attribute:: TABS_DRUMS
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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;
}
"""
.. raw:: html
.. py:attribute:: TABS_MAIN_EDITOR
.. py:attribute:: SLIDER
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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;
}
"""
.. raw:: html
.. py:attribute:: SLIDER_DISABLED
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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;
}
"""
.. raw:: html
.. py:attribute:: TRANSPARENT
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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";
}
"""
.. raw:: html
.. py:attribute:: TRANSPARENT_WHITE
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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";
}
"""
.. raw:: html
.. py:attribute:: STATUS_INDICATOR_ACTIVE
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
QLabel {
background-color: #FF2200;
border-radius: 8px;
min-width: 12px;
min-height: 12px;
max-width: 12px;
max-height: 12px;
}
"""
.. raw:: html
.. py:attribute:: STATUS_INDICATOR_INACTIVE
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
QLabel {{
background-color: #333333;
border: 1px solid #666666;
border-radius: 8px;
min-width: 12px;
min-height: 12px;
max-width: 12px;
max-height: 12px;
}}
"""
.. raw:: html
.. py:attribute:: STATUS_INDICATOR_ANALOG_ACTIVE
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
QLabel {
background-color: #00A0E9;
border-radius: 8px;
min-width: 12px;
min-height: 12px;
max-width: 12px;
max-height: 12px;
}
"""
.. raw:: html
.. py:attribute:: BUTTON_GLOW_RED
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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;
}
"""
.. raw:: html
.. py:attribute:: BUTTON_GLOW_ANALOG
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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;
}
"""
.. raw:: html
.. py:attribute:: ADSR_ANALOG
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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;
}
"""
.. raw:: html
.. py:attribute:: ADSR
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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";
}
"""
.. raw:: html
.. py:attribute:: ADSR_DISABLED
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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";
}
"""
.. raw:: html
.. py:attribute:: ADSR_PLOT
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
QWidget {
background-color: #333333;
}
"""
.. raw:: html
.. py:attribute:: COMBO_BOX
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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;
}
"""
.. raw:: html
.. py:attribute:: COMBO_BOX_ANALOG
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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;
}
"""
.. raw:: html
.. py:attribute:: LABEL_SUB
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
font-family: "Segoe UI";
font-size: 13px;
color: #d51e35;
font-weight: bold;
"""
.. raw:: html
.. py:attribute:: LABEL
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
font-family: "Segoe UI";
font-size: 14px;
color: #d51e35;
font-weight: bold;
background: transparent;
"""
.. raw:: html
.. py:attribute:: QLABEL
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
QLabel {
font-family: "Segoe UI";
font-size: 14px;
color: #d51e35;
font-weight: bold;
background: transparent;
}
"""
.. raw:: html
.. py:attribute:: QLINEEDIT
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
QLineEdit {
font-family: "Segoe UI";
font-size: 12px;
color: #FFFFFF;
background: #1a1a1a;
border: none;
border-top: 2px solid #FF2200;
border-radius: 0;
}
"""
.. raw:: html
.. py:attribute:: QLINEEDIT_ANALOG
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
QLineEdit {
font-family: "Segoe UI";
font-size: 12px;
color: #FFFFFF;
background: #1a1a1a;
border: none;
border-top: 2px solid #00A0E9;
border-radius: 0;
}
"""
.. raw:: html
.. py:attribute:: KEYBOARD_DRUM_LABELS
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
QLabel {
color: #808080;
font-size: 7px;
font-family: monospace;
padding: 2px;
min-width: 30px;
}
"""
.. raw:: html
.. py:attribute:: INSTRUMENT_TITLE_LABEL
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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
);
}
"""
.. raw:: html
.. py:attribute:: INSTRUMENT_SUBTITLE_LABEL
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
font-family: "Consolas";
color: #FFBB33;
font-size: 24px;
font-weight: bold;
"""
.. raw:: html
.. py:attribute:: LABEL_SYNTH_PART
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
font-family: "Segoe UI";
font-size: 13px;
color: "#d51e35"; /* Base red */
font-weight: bold;
"""
.. raw:: html
.. py:attribute:: LABEL_ANALOG_SYNTH_PART
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
font-family: "Segoe UI";
font-size: 13px;
color: #00A0E9; /* Blue for Analog */
font-weight: bold;
"""
.. raw:: html
.. py:attribute:: DRUM_GROUP
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
QGroupBox {
font-family: Segoe UI;
width: 50px;
height: 60;
}
"""
.. raw:: html
.. py:attribute:: TAB_TITLE
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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;
}
"""
.. raw:: html
.. py:attribute:: TAB_TITLE_ANALOG
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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;
}
"""
.. raw:: html
.. py:attribute:: GROUP_BOX_ANALOG
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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;
}
"""
.. raw:: html
.. py:attribute:: PATCH_MANAGER
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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";
}
"""
.. raw:: html
.. py:attribute:: LABEL_WHEEL
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
QLabel {
color: red;
font-family: "Segoe UI";
}
"""
.. raw:: html
.. py:attribute:: PARTIAL_SWITCH
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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;
}
"""
.. raw:: html
.. py:attribute:: PARTIALS_PANEL
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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;
}
"""
.. raw:: html
.. py:attribute:: WINDOW_DEBUGGER
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
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;
}
"""
.. raw:: html
.. py:attribute:: SEQUENCER
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
font-family: "Segoe UI";
font-size: 14px;
color: #d51e35;
font-weight: bold;
background: transparent;
"""
.. raw:: html
.. py:attribute:: PARTS_SELECT
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
font-family: Segoe UI;
font-size: 14px;
color: #d51e35;
font-weight: bold;
background: transparent;
padding-bottom: 1px;
"""
.. raw:: html
.. py:method:: generate_sequencer_button_style(is_checked: bool, is_current: bool = False, is_selected_bar: bool = False) -> str
:staticmethod:
Generate button style based on state and current step
.. py:class:: JDXiUIThemeManager
Bases: :py:obj:`PySide6.QtCore.QObject`
Centralized theme management for JD-Xi Editor
.. py:attribute:: _instance
:type: Optional[JDXiUIThemeManager]
:value: None
.. py:attribute:: _initialized
:value: True
.. py:method:: apply_theme(theme: str = 'auto')
:staticmethod:
apply theme
.. py:method:: apply_dark_theme(theme: str = 'dark')
:staticmethod:
apply theme
.. py:method:: apply_style(widget: PySide6.QtWidgets.QWidget, style: str) -> None
:staticmethod:
Apply a style string to a widget.
:param widget: QWidget to apply style to
:param style: str Style sheet string
.. py:method:: apply_editor_title_label(widget: PySide6.QtWidgets.QWidget) -> None
:staticmethod:
Apply editor title label style
.. py:method:: apply_analog_section_header(widget: PySide6.QtWidgets.QWidget) -> None
:staticmethod:
Apply analog section header style
.. py:method:: apply_digital_section_header(widget: PySide6.QtWidgets.QWidget) -> None
:staticmethod:
Apply digital section header style
.. py:method:: apply_midi_monitor(widget: PySide6.QtWidgets.QWidget) -> None
:staticmethod:
Apply MIDI message monitor style
.. py:method:: apply_status_indicator_active(widget: PySide6.QtWidgets.QWidget, analog: bool = False) -> None
:staticmethod:
Apply active status indicator style
:param widget: QWidget to style
:param analog: bool If True, use analog (blue) style, else digital (red)
.. py:method:: apply_status_indicator_inactive(widget: PySide6.QtWidgets.QWidget) -> None
:staticmethod:
Apply inactive status indicator style
.. py:method:: apply_button_glow_red(widget: PySide6.QtWidgets.QWidget) -> None
:staticmethod:
Apply red glow button style
.. py:method:: apply_button_glow_analog(widget: PySide6.QtWidgets.QWidget) -> None
:staticmethod:
Apply analog (blue) glow button style
.. py:method:: apply_waveform_button(widget: PySide6.QtWidgets.QWidget, analog: bool = False) -> None
:staticmethod:
Apply waveform button style
:param widget: QWidget to style
:param analog: bool If True, use analog style, else digital
.. py:method:: apply_instrument_background(widget: PySide6.QtWidgets.QWidget) -> None
:staticmethod:
Apply instrument background gradient style
.. py:method:: apply_editor_style(widget: PySide6.QtWidgets.QWidget, analog: bool = False) -> None
:staticmethod:
Apply editor style
:param widget: QWidget to style
:param analog: bool If True, use analog editor style, else standard
.. py:method:: apply_instrument_title_label(widget: PySide6.QtWidgets.QWidget) -> None
:staticmethod:
Apply instrument title label style
.. py:method:: apply_mixer_label(widget: PySide6.QtWidgets.QWidget, analog: bool = False) -> None
:staticmethod:
Apply mixer label style
:param widget: QWidget to style
:param analog: bool If True, use analog mixer label style, else standard
.. py:method:: apply_button_mini_style(widget: PySide6.QtWidgets.QWidget) -> None
:staticmethod:
Apply partial switch (checkbox) style
.. py:method:: apply_adsr_style(widget: PySide6.QtWidgets.QWidget, analog: bool = False) -> None
:staticmethod:
Apply ADSR envelope style
:param widget: QWidget to style
:param analog: bool If True, use analog ADSR style, else standard
.. py:method:: apply_adsr_plot(widget: PySide6.QtWidgets.QWidget) -> None
:staticmethod:
Apply ADSR plot style
.. py:method:: apply_adsr_disabled(widget: PySide6.QtWidgets.QWidget) -> None
:staticmethod:
Apply ADSR disabled style
.. py:method:: apply_tabs_style(widget: PySide6.QtWidgets.QWidget, analog: bool = False) -> None
:staticmethod:
Apply tabs style
:param widget: QWidget to style
:param analog: bool If True, use analog tabs style, else standard
.. py:method:: apply_transparent(widget: PySide6.QtWidgets.QWidget) -> None
:staticmethod:
Apply transparent style
.. py:method:: apply_debugger_window(widget: PySide6.QtWidgets.QWidget) -> None
:staticmethod:
Apply debugger window style
.. py:method:: apply_combo_box(widget: PySide6.QtWidgets.QWidget, analog: bool = False) -> None
:staticmethod:
Apply combo box style
:param widget: QWidget to style
:param analog: bool If True, use analog combo box style, else standard
.. py:method:: apply_line_edit(widget: PySide6.QtWidgets.QWidget) -> None
:staticmethod:
Apply line edit style
.. py:method:: apply_button_rect_analog(widget: PySide6.QtWidgets.QWidget) -> None
:staticmethod:
Apply analog rectangular button style (blue)
.. py:method:: apply_button_rect(widget: PySide6.QtWidgets.QWidget, analog: bool = False) -> None
:staticmethod:
Apply analog rectangular button style (blue)
.. py:method:: apply_button_active(widget: PySide6.QtWidgets.QWidget, analog: bool) -> None
:staticmethod:
.. py:method:: apply_button_analog_active(widget: PySide6.QtWidgets.QWidget) -> None
:staticmethod:
Apply analog active button style (blue, active state)
.. py:method:: apply_table_style(widget: PySide6.QtWidgets.QWidget) -> None
:staticmethod:
Apply table style with rounded corners and charcoal embossed cells
.. py:method:: get_application_style() -> str
:staticmethod:
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.
:return: str Complete stylesheet string
.. py:method:: apply_application_style() -> bool
:staticmethod:
Apply the complete application-wide stylesheet to the QApplication instance.
:return: bool True if successful, False otherwise
.. py:method:: initialize() -> bool
:staticmethod:
Initialize the theme system.
This is the main entry point for theme initialization.
:return: bool True if initialization was successful, False otherwise
.. py:function:: get_theme_manager() -> JDXiUIThemeManager
Get the singleton ThemeManager instance