diff --git a/UI/adv-audio-control.cpp b/UI/adv-audio-control.cpp
index ce677cb83..a964eccdd 100644
--- a/UI/adv-audio-control.cpp
+++ b/UI/adv-audio-control.cpp
@@ -95,7 +95,7 @@ OBSAdvAudioCtrl::OBSAdvAudioCtrl(QGridLayout *, obs_source_t *source_)
active->setText(isActive ? QTStr("Basic.Stats.Status.Active")
: QTStr("Basic.Stats.Status.Inactive"));
if (isActive)
- setThemeID(active, "error");
+ setClasses(active, "text-danger");
active->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Fixed);
volume->setMinimum(MIN_DB - 0.1);
@@ -370,10 +370,10 @@ void OBSAdvAudioCtrl::SourceActiveChanged(bool isActive)
{
if (isActive && obs_source_audio_active(source)) {
active->setText(QTStr("Basic.Stats.Status.Active"));
- setThemeID(active, "error");
+ setClasses(active, "text-danger");
} else {
active->setText(QTStr("Basic.Stats.Status.Inactive"));
- setThemeID(active, "");
+ setClasses(active, "");
}
}
diff --git a/UI/data/themes/System.obt b/UI/data/themes/System.obt
index dea5a0ca0..c92703485 100644
--- a/UI/data/themes/System.obt
+++ b/UI/data/themes/System.obt
@@ -14,95 +14,110 @@
author: 'Warchamp7';
}
-/* We need to set back the icons, or the preview wont stick. */
+.bg-base {
+ background-color: #DCD9D7;
+}
-* [themeID="addIconSmall"] {
+.text-heading {
+ font-size: 36px;
+ font-weight: bold;
+}
+
+.text-large {
+ font-size: 16px;
+}
+
+.text-bright {
+ color: var(--primary_light);
+}
+
+/* We need to set back the icons, or the preview wont stick. */
+.icon-plus {
qproperty-icon: url(:/res/images/plus.svg);
}
-* [themeID="removeIconSmall"] {
+.icon-minus {
qproperty-icon: url(:/res/images/minus.svg);
}
-* [themeID="clearIconSmall"] {
+.icon-trash {
+ qproperty-icon: url(:/res/images/trash.svg);
+}
+
+.icon-clear {
qproperty-icon: url(:/res/images/entry-clear.svg);
}
-* [themeID="propertiesIconSmall"] {
- qproperty-icon: url(:/settings/images/settings/general.svg);
+.icon-gear {
+ qproperty-icon: url(:/res/images/settings/general.svg);
}
-* [themeID="configIconSmall"] {
- qproperty-icon: url(:/settings/images/settings/general.svg);
+.icon-dots-vert {
+ qproperty-icon: url(:/res/images/dots-vert.svg);
}
-* [themeID="upArrowIconSmall"] {
- qproperty-icon: url(:/res/images/up.svg);
-}
-
-* [themeID="refreshIconSmall"] {
+.icon-refresh {
qproperty-icon: url(:/res/images/refresh.svg);
}
-* [themeID="downArrowIconSmall"] {
- qproperty-icon: url(:/res/images/down.svg);
-}
-
-* [themeID="pauseIconSmall"] {
- qproperty-icon: url(:/res/images/media-pause.svg);
-}
-
-* [themeID="menuIconSmall"] {
- qproperty-icon: url(:res/images/dots-vert.svg);
-}
-
-* [themeID="cogsIcon"] {
+.icon-cogs {
qproperty-icon: url(:/res/images/cogs.svg);
}
-* [themeID="filtersIcon"] {
+.icon-touch {
+ qproperty-icon: url(:/res/images/interact.svg);
+}
+
+.icon-up {
+ qproperty-icon: url(:/res/images/up.svg);
+}
+
+.icon-down {
+ qproperty-icon: url(:/res/images/down.svg);
+}
+
+.icon-filter {
qproperty-icon: url(:/res/images/filter.svg);
}
+.icon-revert {
+ qproperty-icon: url(:res/images/revert.svg);
+}
+
MuteCheckBox {
outline: none;
}
-MuteCheckBox::indicator:checked {
+.indicator-mute::indicator:checked {
image: url(:/res/images/mute.svg);
}
-MuteCheckBox::indicator:indeterminate {
- image: url(theme:Dark/unassigned.svg);
+.indicator-mute::indicator:indeterminate {
+ image: url(:/res/images/unassigned.svg);
}
-MuteCheckBox::indicator:unchecked {
+.indicator-mute::indicator:unchecked {
image: url(:/settings/images/settings/audio.svg);
}
-QCheckBox[sourceTreeSubItem=true] {
+.indicator-expand {
background: transparent;
outline: none;
}
-QCheckBox[sourceTreeSubItem=true]::indicator {
+.indicator-expand::indicator {
width: 10px;
height: 10px;
}
-QCheckBox[sourceTreeSubItem=true]::indicator:checked {
+.indicator-expand::indicator:checked {
image: url(:/res/images/expand.svg);
}
-QCheckBox[sourceTreeSubItem=true]::indicator:unchecked {
+.indicator-expand::indicator:unchecked {
image: url(:/res/images/collapse.svg);
}
-OBSHotkeyLabel[hotkeyPairHover=true] {
- color: red;
-}
-
-
/* Volume Control */
VolumeMeter {
@@ -127,29 +142,16 @@ VolumeMeter {
/* Label warning/error */
-QLabel#warningLabel {
+.text-warning {
color: rgb(192, 128, 0);
- font-weight: bold;
}
-QLabel#errorLabel {
+.text-danger {
color: rgb(192, 0, 0);
- font-weight: bold;
}
-* [themeID="warning"] {
- color: rgb(192, 128, 0);
- font-weight: bold;
-}
-
-* [themeID="error"] {
- color: rgb(192, 0, 0);
- font-weight: bold;
-}
-
-* [themeID="good"] {
+.text-success {
color: rgb(0, 128, 0);
- font-weight: bold;
}
/* macOS Separator Fix */
@@ -159,26 +161,6 @@ QMainWindow::separator {
height: 4px;
}
-/* About dialog */
-
-* [themeID="aboutName"] {
- font-size: 36px;
- font-weight: bold;
-}
-
-* [themeID="aboutVersion"] {
- font-size: 16px;
- margin-bottom: 20px;
-}
-
-* [themeID="aboutInfo"] {
- margin-bottom: 20px;
-}
-
-* [themeID="aboutHLayout"] {
- background-color: #DCD9D7;
-}
-
/* Preview background color */
OBSQTDisplay {
@@ -187,7 +169,7 @@ OBSQTDisplay {
/* Preview/Program labels */
-* [themeID="previewProgramLabels"] {
+.label-preview-title {
font-size: 18px;
font-weight: bold;
color: rgb(122,121,122);
@@ -211,40 +193,31 @@ OBSBasicSettings QListWidget::item {
padding-bottom: 5px;
}
-/* Locked CheckBox */
-
-QCheckBox[lockCheckBox=true] {
+.checkbox-icon {
outline: none;
background: transparent;
}
-QCheckBox[lockCheckBox=true]::indicator:checked {
+/* Locked CheckBox */
+
+.indicator-lock::indicator:checked {
image: url(:res/images/locked.svg);
}
-QCheckBox[lockCheckBox=true]::indicator:unchecked {
+.indicator-lock::indicator:unchecked {
image: url(:res/images/unlocked.svg);
}
/* Visibility CheckBox */
-QCheckBox[visibilityCheckBox=true] {
- outline: none;
- background: transparent;
-}
-
-QCheckBox[visibilityCheckBox=true]::indicator:checked {
+.indicator-visibility::indicator:checked {
image: url(:res/images/visible.svg);
}
-QCheckBox[visibilityCheckBox=true]::indicator:unchecked {
+.indicator-visibility::indicator:unchecked {
image: url(:res/images/invisible.svg);
}
-* [themeID="revertIcon"] {
- qproperty-icon: url(:res/images/revert.svg);
-}
-
OBSMissingFiles {
qproperty-warningIcon: url(:res/images/alert.svg);
}
@@ -279,28 +252,28 @@ SceneTree {
/* Save icon */
-* [themeID="replayIconSmall"] {
+.icon-save {
qproperty-icon: url(:res/images/save.svg);
}
/* Studio Mode T-Bar */
-QSlider[themeID="tBarSlider"] {
+.slider-tbar {
height: 24px;
}
-QSlider::groove:horizontal[themeID="tBarSlider"] {
+.slider-tbar::groove:horizontal {
border: 1px solid #4c4c4c;
height: 5px;
background: #DCD9D7;
}
-QSlider::sub-page:horizontal[themeID="tBarSlider"] {
+.slider-tbar::sub-page:horizontal {
background: #DCD9D7;
border: 1px solid #4c4c4c;
}
-QSlider::handle:horizontal[themeID="tBarSlider"] {
+.slider-tbar::handle:horizontal {
background-color: #4c4c4c;
width: 12px;
height: 24px;
@@ -312,10 +285,6 @@ QSlider::handle:horizontal[themeID="tBarSlider"] {
padding: 3px 10px;
}
-#contextContainer QPushButton[themeID2=contextBarButton] {
- padding: 3px 6px;
-}
-
#contextContainer QPushButton#sourcePropertiesButton {
qproperty-icon: url(:/settings/images/settings/general.svg);
}
@@ -330,28 +299,28 @@ QSlider::handle:horizontal[themeID="tBarSlider"] {
/* Media icons */
-* [themeID="playIcon"] {
+.icon-media-play {
qproperty-icon: url(:res/images/media/media_play.svg);
}
-* [themeID="pauseIcon"] {
- qproperty-icon: url(:/res/images/media/media_pause.svg);
+.icon-media-pause {
+ qproperty-icon: url(:res/images/media/media_pause.svg);
}
-* [themeID="restartIcon"] {
- qproperty-icon: url(:/res/images/media/media_restart.svg);
+.icon-media-restart {
+ qproperty-icon: url(:res/images/media/media_restart.svg);
}
-* [themeID="stopIcon"] {
- qproperty-icon: url(:/res/images/media/media_stop.svg);
+.icon-media-stop {
+ qproperty-icon: url(:res/images/media/media_stop.svg);
}
-* [themeID="nextIcon"] {
- qproperty-icon: url(:/res/images/media/media_next.svg);
+.icon-media-next {
+ qproperty-icon: url(:res/images/media/media_next.svg);
}
-* [themeID="previousIcon"] {
- qproperty-icon: url(:/res/images/media/media_previous.svg);
+.icon-media-prev {
+ qproperty-icon: url(:res/images/media/media_previous.svg);
}
/* YouTube Integration */
@@ -369,7 +338,7 @@ OBSYoutubeActions {
border: 1px solid #777;
}
-#ytEventList QLabel[isSelectedEvent=true] {
+#ytEventList .row-selected {
background-color: #ccc;
border: 1px solid #444;
}
@@ -380,7 +349,7 @@ QCalendarWidget QToolButton {
}
#qt_calendar_monthbutton::menu-indicator {
- image: url(theme:Dark/down.svg);
+ image: url(:/res/images/down.svg);
subcontrol-position: right;
padding-top: 2px;
padding-right: 2px;
@@ -395,13 +364,13 @@ QCalendarWidget QToolButton {
QCalendarWidget #qt_calendar_prevmonth {
padding: 2px;
- qproperty-icon: url(theme:Dark/left.svg);
+ qproperty-icon: url(:/res/images/left.svg);
icon-size: 16px;
}
QCalendarWidget #qt_calendar_nextmonth {
padding: 2px;
- qproperty-icon: url(theme:Dark/right.svg);
+ qproperty-icon: url(:/res/images/right.svg);
icon-size: 16px;
}
diff --git a/UI/data/themes/Yami.obt b/UI/data/themes/Yami.obt
index c76f76a7d..7d74939d2 100644
--- a/UI/data/themes/Yami.obt
+++ b/UI/data/themes/Yami.obt
@@ -85,20 +85,27 @@
--danger: var(--red3);
--text: var(--white1);
- --text_light: rgb(214,214,214);
- --text_muted: rgb(153,153,153);
+ --text_light: rgb(214, 214, 214);
+ --text_muted: rgb(153, 153, 153);
--text_disabled: var(--text_muted);
- --text_inactive: rgb(255,254,255);
+ --text_inactive: rgb(255, 254, 255);
/* Layout */
/* Configurable Values */
- --font_base_value: 10; /* TODO: Min 8, Max 12, Step 1 */
- --spacing_base_value: 4; /* TODO: Min 2, Max 7, Step 1 */
- --padding_base_value: 4; /* TODO: Min 0.25, Max 10, Step 2 */
- --border_highlight: "transparent"; /* TODO: Better Accessibility focus state */
+ /* TODO: Min 8, Max 12, Step 1 */
+ --font_base_value: 10;
+
+ /* TODO: Min 2, Max 7, Step 1 */
+ --spacing_base_value: 4;
+
+ /* TODO: Min 0.25, Max 10, Step 2 */
+ --padding_base_value: 4;
+
+ /* TODO: Better Accessibility focus state */
/* TODO: Move Accessibilty Colors to Theme config system */
+ --border_highlight: "transparent";
/* OS Fixes */
--os_mac_font_base_value: 12;
@@ -191,8 +198,8 @@
--separator_hover: var(--white1);
- --highlight: rgb(42,130,218);
- --highlight_inactive: rgb(25,28,34);
+ --highlight: rgb(42, 130, 218);
+ --highlight_inactive: rgb(25, 28, 34);
/* Qt Palette variables can be set with the "palette_" prefix */
--palette_window: var(--bg_window);
@@ -231,6 +238,146 @@
*/
}
+/* --------------------- */
+/* General Styling Hints */
+
+/* Backgrounds */
+
+.bg_window {
+ background-color: var(--bg_window);
+}
+
+.bg-base {
+ background-color: var(--bg_base);
+}
+
+.text-heading {
+ font-size: var(--font_heading);
+ font-weight: bold;
+}
+
+.text-large {
+ font-size: var(--font_large);
+}
+
+.text-bright {
+ color: var(--primary_light);
+}
+
+.text-muted {
+ color: var(--text_muted);
+}
+
+.text-warning {
+ color: var(--warning);
+}
+
+.text-danger {
+ color: var(--danger);
+}
+
+.text-success {
+ color: var(--green3);
+}
+
+.frame-notice {
+ background: var(--bg_preview);
+ border-radius: var(--border_radius);
+ padding: var(--padding_xlarge) var(--padding_large);
+}
+
+.frame-notice QLabel {
+ padding: var(--padding_large) 0px;
+}
+
+/* Icon Overrides */
+
+.icon-plus {
+ qproperty-icon: url(theme:Dark/plus.svg);
+}
+
+.icon-minus {
+ qproperty-icon: url(theme:Dark/minus.svg);
+}
+
+.icon-trash {
+ qproperty-icon: url(theme:Dark/trash.svg);
+}
+
+.icon-clear {
+ qproperty-icon: url(theme:Dark/entry-clear.svg);
+}
+
+.icon-gear {
+ qproperty-icon: url(theme:Dark/settings/general.svg);
+}
+
+.icon-dots-vert {
+ qproperty-icon: url(theme:Dark/dots-vert.svg);
+}
+
+.icon-refresh {
+ qproperty-icon: url(theme:Dark/refresh.svg);
+}
+
+.icon-cogs {
+ qproperty-icon: url(theme:Dark/cogs.svg);
+}
+
+.icon-touch {
+ qproperty-icon: url(theme:Dark/interact.svg);
+}
+
+.icon-up {
+ qproperty-icon: url(theme:Dark/up.svg);
+}
+
+.icon-down {
+ qproperty-icon: url(theme:Dark/down.svg);
+}
+
+.icon-pause {
+ qproperty-icon: url(theme:Dark/media-pause.svg);
+}
+
+.icon-filter {
+ qproperty-icon: url(theme:Dark/filter.svg);
+}
+
+.icon-revert {
+ qproperty-icon: url(theme:Dark/revert.svg);
+}
+
+.icon-save {
+ qproperty-icon: url(theme:Dark/save.svg);
+}
+
+/* Media icons */
+
+.icon-media-play {
+ qproperty-icon: url(theme:Dark/media/media_play.svg);
+}
+
+.icon-media-pause {
+ qproperty-icon: url(theme:Dark/media/media_pause.svg);
+}
+
+.icon-media-restart {
+ qproperty-icon: url(theme:Dark/media/media_restart.svg);
+}
+
+.icon-media-stop {
+ qproperty-icon: url(theme:Dark/media/media_stop.svg);
+}
+
+.icon-media-next {
+ qproperty-icon: url(theme:Dark/media/media_next.svg);
+}
+
+.icon-media-prev {
+ qproperty-icon: url(theme:Dark/media/media_previous.svg);
+}
+
/* Default widget style, we override only what is needed. */
QWidget {
@@ -294,7 +441,12 @@ SourceTree QWidget {
margin-bottom: 0;
}
-* [frameShape="1"], * [frameShape="2"], * [frameShape="3"], * [frameShape="4"], * [frameShape="5"], * [frameShape="6"] {
+* [frameShape="1"],
+* [frameShape="2"],
+* [frameShape="3"],
+* [frameShape="4"],
+* [frameShape="5"],
+* [frameShape="6"] {
border: 1px solid var(--bg_base);
}
@@ -428,7 +580,7 @@ SceneTree::item:disabled:hover {
QListWidget QLineEdit,
SceneTree QLineEdit,
SourceTree QLineEdit {
- padding: 0;
+ padding: 0;
padding-bottom: 1px;
margin: 0;
border: 1px solid var(--white1);
@@ -454,13 +606,13 @@ OBSBasicSettings QListWidget::item {
}
OBSBasicSettings QScrollBar:vertical {
- width: var(--settings_scrollbar_size);
- margin-left: 9px;
+ width: var(--settings_scrollbar_size);
+ margin-left: 9px;
}
OBSBasicSettings QScrollBar:horizontal {
- height: var(--settings_scrollbar_size);
- margin-top: 9px;
+ height: var(--settings_scrollbar_size);
+ margin-top: 9px;
}
/* Settings properties view */
@@ -643,9 +795,9 @@ QScrollBar::handle:disabled {
/* Source Context Bar */
#contextContainer {
- background-color: var(--bg_base);
- margin-top: 4px;
- border-radius: var(--border_radius);
+ background-color: var(--bg_base);
+ margin-top: 4px;
+ border-radius: var(--border_radius);
}
#contextContainer QPushButton {
@@ -671,58 +823,6 @@ QToolBar {
margin: var(--spacing_base) 0px;
}
-* [themeID="addIconSmall"] {
- qproperty-icon: url(theme:Dark/plus.svg);
-}
-
-* [themeID="removeIconSmall"] {
- qproperty-icon: url(theme:Dark/trash.svg);
-}
-
-* [themeID="clearIconSmall"] {
- qproperty-icon: url(theme:Dark/entry-clear.svg);
-}
-
-* [themeID="propertiesIconSmall"] {
- qproperty-icon: url(theme:Dark/settings/general.svg);
-}
-
-* [themeID="configIconSmall"] {
- qproperty-icon: url(theme:Dark/settings/general.svg);
-}
-
-* [themeID="menuIconSmall"] {
- qproperty-icon: url(theme:Dark/dots-vert.svg);
-}
-
-* [themeID="refreshIconSmall"] {
- qproperty-icon: url(theme:Dark/refresh.svg);
-}
-
-* [themeID="cogsIcon"] {
- qproperty-icon: url(theme:Dark/cogs.svg);
-}
-
-#sourceInteractButton {
- qproperty-icon: url(theme:Dark/interact.svg);
-}
-
-* [themeID="upArrowIconSmall"] {
- qproperty-icon: url(theme:Dark/up.svg);
-}
-
-* [themeID="downArrowIconSmall"] {
- qproperty-icon: url(theme:Dark/down.svg);
-}
-
-* [themeID="pauseIconSmall"] {
- qproperty-icon: url(theme:Dark/media-pause.svg);
-}
-
-* [themeID="filtersIcon"] {
- qproperty-icon: url(theme:Dark/filter.svg);
-}
-
QToolBarExtension {
background: var(--button_bg);
min-width: 12px;
@@ -736,7 +836,8 @@ QToolBarExtension {
/* Tab Widget */
-QTabWidget::pane { /* The tab widget frame */
+/* The tab widget frame */
+QTabWidget::pane {
border-top: 4px solid var(--tab_bg);
}
@@ -831,7 +932,7 @@ QDateTimeEdit:selected {
QComboBox::drop-down,
QDateTimeEdit::drop-down {
- border:none;
+ border: none;
border-left: 1px solid var(--grey6);
width: var(--input_height);
}
@@ -929,7 +1030,8 @@ QDoubleSpinBox:focus {
QSpinBox::up-button,
QDoubleSpinBox::up-button {
subcontrol-origin: padding;
- subcontrol-position: top right; /* position at the top right corner */
+ /* position at the top right corner */
+ subcontrol-position: top right;
width: var(--input_height);
height: var(--spinbox_button_height);
@@ -942,7 +1044,8 @@ QDoubleSpinBox::up-button {
QSpinBox::down-button,
QDoubleSpinBox::down-button {
subcontrol-origin: padding;
- subcontrol-position: bottom right; /* position at the top right corner */
+ /* position at the top right corner */
+ subcontrol-position: bottom right;
width: var(--input_height);
height: var(--spinbox_button_height);
@@ -1061,7 +1164,7 @@ QToolButton {
}
QToolButton,
-QPushButton[toolButton="true"] {
+.btn-tool {
background-color: var(--button_bg);
padding: var(--padding_base) var(--padding_base);
margin: 0px var(--spacing_base);
@@ -1071,7 +1174,7 @@ QPushButton[toolButton="true"] {
}
QToolButton:last-child,
-QPushButton[toolButton="true"]:last-child {
+.btn-tool:last-child {
margin-right: 0px;
}
@@ -1086,10 +1189,10 @@ QPushButton:hover {
QToolButton:hover,
QToolButton:focus,
-QPushButton[toolButton="true"]:hover,
-QPushButton[toolButton="true"]:focus,
-MuteCheckBox::indicator:hover,
-MuteCheckBox::indicator:focus {
+.btn-tool:hover,
+.btn-tool:focus,
+.indicator-mute::indicator:hover,
+.indicator-mute::indicator:focus {
border-color: var(--button_border);
background-color: var(--button_bg_hover);
}
@@ -1115,8 +1218,8 @@ QPushButton:pressed:hover {
QToolButton:pressed,
QToolButton:pressed:hover,
-QPushButton[toolButton="true"]:pressed,
-QPushButton[toolButton="true"]:pressed:hover {
+.btn-tool:pressed,
+.btn-tool:pressed:hover {
background-color: var(--button_bg_down);
border-color: var(--button_border);
}
@@ -1127,7 +1230,7 @@ QPushButton:disabled {
}
QToolButton:disabled,
-QPushButton[toolButton="true"]:disabled {
+.btn-tool:disabled {
background-color: var(--button_bg_disabled);
border-color: transparent;
}
@@ -1193,13 +1296,15 @@ QSlider::handle {
QSlider::handle:horizontal {
height: 10px;
width: 20px;
- margin: -3px 0; /* handle is placed by default on the contents rect of the groove. Expand outside the groove */
+ /* Handle is placed by default on the contents rect of the groove. Expand outside the groove */
+ margin: -3px 0;
}
QSlider::handle:vertical {
width: 10px;
height: 20px;
- margin: 0 -3px; /* handle is placed by default on the contents rect of the groove. Expand outside the groove */
+ /* Handle is placed by default on the contents rect of the groove. Expand outside the groove */
+ margin: 0 -3px;
}
QSlider::handle:hover {
@@ -1327,7 +1432,7 @@ VolumeMeter {
qproperty-foregroundNominalColor: var(--green2);
qproperty-foregroundWarningColor: var(--yellow2);
qproperty-foregroundErrorColor: var(--red2);
- qproperty-magnitudeColor: rgb(0,0,0);
+ qproperty-magnitudeColor: rgb(0, 0, 0);
qproperty-majorTickColor: var(--white1);
qproperty-minorTickColor: var(--grey1);
}
@@ -1373,67 +1478,6 @@ QHeaderView::section {
margin-bottom: 2px;
}
-OBSHotkeyLabel[hotkeyPairHover=true] {
- color: var(--primary_light);
-}
-
-/* Label warning/error */
-
-QLabel#warningLabel {
- color: var(--warning);
- font-weight: bold;
-}
-
-QLabel#errorLabel {
- color: var(--danger);
- font-weight: bold;
-}
-
-* [themeID="warning"] {
- color: var(--warning);
- font-weight: bold;
-}
-
-* [themeID="error"] {
- color: var(--danger);
- font-weight: bold;
-}
-
-* [themeID="good"] {
- color: var(--green3);
- font-weight: bold;
-}
-
-QFrame [noticeFrame="true"] {
- background: var(--bg_preview);
- border-radius: var(--border_radius);
- padding: var(--padding_xlarge) var(--padding_large);
-}
-
-QFrame [noticeFrame="true"] QLabel {
- padding: var(--padding_large) 0px;
-}
-
-/* About dialog */
-
-* [themeID="aboutName"] {
- font-size: var(--font_heading);
- font-weight: bold;
-}
-
-* [themeID="aboutVersion"] {
- font-size: var(--font_large);
- margin-bottom: 20px;
-}
-
-* [themeID="aboutInfo"] {
- margin-bottom: 20px;
-}
-
-* [themeID="aboutHLayout"] {
- background-color: var(--bg_base);
-}
-
/* Canvas / Preview background color */
OBSQTDisplay {
@@ -1468,7 +1512,7 @@ OBSBasicFilters #widget_2 QPushButton {
/* Preview/Program labels */
-* [themeID="previewProgramLabels"] {
+.label-preview-title {
font-size: var(--font_xlarge);
font-weight: bold;
color: var(--text_light);
@@ -1490,9 +1534,6 @@ OBSBasicSettings {
}
/* Checkboxes */
-QCheckBox {
-
-}
QCheckBox::indicator,
QGroupBox::indicator {
@@ -1535,84 +1576,60 @@ QGroupBox::indicator:unchecked:disabled {
image: url(theme:Yami/checkbox_unchecked_disabled.svg);
}
-/* Locked CheckBox */
-
-QCheckBox[lockCheckBox=true] {
+/* Icon Checkboxes */
+.checkbox-icon {
outline: none;
background: transparent;
max-width: var(--icon_base);
max-height: var(--icon_base);
padding: var(--padding_base);
+ margin-right: var(--spacing_large);
border: 1px solid transparent;
- margin-left: var(--spacing_large);
-}
-
-QCheckBox[lockCheckBox=true]::indicator {
- width: var(--icon_base);
- height: var(--icon_base);
border-radius: 4px;
}
-QCheckBox[lockCheckBox=true]::indicator:checked,
-QCheckBox[lockCheckBox=true]::indicator:checked:hover {
+.checkbox-icon::indicator {
+ width: var(--icon_base);
+ height: var(--icon_base);
+}
+
+.checkbox-icon:hover,
+.checkbox-icon:focus {
+ border-color: var(--primary_lighter);
+}
+
+/* Locked CheckBox */
+
+.indicator-lock::indicator:checked,
+.indicator-lock::indicator:checked:hover {
image: url(theme:Dark/locked.svg);
}
-QCheckBox[lockCheckBox=true]::indicator:unchecked,
-QCheckBox[lockCheckBox=true]::indicator:unchecked:hover {
+.indicator-lock::indicator:unchecked,
+.indicator-lock::indicator:unchecked:hover {
image: url(:res/images/unlocked.svg);
}
-QCheckBox[lockCheckBox=true]:hover,
-QCheckBox[lockCheckBox=true]:focus {
- border: 1px solid var(--border_highlight);
-}
-
/* Visibility CheckBox */
-QCheckBox[visibilityCheckBox=true] {
- outline: none;
- background: transparent;
- max-width: var(--icon_base);
- max-height: var(--icon_base);
- padding: var(--padding_base);
- border: 1px solid transparent;
- margin-left: var(--spacing_large);
-}
-
-QCheckBox[visibilityCheckBox=true]::indicator {
- width: var(--icon_base);
- height: var(--icon_base);
- border-radius: 4px;
-}
-
-QCheckBox[visibilityCheckBox=true]::indicator:checked,
-QCheckBox[visibilityCheckBox=true]::indicator:checked:hover {
+.indicator-visibility::indicator:checked,
+.indicator-visibility::indicator:checked:hover {
image: url(theme:Dark/visible.svg);
}
-QCheckBox[visibilityCheckBox=true]::indicator:unchecked,
-QCheckBox[visibilityCheckBox=true]::indicator:unchecked:hover {
+.indicator-visibility::indicator:unchecked,
+.indicator-visibility::indicator:unchecked:hover {
image: url(:res/images/invisible.svg);
}
-QCheckBox[visibilityCheckBox=true]:hover,
-QCheckBox[visibilityCheckBox=true]:focus {
- border: 1px solid var(--border_highlight);
-}
-
-* [themeID="revertIcon"] {
- qproperty-icon: url(theme:Dark/revert.svg);
-}
-
/* Mute CheckBox */
MuteCheckBox {
outline: none;
}
-MuteCheckBox::indicator,
-MuteCheckBox::indicator:unchecked {
+.indicator-mute::indicator,
+.indicator-mute::indicator:unchecked {
width: var(--icon_base);
height: var(--icon_base);
background-color: var(--button_bg);
@@ -1623,8 +1640,8 @@ MuteCheckBox::indicator:unchecked {
icon-size: var(--icon_base);
}
-MuteCheckBox::indicator:hover,
-MuteCheckBox::indicator:unchecked:hover {
+.indicator-mute::indicator:hover,
+.indicator-mute::indicator:unchecked:hover {
background-color: var(--button_bg_hover);
padding: var(--padding_base_border) var(--padding_base_border);
margin: 0px;
@@ -1632,45 +1649,45 @@ MuteCheckBox::indicator:unchecked:hover {
icon-size: var(--icon_base);
}
-MuteCheckBox::indicator:pressed,
-MuteCheckBox::indicator:pressed:hover {
+.indicator-mute::indicator:pressed,
+.indicator-mute::indicator:pressed:hover {
background-color: var(--button_bg_down);
border-color: var(--button_border);
}
-MuteCheckBox::indicator:checked {
+.indicator-mute::indicator:checked {
image: url(theme:Dark/mute.svg);
}
-MuteCheckBox::indicator:indeterminate {
+.indicator-mute::indicator:indeterminate {
image: url(theme:Dark/unassigned.svg);
}
-MuteCheckBox::indicator:unchecked {
+.indicator-mute::indicator:unchecked {
image: url(theme:Dark/settings/audio.svg);
}
-MuteCheckBox::indicator:unchecked:hover {
+.indicator-mute::indicator:unchecked:hover {
image: url(theme:Dark/settings/audio.svg);
}
-MuteCheckBox::indicator:unchecked:focus {
+.indicator-mute::indicator:unchecked:focus {
image: url(theme:Dark/settings/audio.svg);
}
-MuteCheckBox::indicator:checked:hover {
+.indicator-mute::indicator:checked:hover {
image: url(theme:Dark/mute.svg);
}
-MuteCheckBox::indicator:checked:focus {
+.indicator-mute::indicator:checked:focus {
image: url(theme:Dark/mute.svg);
}
-MuteCheckBox::indicator:checked:disabled {
+.indicator-mute::indicator:checked:disabled {
image: url(theme:Dark/mute.svg);
}
-MuteCheckBox::indicator:unchecked:disabled {
+.indicator-mute::indicator:unchecked:disabled {
image: url(theme:Dark/settings/audio.svg);
}
@@ -1687,10 +1704,6 @@ OBSHotkeyLabel {
padding: 4px 0px;
}
-OBSHotkeyLabel[hotkeyPairHover=true] {
- color: var(--blue2);
-}
-
OBSHotkeyWidget QPushButton {
min-width: 16px;
padding: var(--padding_base);
@@ -1701,38 +1714,16 @@ OBSHotkeyWidget QPushButton {
/* Sources List Group Collapse Checkbox */
-QCheckBox[sourceTreeSubItem=true] {
- background: transparent;
- outline: none;
- padding: 1px;
- min-width: var(--icon_base);
- min-height: var(--icon_base);
-}
-
-QCheckBox[sourceTreeSubItem=true]::indicator {
- width: var(--icon_base);
- height: var(--icon_base);
- padding: 0px;
- border: 1px solid transparent;
- border-radius: 4px;
- margin-left: -1px;
-}
-
-QCheckBox[sourceTreeSubItem=true]::indicator:checked,
-QCheckBox[sourceTreeSubItem=true]::indicator:checked:hover {
+.indicator-expand::indicator:checked,
+.indicator-expand::indicator:checked:hover {
image: url(theme:Dark/expand.svg);
}
-QCheckBox[sourceTreeSubItem=true]::indicator:unchecked,
-QCheckBox[sourceTreeSubItem=true]::indicator:unchecked:hover {
+.indicator-expand::indicator:unchecked,
+.indicator-expand::indicator:unchecked:hover {
image: url(theme:Dark/collapse.svg);
}
-QCheckBox[sourceTreeSubItem=true]::indicator:hover,
-QCheckBox[sourceTreeSubItem=true]::indicator:focus {
- border: 1px solid var(--border_highlight);
-}
-
/* Source Icons */
OBSBasic {
@@ -1761,81 +1752,49 @@ SceneTree {
qproperty-gridItemHeight: var(--input_height_base);
}
-*[gridMode="true"] SceneTree::item {
+.list-grid SceneTree::item {
color: var(--text);
background-color: var(--button_bg);
border-radius: var(--border_radius);
margin: var(--spacing_base);
}
-*[gridMode="true"] SceneTree::item:selected {
+.list-grid SceneTree::item:selected {
background-color: var(--list_item_bg_selected);
}
-*[gridMode="true"] SceneTree::item:checked {
+.list-grid SceneTree::item:checked {
background-color: var(--primary);
}
-*[gridMode="true"] SceneTree::item:hover {
+.list-grid SceneTree::item:hover {
background-color: var(--list_item_bg_hover);
}
-*[gridMode="true"] SceneTree::item:selected:hover {
+.list-grid SceneTree::item:selected:hover {
background-color: var(--list_item_bg_hover);
}
-/* Save icon */
-
-* [themeID="replayIconSmall"] {
- qproperty-icon: url(theme:Dark/save.svg);
-}
-
/* Studio Mode T-Bar */
-QSlider[themeID="tBarSlider"] {
+.slider-tbar {
height: 24px;
}
-QSlider::groove:horizontal[themeID="tBarSlider"] {
+.slider-tbar::groove:horizontal {
height: 8px;
}
-QSlider::sub-page:horizontal[themeID="tBarSlider"] {
+.slider-tbar::sub-page:horizontal {
background: var(--blue2);
}
-QSlider::handle:horizontal[themeID="tBarSlider"] {
+.slider-tbar::handle:horizontal {
width: 12px;
height: 24px;
margin: -24px 0px;
}
-/* Media icons */
-
-* [themeID="playIcon"] {
- qproperty-icon: url(theme:Dark/media/media_play.svg);
-}
-
-* [themeID="pauseIcon"] {
- qproperty-icon: url(theme:Dark/media/media_pause.svg);
-}
-
-* [themeID="restartIcon"] {
- qproperty-icon: url(theme:Dark/media/media_restart.svg);
-}
-
-* [themeID="stopIcon"] {
- qproperty-icon: url(theme:Dark/media/media_stop.svg);
-}
-
-* [themeID="nextIcon"] {
- qproperty-icon: url(theme:Dark/media/media_next.svg);
-}
-
-* [themeID="previousIcon"] {
- qproperty-icon: url(theme:Dark/media/media_previous.svg);
-}
-
/* YouTube Integration */
OBSYoutubeActions {
qproperty-thumbPlaceholder: url(theme:Dark/sources/image.svg);
@@ -1853,12 +1812,12 @@ OBSYoutubeActions {
background-color: var(--button_bg_hover);
}
-#ytEventList QLabel[isSelectedEvent=true] {
+#ytEventList .row-selected {
background-color: var(--primary);
border: none;
}
-#ytEventList QLabel[isSelectedEvent=true]:hover {
+#ytEventList .row-selected:hover {
background-color: var(--primary_light);
color: var(--text);
}
@@ -1919,9 +1878,8 @@ QCalendarWidget QToolButton:pressed {
}
/* Month Dropdown Menu */
-QCalendarWidget QMenu {
+QCalendarWidget QMenu {}
-}
/* Year spinbox */
QCalendarWidget QSpinBox {
background-color: var(--input_bg);
@@ -1931,13 +1889,32 @@ QCalendarWidget QSpinBox {
padding: var(--padding_base) 16px;
}
-QCalendarWidget QSpinBox::up-button { subcontrol-origin: border; subcontrol-position: top right; width: 16px; }
-QCalendarWidget QSpinBox::down-button {subcontrol-origin: border; subcontrol-position: bottom right; width: 16px;}
-QCalendarWidget QSpinBox::up-arrow { width: 10px; height: 10px; }
-QCalendarWidget QSpinBox::down-arrow { width: 10px; height: 10px; }
+QCalendarWidget QSpinBox::up-button {
+ subcontrol-origin: border;
+ subcontrol-position: top right;
+ width: 16px;
+}
+
+QCalendarWidget QSpinBox::down-button {
+ subcontrol-origin: border;
+ subcontrol-position: bottom right;
+ width: 16px;
+}
+
+QCalendarWidget QSpinBox::up-arrow {
+ width: 10px;
+ height: 10px;
+}
+
+QCalendarWidget QSpinBox::down-arrow {
+ width: 10px;
+ height: 10px;
+}
/* Days of the Week Bar */
-QCalendarWidget QWidget { alternate-background-color: var(--grey7); }
+QCalendarWidget QWidget {
+ alternate-background-color: var(--grey7);
+}
QCalendarWidget QAbstractItemView:enabled {
background-color: var(--bg_base);
diff --git a/UI/data/themes/Yami_Acri.ovt b/UI/data/themes/Yami_Acri.ovt
index 8f87eaebe..5b1c11795 100644
--- a/UI/data/themes/Yami_Acri.ovt
+++ b/UI/data/themes/Yami_Acri.ovt
@@ -187,19 +187,19 @@ OBSQTDisplay {
qproperty-displayBackgroundColor: var(--grey5);
}
-*[gridMode="true"] SceneTree::item:selected {
+.list-grid SceneTree::item:selected {
background-color: var(--button_bg_red);
}
-*[gridMode="true"] SceneTree::item:checked {
+.list-grid SceneTree::item:checked {
background-color: var(--button_bg_red);
}
-*[gridMode="true"] SceneTree::item:hover {
+.list-grid SceneTree::item:hover {
background-color: var(--button_bg_red_down);
}
-*[gridMode="true"] SceneTree::item:selected:hover {
+.list-grid SceneTree::item:selected:hover {
background-color: var(--button_bg_red_hover);
}
diff --git a/UI/data/themes/Yami_Light.ovt b/UI/data/themes/Yami_Light.ovt
index a2fd92201..0b802d8d1 100644
--- a/UI/data/themes/Yami_Light.ovt
+++ b/UI/data/themes/Yami_Light.ovt
@@ -66,56 +66,56 @@ QPushButton#sourceFiltersButton {
qproperty-icon: url(theme:Light/filter.svg);
}
-* [themeID="addIconSmall"] {
+.icon-plus {
qproperty-icon: url(theme:Light/plus.svg);
}
-* [themeID="removeIconSmall"] {
+.icon-minus {
+ qproperty-icon: url(theme:Light/minus.svg);
+}
+
+.icon-trash {
qproperty-icon: url(theme:Light/trash.svg);
}
-* [themeID="clearIconSmall"] {
+.icon-clear {
qproperty-icon: url(theme:Light/entry-clear.svg);
}
-* [themeID="propertiesIconSmall"] {
+.icon-gear {
qproperty-icon: url(theme:Light/settings/general.svg);
}
-* [themeID="configIconSmall"] {
- qproperty-icon: url(theme:Light/settings/general.svg);
-}
-
-* [themeID="menuIconSmall"] {
+.icon-dots-vert {
qproperty-icon: url(theme:Light/dots-vert.svg);
}
-* [themeID="refreshIconSmall"] {
+.icon-refresh {
qproperty-icon: url(theme:Light/refresh.svg);
}
-* [themeID="cogsIcon"] {
+.icon-cogs {
qproperty-icon: url(theme:Light/cogs.svg);
}
-#sourceInteractButton {
+.icon-touch {
qproperty-icon: url(theme:Light/interact.svg);
}
-* [themeID="upArrowIconSmall"] {
+.icon-up {
qproperty-icon: url(theme:Light/up.svg);
}
-* [themeID="downArrowIconSmall"] {
+.icon-down {
qproperty-icon: url(theme:Light/down.svg);
}
-* [themeID="pauseIconSmall"] {
- qproperty-icon: url(theme:Light/media-pause.svg);
+.icon-filter {
+ qproperty-icon: url(theme:Light/filter.svg);
}
-* [themeID="filtersIcon"] {
- qproperty-icon: url(theme:Light/filter.svg);
+.icon-revert {
+ qproperty-icon: url(theme:Light/revert.svg);
}
QToolBarExtension {
@@ -196,10 +196,6 @@ QCheckBox[visibilityCheckBox=true]::indicator:checked:hover {
image: url(theme:Light/visible.svg);
}
-* [themeID="revertIcon"] {
- qproperty-icon: url(theme:Light/revert.svg);
-}
-
MuteCheckBox::indicator:checked {
image: url(theme:Light/mute.svg);
}
@@ -262,32 +258,32 @@ OBSBasic {
qproperty-audioProcessOutputIcon: url(theme:Light/sources/windowaudio.svg);
}
-* [themeID="replayIconSmall"] {
+.icon-save {
qproperty-icon: url(theme:Light/save.svg);
}
/* Media icons */
-* [themeID="playIcon"] {
+.icon-media-play {
qproperty-icon: url(theme:Light/media/media_play.svg);
}
-* [themeID="pauseIcon"] {
+.icon-media-pause {
qproperty-icon: url(theme:Light/media/media_pause.svg);
}
-* [themeID="restartIcon"] {
+.icon-media-restart {
qproperty-icon: url(theme:Light/media/media_restart.svg);
}
-* [themeID="stopIcon"] {
+.icon-media-stop {
qproperty-icon: url(theme:Light/media/media_stop.svg);
}
-* [themeID="nextIcon"] {
+.icon-media-next {
qproperty-icon: url(theme:Light/media/media_next.svg);
}
-* [themeID="previousIcon"] {
+.icon-media-prev {
qproperty-icon: url(theme:Light/media/media_previous.svg);
}
diff --git a/UI/forms/AutoConfigVideoPage.ui b/UI/forms/AutoConfigVideoPage.ui
index b941cc8c7..a2539e9c8 100644
--- a/UI/forms/AutoConfigVideoPage.ui
+++ b/UI/forms/AutoConfigVideoPage.ui
@@ -74,6 +74,9 @@
true
+
+ text-warning
+
-
diff --git a/UI/forms/OBSAbout.ui b/UI/forms/OBSAbout.ui
index d7e1946cf..37ad2a278 100644
--- a/UI/forms/OBSAbout.ui
+++ b/UI/forms/OBSAbout.ui
@@ -87,6 +87,22 @@
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 20
+
+
+
+
-
@@ -97,6 +113,22 @@
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 20
+
+
+
+
-
diff --git a/UI/forms/OBSBasic.ui b/UI/forms/OBSBasic.ui
index 5c02445d7..b18da406a 100644
--- a/UI/forms/OBSBasic.ui
+++ b/UI/forms/OBSBasic.ui
@@ -198,8 +198,8 @@
Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter
-
- previewProgramLabels
+
+ label-preview-title
@@ -489,9 +489,6 @@
false
-
- contextBarButton
-
-
@@ -515,9 +512,6 @@
false
-
- contextBarButton
-
-
@@ -541,8 +535,8 @@
false
-
- contextBarButton
+
+ icon-touch
@@ -1420,8 +1414,8 @@
false
-
- addIconSmall
+
+ icon-plus
true
@@ -1452,8 +1446,8 @@
false
-
- removeIconSmall
+
+ icon-trash
true
@@ -1484,8 +1478,8 @@
false
-
- menuIconSmall
+
+ icon-dots-vert
true
@@ -1524,8 +1518,8 @@
Basic.Main.AddSceneDlg.Title
-
- addIconSmall
+
+ icon-plus
@@ -1539,8 +1533,8 @@
AddSource
-
- addIconSmall
+
+ icon-plus
@@ -1563,8 +1557,8 @@
false
-
- removeIconSmall
+
+ icon-trash
@@ -1587,8 +1581,8 @@
false
-
- removeIconSmall
+
+ icon-trash
@@ -1605,8 +1599,8 @@
SourceProperties
-
- propertiesIconSmall
+
+ icon-gear
@@ -1620,8 +1614,8 @@
MoveSceneUp
-
- upArrowIconSmall
+
+ icon-up
@@ -1638,8 +1632,8 @@
MoveSourceUp
-
- upArrowIconSmall
+
+ icon-up
@@ -1653,8 +1647,8 @@
MoveSceneDown
-
- downArrowIconSmall
+
+ icon-down
@@ -1671,8 +1665,8 @@
MoveSourceDown
-
- downArrowIconSmall
+
+ icon-down
@@ -2181,8 +2175,8 @@
Basic.AdvAudio
-
- cogsIcon
+
+ icon-cogs
@@ -2193,8 +2187,8 @@
MixerToolbarMenu
-
- menuIconSmall
+
+ icon-dots-vert
@@ -2208,8 +2202,8 @@
SceneFilters
-
- filtersIcon
+
+ icon-filter
diff --git a/UI/forms/OBSBasicControls.ui b/UI/forms/OBSBasicControls.ui
index 09ae9e500..ce1c929d5 100644
--- a/UI/forms/OBSBasicControls.ui
+++ b/UI/forms/OBSBasicControls.ui
@@ -164,8 +164,8 @@
true
-
- pauseIconSmall
+
+ icon-media-pause
@@ -234,8 +234,8 @@
:/res/images/save.svg:/res/images/save.svg
-
- replayIconSmall
+
+ icon-save
@@ -304,8 +304,8 @@
:/settings/images/settings/general.svg:/settings/images/settings/general.svg
-
- configIconSmall
+
+ icon-gear
diff --git a/UI/forms/OBSBasicFilters.ui b/UI/forms/OBSBasicFilters.ui
index 941eadcd2..bff738e15 100644
--- a/UI/forms/OBSBasicFilters.ui
+++ b/UI/forms/OBSBasicFilters.ui
@@ -125,8 +125,8 @@
true
-
- addIconSmall
+
+ icon-plus
true
@@ -157,8 +157,8 @@
true
-
- removeIconSmall
+
+ icon-trash
true
@@ -189,8 +189,8 @@
true
-
- upArrowIconSmall
+
+ icon-up
true
@@ -221,8 +221,8 @@
true
-
- downArrowIconSmall
+
+ icon-down
true
@@ -359,8 +359,8 @@
true
-
- addIconSmall
+
+ icon-plus
true
@@ -391,8 +391,8 @@
true
-
- removeIconSmall
+
+ icon-trash
true
@@ -423,8 +423,8 @@
true
-
- upArrowIconSmall
+
+ icon-up
true
@@ -455,8 +455,8 @@
true
-
- downArrowIconSmall
+
+ icon-down
true
diff --git a/UI/forms/OBSBasicSettings.ui b/UI/forms/OBSBasicSettings.ui
index 9a1c6cebf..267f4a3a4 100644
--- a/UI/forms/OBSBasicSettings.ui
+++ b/UI/forms/OBSBasicSettings.ui
@@ -1980,8 +1980,8 @@
-
-
- true
+
+ frame-notice
@@ -3991,12 +3991,12 @@
Basic.Settings.Output.Adv.FFmpeg.CustomModeWarning
-
- warning
-
true
+
+ text-warning
+
-
@@ -5420,8 +5420,8 @@
Basic.Settings.Output.ReplayBuffer.UnavailableCustomFFmpeg
-
- warning
+
+ text-warning
@@ -6049,8 +6049,8 @@
true
-
- error
+
+ text-danger
@@ -6062,8 +6062,8 @@
true
-
- warning
+
+ text-warning
@@ -6454,8 +6454,8 @@
true
-
- error
+
+ text-danger
@@ -6539,11 +6539,8 @@
false
-
- revertIcon
-
-
- true
+
+ btn-tool icon-revert
@@ -8435,8 +8432,8 @@
true
-
- error
+
+ text-danger
@@ -8448,8 +8445,8 @@
true
-
- error
+
+ text-danger
diff --git a/UI/forms/OBSBasicVCamConfig.ui b/UI/forms/OBSBasicVCamConfig.ui
index 3798f96b1..7c3ffdfd8 100644
--- a/UI/forms/OBSBasicVCamConfig.ui
+++ b/UI/forms/OBSBasicVCamConfig.ui
@@ -42,6 +42,9 @@
Basic.VCam.RestartWarning
+
+ text-warning
+
-
diff --git a/UI/forms/source-toolbar/browser-source-toolbar.ui b/UI/forms/source-toolbar/browser-source-toolbar.ui
index 3fa6e8b66..cc1b01ccb 100644
--- a/UI/forms/source-toolbar/browser-source-toolbar.ui
+++ b/UI/forms/source-toolbar/browser-source-toolbar.ui
@@ -56,11 +56,8 @@
true
-
- refreshIconSmall
-
-
- contextBarButton
+
+ icon-refresh
diff --git a/UI/forms/source-toolbar/media-controls.ui b/UI/forms/source-toolbar/media-controls.ui
index af38bf252..1a2a47f2b 100644
--- a/UI/forms/source-toolbar/media-controls.ui
+++ b/UI/forms/source-toolbar/media-controls.ui
@@ -74,9 +74,6 @@
true
-
- contextBarButton
-
-
@@ -115,9 +112,6 @@
true
-
- contextBarButton
-
-
@@ -156,9 +150,6 @@
true
-
- contextBarButton
-
-
@@ -197,9 +188,6 @@
true
-
- contextBarButton
-
-
diff --git a/UI/frontend-plugins/frontend-tools/forms/auto-scene-switcher.ui b/UI/frontend-plugins/frontend-tools/forms/auto-scene-switcher.ui
index 3ede35067..55f54277d 100644
--- a/UI/frontend-plugins/frontend-tools/forms/auto-scene-switcher.ui
+++ b/UI/frontend-plugins/frontend-tools/forms/auto-scene-switcher.ui
@@ -76,8 +76,8 @@
true
-
- addIconSmall
+
+ icon-plus
true
@@ -95,8 +95,8 @@
true
-
- removeIconSmall
+
+ icon-trash
true
diff --git a/UI/frontend-plugins/frontend-tools/forms/scripts.ui b/UI/frontend-plugins/frontend-tools/forms/scripts.ui
index e07844cfa..cb09d1f82 100644
--- a/UI/frontend-plugins/frontend-tools/forms/scripts.ui
+++ b/UI/frontend-plugins/frontend-tools/forms/scripts.ui
@@ -83,8 +83,8 @@
true
-
- addIconSmall
+
+ icon-plus
true
@@ -117,8 +117,8 @@
true
-
- removeIconSmall
+
+ icon-trash
true
@@ -151,8 +151,8 @@
true
-
- refreshIconSmall
+
+ icon-refresh
true
diff --git a/UI/hotkey-edit.cpp b/UI/hotkey-edit.cpp
index 63377b781..efc98bdd9 100644
--- a/UI/hotkey-edit.cpp
+++ b/UI/hotkey-edit.cpp
@@ -293,12 +293,12 @@ void OBSHotkeyWidget::AddEdit(obs_key_combination combo, int idx)
edit->setToolTip(toolTip);
auto revert = new QPushButton;
- revert->setProperty("themeID", "revertIcon");
+ revert->setProperty("class", "icon-revert");
revert->setToolTip(QTStr("Revert"));
revert->setEnabled(false);
auto clear = new QPushButton;
- clear->setProperty("themeID", "clearIconSmall");
+ clear->setProperty("class", "icon-clear");
clear->setToolTip(QTStr("Clear"));
clear->setEnabled(!obs_key_combination_is_empty(combo));
@@ -311,11 +311,11 @@ void OBSHotkeyWidget::AddEdit(obs_key_combination combo, int idx)
});
auto add = new QPushButton;
- add->setProperty("themeID", "addIconSmall");
+ add->setProperty("class", "icon-plus");
add->setToolTip(QTStr("Add"));
auto remove = new QPushButton;
- remove->setProperty("themeID", "removeIconSmall");
+ remove->setProperty("class", "icon-trash");
remove->setToolTip(QTStr("Remove"));
remove->setEnabled(removeButtons.size() > 0);
@@ -462,9 +462,9 @@ void OBSHotkeyLabel::highlightPair(bool highlight)
if (!pairPartner)
return;
- pairPartner->setProperty("hotkeyPairHover", highlight);
+ pairPartner->setProperty("class", highlight ? "text-bright" : "");
updateStyle(pairPartner);
- setProperty("hotkeyPairHover", highlight);
+ setProperty("class", highlight ? "text-bright" : "");
updateStyle(this);
}
diff --git a/UI/media-controls.cpp b/UI/media-controls.cpp
index 0353c01f2..194cfb62d 100644
--- a/UI/media-controls.cpp
+++ b/UI/media-controls.cpp
@@ -48,10 +48,10 @@ MediaControls::MediaControls(QWidget *parent)
ui(new Ui::MediaControls)
{
ui->setupUi(this);
- ui->playPauseButton->setProperty("themeID", "playIcon");
- ui->previousButton->setProperty("themeID", "previousIcon");
- ui->nextButton->setProperty("themeID", "nextIcon");
- ui->stopButton->setProperty("themeID", "stopIcon");
+ ui->playPauseButton->setProperty("class", "icon-media-play");
+ ui->previousButton->setProperty("class", "icon-media-prev");
+ ui->nextButton->setProperty("class", "icon-media-next");
+ ui->stopButton->setProperty("class", "icon-media-stop");
setFocusPolicy(Qt::StrongFocus);
connect(&mediaTimer, &QTimer::timeout, this,
@@ -213,7 +213,7 @@ void MediaControls::StopMediaTimer()
void MediaControls::SetPlayingState()
{
ui->slider->setEnabled(true);
- ui->playPauseButton->setProperty("themeID", "pauseIcon");
+ ui->playPauseButton->setProperty("class", "icon-media-pause");
ui->playPauseButton->style()->unpolish(ui->playPauseButton);
ui->playPauseButton->style()->polish(ui->playPauseButton);
ui->playPauseButton->setToolTip(
@@ -227,7 +227,7 @@ void MediaControls::SetPlayingState()
void MediaControls::SetPausedState()
{
- ui->playPauseButton->setProperty("themeID", "playIcon");
+ ui->playPauseButton->setProperty("class", "icon-media-play");
ui->playPauseButton->style()->unpolish(ui->playPauseButton);
ui->playPauseButton->style()->polish(ui->playPauseButton);
ui->playPauseButton->setToolTip(
@@ -238,7 +238,7 @@ void MediaControls::SetPausedState()
void MediaControls::SetRestartState()
{
- ui->playPauseButton->setProperty("themeID", "restartIcon");
+ ui->playPauseButton->setProperty("class", "icon-media-restart");
ui->playPauseButton->style()->unpolish(ui->playPauseButton);
ui->playPauseButton->style()->polish(ui->playPauseButton);
ui->playPauseButton->setToolTip(
diff --git a/UI/mute-checkbox.hpp b/UI/mute-checkbox.hpp
index a0c3c63f5..f4f53ac12 100644
--- a/UI/mute-checkbox.hpp
+++ b/UI/mute-checkbox.hpp
@@ -9,6 +9,7 @@ public:
MuteCheckBox(QWidget *parent = nullptr) : QCheckBox(parent)
{
setTristate(true);
+ setProperty("class", "indicator-mute");
}
protected:
diff --git a/UI/scene-tree.cpp b/UI/scene-tree.cpp
index a684d7ca1..6ace1c478 100644
--- a/UI/scene-tree.cpp
+++ b/UI/scene-tree.cpp
@@ -16,7 +16,7 @@ SceneTree::SceneTree(QWidget *parent_) : QListWidget(parent_)
void SceneTree::SetGridMode(bool grid)
{
- parent()->setProperty("gridMode", grid);
+ parent()->setProperty("class", grid ? "list-grid" : "");
gridMode = grid;
if (gridMode) {
diff --git a/UI/source-tree.cpp b/UI/source-tree.cpp
index 340d6e3b5..2cc70c1f6 100644
--- a/UI/source-tree.cpp
+++ b/UI/source-tree.cpp
@@ -77,23 +77,19 @@ SourceTreeItem::SourceTreeItem(SourceTree *tree_, OBSSceneItem sceneitem_)
iconLabel->setPixmap(pixmap);
iconLabel->setEnabled(sourceVisible);
iconLabel->setStyleSheet("background: none");
- iconLabel->setProperty("TH_Source_Icon", true);
+ iconLabel->setProperty("class", "source-icon");
}
vis = new QCheckBox();
- vis->setProperty("visibilityCheckBox", true);
- vis->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
+ vis->setProperty("class", "checkbox-icon indicator-visibility");
vis->setChecked(sourceVisible);
- vis->setStyleSheet("background: none");
vis->setAccessibleName(QTStr("Basic.Main.Sources.Visibility"));
vis->setAccessibleDescription(
QTStr("Basic.Main.Sources.VisibilityDescription").arg(name));
lock = new QCheckBox();
- lock->setProperty("lockCheckBox", true);
- lock->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
+ lock->setProperty("class", "checkbox-icon indicator-lock");
lock->setChecked(obs_sceneitem_locked(sceneitem));
- lock->setStyleSheet("background: none");
lock->setAccessibleName(QTStr("Basic.Main.Sources.Lock"));
lock->setAccessibleDescription(
QTStr("Basic.Main.Sources.LockDescription").arg(name));
@@ -557,11 +553,7 @@ void SourceTreeItem::Update(bool force)
} else if (type == Type::Group) {
expand = new QCheckBox();
- expand->setProperty("sourceTreeSubItem", true);
- expand->setSizePolicy(QSizePolicy::Maximum,
- QSizePolicy::Maximum);
- expand->setMaximumSize(10, 16);
- expand->setMinimumSize(10, 0);
+ expand->setProperty("class", "checkbox-icon indicator-expand");
#ifdef __APPLE__
expand->setAttribute(Qt::WA_LayoutUsesWidgetRect);
#endif
diff --git a/UI/visibility-item-widget.cpp b/UI/visibility-item-widget.cpp
index f229ce8cc..dcf4c57b1 100644
--- a/UI/visibility-item-widget.cpp
+++ b/UI/visibility-item-widget.cpp
@@ -19,7 +19,7 @@ VisibilityItemWidget::VisibilityItemWidget(obs_source_t *source_)
bool enabled = obs_source_enabled(source);
vis = new QCheckBox();
- vis->setProperty("visibilityCheckBox", true);
+ vis->setProperty("class", "checkbox-icon indicator-visibility");
vis->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
vis->setChecked(enabled);
@@ -32,7 +32,6 @@ VisibilityItemWidget::VisibilityItemWidget(obs_source_t *source_)
itemLayout->setContentsMargins(0, 0, 0, 0);
setLayout(itemLayout);
- setStyleSheet("background-color: rgba(255, 255, 255, 0);");
connect(vis, &QCheckBox::clicked, [this](bool visible) {
obs_source_set_enabled(source, visible);
diff --git a/UI/volume-control.cpp b/UI/volume-control.cpp
index 325b46514..66818e1ad 100644
--- a/UI/volume-control.cpp
+++ b/UI/volume-control.cpp
@@ -260,7 +260,7 @@ VolControl::VolControl(OBSSource source_, bool showConfig, bool vertical)
if (showConfig) {
config = new QPushButton(this);
- config->setProperty("themeID", "menuIconSmall");
+ config->setProperty("class", "icon-dots-vert");
config->setAutoDefault(false);
config->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
diff --git a/UI/window-basic-about.cpp b/UI/window-basic-about.cpp
index 9cd0d1d72..4616475f9 100644
--- a/UI/window-basic-about.cpp
+++ b/UI/window-basic-about.cpp
@@ -54,12 +54,12 @@ OBSAbout::OBSAbout(QWidget *parent) : QDialog(parent), ui(new Ui::OBSAbout)
ui->authors->setText("" + QTStr("About.Authors") + "");
ui->license->setText("" + QTStr("About.License") + "");
- ui->name->setProperty("themeID", "aboutName");
- ui->version->setProperty("themeID", "aboutVersion");
- ui->about->setProperty("themeID", "aboutHLayout");
- ui->authors->setProperty("themeID", "aboutHLayout");
- ui->license->setProperty("themeID", "aboutHLayout");
- ui->info->setProperty("themeID", "aboutInfo");
+ ui->name->setProperty("class", "text-heading");
+ ui->version->setProperty("class", "text-large");
+ ui->about->setProperty("class", "bg-base");
+ ui->authors->setProperty("class", "bg-base");
+ ui->license->setProperty("class", "bg-base");
+ ui->info->setProperty("class", "");
connect(ui->about, &ClickableLabel::clicked, this,
&OBSAbout::ShowAbout);
diff --git a/UI/window-basic-main-transitions.cpp b/UI/window-basic-main-transitions.cpp
index 6b96aba44..a814ba603 100644
--- a/UI/window-basic-main-transitions.cpp
+++ b/UI/window-basic-main-transitions.cpp
@@ -768,7 +768,7 @@ void OBSBasic::CreateProgramOptions()
layout->setSpacing(4);
QPushButton *configTransitions = new QPushButton();
- configTransitions->setProperty("themeID", "menuIconSmall");
+ configTransitions->setProperty("class", "icon-dots-vert");
QHBoxLayout *mainButtonLayout = new QHBoxLayout();
mainButtonLayout->setSpacing(2);
@@ -781,7 +781,7 @@ void OBSBasic::CreateProgramOptions()
quickTransitions->setSpacing(2);
QPushButton *addQuickTransition = new QPushButton();
- addQuickTransition->setProperty("themeID", "addIconSmall");
+ addQuickTransition->setProperty("class", "icon-plus");
QLabel *quickTransitionsLabel = new QLabel(QTStr("QuickTransitions"));
quickTransitionsLabel->setSizePolicy(QSizePolicy::Expanding,
@@ -797,7 +797,7 @@ void OBSBasic::CreateProgramOptions()
tBar->setMinimum(0);
tBar->setMaximum(T_BAR_PRECISION - 1);
- tBar->setProperty("themeID", "tBarSlider");
+ tBar->setProperty("class", "slider-tbar");
connect(tBar, &QSlider::valueChanged, this, &OBSBasic::TBarChanged);
connect(tBar, &QSlider::sliderReleased, this, &OBSBasic::TBarReleased);
@@ -1636,7 +1636,7 @@ void OBSBasic::SetPreviewProgramMode(bool enabled)
new QLabel(QTStr("StudioMode.ProgramSceneLabel"), this);
programLabel->setSizePolicy(QSizePolicy::Ignored,
QSizePolicy::Preferred);
- programLabel->setProperty("themeID", "previewProgramLabels");
+ programLabel->setProperty("class", "label-preview-title");
programWidget = new QWidget();
programLayout = new QVBoxLayout();
diff --git a/UI/window-basic-settings.cpp b/UI/window-basic-settings.cpp
index 846dd5df8..952709a4e 100644
--- a/UI/window-basic-settings.cpp
+++ b/UI/window-basic-settings.cpp
@@ -5266,8 +5266,9 @@ void OBSBasicSettings::AdvOutRecCheckWarnings()
if (!errorMsg.isEmpty() || !warningMsg.isEmpty()) {
advOutRecWarning = new QLabel(
errorMsg.isEmpty() ? warningMsg : errorMsg, this);
- advOutRecWarning->setObjectName(
- errorMsg.isEmpty() ? "warningLabel" : "errorLabel");
+ advOutRecWarning->setProperty("class", errorMsg.isEmpty()
+ ? "text-warning"
+ : "text-danger");
advOutRecWarning->setWordWrap(true);
ui->advOutRecInfoLayout->addWidget(advOutRecWarning);
@@ -5667,7 +5668,8 @@ void OBSBasicSettings::SimpleReplayBufferChanged()
QTStr(ESTIMATE_TOO_LARGE_STR)
.arg(QString::number(int(memMB)),
QString::number(int(memMaxMB))));
- ui->simpleRBEstimate->setObjectName("warningLabel");
+ ui->simpleRBEstimate->setProperty("class",
+ "text-warning");
}
} else {
ui->simpleRBEstimate->setText(QTStr(ESTIMATE_UNKNOWN_STR));
@@ -5769,7 +5771,7 @@ void OBSBasicSettings::AdvReplayBufferChanged()
QTStr(ESTIMATE_TOO_LARGE_STR)
.arg(QString::number(int(memMB)),
QString::number(int(memMaxMB))));
- ui->advRBEstimate->setObjectName("warningLabel");
+ ui->advRBEstimate->setProperty("class", "text-warning");
}
} else {
ui->advRBMegsMax->setVisible(true);
@@ -6001,7 +6003,7 @@ void OBSBasicSettings::SimpleRecordingEncoderChanged()
return;
simpleOutRecWarning = new QLabel(warning, this);
- simpleOutRecWarning->setObjectName("warningLabel");
+ simpleOutRecWarning->setProperty("class", "text-warning");
simpleOutRecWarning->setWordWrap(true);
ui->simpleOutInfoLayout->addWidget(simpleOutRecWarning);
}
diff --git a/UI/window-basic-stats.cpp b/UI/window-basic-stats.cpp
index ad391f891..3fed766b5 100644
--- a/UI/window-basic-stats.cpp
+++ b/UI/window-basic-stats.cpp
@@ -305,11 +305,11 @@ void OBSBasicStats::Update()
fps->setText(str);
if (curFPS < (obsFPS * 0.8))
- setThemeID(fps, "error");
+ setClasses(fps, "text-danger");
else if (curFPS < (obsFPS * 0.95))
- setThemeID(fps, "warning");
+ setClasses(fps, "text-warning");
else
- setThemeID(fps, "");
+ setClasses(fps, "");
/* ------------------ */
@@ -341,11 +341,11 @@ void OBSBasicStats::Update()
hddSpace->setText(str);
if (num_bytes < GBYTE)
- setThemeID(hddSpace, "error");
+ setClasses(hddSpace, "text-danger");
else if (num_bytes < (5 * GBYTE))
- setThemeID(hddSpace, "warning");
+ setClasses(hddSpace, "text-warning");
else
- setThemeID(hddSpace, "");
+ setClasses(hddSpace, "");
/* ------------------ */
@@ -365,11 +365,11 @@ void OBSBasicStats::Update()
(long double)ovi.fps_den * 1000.0l / (long double)ovi.fps_num;
if (num > fpsFrameTime)
- setThemeID(renderTime, "error");
+ setClasses(renderTime, "text-danger");
else if (num > fpsFrameTime * 0.75l)
- setThemeID(renderTime, "warning");
+ setClasses(renderTime, "text-warning");
else
- setThemeID(renderTime, "");
+ setClasses(renderTime, "");
/* ------------------ */
@@ -396,11 +396,11 @@ void OBSBasicStats::Update()
skippedFrames->setText(str);
if (num > 5.0l)
- setThemeID(skippedFrames, "error");
+ setClasses(skippedFrames, "text-danger");
else if (num > 1.0l)
- setThemeID(skippedFrames, "warning");
+ setClasses(skippedFrames, "text-warning");
else
- setThemeID(skippedFrames, "");
+ setClasses(skippedFrames, "");
/* ------------------ */
@@ -423,11 +423,11 @@ void OBSBasicStats::Update()
missedFrames->setText(str);
if (num > 5.0l)
- setThemeID(missedFrames, "error");
+ setClasses(missedFrames, "text-danger");
else if (num > 1.0l)
- setThemeID(missedFrames, "warning");
+ setClasses(missedFrames, "text-warning");
else
- setThemeID(missedFrames, "");
+ setClasses(missedFrames, "");
/* ------------------------------------------- */
/* recording/streaming stats */
@@ -521,7 +521,7 @@ void OBSBasicStats::OutputLabels::Update(obs_output_t *output, bool rec)
kbps = 0.0l;
QString str = QTStr("Basic.Stats.Status.Inactive");
- QString themeID;
+ QString styling;
bool active = output ? obs_output_active(output) : false;
if (rec) {
if (active)
@@ -534,16 +534,16 @@ void OBSBasicStats::OutputLabels::Update(obs_output_t *output, bool rec)
if (reconnecting) {
str = QTStr("Basic.Stats.Status.Reconnecting");
- themeID = "error";
+ styling = "text-danger";
} else {
str = QTStr("Basic.Stats.Status.Live");
- themeID = "good";
+ styling = "text-success";
}
}
}
status->setText(str);
- setThemeID(status, themeID);
+ setClasses(status, styling);
long double num = (long double)totalBytes / (1024.0l * 1024.0l);
const char *unit = "MiB";
@@ -584,11 +584,11 @@ void OBSBasicStats::OutputLabels::Update(obs_output_t *output, bool rec)
droppedFrames->setText(str);
if (num > 5.0l)
- setThemeID(droppedFrames, "error");
+ setClasses(droppedFrames, "text-danger");
else if (num > 1.0l)
- setThemeID(droppedFrames, "warning");
+ setClasses(droppedFrames, "text-warning");
else
- setThemeID(droppedFrames, "");
+ setClasses(droppedFrames, "");
}
lastBytesSent = bytesSent;
diff --git a/UI/window-extra-browsers.cpp b/UI/window-extra-browsers.cpp
index c5bd177e2..33171e644 100644
--- a/UI/window-extra-browsers.cpp
+++ b/UI/window-extra-browsers.cpp
@@ -135,7 +135,7 @@ void ExtraBrowsersModel::AddDeleteButton(int idx)
QModelIndex index = createIndex(idx, (int)Column::Delete, nullptr);
QPushButton *del = new DelButton(index);
- del->setProperty("themeID", "removeIconSmall");
+ del->setProperty("class", "icon-trash");
del->setObjectName("extraPanelDelete");
del->setMinimumSize(QSize(20, 20));
connect(del, &QPushButton::clicked, this,
diff --git a/UI/window-youtube-actions.cpp b/UI/window-youtube-actions.cpp
index 574881e6e..39b4d5483 100644
--- a/UI/window-youtube-actions.cpp
+++ b/UI/window-youtube-actions.cpp
@@ -262,14 +262,12 @@ OBSYoutubeActions::OBSYoutubeActions(QWidget *parent, Auth *auth,
QString(),
Qt::FindDirectChildrenOnly)) {
- i->setProperty(
- "isSelectedEvent",
- "false");
+ i->setProperty("class", "");
i->style()->unpolish(i);
i->style()->polish(i);
}
- label->setProperty("isSelectedEvent",
- "true");
+ label->setProperty("class",
+ "row-selected");
label->style()->unpolish(label);
label->style()->polish(label);
diff --git a/shared/properties-view/properties-view.cpp b/shared/properties-view/properties-view.cpp
index a94ee26e6..ba3af5f28 100644
--- a/shared/properties-view/properties-view.cpp
+++ b/shared/properties-view/properties-view.cpp
@@ -394,9 +394,9 @@ QWidget *OBSPropertiesView::AddText(obs_property_t *prop, QFormLayout *layout,
info_label->setWordWrap(obs_property_text_info_word_wrap(prop));
if (info_type == OBS_TEXT_INFO_WARNING)
- info_label->setObjectName("warningLabel");
+ info_label->setProperty("class", "text-warning");
else if (info_type == OBS_TEXT_INFO_ERROR)
- info_label->setObjectName("errorLabel");
+ info_label->setProperty("class", "text-danger");
if (label)
label->setObjectName(info_label->objectName());
@@ -431,7 +431,6 @@ void OBSPropertiesView::AddPath(obs_property_t *prop, QFormLayout *layout,
button->setEnabled(false);
}
- button->setProperty("themeID", "settingsButtons");
edit->setText(QT_UTF8(val));
edit->setReadOnly(true);
edit->setToolTip(QT_UTF8(obs_property_long_description(prop)));
@@ -742,7 +741,7 @@ static void NewButton(QLayout *layout, WidgetInfo *info, const char *themeIcon,
void (WidgetInfo::*method)())
{
QPushButton *button = new QPushButton();
- button->setProperty("themeID", themeIcon);
+ button->setProperty("class", themeIcon);
button->setFlat(true);
button->setProperty("toolButton", true);
@@ -790,15 +789,11 @@ void OBSPropertiesView::AddEditableList(obs_property_t *prop,
[info]() { info->EditableListChanged(); });
QVBoxLayout *sideLayout = new QVBoxLayout();
- NewButton(sideLayout, info, "addIconSmall", &WidgetInfo::EditListAdd);
- NewButton(sideLayout, info, "removeIconSmall",
- &WidgetInfo::EditListRemove);
- NewButton(sideLayout, info, "configIconSmall",
- &WidgetInfo::EditListEdit);
- NewButton(sideLayout, info, "upArrowIconSmall",
- &WidgetInfo::EditListUp);
- NewButton(sideLayout, info, "downArrowIconSmall",
- &WidgetInfo::EditListDown);
+ NewButton(sideLayout, info, "icon-plus", &WidgetInfo::EditListAdd);
+ NewButton(sideLayout, info, "icon-trash", &WidgetInfo::EditListRemove);
+ NewButton(sideLayout, info, "icon-gear", &WidgetInfo::EditListEdit);
+ NewButton(sideLayout, info, "icon-up", &WidgetInfo::EditListUp);
+ NewButton(sideLayout, info, "icon-down", &WidgetInfo::EditListDown);
sideLayout->addStretch(0);
QHBoxLayout *subLayout = new QHBoxLayout();
@@ -816,7 +811,6 @@ QWidget *OBSPropertiesView::AddButton(obs_property_t *prop)
const char *desc = obs_property_description(prop);
QPushButton *button = new QPushButton(QT_UTF8(desc));
- button->setProperty("themeID", "settingsButtons");
button->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
return NewWidget(prop, button, &QPushButton::clicked);
}
@@ -837,7 +831,6 @@ void OBSPropertiesView::AddColorInternal(obs_property_t *prop,
colorLabel->setEnabled(false);
}
- button->setProperty("themeID", "settingsButtons");
button->setText(tr("Basic.PropertiesWindow.SelectColor"));
button->setToolTip(QT_UTF8(obs_property_long_description(prop)));
@@ -939,7 +932,6 @@ void OBSPropertiesView::AddFont(obs_property_t *prop, QFormLayout *layout,
font = fontLabel->font();
MakeQFont(font_obj, font, true);
- button->setProperty("themeID", "settingsButtons");
button->setText(tr("Basic.PropertiesWindow.SelectFont"));
button->setToolTip(QT_UTF8(obs_property_long_description(prop)));
@@ -1413,7 +1405,7 @@ static void UpdateFPSLabels(OBSFrameRatePropertyWidget *w)
w->currentFPS->setHidden(true);
w->timePerFrame->setHidden(true);
if (!option)
- w->warningLabel->setObjectName("errorLabel");
+ w->warningLabel->setProperty("class", "text-danger");
return;
}
@@ -1423,9 +1415,9 @@ static void UpdateFPSLabels(OBSFrameRatePropertyWidget *w)
media_frames_per_second match{};
if (!option && !matches_ranges(match, *valid_fps, w->fps_ranges, true))
- w->warningLabel->setObjectName("errorLabel");
+ w->warningLabel->setProperty("class", "text-danger");
else
- w->warningLabel->setObjectName("");
+ w->warningLabel->setProperty("class", "");
auto convert_to_fps = media_frames_per_second_to_fps;
auto convert_to_frame_interval =
@@ -2235,7 +2227,6 @@ public:
if (browse) {
QPushButton *browseButton =
new QPushButton(tr("Browse"));
- browseButton->setProperty("themeID", "settingsButtons");
topLayout->addWidget(browseButton);
topLayout->setAlignment(browseButton, Qt::AlignVCenter);
diff --git a/shared/qt/icon-label/icon-label.hpp b/shared/qt/icon-label/icon-label.hpp
index 582a7c250..856d34a52 100644
--- a/shared/qt/icon-label/icon-label.hpp
+++ b/shared/qt/icon-label/icon-label.hpp
@@ -22,10 +22,9 @@
/**
* Widget to be used if a label is to be supplied a QIcon instead of a QPixmap,
- * specifically so that qproperty-icon QSS styling (and as a result the OBS
- * "themeID" property) works on it without having to first convert the icon to
- * a fixed size PNG and then setting qproperty-pixmap in addition to the
- * qproperty-icon statements.
+ * specifically so that qproperty-icon QSS styling works on it without having to
+ * first convert the icon to a fixed size PNG and then setting qproperty-pixmap
+ * in addition to the qproperty-icon statements.
*/
class IconLabel : public QLabel {
Q_OBJECT
diff --git a/shared/qt/wrappers/qt-wrappers.cpp b/shared/qt/wrappers/qt-wrappers.cpp
index 71b73ef85..a183c6a61 100644
--- a/shared/qt/wrappers/qt-wrappers.cpp
+++ b/shared/qt/wrappers/qt-wrappers.cpp
@@ -317,10 +317,10 @@ void SetComboItemEnabled(QComboBox *c, int idx, bool enabled)
: Qt::NoItemFlags);
}
-void setThemeID(QWidget *widget, const QString &themeID)
+void setClasses(QWidget *widget, const QString &newClasses)
{
- if (widget->property("themeID").toString() != themeID) {
- widget->setProperty("themeID", themeID);
+ if (widget->property("class").toString() != newClasses) {
+ widget->setProperty("class", newClasses);
/* force style sheet recalculation */
QString qss = widget->styleSheet();
diff --git a/shared/qt/wrappers/qt-wrappers.hpp b/shared/qt/wrappers/qt-wrappers.hpp
index b3223abb9..536711f7b 100644
--- a/shared/qt/wrappers/qt-wrappers.hpp
+++ b/shared/qt/wrappers/qt-wrappers.hpp
@@ -98,7 +98,7 @@ bool LineEditChanged(QEvent *event);
void SetComboItemEnabled(QComboBox *c, int idx, bool enabled);
-void setThemeID(QWidget *widget, const QString &themeID);
+void setClasses(QWidget *widget, const QString &newClasses);
QString SelectDirectory(QWidget *parent, QString title, QString path);
QString SaveFile(QWidget *parent, QString title, QString path,