From a62f079541bfbdeaa2c3e233caad212a7bfcc50f Mon Sep 17 00:00:00 2001 From: Socapex Date: Mon, 16 Feb 2015 10:01:56 -0500 Subject: [PATCH] UI: Add dark theme Links up certain controls via a "themeID" property so the icons can by dynamically changed via the qss file if needed. --- obs/data/themes/Dark.qss | 457 ++++++++++++++++++++++++++++ obs/data/themes/Dark/cogwheel.png | Bin 0 -> 3042 bytes obs/data/themes/Dark/down_arrow.png | Bin 0 -> 2341 bytes obs/data/themes/Dark/minus.png | Bin 0 -> 992 bytes obs/data/themes/Dark/plus.png | Bin 0 -> 1002 bytes obs/data/themes/Dark/up_arrow.png | Bin 0 -> 2305 bytes obs/data/themes/Dark/updown.png | Bin 0 -> 3463 bytes obs/data/themes/Default.qss | 46 +++ obs/forms/OBSBasic.ui | 33 ++ 9 files changed, 536 insertions(+) create mode 100644 obs/data/themes/Dark.qss create mode 100644 obs/data/themes/Dark/cogwheel.png create mode 100644 obs/data/themes/Dark/down_arrow.png create mode 100644 obs/data/themes/Dark/minus.png create mode 100644 obs/data/themes/Dark/plus.png create mode 100644 obs/data/themes/Dark/up_arrow.png create mode 100644 obs/data/themes/Dark/updown.png create mode 100644 obs/data/themes/Default.qss diff --git a/obs/data/themes/Dark.qss b/obs/data/themes/Dark.qss new file mode 100644 index 000000000..447753df3 --- /dev/null +++ b/obs/data/themes/Dark.qss @@ -0,0 +1,457 @@ +/******************************************************************************/ +/* Copyright (C) 2014-2015 by Philippe Groarke */ +/* */ +/* */ +/* This program is free software: you can redistribute it and/or modify */ +/* it under the terms of the GNU General Public License as published by */ +/* the Free Software Foundation, either version 2 of the License, or */ +/* (at your option) any later version. */ +/* */ +/* This program is distributed in the hope that it will be useful, */ +/* but WITHOUT ANY WARRANTY; without even the implied warranty of */ +/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */ +/* GNU General Public License for more details. */ +/* */ +/* You should have received a copy of the GNU General Public License */ +/* along with this program. If not, see . */ +/******************************************************************************/ + +/* Colors */ + +/* rgb(225,224,225); /* veryLight */ +/* rgb(200,199,200); /* lighter */ +/* rgb(122,121,122); /* light */ +/* rgb(88,87,88); /* kindaDark */ +/* rgb(58,57,58); /* dark */ +/* rgb(31,30,31); /* veryDark */ +/* rgb(11,10,11); /* veryVeryDark */ +/* rgb(42,130,218); /* blue */ + + +/* General style, we override only what is needed. */ +QWidget { + background-color: rgb(58,57,58); /* dark */ + alternate-background-color: rgb(31,30,31); /* veryDark */ + color: rgb(225,224,225); /* veryLight */ + selection-background-color: rgb(42,130,218); /* blue */ + selection-color: black; +} + + +/* Misc */ + +QWidget::disabled { + color: 2px solid rgb(200,199,200); /* lighter */ +} + +QAbstractItemView { + background-color: rgb(31,30,31); /* veryDark */ +} + +QToolTip { + background-color: rgb(31,30,31); /* veryDark */ + color: rgb(205,205,205); +} + +QMenuBar::item { + background-color: rgb(58,57,58); /* dark */ +} + + +/* Group Box */ + +QGroupBox { + border: 1px solid rgb(31,30,31); /* veryDark */; + border-radius: 5px; + padding-top: 16px; +} + + +/* ScrollBars */ + +::corner { + background-color: rgb(58,57,58); /* dark */ + border: none; +} + +QScrollBar:vertical { + background-color: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 0, + stop: 0 rgb(31,30,31), /* veryDark */ + stop: 0.75 rgb(54, 53, 54), + stop: 1 rgb(58,57,58)); /* dark */ + width: 14px; +} + +QScrollBar::handle:vertical { + background-color: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 0, + stop: 0 rgb(122,121,122), /* light */ + stop: 0.25 rgb(100, 99, 100), + stop: 1 rgb(88,87,88)); /* kindaDark */ + min-height: 20px; + margin: 2px; + border-radius: 5px; + border-width: 1px; + border: 1px solid rgb(31,30,31); /* veryDark */ +} + +QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical { + border: none; + background: none; +} + +QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical, QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { + border: none; + background: none; + color: none; +} + +QScrollBar:horizontal { + background-color: QLinearGradient(x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 rgb(31,30,31), /* veryDark */ + stop: 0.75 rgb(54, 53, 54), + stop: 1 rgb(58,57,58)); /* dark */ + height: 14px; +} + +QScrollBar::handle:horizontal { + background-color: QLinearGradient(x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 rgb(122,121,122), /* light */ + stop: 0.25 rgb(100, 99, 100), + stop: 1 rgb(88,87,88)); /* kindaDark */ + min-width: 20px; + margin: 2px; + border-radius: 5px; + border-width: 1px; + border: 1px solid rgb(31,30,31); /* veryDark */ +} + +QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal { + border: none; + background: none; +} + +QScrollBar::left-arrow:horizontal, QScrollBar::right-arrow:horizontal, QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal { + border: none; + background: none; + color: none; +} + + +/* Scenes and Sources toolbar */ + +QToolBar { + background-color: rgb(58,57,58); /* dark */ + border: none; +} + +QToolButton:hover { + background-color: rgb(122,121,122); /* light */ + border-radius: none; +} + +QToolButton:pressed { + background-color: rgb(31,30,31); /* veryDark */ + border-radius: none; +} + +* [themeID="addIconSmall"] { + qproperty-icon: url(./Dark/plus.png); +} + +* [themeID="removeIconSmall"] { + qproperty-icon: url(./Dark/minus.png); +} + +* [themeID="propertiesIconSmall"] { + qproperty-icon: url(./Dark/cogwheel.png); +} + +* [themeID="configIconSmall"] { + qproperty-icon: url(./Dark/cogwheel.png); +} + +* [themeID="upArrowIconSmall"] { + qproperty-icon: url(./Dark/up_arrow.png); +} + +* [themeID="downArrowIconSmall"] { + qproperty-icon: url(./Dark/down_arrow.png); +} + + +/* Tab Widget */ + +QTabWidget::pane { /* The tab widget frame */ + border-top: 1px solid rgb(31,30,31); /* veryDark */ +} + +QTabWidget::tab-bar { + alignment: center; +} + +QTabBar::tab { + background-color: rgb(88,87,88); /* kindaDark */ + border: none; + border-top-left-radius: 5px; + border-top-right-radius: 5px; + min-width: 8ex; + padding-top: 4px; + padding-bottom: 4px; + padding-left: 10px; + padding-right: 10px; + margin-right: 1px; +} + +QTabBar::tab:selected { + background-color: rgb(31,30,31); /* veryDark */ +} + +QTabBar::tab:hover { + background-color: rgb(122,121,122); /* light */ +} + +QTabBar::tab:pressed { + background-color: rgb(31,30,31); /* veryDark */ +} + + +/* ComboBox */ + +QComboBox { + background-color: QLinearGradient(x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 rgb(86,85,86), + stop: 0.1 rgb(82,81,82), + stop: 0.5 rgb(78,77,78), + stop: 0.9 rgb(74,73,74), + stop: 1 rgb(70,69,70)); + border-style: solid; + border: 1px; + border-radius: 3px; + border-color: rgb(31,30,31); /* veryDark */ + padding: 2px; + padding-left: 10px; +} + +QComboBox::drop-down { + border:none; + border-left: 1px solid rgba(31,30,31,155); /* veryDark */ + width: 20px; +} + +QComboBox::down-arrow { + qproperty-alignment: AlignTop; + image: url(./Dark/updown.png); + width: 100%; +} + +QComboBox:on { + background-color: rgb(31,30,31); /* veryDark */ +} + +QComboBox:editable { + border-top-left-radius: 0px; + border-bottom-left-radius: 0px; +} + +QComboBox::drop-down:editable { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} + +QComboBox::down-arrow:editable { + qproperty-alignment: AlignTop; + image: url(./Dark/down_arrow.png); + width: 8%; +} + + +/* Textedits etc */ + +QLineEdit, QTextEdit, QPlainTextEdit { + background-color: rgb(31,30,31); /* veryDark */ + border: none; + padding-left: 2px; +} + + +/* Spinbox and doubleSpinbox */ + +QSpinBox, QDoubleSpinBox { + background-color: rgb(31,30,31); /* veryDark */ + border: none; + padding-left: 2px; + padding-right: 15px; + margin-right: 10px; +} + +QSpinBox::up-button, QDoubleSpinBox::up-button { + subcontrol-origin: margin; + subcontrol-position: top right; /* position at the top right corner */ + + background-color: rgb(88,87,88); /* kindaDark */ + border: 1px solid rgb(31,30,31); /* veryDark */ + border-radius: 3px; + border-width: 0; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + border-bottom-width: 0; +} + +QSpinBox::down-button, QDoubleSpinBox::down-button { + subcontrol-origin: margin; + subcontrol-position: bottom right; /* position at the top right corner */ + background-color: rgb(88,87,88); /* kindaDark */ + border: 1px solid rgb(31,30,31); /* veryDark */ + border-radius: 3px; + border-width: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; + border-top-width: 0; +} + +QSpinBox::up-button:hover, QSpinBox::down-button:hover, QDoubleSpinBox::up-button:hover, QDoubleSpinBox::down-button:hover { + background-color: rgb(122,121,122); /* light */ +} + +QSpinBox::up-button:pressed, QSpinBox::down-button:pressed, QDoubleSpinBox::up-button:pressed, QDoubleSpinBox::down-button:pressed { + background-color: rgb(58,57,58); /* dark */ +} + +QSpinBox::up-button:disabled, QSpinBox::up-button:off, QSpinBox::down-button:disabled, QSpinBox::down-button:off { + background-color: rgb(58,57,58); /* dark */ +} + +QDoubleSpinBox::up-button:disabled, QDoubleSpinBox::up-button:off, QDoubleSpinBox::down-button:disabled, QDoubleSpinBox::down-button:off { + background-color: rgb(58,57,58); /* dark */ +} + +QSpinBox::up-arrow, QDoubleSpinBox::up-arrow { + image: url(./Dark/up_arrow.png); + width: 100%; +} + +QSpinBox::down-arrow, QDoubleSpinBox::down-arrow { + image: url(./Dark/down_arrow.png); + width: 100%; +} + + +/* Buttons */ + +QPushButton { + color: rgb(225,224,225); /* veryLight */ + background-color: rgb(88,87,88); /* kindaDark */ + border: none; + border-radius: 3px; + padding: 4px; + padding-left: 20px; + padding-right: 20px; +} + +QPushButton::flat { + background-color: rgb(58,57,58); /* dark */ +} + +QPushButton:hover { + background-color: rgb(122,121,122); /* light */ +} + +QPushButton:pressed { + background-color: rgb(31,30,31); /* veryDark */ +} + + +/* Sliders */ + +QSlider::groove:horizontal { + background-color: QLinearGradient(x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 rgb(31,30,31), /* veryDark */ + stop: 0.75 rgb(50, 49, 50)); + height: 4px; + border: none; + border-radius: 2px; +} + +QSlider::handle:horizontal { + background-color: QLinearGradient(x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 rgb(240,239,240), /* lighter */ + stop: 0.25 rgb(200,199,200), + stop: 1 rgb(162,161,162)); /* light */ + border: 1px solid rgb(58,57,58); /* dark */ + border-radius: 3px; + height: 10px; + width: 18px; + margin: -3px 0; /* handle is placed by default on the contents rect of the groove. Expand outside the groove */ +} + +QSlider::handle:horizontal:pressed { + background-color: QLinearGradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 rgb(240,239,240), /* lighter */ + stop: 0.25 rgb(200,199,200), + stop: 1 rgb(162,161,162)); /* light */ +} + +QSlider::sub-page:horizontal:disabled { + background-color: QLinearGradient(x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 rgb(31,30,31), /* veryDark */ + stop: 0.75 rgb(50, 49, 50)); + border-radius: 2px; +} + +QSlider::groove:vertical { + background-color: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 0, + stop: 0 rgb(31,30,31), /* veryDark */ + stop: 0.75 rgb(50, 49, 50)); + width: 4px; + border: none; + border-radius: 2px; +} + +QSlider::handle:vertical { + background-color: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 0, + stop: 0 rgb(240,239,240), /* lighter */ + stop: 0.25 rgb(200,199,200), + stop: 1 rgb(162,161,162)); /* light */ + border: 1px solid rgb(58,57,58); /* dark */ + border-radius: 4px; + width: 10px; + height: 18px; + margin: -3px 0; /* handle is placed by default on the contents rect of the groove. Expand outside the groove */ +} + +QSlider::handle:vertical:pressed { + background-color: QLinearGradient(x1: 1, y1: 0, x2: 0, y2: 0, + stop: 0 rgb(240,239,240), /* lighter */ + stop: 0.25 rgb(200,199,200), + stop: 1 rgb(162,161,162)); /* light */ +} + +QSlider::sub-page:vertical:disabled { + background-color: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 0, + stop: 0 rgb(31,30,31), /* veryDark */ + stop: 0.75 rgb(50, 49, 50)); + border-radius: 2px; +} + +QSlider::handle:hover { + background-color: rgb(200,199,200); /* veryLight */ +} + +QSlider::sub-page { + background-color: rgb(42,130,218); /* blue */ + border-radius: 2px; +} + +QSlider::handle:disabled { + background-color: rgb(122,121,122); /* light */ +} + + +/* Volume Control */ + +VolumeMeter { + qproperty-bkColor: rgb(31,30,31); /* veryDark */ + qproperty-magColor:; + qproperty-peakColor:; + qproperty-peakHoldColor: rgb(225,224,225); /* veryLight */ +} diff --git a/obs/data/themes/Dark/cogwheel.png b/obs/data/themes/Dark/cogwheel.png new file mode 100644 index 0000000000000000000000000000000000000000..84d92348052f565c5013bbf7d7a36d190c8e5a76 GIT binary patch literal 3042 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 literal 0 HcmV?d00001 diff --git a/obs/data/themes/Dark/minus.png b/obs/data/themes/Dark/minus.png new file mode 100644 index 0000000000000000000000000000000000000000..68c0ac54ec3cc646a09e0aed4be41fa2f2465dac GIT binary patch literal 992 zcmaJ=J#5oJ6u!0;RTX6hrjv`rkBIGaW4EztN)jh+P#py)h>UgZYh$(c8T(4yiUl?{ z1{Ne35E}#PfYbqrA~7+r024a{QYFNI#8#fuCS_HgB>O-gRP%iXL00xE468)TWNNdG{loMQG%r-)i%= zwWzx+5S=VWOoIr}2+hu=k>jpWj+g1G9~#2Xx4Q!NJwv#oTCx?DX~$pKifMDJ-g39r z+=3^}UB|Pj4g>+^4o-vhFws*(=<(`cXKqQry%4@;2nV9tRs)w=OtC6XIYiZ|3iad5S?(F9_c-nIB9K0RI+KpHewepZe=n{73t-eI-JEV#@73%*yu3Mk`9Y- zxvAmHmgD+i=D5;BSe9N36YhjAt(k@Z9HQ@gdR{4!X_c6zBGCw`rj$}u13vY5EeBZd zWG&?rwMZaF%C7dGtM0p?e=>8>xUd+sJ`JJYV`%JmU+3SzPjR}j*sARJ#_jvR*TFN) z?Rs+`eczF9!b+)`#a8-l@AHcxgvLH>|JwhO?mhl7bnDZTQP@W4{iuEF&+xOco_%S1 Y_zZe=_3YD^yXQ#esa5Lc>(bK0ze!>>jQ{`u literal 0 HcmV?d00001 diff --git a/obs/data/themes/Dark/plus.png b/obs/data/themes/Dark/plus.png new file mode 100644 index 0000000000000000000000000000000000000000..547cfa94841c1a4f66bbfe2b89751ceb1fcf80ee GIT binary patch literal 1002 zcmaJ=J#5oJ6gEVvP(=nL1}MwPWdPCGJ~we2E2boILWAlkN?bJ(Le#adjn&#`>}%tM z4lQEo%FciUD?bua2L@ndLzNH`6AKHf=)_#^(j;Xdob0=IPv7^wclX}y)vC9X;}hc? z$0aNCdY!Jf*nciT=coI-hjh72N=?$htE6p(h|4>81%ZlZt)V)yoX&$!D93S$tFGB3 zO=Cf|u_sszBg9@n*&LUfiv!DEM+B^(HP_epqj&Fl;5r(=lrbbDD591--wjctTQ%+O zx}A0Sxtkytt5m>4!~(Im;YVt$@jYFY+RQETpa&uA8h?^h)2M+W4iU%*(RNJ-D!M_kU$m1cDpUKrv)6Yi7=bZ zG7VWyQA8^0_{54+el$5y&{1TEZa`e@1Ey%L;7y|OG}DtKc)?KCkNVd{FHDTBK!k$C zjx+!o#{Z$7H$+FIj!yIar*LF;0wmT^gf~N*7H)Ntg$mSSh%ACb6XT7+E!J9?;HZTI zP;4mRnqk?l&m7l#48u?>enc$aMipJ-sfOUXj+&MWa3&+eLLMp*meP4B%jMbG8AZ{v zQbx`WxH`5sJ>-)C*E!|NBe|>@ynsg5QRr?VryODr^bW1MBXfb}k$QcuGddS(Bv+)# zh^(}Km3rW!{lm;*Hr^^s5eJ*18O_Qlo>`Y6U~3ufuKHx{>lZ&1%!Qm;0SxgYz| z9rkD{dftq`9e(|ojElU#6CJO^V{U?Xl+#) cu5)yE=L~oMb8_)u;^8mmtdy$y%fj-bKmKPqa{vGU literal 0 HcmV?d00001 diff --git a/obs/data/themes/Dark/up_arrow.png b/obs/data/themes/Dark/up_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..36ff91508e73aa964282722abe05bf0ef6960703 GIT binary patch literal 2305 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 literal 0 HcmV?d00001 diff --git a/obs/data/themes/Default.qss b/obs/data/themes/Default.qss new file mode 100644 index 000000000..b5e04ca81 --- /dev/null +++ b/obs/data/themes/Default.qss @@ -0,0 +1,46 @@ +/* Intentionnally left blank */ +/* Themes are created using Qt CSS, you can visit */ +/* http://doc.qt.io/qt-5/stylesheet-reference.html and */ +/* http://doc.qt.io/qt-5/stylesheet-examples.html for examples. */ + +/* OBS will use the theme filename for the settings. */ +/* You can ship images using relative paths in qss. */ +/* Dark Theme is a good place to start if you need */ +/* a template. */ + + +/* We need to set back the icons, or the preview wont stick. */ + +* [themeID="addIconSmall"] { + qproperty-icon: url(:/res/images/add.png); +} + +* [themeID="removeIconSmall"] { + qproperty-icon: url(:/res/images/list_remove.png); +} + +* [themeID="propertiesIconSmall"] { + qproperty-icon: url(:/res/images/properties.png); +} + +* [themeID="configIconSmall"] { + qproperty-icon: url(:/res/images/configuration21_16.png); +} + +* [themeID="upArrowIconSmall"] { + qproperty-icon: url(:/res/images/up.png); +} + +* [themeID="downArrowIconSmall"] { + qproperty-icon: url(:/res/images/down.png); +} + + +/* Volume Control */ + +VolumeMeter { + qproperty-bkColor: rgb(221, 221, 221); + qproperty-magColor: rgb(32, 125, 23); + qproperty-peakColor: rgb(62, 241, 43); + qproperty-peakHoldColor: rgb(0, 0, 0); +} diff --git a/obs/forms/OBSBasic.ui b/obs/forms/OBSBasic.ui index 8e22f7a7d..02dfb3b8e 100644 --- a/obs/forms/OBSBasic.ui +++ b/obs/forms/OBSBasic.ui @@ -220,6 +220,9 @@ true + + configIconSmall + @@ -594,6 +597,9 @@ Add + + addIconSmall + @@ -603,6 +609,9 @@ Add + + addIconSmall + @@ -618,6 +627,9 @@ Qt::WidgetWithChildrenShortcut + + removeIconSmall + @@ -633,6 +645,9 @@ Qt::WidgetWithChildrenShortcut + + removeIconSmall + @@ -645,6 +660,9 @@ Properties + + propertiesIconSmall + @@ -657,6 +675,9 @@ Properties + + propertiesIconSmall + @@ -669,6 +690,9 @@ Basic.Main.MoveUp + + upArrowIconSmall + @@ -681,6 +705,9 @@ MoveUp + + upArrowIconSmall + @@ -693,6 +720,9 @@ Basic.Main.MoveDown + + downArrowIconSmall + @@ -705,6 +735,9 @@ MoveDown + + downArrowIconSmall +