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