From 8b8db11d9fa4d9c43f62eab6acaf98be4ead691b Mon Sep 17 00:00:00 2001 From: Pablo Gil Date: Fri, 4 Mar 2016 18:11:43 +0100 Subject: [PATCH] + Dark and Light stylesheets with 3 color variations each (from version 2.01, more info: http://forum.freecadweb.org/viewtopic.php?f=9&t=14518) --- src/Gui/Stylesheets/Dark - blue.qss | 1902 +++++++++++++++++ src/Gui/Stylesheets/Dark - green.qss | 1902 +++++++++++++++++ src/Gui/Stylesheets/Dark - orange.qss | 1902 +++++++++++++++++ src/Gui/Stylesheets/Light - blue.qss | 1900 ++++++++++++++++ src/Gui/Stylesheets/Light - green.qss | 1900 ++++++++++++++++ src/Gui/Stylesheets/Light - orange.qss | 1900 ++++++++++++++++ .../Stylesheets/images/Hmovetoolbar_dark.png | Bin 0 -> 181 bytes .../Stylesheets/images/Hmovetoolbar_light.png | Bin 0 -> 184 bytes .../Stylesheets/images/Hsepartoolbar_dark.png | Bin 0 -> 159 bytes .../images/Hsepartoolbar_light.png | Bin 0 -> 162 bytes .../Stylesheets/images/Vmovetoolbar_dark.png | Bin 0 -> 181 bytes .../Stylesheets/images/Vmovetoolbar_light.png | Bin 0 -> 180 bytes .../Stylesheets/images/Vsepartoolbar_dark.png | Bin 0 -> 152 bytes .../images/Vsepartoolbar_light.png | Bin 0 -> 159 bytes .../Stylesheets/images/background_freecad.png | Bin 0 -> 8356 bytes .../Stylesheets/images/branch_closed_dark.png | Bin 0 -> 154 bytes .../images/branch_closed_darker.png | Bin 0 -> 153 bytes src/Gui/Stylesheets/images/branch_end.png | Bin 0 -> 180 bytes src/Gui/Stylesheets/images/branch_more.png | Bin 0 -> 178 bytes .../Stylesheets/images/branch_open_dark.png | Bin 0 -> 159 bytes .../Stylesheets/images/branch_open_darker.png | Bin 0 -> 159 bytes src/Gui/Stylesheets/images/branch_vline.png | Bin 0 -> 170 bytes .../images/checkbox_indeterminate_light.png | Bin 0 -> 381 bytes src/Gui/Stylesheets/images/checkbox_light.png | Bin 0 -> 1021 bytes src/Gui/Stylesheets/images/close_dark.png | Bin 0 -> 255 bytes src/Gui/Stylesheets/images/close_light.png | Bin 0 -> 254 bytes .../Stylesheets/images/down_arrow_dark.png | Bin 0 -> 3427 bytes .../Stylesheets/images/down_arrow_darker.png | Bin 0 -> 3427 bytes .../images/down_arrow_disabled_dark.png | Bin 0 -> 142 bytes .../images/down_arrow_disabled_light.png | Bin 0 -> 144 bytes .../Stylesheets/images/down_arrow_light.png | Bin 0 -> 5449 bytes .../Stylesheets/images/down_arrow_lighter.png | Bin 0 -> 5450 bytes .../Stylesheets/images/left_arrow_dark.png | Bin 0 -> 3432 bytes .../Stylesheets/images/left_arrow_darker.png | Bin 0 -> 3430 bytes .../images/left_arrow_disabled_dark.png | Bin 0 -> 132 bytes .../images/left_arrow_disabled_light.png | Bin 0 -> 133 bytes .../Stylesheets/images/left_arrow_light.png | Bin 0 -> 5484 bytes .../Stylesheets/images/left_arrow_lighter.png | Bin 0 -> 5484 bytes src/Gui/Stylesheets/images/more_dark.png | Bin 0 -> 188 bytes src/Gui/Stylesheets/images/more_light.png | Bin 0 -> 194 bytes .../Stylesheets/images/radiobutton_light.png | Bin 0 -> 383 bytes .../Stylesheets/images/right_arrow_dark.png | Bin 0 -> 3430 bytes .../Stylesheets/images/right_arrow_darker.png | Bin 0 -> 3428 bytes .../images/right_arrow_disabled_dark.png | Bin 0 -> 133 bytes .../images/right_arrow_disabled_light.png | Bin 0 -> 134 bytes .../Stylesheets/images/right_arrow_light.png | Bin 0 -> 5454 bytes .../images/right_arrow_lighter.png | Bin 0 -> 5456 bytes .../Stylesheets/images/separtoolbar_dark.png | Bin 0 -> 169 bytes .../Stylesheets/images/separtoolbar_light.png | Bin 0 -> 169 bytes src/Gui/Stylesheets/images/sizegrip_dark.png | Bin 0 -> 182 bytes src/Gui/Stylesheets/images/sizegrip_light.png | Bin 0 -> 182 bytes .../images/splitter_horizontal_dark.png | Bin 0 -> 187 bytes .../images/splitter_horizontal_light.png | Bin 0 -> 189 bytes .../images/splitter_vertical_dark.png | Bin 0 -> 196 bytes .../images/splitter_vertical_light.png | Bin 0 -> 198 bytes src/Gui/Stylesheets/images/transparent.png | Bin 0 -> 195 bytes src/Gui/Stylesheets/images/undock_dark.png | Bin 0 -> 243 bytes src/Gui/Stylesheets/images/undock_light.png | Bin 0 -> 243 bytes src/Gui/Stylesheets/images/up_arrow_dark.png | Bin 0 -> 3427 bytes .../Stylesheets/images/up_arrow_darker.png | Bin 0 -> 3426 bytes .../images/up_arrow_disabled_dark.png | Bin 0 -> 143 bytes .../images/up_arrow_disabled_light.png | Bin 0 -> 145 bytes src/Gui/Stylesheets/images/up_arrow_light.png | Bin 0 -> 5454 bytes .../Stylesheets/images/up_arrow_lighter.png | Bin 0 -> 5454 bytes 64 files changed, 11406 insertions(+) create mode 100644 src/Gui/Stylesheets/Dark - blue.qss create mode 100644 src/Gui/Stylesheets/Dark - green.qss create mode 100644 src/Gui/Stylesheets/Dark - orange.qss create mode 100644 src/Gui/Stylesheets/Light - blue.qss create mode 100644 src/Gui/Stylesheets/Light - green.qss create mode 100644 src/Gui/Stylesheets/Light - orange.qss create mode 100644 src/Gui/Stylesheets/images/Hmovetoolbar_dark.png create mode 100644 src/Gui/Stylesheets/images/Hmovetoolbar_light.png create mode 100644 src/Gui/Stylesheets/images/Hsepartoolbar_dark.png create mode 100644 src/Gui/Stylesheets/images/Hsepartoolbar_light.png create mode 100644 src/Gui/Stylesheets/images/Vmovetoolbar_dark.png create mode 100644 src/Gui/Stylesheets/images/Vmovetoolbar_light.png create mode 100644 src/Gui/Stylesheets/images/Vsepartoolbar_dark.png create mode 100644 src/Gui/Stylesheets/images/Vsepartoolbar_light.png create mode 100644 src/Gui/Stylesheets/images/background_freecad.png create mode 100644 src/Gui/Stylesheets/images/branch_closed_dark.png create mode 100644 src/Gui/Stylesheets/images/branch_closed_darker.png create mode 100644 src/Gui/Stylesheets/images/branch_end.png create mode 100644 src/Gui/Stylesheets/images/branch_more.png create mode 100644 src/Gui/Stylesheets/images/branch_open_dark.png create mode 100644 src/Gui/Stylesheets/images/branch_open_darker.png create mode 100644 src/Gui/Stylesheets/images/branch_vline.png create mode 100644 src/Gui/Stylesheets/images/checkbox_indeterminate_light.png create mode 100644 src/Gui/Stylesheets/images/checkbox_light.png create mode 100644 src/Gui/Stylesheets/images/close_dark.png create mode 100644 src/Gui/Stylesheets/images/close_light.png create mode 100644 src/Gui/Stylesheets/images/down_arrow_dark.png create mode 100644 src/Gui/Stylesheets/images/down_arrow_darker.png create mode 100644 src/Gui/Stylesheets/images/down_arrow_disabled_dark.png create mode 100644 src/Gui/Stylesheets/images/down_arrow_disabled_light.png create mode 100644 src/Gui/Stylesheets/images/down_arrow_light.png create mode 100644 src/Gui/Stylesheets/images/down_arrow_lighter.png create mode 100644 src/Gui/Stylesheets/images/left_arrow_dark.png create mode 100644 src/Gui/Stylesheets/images/left_arrow_darker.png create mode 100644 src/Gui/Stylesheets/images/left_arrow_disabled_dark.png create mode 100644 src/Gui/Stylesheets/images/left_arrow_disabled_light.png create mode 100644 src/Gui/Stylesheets/images/left_arrow_light.png create mode 100644 src/Gui/Stylesheets/images/left_arrow_lighter.png create mode 100644 src/Gui/Stylesheets/images/more_dark.png create mode 100644 src/Gui/Stylesheets/images/more_light.png create mode 100644 src/Gui/Stylesheets/images/radiobutton_light.png create mode 100644 src/Gui/Stylesheets/images/right_arrow_dark.png create mode 100644 src/Gui/Stylesheets/images/right_arrow_darker.png create mode 100644 src/Gui/Stylesheets/images/right_arrow_disabled_dark.png create mode 100644 src/Gui/Stylesheets/images/right_arrow_disabled_light.png create mode 100644 src/Gui/Stylesheets/images/right_arrow_light.png create mode 100644 src/Gui/Stylesheets/images/right_arrow_lighter.png create mode 100644 src/Gui/Stylesheets/images/separtoolbar_dark.png create mode 100644 src/Gui/Stylesheets/images/separtoolbar_light.png create mode 100644 src/Gui/Stylesheets/images/sizegrip_dark.png create mode 100644 src/Gui/Stylesheets/images/sizegrip_light.png create mode 100644 src/Gui/Stylesheets/images/splitter_horizontal_dark.png create mode 100644 src/Gui/Stylesheets/images/splitter_horizontal_light.png create mode 100644 src/Gui/Stylesheets/images/splitter_vertical_dark.png create mode 100644 src/Gui/Stylesheets/images/splitter_vertical_light.png create mode 100644 src/Gui/Stylesheets/images/transparent.png create mode 100644 src/Gui/Stylesheets/images/undock_dark.png create mode 100644 src/Gui/Stylesheets/images/undock_light.png create mode 100644 src/Gui/Stylesheets/images/up_arrow_dark.png create mode 100644 src/Gui/Stylesheets/images/up_arrow_darker.png create mode 100644 src/Gui/Stylesheets/images/up_arrow_disabled_dark.png create mode 100644 src/Gui/Stylesheets/images/up_arrow_disabled_light.png create mode 100644 src/Gui/Stylesheets/images/up_arrow_light.png create mode 100644 src/Gui/Stylesheets/images/up_arrow_lighter.png diff --git a/src/Gui/Stylesheets/Dark - blue.qss b/src/Gui/Stylesheets/Dark - blue.qss new file mode 100644 index 000000000..c57fb0d8c --- /dev/null +++ b/src/Gui/Stylesheets/Dark - blue.qss @@ -0,0 +1,1902 @@ +/* +ABOUT +============================================================================================================ +version 2.01 +QT theme (stylesheet) specially developed for FreeCAD (http://www.freecadweb.org/). +It might work with other software that uses QT styling. + + +LICENSE +============================================================================================================ +Copyright (c) 2016 Pablo Gil Fernández + +This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. +To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/. + + +INSTALLATION +============================================================================================================ +1) Place the .qss files and /images/ folder in the path that fits your OS: + OSX = /Users/[YOUR_USER_NAME]/Library/Preferences/FreeCAD/Gui/Stylesheets/ + WINDOWS = C:/[INSTALLATION_PATH]/FreeCAD/data/Gui/fStylesheets/ + LINUX = /home/[YOUR_USER_NAME]/.FreeCAD/Gui/Stylesheets/ + +2) In order to display correctly images: + 2.1) FreeCAD 0.16 (development builds newer than commit 5b3d50a): that's it, you are done! + + 2.2) FreeCAD 0.15: Images used in the theme need ABSOLUTE paths to be found by FreeCAD, so you should search the string "qss:images" (without "") and replace with the real path of your computer. It should be done with all the .qss files you want to install-use + find = qss:images + replace = /Users/myName/Library/Preferences/FreeCAD/Gui/Stylesheets/images + + +CUSTOMIZATION +============================================================================================================ +If you would like to change the overall look/style of the theme, just find and replace following colors in the whole file: + BACKGROUND (darker to ligher) + black + #1e1e1e + #3c3c3c + #505050 + #5a5a5a + #646464 + #6e6e6e = main background color + #787878 + #8c8c8c + #a0a0a0 + #b4b4b4 + #bebebe + #c8c8c8 + #d2d2d2 + #e0e0e0 + #f5f5f5 + white + + SELECTION (darker to lighter) + #1b3774 + #2053c0 + #3874f2 + #5e90fa = main selection color + #6f9efa = used to build QSpinBox up and down buttons, it's used as color in the middle + #7cabf9 + #adc5ed + #cbd8e6 + + +KNOWN BUGS and TO DO +============================================================================================================ + - please, follow the link to get updated information: http://forum.freecadweb.org/viewtopic.php?f=10&t=12417 +*/ + + +/*================================================================================================== +Reset elements +==================================================================================================*/ +/* Reseting everything helps to unify styles across different operating systems */ +* { + padding: 0px; + margin: 0px; + border: 0px; + border-style: none; + border-image: none; + outline: 0; +} + +/* specific reset for elements inside QToolBar */ +QToolBar * { + margin: 0px; + padding: 0px; +} + + +/*================================================================================================== +Main window +==================================================================================================*/ +QMainWindow, +QDialog, +QToolBar { + background-color: #6e6e6e; /* main background color */ +} + +QMdiArea[showImage="true"] { + background-image: url(qss:images/background_freecad.png); + background-position: center center; + background-repeat: no-repeat; +} + + +/*================================================================================================== +MENUS +==================================================================================================*/ +QMenuBar, +QMenuBar::item { + color: #e0e0e0; + background-color: #6e6e6e; /* main background color */ +} + +QMenu, +QMenu::item { + color: #e0e0e0; + background-color: #5a5a5a; + text-decoration: none; +} + +QMenuBar::item:selected, +QMenuBar::item:pressed, +QMenu::item:selected, +QMenu::item:pressed { + color: white; + background-color: #5e90fa; +} + +QMenu::right-arrow { + width: 10px; + height: 10px; + image:url(qss:images/right_arrow_dark.png); + margin-right: 2px; +} + +QMenu::right-arrow:selected { + image:url(qss:images/right_arrow_lighter.png); +} + +QMenu::item { + padding: 2px 16px 2px 26px; /* make room for icon at left */ + border: 1px solid transparent; /* reserve space for selection border */ +} + +QMenu::icon { + margin-left: 2px; +} + +QMenu::separator { + height: 1px; + background-color: rgba(255,255,255,30); + margin: 6px 4px; +} + +QMenu::indicator:non-exclusive:checked { + color: white; +} + + +/*================================================================================================== +Tool bar +==================================================================================================*/ +QToolBar { + border: none; + min-width: 32px; /* allows a minimum of space between QToolBar colums */ + min-height: 32px; /* allows a minimum of space between QToolBar rows */ +} + +QToolBar::handle:horizontal { + background-image: url(qss:images/Hmovetoolbar_dark.png); + width: 10px; + margin: 6px 2px 6px 2px; + background-position: top right; + background-repeat: repeat-y; +} + +QToolBar::handle:vertical { + background-image: url(qss:images/Vmovetoolbar_dark.png); + height: 10px; + margin: 2px 6px 2px 6px; + background-position: left bottom; + background-repeat: repeat-x; +} + +QToolBar::separator:horizontal { + background-image: url(qss:images/separtoolbar_dark.png); + width: 10px; + margin: 6px 2px 6px 2px; + background-position: center center; + background-repeat: repeat-y; +} + +QToolBar::separator:vertical { + background-image: url(qss:images/separtoolbar_dark.png); + height: 10px; + margin: 2px 6px 2px 6px; + background-position: center center; + background-repeat: repeat-x; +} + + +/*================================================================================================== +Group box +==================================================================================================*/ +QGroupBox { + color: rgba(0,0,0,120); + border:1px solid rgba(0, 0, 0, 20); /* lighter than its own border-color */; + border-radius: 3px; + margin-top: 10px; + padding: 6px; + background-color: rgba(255, 255, 255, 15); +} + +QGroupBox:title { + top: -8px; + left: 12px; +} + + +/*================================================================================================== +Tooltip +==================================================================================================*/ +QToolTip { + color: #1e1e1e; + background-color: #b4b4b4; + /*opacity: 90%; doesn't correctly work */ + padding: 4px; + border-radius: 3px; /* has no effect */ +} + + +/*================================================================================================== +Dock widget +==================================================================================================*/ +QDockWidget { + color: rgba(0,0,0,120); + titlebar-close-icon: url(qss:images/close_dark.png); + titlebar-normal-icon: url(qss:images/undock_dark.png); +} + +QDockWidget::title { + text-align: center; + background-color: rgba(0,0,0,20); + border: 4px solid #6e6e6e; /* fix to simulate margin between this :title and tabs */ /* same as main background color */ + border-radius: 6px; /* bigger than normal due to previous border fix */ + padding: 4px 0px; /* also needed because of previous border fix */ +} + +QDockWidget::close-button, +QDockWidget::float-button { + border: none; + background: transparent; + border-radius: 3px; + subcontrol-origin: padding; + subcontrol-position: right center; +} + +QDockWidget::close-button { + right: 4px; +} + +QDockWidget::float-button { + right: 22px; +} + +QDockWidget::close-button:hover, +QDockWidget::float-button:hover { + background-color: rgba(255,255,255,15); +} + +QDockWidget::close-button:pressed, +QDockWidget::float-button:pressed { + background-color: rgba(255,255,255,30); +} + +/* fix for Python Console (probably there is a smarter way to arrive to it) */ +QDockWidget > QFrame { + background-color: #c8c8c8; + border: 1px solid #505050; +} + + +/*================================================================================================== +Progress bar +==================================================================================================*/ +QProgressBar, +QProgressBar:horizontal { + color: white; + background-color: rgba(0,0,0,10); + text-align: center; + border: 1px solid rgba(0,0,0,80); + padding: 1px; + border-radius: 3px; +} +QProgressBar::chunk, +QProgressBar::chunk:horizontal { + background-color: qlineargradient(spread:pad, x1:1, y1:0.545, x2:1, y2:0, stop:0 #3874f2, stop:1 #5e90fa); + border-radius: 3px; +} + + +/*================================================================================================== +Scroll +==================================================================================================*/ +QAbstractScrollArea { + border-radius: 2px; + background-color: transparent; +} + +QAbstractScrollArea::corner { + border: none; + background-color: transparent; +} + +QScrollBar:horizontal { + background-color: transparent; + height: 15px; + margin: 0px; +} + +QScrollBar::handle:vertical, +QScrollBar::handle:horizontal { + background-color: rgba(0,0,0,80); +} + +QScrollBar::handle:vertical:hover, +QScrollBar::handle:horizontal:hover { + background-color: rgba(0,0,0,100); +} + +QScrollBar::handle:horizontal { + min-width: 5px; + border-radius: 3px; + margin: 4px 15px; +} + +QScrollBar::sub-line:horizontal { + margin: 1px 3px 0px 3px; /* 1px to correctly fit the 10px width image */ + border-image: url(qss:images/left_arrow_light.png); + width: 6px; + height: 10px; + subcontrol-position: left; + subcontrol-origin: margin; +} + +QScrollBar::add-line:horizontal { + margin: 1px 3px 0px 3px; /* 1px to correctly fit the 10px width image */ + border-image: url(qss:images/right_arrow_light.png); + width: 6px; + height: 10px; + subcontrol-position: right; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:horizontal:hover, +QScrollBar::sub-line:horizontal:on { + border-image: url(qss:images/left_arrow_lighter.png); +} + +QScrollBar::add-line:horizontal:hover, +QScrollBar::add-line:horizontal:on { + border-image: url(qss:images/right_arrow_lighter.png); +} + +QScrollBar::up-arrow:horizontal, +QScrollBar::down-arrow:horizontal { + background-color: none; +} + +QScrollBar::add-page:horizontal, +QScrollBar::sub-page:horizontal { + background-color: transparent; +} + +QScrollBar:vertical { + background-color: transparent; + width: 15px; + margin: 0px; +} + +QScrollBar::handle:vertical { + min-height: 5px; + border-radius: 3px; + margin: 15px 4px; +} + +QScrollBar::sub-line:vertical { + margin: 3px 0px 3px 1px; /* 1px to correctly fit the 10px width image */ + border-image: url(qss:images/up_arrow_light.png); + height: 6px; + width: 10px; + subcontrol-position: top; + subcontrol-origin: margin; +} + +QScrollBar::add-line:vertical { + margin: 3px 0px 3px 1px; /* 1px to correctly fit the 10px width image */ + border-image: url(qss:images/down_arrow_light.png); + height: 6px; + width: 10px; + subcontrol-position: bottom; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:vertical:hover, +QScrollBar::sub-line:vertical:on { + border-image: url(qss:images/up_arrow_lighter.png); +} + +QScrollBar::add-line:vertical:hover, +QScrollBar::add-line:vertical:on { + border-image: url(qss:images/down_arrow_lighter.png); +} + +QScrollBar::up-arrow:vertical, +QScrollBar::down-arrow:vertical { + background-color: none; +} + +QScrollBar::add-page:vertical, +QScrollBar::sub-page:vertical { + background-color: transparent; +} + + +/*================================================================================================== +Tab bar +==================================================================================================*/ +QTabWidget::pane { + background-color: transparent; /* temporal (transparent background) */ /* tab content background color */ + position: absolute; +} + +QTabWidget::pane:top { + top: -1px; + border-top: 1px solid #5a5a5a; +} + +QTabWidget::pane:bottom { + bottom: -1px; + border-bottom: 1px solid #5a5a5a; +} + +QTabWidget::pane:left { + right: -1px; + border-right: 1px solid #5a5a5a; +} + +QTabWidget::pane:right { + left: -1px; + border-left: 1px solid #5a5a5a; +} + +QTabWidget::tab-bar:top, +QTabWidget::tab-bar:bottom { + left: 10px; +} + +QTabWidget::tab-bar:left, +QTabWidget::tab-bar:right { + top: 10px; +} + +QTabBar { + qproperty-drawBase: 0; /* important */ + background-color: transparent; +} + +/* Workaround for QTabBars created from docked QDockWidgets which don't draw the border if not set and reseted as follows: */ +QTabBar { + border-top: 1px solid #5a5a5a; /* set color for all QTabBars */ +} +QDockWidget QTabBar { + border-color: transparent; /* set color for all QTabBars but ones created from QDockWidget */ +} +QDialog QTabBar { + border-color: transparent; /* set color for QTabBars inside Preferences dialog */ +} +/* end fix */ + +QTabBar::tab { + background-color: transparent; + border: 1px solid transparent; + padding: 3px; +} + +QTabBar::tab:top, +QTabBar::tab:bottom { + border-top-width: 4px; /* same as selected tab colored border in order to center close-button */ + border-bottom-width: 4px; /* same as selected tab colored border in order to center close-button */ + min-width: 11ex; + margin-left: 2px; + margin-right: 2px; +} + +QTabBar::tab:left, +QTabBar::tab:right { + border-left-width: 4px; /* same as selected tab colored border in order to center close-button */ + border-right-width: 4px; /* same as selected tab colored border in order to center close-button */ + min-height: 14ex; + margin-top: 2px; + margin-bottom: 2px; +} + +QTabBar::tab:selected { + color: #d2d2d2; + background-color: transparent; /* temporal (transparent background) */ + border-color: #5a5a5a; +} + +QTabBar::tab:top:selected { + border-top: 4px solid qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #5e90fa, stop:1 #3874f2); /* selection color */ + border-bottom-color: #6e6e6e; /* same as tab content background color */ +} + +QTabBar::tab:bottom:selected { + border-bottom: 4px solid qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #5e90fa, stop:1 #3874f2); /* selection color */ + border-top-color: #6e6e6e; /* same as tab content background color */ +} + +QTabBar::tab:right:selected { + border-left: 4px solid qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 #5e90fa, stop:1 #3874f2); /* selection color */ + border-right-color: #6e6e6e; /* same as tab content background color */ +} + +QTabBar::tab:left:selected { + border-right: 4px solid qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 #5e90fa, stop:1 #3874f2); /* selection color */ + border-left-color: #6e6e6e; /* same as tab content background color */ +} + +QTabBar::tab:!selected { + color: rgba(0,0,0,120); +} + +QTabBar::tab:!selected:hover { + color: rgba(0,0,0,180); + background-color: rgba(0,0,0,20); +} + +QTabBar::tab:first:selected { + margin-left: 0; /* the first selected tab has nothing to overlap with on the left */ +} + +QTabBar::tab:last:selected { + margin-right: 0; /* the last selected tab has nothing to overlap with on the right */ +} + +QTabBar::tab:only-one { + margin: 0; /* if there is only one tab, we don't want overlapping margins */ +} + +/* hack to access Preference TabBar background */ +QDialog#Gui__Dialog__DlgPreferences > QFrame QFrame { + background-color: transparent; /* main background color (in Windows is #6e6e6e) */ +} + +/* fix for previous hack that broke QTabWidget background on Windows */ +QDialog#Gui__Dialog__DlgPreferences QTabWidget::pane { + background-color: transparent; /* temporal (transparent background) */ +} + +/* hack to correctly align Preferences icon list on OSX */ +QDialog#Gui__Dialog__DlgPreferences > QListView { + min-width: 130px; +} + +/* unique styles for sections inside Preferences */ +QDialog#Gui__Dialog__DlgPreferences > QListView::item { + border-radius: 6px; +} + +QDialog#Gui__Dialog__DlgPreferences > QListView::item:hover { + background-color: #b4b4b4; +} + +QDialog#Gui__Dialog__DlgPreferences > QListView::item:selected { + color: white; + background-color: #5e90fa; + border: 3px solid #3874f2; +} + + +/*================================================================================================== +Tab bar buttons +==================================================================================================*/ +/* Close button */ +QTabBar::close-button { + subcontrol-origin: margin; + subcontrol-position: center right; /* only works for QT 4.6 and newer */; + border-radius: 2px; + background-image: url(qss:images/close_dark.png); + background-position: center center; + background-repeat: none; +} + +QTabBar::close-button:hover { + background-color: rgba(255,255,255,20); +} + +QTabBar::close-button:pressed { + background-color: rgba(255,255,255,30); +} + +/* Fix for lists inside Model tab */ +QDockWidget QTreeView, +QDockWidget QListView, +QDockWidget QTableView { + margin: 6px; + border: 1px solid #505050; /* same as regular QTreeView, QListView and QTableView */ + min-height: 40px; /* neccesary in some areas of FreeCAD */ +} + +/* Buttons to scroll tabs if there is not space to show all of them: */ +QTabBar::scroller { + width: 20px; /* the width of the scroll buttons */ +} + +QTabBar QToolButton, +QTabBar QToolButton:hover { + background-color: #6e6e6e; /* same as main background color */ +} + +QTabBar QToolButton::right-arrow:enabled { + image: url(qss:images/right_arrow_dark.png); +} + +QTabBar QToolButton::right-arrow:disabled, +QTabBar QToolButton::right-arrow:off { + image: url(qss:images/right_arrow_disabled_dark.png); +} + +QTabBar QToolButton::right-arrow:hover { + image: url(qss:images/right_arrow_darker.png); +} + + QTabBar QToolButton::left-arrow:enabled { + image: url(qss:images/left_arrow_dark.png); +} + + QTabBar QToolButton::left-arrow:disabled, + QTabBar QToolButton::left-arrow:off { + image: url(qss:images/left_arrow_disabled_dark.png); +} + + QTabBar QToolButton::left-arrow:hover { + image: url(qss:images/left_arrow_darker.png); +} + + QTabBar QToolButton::up-arrow:enabled { + image: url(qss:images/up_arrow_dark.png); +} + + QTabBar QToolButton::up-arrow:disabled, + QTabBar QToolButton::up-arrow:off { + image: url(qss:images/up_arrow_disabled_dark.png); +} + + QTabBar QToolButton::up-arrow:hover { + image: url(qss:images/up_arrow_darker.png); +} + + QTabBar QToolButton::down-arrow:enabled { + image: url(qss:images/down_arrow_dark.png); +} + + QTabBar QToolButton::down-arrow:disabled, + QTabBar QToolButton::down-arrow:off { + image: url(qss:images/down_arrow_disabled_dark.png); +} + + QTabBar QToolButton::down-arrow:hover { + image: url(qss:images/down_arrow_darker.png); +} + +QTabBar::tear { + /* default OS tear better */ +} + + +/*================================================================================================== +Tree and list views +==================================================================================================*/ +QTreeView, +QListView, +QTableView { + background-color: #c8c8c8; + alternate-background-color: #bebebe; /* related with QListView background */ + border: 1px solid #505050; + selection-color: white; + selection-background-color: #5e90fa; /* should be similar to QListView::item selected background-color */ + show-decoration-selected: 1; /* make the selection span the entire width of the view */ + border-radius: 3px; +} + +QListView::item:hover, +QTreeView::item:hover { + background-color: transparent; /* fix to homogenize it on all OSs */ +} + +QListView::item:selected, +QTreeView::item:selected { + color: white; /* should be similar to QListView selection-color */ + background-color: #5e90fa; /* should be similar to QListView selection-background-color */ + show-decoration-selected: 1; /* make the selection span the entire width of the view */ +} + +/* Property Editor QTreeView (FreeCAD custom widget) */ +Gui--PropertyEditor--PropertyEditor { + gridline-color: #a0a0a0; /* same as Group header background */ +} + +/* fix for column items background when a link is present */ +Gui--PropertyEditor--PropertyEditor > QWidget > QFrame:focus { + background-color: #cbd8e6; /* same as focused background color */ +} + +/* hack to hide weird redundant information inside the value of a Placement cell */ +Gui--PropertyEditor--PropertyEditor > QWidget > QWidget > QLabel, +Gui--PropertyEditor--PropertyEditor > QWidget > QWidget > QLabel:disabled { + color: transparent; + background-color: transparent; + border: none; + border-radius: 0px; + margin: 0px; + padding: 0px; +} + +/* hack to hide non editable cells inside Property values */ +Gui--PropertyEditor--PropertyEditor QLineEdit:read-only, +Gui--PropertyEditor--PropertyEditor QLineEdit:disabled, +Gui--PropertyEditor--PropertyEditor QAbstractSpinBox:read-only, +Gui--PropertyEditor--PropertyEditor QAbstractSpinBox:disabled { + color: transparent; + border-color: transparent; + background-color: transparent; + selection-color: transparent; + selection-background-color: transparent; +} + +/* hack to disable margin inside Property values to following elements */ +Gui--PropertyEditor--PropertyEditor QSpinBox, +Gui--PropertyEditor--PropertyEditor QDoubleSpinBox, +Gui--PropertyEditor--PropertyEditor QAbstractSpinBox, +Gui--PropertyEditor--PropertyEditor QLineEdit, +Gui--PropertyEditor--PropertyEditor QComboBox { + margin-left: 0px; + margin-right: 0px; + padding-top: 0px; + padding-bottom: 0px; +} + +/* set border-radius to 0px inside list views */ +QTreeView > QWidget > QComboBox, +QTreeView > QWidget > QAbstractSpinBox, +QTreeView > QWidget > QSpinBox, +QTreeView > QWidget > QDoubleSpinBox, +QTreeView > QWidget > QLineEdit, +QTreeView > QWidget > QTextEdit, +QTreeView > QWidget > QTimeEdit, +QTreeView > QWidget > QDateEdit, +QTreeView > QWidget > QDateTimeEdit, +QTreeView > QWidget > QComboBox:drop-down, +QTreeView > QWidget > QAbstractSpinBox:up-button, +QTreeView > QWidget > QSpinBox:up-button, +QTreeView > QWidget > QDoubleSpinBox:up-button, +QTreeView > QWidget > QTimeEdit:up-button, +QTreeView > QWidget > QDateEdit:up-button, +QTreeView > QWidget > QDateTimeEdit:up-button, +QTreeView > QWidget > QAbstractSpinBox:down-button, +QTreeView > QWidget > QSpinBox:down-button, +QTreeView > QWidget > QDoubleSpinBox:down-button, +QTreeView > QWidget > QTimeEdit:down-button, +QTreeView > QWidget > QDateEdit:down-button, +QTreeView > QWidget > QDateTimeEdit:down-button, +QTreeView > QWidget > Gui--ColorButton { + border-radius: 0px; +} + +/* set focus colors to best viewing the editable fields */ +QTreeView > QWidget > QComboBox:focus, +QTreeView > QWidget > QAbstractSpinBox:focus, +QTreeView > QWidget > QSpinBox:focus, +QTreeView > QWidget > QDoubleSpinBox:focus, +QTreeView > QWidget > QLineEdit:focus, +QTreeView > QWidget > QTextEdit:focus, +QTreeView > QWidget > QTimeEdit:focus, +QTreeView > QWidget > QDateEdit:focus, +QTreeView > QWidget > QDateTimeEdit:focus { + border-color: #cbd8e6; /* same as focused background color */ + border-bottom-color: #7cabf9; /* same as focused border color */ +} + +QTreeView > QWidget > QAbstractSpinBox:read-only, +QTreeView > QWidget > QSpinBox:read-only, +QTreeView > QWidget > QDoubleSpinBox:read-only, +QTreeView > QWidget > QLineEdit:read-only, +QTreeView > QWidget > QTextEdit:read-only, +QTreeView > QWidget > QTimeEdit:read-only, +QTreeView > QWidget > QDateEdit:read-only, +QTreeView > QWidget > QDateTimeEdit:read-only { + color: transparent; + background-color: transparent; + border-color: transparent; +} + +/* Fix to correctly (not totally) draw QTextEdit on OSX at Page properties: "Page result", "Template" and "Editable Texts" */ +Gui--PropertyEditor--PropertyEditor > QWidget > QWidget > QWidget { + min-height: 14px; +} + + +/*================================================================================================== +Header of tree and list views +==================================================================================================*/ +QHeaderView { + color: #c8c8c8; + background-color: #505050; + border-top-left-radius: 2px; /* 1px less than its container */ + border-top-right-radius: 2px; /* 1px less than its container */ + border-bottom-left-radius: 0px; + border-bottom-right-radius: 0px; +} + +QHeaderView::section { + border:none; + padding: 4px 6px; + background-color: #505050; +} + +QHeaderView::section:horizontal { + padding: 4px 6px; /* left and right value similar to QHeaderView::section */ + border-right: 1px solid rgba(255,255,255,30); +} + +QHeaderView::section:vertical { + border-bottom: 1px solid rgba(255,255,255,30); +} + +QTableCornerButton::section { + background-color: #505050; + border-top: none; + border-left: none; + border-right: 1px solid rgba(255,255,255,30); + border-bottom: 1px solid rgba(255,255,255,30); +} + +QHeaderView::section:last { + border-right: none; +} + +QHeaderView::up-arrow { + image: url(qss:images/up_arrow_light.png); +} + +QHeaderView::up-arrow:hover { + image: url(qss:images/up_arrow_lighter.png); +} + +QHeaderView::down-arrow { + image: url(qss:images/down_arrow_light.png); +} + +QHeaderView::down-arrow:hover { + image: url(qss:images/down_arrow_lighter.png); +} + +/* Group header inside Property Editor (FreeCAD custom widget) */ +Gui--PropertyEditor--PropertyEditor { + qproperty-groupTextColor: #505050; + qproperty-groupBackground: #8c8c8c; +} + + +/*================================================================================================== +Branch system for QTreeViews +==================================================================================================*/ +QTreeView::branch { + background: transparent; +} + +QTreeView::branch:has-siblings:!adjoins-item { + border-image: url(qss:images/branch_vline.png) 0; +} + +QTreeView::branch:has-siblings:adjoins-item { + border-image: url(qss:images/branch_more.png) 0; +} + +QTreeView::branch:!has-children:!has-siblings:adjoins-item { + border-image: url(qss:images/branch_end.png) 0; +} + +QTreeView::branch:closed:has-children:has-siblings { + image: url(qss:images/branch_closed_dark.png); +} + +QTreeView::branch:has-children:!has-siblings:closed { + image: url(qss:images/branch_closed_dark.png); + border-image: url(qss:images/branch_end.png) 0; +} + +QTreeView::branch:open:has-children:has-siblings { + image: url(qss:images/branch_open_dark.png); + border-image: url(qss:images/branch_more.png) 0; +} + +QTreeView::branch:open:has-children:!has-siblings { + image: url(qss:images/branch_open_dark.png); + border-image: url(qss:images/branch_end.png) 0; +} + + +/*================================================================================================== +Text/Python editor (macros, etc...) +==================================================================================================*/ +QPlainTextEdit, +QPlainTextEdit:focus { + background-color: #c8c8c8; + selection-color: white; + selection-background-color: #3874f2; + border: 1px solid #505050; + border-radius: 3px; + margin: 4px; +} + + +/*================================================================================================== +Splitter and windows separator +==================================================================================================*/ +QSplitter::handle { + margin: 0px 11px; + padding: 0px; +} + +QSplitter::handle:vertical { + background-image: url(qss:images/splitter_horizontal_dark.png); + background-position: center center; + background-repeat: none; + margin: 2px 4px 2px 4px; + height: 2px; +} + +QSplitter::handle:horizontal { + background-image: url(qss:images/splitter_vertical_dark.png); + background-position: center center; + background-repeat: none; + margin: 4px 2px 4px 2px; + width: 2px; +} + +/* Similar to the splitter is the following window separator: */ +QMainWindow::separator { + background-position: center center; + background-repeat: none; +} + +QMainWindow::separator:horizontal { + height: 2px; + background-image: url(qss:images/splitter_horizontal_dark.png); + margin: 4px 2px 4px 2px; +} + +QMainWindow::separator:vertical { + width: 2px; + background-image: url(qss:images/splitter_vertical_dark.png); + margin: 2px 4px 2px 4px; +} + + +/*================================================================================================== +Tasks panel (custom FreeCAD class) +==================================================================================================*/ +/* Action group */ +QFrame[class="panel"] { + background-color: transparent; /* temporal (transparent background) */ +} + +/* Separator line */ +QSint--ActionGroup QFrame[height="1"], +QSint--ActionGroup QFrame[height="2"], +QSint--ActionGroup QFrame[height="3"], +QSint--ActionGroup QFrame[width="1"], +QSint--ActionGroup QFrame[width="2"], +QSint--ActionGroup QFrame[width="3"] { + border-color: rgba(0,0,0,60); +} + +/* Panel header */ +QSint--ActionGroup QFrame[class="header"] { + border: none; + background-color: #505050; /* Task Panel Header background color */ + border-top-left-radius: 3px; + border-top-right-radius: 3px; + border-bottom-left-radius: 0px; + border-bottom-right-radius: 0px; + margin: 0px; + padding: 0px; +} + +QSint--ActionGroup QFrame[class="header"]:hover { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #5e90fa, stop:1 #3874f2); +} + +QSint--ActionGroup QToolButton[class="header"] { + color: #e0e0e0; /* Task Panel Header text color */ + text-align: left; + font-weight: bold; + border: none; + margin: 0px; + padding: 0px; +} + +QSint--ActionGroup QFrame[class="header"] QLabel { + background-color: transparent; + background-image: url(qss:images/down_arrow_light.png); + background-repeat: none; + background-position: center center; + padding: 0px; + margin: 0px; +} + +QSint--ActionGroup QFrame[class="header"] QLabel:hover { + background-color: transparent; + background-image: url(qss:images/down_arrow_lighter.png); +} + +QSint--ActionGroup QFrame[class="header"] QLabel[fold="true"] { + background-color: transparent; + background-image: url(qss:images/up_arrow_light.png); + background-repeat: none; + background-position: center center; + padding: 0px; + margin: 0px; +} + +QSint--ActionGroup QFrame[class="header"] QLabel[fold="true"]:hover { + background-color: transparent; + background-image: url(qss:images/up_arrow_lighter.png); +} + +QSint--ActionGroup QFrame[class="content"] { + background-color: #8c8c8c; /* Task Panel background color */ + margin: 0px; + padding: 0px; + border: none; + border-top-left-radius: 0px; + border-top-right-radius: 0px; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; +} + +QSint--ActionGroup QFrame[class="content"] > QWidget { + background-color: #8c8c8c; /* Task Panel background color */ +} + +/* Fixs for tabs inside Task Panel */ +QSint--ActionGroup QFrame[class="content"] QTabBar::tab:top:selected { + border-bottom-color: #8c8c8c; /* same as Task Panel background color */ +} + +QSint--ActionGroup QFrame[class="content"] QTabBar::tab:bottom:selected { + border-top-color: #8c8c8c; /* same as Task Panel background color */ +} + +QSint--ActionGroup QFrame[class="content"] QTabBar::tab:right:selected { + border-right-color: #8c8c8c; /* same as Task Panel background color */ +} + +QSint--ActionGroup QFrame[class="content"] QTabBar::tab:left:selected { + border-left-color: #8c8c8c; /* same as Task Panel background color */ +} + + +/*================================================================================================== +Buttons +==================================================================================================*/ +/* Common */ +QComboBox, +QAbstractSpinBox, +QSpinBox, +QDoubleSpinBox, +QLineEdit, +QTextEdit, +QTimeEdit, +QDateEdit, +QDateTimeEdit { + color: #bebebe; + background-color: #5a5a5a; + selection-color: white; + selection-background-color: #3874f2; + border: 1px solid #5a5a5a; + border-radius: 3px; + min-width: 50px; /* it ensures the default value is correctly displayed */ + padding: 1px 2px; /* temporal: could don't be compatible with elements inside Tree/List view */ +} + +/* shifts text/number editable field to the left to make space for the up/down or drop-down buttons */ +QComboBox, +QAbstractSpinBox, +QSpinBox, +QDoubleSpinBox, +QTimeEdit, +QDateEdit, +QDateTimeEdit { + padding-right: 20px; +} + +/* when QTextEdit are no editable */ +QTextEdit:!editable { + background-color: #c8c8c8; + border: 1px solid #505050; +} + +QComboBox:focus, +QAbstractSpinBox:focus, +QSpinBox:focus, +QDoubleSpinBox:focus, +QLineEdit:focus, +QTextEdit:focus, +QTimeEdit:focus, +QDateEdit:focus, +QDateTimeEdit:focus { + color: black; + border-color: #7cabf9; + border-right-color: qlineargradient(spread:pad, x1:1, y1:0.8, x2:1, y2:0, stop:0 #5e90fa, stop:1 #7cabf9); /* same as up/down or drop-down button color */ + background-color: #cbd8e6; +} + +QComboBox:disabled, +QAbstractSpinBox:disabled, +QSpinBox:disabled, +QDoubleSpinBox:disabled, +QLineEdit:disabled, +QTextEdit:disabled, +QTimeEdit:disabled, +QDateEdit:disabled, +QDateTimeEdit:disabled { + color: #787878; + background-color: #5a5a5a; /* same as enabled color */ + border-color: #5a5a5a; /* same as enabled color */ +} + +QAbstractSpinBox:up-button, +QSpinBox:up-button, +QDoubleSpinBox:up-button, +QTimeEdit:up-button, +QDateEdit:up-button, +QDateTimeEdit:up-button, +QAbstractSpinBox:down-button, +QSpinBox:down-button, +QDoubleSpinBox:down-button, +QTimeEdit:down-button, +QDateEdit:down-button, +QDateTimeEdit:down-button { + background-color: #505050; /* same color for QComboBox background-color */ + subcontrol-origin: border; /* important */ + width: 20px; /* same as QComboBox ... QDateTimeEdit padding-right */ +} + +QAbstractSpinBox:up-button, +QSpinBox:up-button, +QDoubleSpinBox:up-button, +QTimeEdit:up-button, +QDateEdit:up-button, +QDateTimeEdit:up-button { + subcontrol-position: top right; + border-top-right-radius: 3px; + height: 12px; /* fix for Ubuntu that doesn't divide the up/down button into the exact middle */ +} + +QAbstractSpinBox:down-button, +QSpinBox:down-button, +QDoubleSpinBox:down-button, +QTimeEdit:down-button, +QDateEdit:down-button, +QDateTimeEdit:down-button { + subcontrol-position: bottom right; + border-bottom-right-radius: 3px; +} + +QAbstractSpinBox:up-button:focus, +QSpinBox:up-button:focus, +QDoubleSpinBox:up-button:focus, +QTimeEdit:up-button:focus, +QDateEdit:up-button:focus, +QDateTimeEdit:up-button:focus { + background-color: qlineargradient(spread:pad, x1:1, y1:0.8, x2:1, y2:0, stop:0 #6f9efa, stop:1 #7cabf9); +} + +QAbstractSpinBox:down-button:focus, +QSpinBox:down-button:focus, +QDoubleSpinBox:down-button:focus, +QTimeEdit:down-button:focus, +QDateEdit:down-button:focus, +QDateTimeEdit:down-button:focus { + background-color: qlineargradient(spread:pad, x1:1, y1:0.8, x2:1, y2:0, stop:0 #5e90fa, stop:1 #6f9efa); +} + +QAbstractSpinBox:up-button:disabled, +QSpinBox:up-button:disabled, +QDoubleSpinBox:up-button:disabled, +QTimeEdit:up-button:disabled, +QDateEdit:up-button:disabled, +QDateTimeEdit:up-button:disabled, +QAbstractSpinBox:down-button:disabled, +QSpinBox:down-button:disabled, +QDoubleSpinBox:down-button:disabled, +QTimeEdit:down-button:disabled, +QDateEdit:down-button:disabled, +QDateTimeEdit:down-button:disabled { + background-color: transparent; +} + +QAbstractSpinBox::up-arrow, +QSpinBox::up-arrow, +QDoubleSpinBox::up-arrow, +QTimeEdit::up-arrow, +QDateEdit::up-arrow, +QDateTimeEdit::up-arrow { + image: url(qss:images/up_arrow_light.png); + top: 0px; /* fix simetry between up and down images */ +} + +QAbstractSpinBox::up-arrow:focus, +QSpinBox::up-arrow:focus, +QDoubleSpinBox::up-arrow:focus, +QTimeEdit::up-arrow:focus, +QDateEdit::up-arrow:focus, +QDateTimeEdit::up-arrow:focus { + image: url(qss:images/up_arrow_lighter.png); +} + +QAbstractSpinBox::up-arrow:off, +QSpinBox::up-arrow:off, +QDoubleSpinBox::up-arrow:off, +QTimeEdit::up-arrow:off, +QDateEdit::up-arrow:off, +QDateTimeEdit::up-arrow:off { + image: url(qss:images/up_arrow_disabled_dark.png); +} + +QAbstractSpinBox::up-arrow:disabled, +QSpinBox::up-arrow:disabled, +QDoubleSpinBox::up-arrow:disabled, +QTimeEdit::up-arrow:disabled, +QDateEdit::up-arrow:disabled, +QDateTimeEdit::up-arrow:disabled { + image: url(qss:images/up_arrow_disabled_dark.png); +} + +QAbstractSpinBox::down-arrow, +QSpinBox::down-arrow, +QDoubleSpinBox::down-arrow, +QTimeEdit::down-arrow, +QDateEdit::down-arrow, +QDateTimeEdit::down-arrow { + image: url(qss:images/down_arrow_light.png); + bottom: 0px; /* fix simetry between up and down images */ +} + +QAbstractSpinBox::down-arrow:focus, +QSpinBox::down-arrow:focus, +QDoubleSpinBox::down-arrow:focus, +QTimeEdit::down-arrow:focus, +QDateEdit::down-arrow:focus, +QDateTimeEdit::down-arrow:focus { + image: url(qss:images/down_arrow_lighter.png); +} + +QAbstractSpinBox::down-arrow:off, +QSpinBox::down-arrow:off, +QDoubleSpinBox::down-arrow:off, +QTimeEdit::down-arrow:off, +QDateEdit::down-arrow:off, +QDateTimeEdit::down-arrow:off { + image: url(qss:images/down_arrow_disabled_dark.png); +} + +QAbstractSpinBox::down-arrow:disabled, +QSpinBox::down-arrow:disabled, +QDoubleSpinBox::down-arrow:disabled, +QTimeEdit::down-arrow:disabled, +QDateEdit::down-arrow:disabled, +QDateTimeEdit::down-arrow:disabled { + image: url(qss:images/down_arrow_disabled_dark.png); +} + +/* ComboBox */ +QComboBox::drop-down { + background-color: #505050; /* same color as up/down QSpinBox ... QDateTimeView background-color */ + subcontrol-origin: border; /* important */ + subcontrol-position: top right; + width: 20px; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} + +QComboBox::drop-down:on, +QComboBox::drop-down:focus { + background-color: qlineargradient(spread:pad, x1:1, y1:0.8, x2:1, y2:0, stop:0 #5e90fa, stop:1 #7cabf9); +} + +QComboBox::down-arrow { + image: url(qss:images/down_arrow_light.png); +} + +QComboBox::down-arrow:on, +QComboBox::down-arrow:focus { + image: url(qss:images/down_arrow_lighter.png); +} + +QComboBox::down-arrow:off, +QComboBox::down-arrow:disabled { + image: url(qss:images/down_arrow_disabled_dark.png); +} + +/* ComboBox menu */ +QComboBox { + selection-color: white; + selection-background-color: #5e90fa; +} + +QComboBox QAbstractItemView { + color: #bebebe; /* same as regular QComboBox color */ + background-color: transparent; + selection-color: white; + selection-background-color: #5e90fa; + border-width: 5px 0px 5px 0px; + border-style: solid; + border-color: transparent; + margin: 0px -1px 0px 0px; /* hack for Mac... try it on Windows and Linux */ +} + + +/*================================================================================================== +Push button +==================================================================================================*/ +QPushButton { + color: #e0e0e0; + text-align: center; + background-color: qlineargradient(spread:pad, x1:0, y1:0.3, x2:0, y2:1, stop:0 #6e6e6e, stop:1 #646464); + border: 1px solid #5a5a5a; + border-bottom-color: #505050; /* simulates shadow under the button */ + padding: 4px 22px; + margin: 4px 4px; + min-height: 16px; /* same as QTabBar QPushButton min-width */ + border-radius: 4px; +} + +QPushButton:hover, +QPushButton:focus { + color: white; + border-color: #3874f2; + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #5e90fa, stop:1 #3874f2); +} + +QPushButton:disabled, +QPushButton:disabled:checked { + color: #787878; + background-color: #5a5a5a; /* same as enabled color */ + border-color: #5a5a5a; /* same as enabled color */ +} + +QPushButton:pressed { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #3874f2, stop:1 #5e90fa); +} + +QPushButton:checked { + background-color: #5e90fa; + border-color: #3874f2; +} + +/* Color Buttons */ +Gui--ColorButton, +Gui--ColorButton:disabled { + padding: 0px; /* reset */ + margin: 0px; /* reset */ +} + +Gui--ColorButton { + background-color: qlineargradient(spread:pad, x1:0, y1:0.3, x2:0, y2:1, stop:0 #6e6e6e, stop:1 #646464); + border: 1px solid #5a5a5a; + border-bottom-color: #505050; /* simulates shadow under the button */ +} + +Gui--ColorButton:disabled { + border-color: transparent; + background-color: rgba(0,0,0,10); +} + +Gui--ColorButton:hover, +Gui--ColorButton:focus { + border-color: #3874f2; + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #5e90fa, stop:1 #3874f2); +} + +Gui--ColorButton:pressed { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #3874f2, stop:1 #5e90fa); +} + +/* Pushbutton style for "..." inside Placement cell which launches Placement tool */ +Gui--PropertyEditor--PropertyEditor > QWidget > QWidget > QPushButton { + background-color: #6e6e6e; + border: 1px solid #5a5a5a; + min-width: 16px; /* reset it due to larger value on regular QPushButton, same or bigger value as regular QPushButton min-height */ + border-radius: 0px; + margin: 0px; /* reset */ + padding: 0px; /* reset */ +} + +/* Fix for Expressions description QFrame that is "broken" with initial reset */ +Gui--PropertyEditor--PropertyEditor > QWidget > QWidget > QWidget > QWidget > QFrame { + background-color: #6e6e6e; /* main background color */ + border: 1px solid #5a5a5a; + border-radius: 2px; + padding: 2px 6px; +} + + +/*================================================================================================== +Tool button inside QDialogs that works as QPushButtons +==================================================================================================*/ +/* found under Tools -> Customize -> Macros -> Pixmap "..." button */ +QDialog QToolButton { + color: #e0e0e0; + text-align: center; + background-color: qlineargradient(spread:pad, x1:0, y1:0.3, x2:0, y2:1, stop:0 #6e6e6e, stop:1 #646464); + border: 1px solid #5a5a5a; + border-bottom-color: #505050; /* simulates shadow under the button */ + padding: 0px; /* different than regular QPushButton */ + margin: 2px; /* different than regular QPushButton */ + min-height: 16px; /* same as QTabBar QPushButton min-width */ + border-radius: 4px; +} + +QDialog QToolButton:hover, +QDialog QToolButton:focus { + color: white; + border-color: #3874f2; + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #5e90fa, stop:1 #3874f2); +} + +QDialog QToolButton:disabled, +QDialog QToolButton:disabled:checked { + color: #6e6e6e; + border-color: #5a5a5a; + background-color: #5a5a5a; +} + +QDialog QToolButton:pressed { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #3874f2, stop:1 #5e90fa); +} + +QPushButton:checked { + background-color: #5e90fa; + border-color: #3874f2; +} + + +/*================================================================================================== +Radio button +==================================================================================================*/ +QRadioButton::indicator:unchecked{ + color: black; + background-color: rgba(255,255,255,20); + border: 1px solid #5a5a5a; +} + +QRadioButton::indicator:checked { + background-color: #5e90fa; /* QCheckBox has the same color */ + border: 1px solid #3874f2; /* QCheckBox has the same color */ + image:url(qss:images/radiobutton_light.png); +} + +QRadioButton, +QRadioButton:disabled { + color: black; + padding: 3px; + outline: none; + background-color: transparent; +} + +QRadioButton::indicator { + width: 11px; + height: 11px; + border-radius: 6px; +} + +QRadioButton::indicator:pressed { + border-color: #adc5ed; +} + +QRadioButton::indicator:disabled { + border: 1px solid #f5f5f5; +} + +QRadioButton::indicator:disabled { + color: #f5f5f5; + background-color: transparent; +} + +QRadioButton:focus { + border: none; +} + + +/*================================================================================================== +Checkbox +==================================================================================================*/ +QCheckBox, +QCheckBox:disabled { + color: black; + padding: 3px; + outline: none; + background-color: transparent; +} + +QCheckBox::indicator { + color: black; + background-color: rgba(255,255,255,20); + border: 1px solid #5a5a5a; +} + +QCheckBox::indicator { + width: 11px; + height: 11px; + border-radius:2px; +} + +QCheckBox::indicator:pressed, +QCheckBox::indicator:non-exclusive:checked:pressed, +QCheckBox::indicator:indeterminate:pressed, +QCheckBox::indicator:checked:pressed { + border-color: #adc5ed; +} + +QCheckBox::indicator:checked { + background-color: #5e90fa; /* QRadioButton has the same color */ + border: 1px solid #3874f2; /* QRadioButton has the same color */ + image:url(qss:images/checkbox_light.png); +} + +QCheckBox:disabled { + color: rgba(255,255,255,40); + background-color: transparent; +} + +QCheckBox::indicator:disabled { + background-color: rgba(255,255,255,20); + border: 1px solid rgba(255,255,255,20); +} + +QCheckBox::indicator:indeterminate { + background-color: #5e90fa; + border: 1px solid #3874f2; + image: url(qss:images/checkbox_indeterminate_light.png); +} + +QCheckBox:focus { + border: none; +} + + +/*================================================================================================== +Slider +==================================================================================================*/ +QSlider, +QSlider:active, +QSlider:!active { + border: none; + background-color: transparent; +} + +QSlider:horizontal { + padding: 0px 10px; +} + +QSlider:vertical { + padding: 10px 0px; +} + +QSlider::groove { + background-color: rgba(0,0,0,30); + border: 1px solid rgba(0,0,0,40); + border-radius: 5px; + margin: 4px 0px; +} + +QSlider::groove:horizontal { + height: 8px; +} + +QSlider::groove:vertical { + width: 8px; +} + +QSlider::groove:horizontal:disabled, +QSlider::groove:vertical:disabled { + border-color: #5a5a5a; + background-color: #5a5a5a; +} + +QSlider::handle:horizontal, +QSlider::handle:vertical { + background-color: #505050; + border: 1px solid #505050; + width: 14px; + height: 14px; + border-radius: 8px; +} + +QSlider::handle:horizontal { + margin: -4px 0; +} + +QSlider::handle:vertical { + margin: 0 -4px; +} + +QSlider::handle:horizontal:hover, +QSlider::handle:vertical:hover, +QSlider::handle:horizontal:pressed, +QSlider::handle:vertical:pressed { + border-color: #5e90fa; + background-color: #5e90fa; +} + +QSlider::handle:horizontal:disabled, +QSlider::handle:vertical:disabled { + border-color: #5a5a5a; + background-color: #5a5a5a; +} + + +/*================================================================================================== +Toolbar buttons +==================================================================================================*/ +QToolBar > QToolButton { + margin: 2px; + padding: 2px; +} + +QToolBar > QPushButton, +/*QToolBar > QComboBox, disabled because creates different margins for body and drop-down button */ +QToolBar > QAbstractSpinBox, +QToolBar > QSpinBox, +QToolBar > QDoubleSpinBox, +QToolBar > QLineEdit, +QToolBar > QTextEdit, +QToolBar > QTimeEdit, +QToolBar > QDateEdit, +QToolBar > QDateTimeEdit { + margin: 2px; + padding: 2px; +} + +QToolBar > QPushButton { + border-radius: 4px; /* same as regular QPushButton */ + min-width: 20px; /* reset it due to larger value on regular QPushButton, same or bigger value as regular QPushButton min-height */ +} + +QToolBar > QPushButton:checked { + border: 1px solid #3874f2; + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #5e90fa, stop:1 #3874f2); +} + +QToolBar > QPushButton:!checked { + background-color: qlineargradient(spread:pad, x1:0, y1:0.3, x2:0, y2:1, stop:0 #6e6e6e, stop:1 #646464); + border: 1px solid #5a5a5a; + border-bottom-color: #505050; /* simulates shadow under the button */ +} + +QToolBar > QPushButton:checked:hover { + border-color: #2053c0; +} + +QToolBar > QPushButton:!checked:hover { + color: #cbd8e6; + border-color: #505050; +} + +QToolBar > QPushButton:checked:pressed { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #3874f2, stop:1 #5e90fa); +} + +QToolBar > QPushButton:!checked:pressed { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #5a5a5a, stop:1 #6e6e6e); +} + +QToolBar > QPushButton:checked:disabled, +QToolBar > QPushButton:!checked:disabled { + border: none; + background-color: transparent; +} + +/* ToolBar menu buttons (buttons with drop-down menu) */ +QToolBar > QToolButton#qt_toolbutton_menubutton { + padding-right: 20px; /* Hack to add more width to buttons with menu */ + border: 1px solid transparent; + border-radius: 3px; +} + +QToolBar > QToolButton#qt_toolbutton_menubutton:hover, +QToolBar > QToolButton#qt_toolbutton_menubutton:pressed, +QToolBar > QToolButton#qt_toolbutton_menubutton:open { + border: 1px solid #7cabf9; +} + +QToolBar QToolButton::menu-button, +QToolBar > QToolButton#qt_toolbutton_menubutton::menu-button { + border: none; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + width: 16px; /* 16px width + 4px for border = 20px allocated above */ + outline: none; + background-color: transparent; +} + +QToolBar > QToolButton#qt_toolbutton_menubutton::menu-button:hover, +QToolBar > QToolButton#qt_toolbutton_menubutton::menu-button:pressed, +QToolBar > QToolButton#qt_toolbutton_menubutton::menu-button:open { + background-color: qlineargradient(spread:pad, x1:1, y1:0.8, x2:1, y2:0, stop:0 #5e90fa, stop:1 #7cabf9); +} + +QToolBar > QToolButton::menu-arrow { + background-image: url(qss:images/down_arrow_dark.png); + background-position: center center; + background-repeat: none; + subcontrol-origin: padding; + subcontrol-position: bottom right; + height: 10px; /* same as arrow image */ +} + +QToolBar > QToolButton::menu-arrow:hover { + background-image: url(qss:images/down_arrow_lighter.png); +} + +QToolBar > QToolButton::menu-arrow:open { + background-image: url(qss:images/down_arrow_lighter.png); +} + +/*The "show more" button (it can also be stylable with "QToolBarExtension" */ +QToolBar QToolButton#qt_toolbar_ext_button { + margin: 0px; + padding: 0px; + /*background-image: url(qss:images/more_dark.png);*/ + image: transparent; + background-repeat: none; + background-position: center left; +} + +QToolBar QToolButton#qt_toolbar_ext_button:hover { + /*background-image: url(qss:images/more_light.png);*/ + border-color: #5a5a5a; + background-color: #5a5a5a; +} + +QToolBar QToolButton#qt_toolbar_ext_button:on { + /*background-image: url(qss:images/more_light.png);*/ + border-color: #5a5a5a; + background-color: #5a5a5a; +} + + +/*================================================================================================== +Tables (spreadsheets) +==================================================================================================*/ +QTableView { + gridline-color: #a0a0a0; + selection-color: #1b3774; + selection-background-color: #cbd8e6; +} + +QTableView::item:hover { + background-color: rgba(0,0,0,10); /* temporal: is it displayed in Linux or Windows? on OSX it isn't */ +} + +QTableView::item:disabled { + color: #8c8c8c; +} + +QTableView::item:selected { + color: #1b3774; + border-color: #cbd8e6; /* same as focused background color */ + border-bottom-color: #7cabf9; /* same as focused border color */ +} + +/* fix for elements inside the cells */ +QTableView QComboBox, +QTableView QAbstractSpinBox, +QTableView QSpinBox, +QTableView QDoubleSpinBox, +QTableView QLineEdit, +QTableView QTextEdit, +QTableView QTimeEdit, +QTableView QDateEdit, +QTableView QDateTimeEdit, +QTableView QComboBox:drop-down, +QTableView QAbstractSpinBox:up-button, +QTableView QSpinBox:up-button, +QTableView QDoubleSpinBox:up-button, +QTableView QTimeEdit:up-button, +QTableView QDateEdit:up-button, +QTableView QDateTimeEdit:up-button, +QTableView QAbstractSpinBox:down-button, +QTableView QSpinBox:down-button, +QTableView QDoubleSpinBox:down-button, +QTableView QTimeEdit:down-button, +QTableView QDateEdit:down-button, +QTableView QDateTimeEdit:down-button, +QTableView Gui--ColorButton { + border-radius: 0px; +} + +QTableView QComboBox, +QTableView QAbstractSpinBox, +QTableView QSpinBox, +QTableView QDoubleSpinBox, +QTableView QLineEdit, +QTableView QTextEdit, +QTableView QTimeEdit, +QTableView QDateEdit, +QTableView QDateTimeEdit { + color: black; + background-color: transparent; + border-color: transparent; +} + +QTableView QComboBox:drop-down, +QTableView QAbstractSpinBox:up-button, +QTableView QSpinBox:up-button, +QTableView QDoubleSpinBox:up-button, +QTableView QTimeEdit:up-button, +QTableView QDateEdit:up-button, +QTableView QDateTimeEdit:up-button, +QTableView QAbstractSpinBox:down-button, +QTableView QSpinBox:down-button, +QTableView QDoubleSpinBox:down-button, +QTableView QTimeEdit:down-button, +QTableView QDateEdit:down-button, +QTableView QDateTimeEdit:down-button, +QTableView Gui--ColorButton { + background-color: rgba(0,0,0,30); +} + +QTableView QComboBox:focus, +QTableView QAbstractSpinBox:focus, +QTableView QSpinBox:focus, +QTableView QDoubleSpinBox:focus, +QTableView QLineEdit:focus, +QTableView QTextEdit:focus, +QTableView QTimeEdit:focus, +QTableView QDateEdit:focus, +QTableView QDateTimeEdit:focus { + color: #1b3774; + selection-color: white; + selection-background-color: #5e90fa; + border-color: #cbd8e6; + background-color: #cbd8e6; +} + +QTableView QComboBox:disabled, +QTableView QAbstractSpinBox:disabled, +QTableView QSpinBox:disabled, +QTableView QDoubleSpinBox:disabled, +QTableView QLineEdit:disabled, +QTableView QTextEdit:disabled, +QTableView QTimeEdit:disabled, +QTableView QDateEdit:disabled, +QTableView QDateTimeEdit:disabled { + color: rgba(0,0,0,120); + background-color: transparent; + border-color: transparent; +} + +QTableView QComboBox:read-only, +QTableView QAbstractSpinBox:read-only, +QTableView QSpinBox:read-only, +QTableView QDoubleSpinBox:read-only, +QTableView QLineEdit:read-only, +QTableView QTextEdit:read-only, +QTableView QTimeEdit:read-only, +QTableView QDateEdit:read-only, +QTableView QDateTimeEdit:read-only { + color: black; + background-color: transparent; + border-color: transparent; +} + + +/*================================================================================================== +EXPERIMENTAL +==================================================================================================*/ + +/* Fix for preventing elements in different rows to accidentaly overlap */ +QDialog QGroupBox QFrame { + margin: 2px 0px; +} + +*[mandatoryField="true"] { background-color: cyan } \ No newline at end of file diff --git a/src/Gui/Stylesheets/Dark - green.qss b/src/Gui/Stylesheets/Dark - green.qss new file mode 100644 index 000000000..dca5b629b --- /dev/null +++ b/src/Gui/Stylesheets/Dark - green.qss @@ -0,0 +1,1902 @@ +/* +ABOUT +============================================================================================================ +version 2.01 +QT theme (stylesheet) specially developed for FreeCAD (http://www.freecadweb.org/). +It might work with other software that uses QT styling. + + +LICENSE +============================================================================================================ +Copyright (c) 2016 Pablo Gil Fernández + +This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. +To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/. + + +INSTALLATION +============================================================================================================ +1) Place the .qss files and /images/ folder in the path that fits your OS: + OSX = /Users/[YOUR_USER_NAME]/Library/Preferences/FreeCAD/Gui/Stylesheets/ + WINDOWS = C:/[INSTALLATION_PATH]/FreeCAD/data/Gui/fStylesheets/ + LINUX = /home/[YOUR_USER_NAME]/.FreeCAD/Gui/Stylesheets/ + +2) In order to display correctly images: + 2.1) FreeCAD 0.16 (development builds newer than commit 5b3d50a): that's it, you are done! + + 2.2) FreeCAD 0.15: Images used in the theme need ABSOLUTE paths to be found by FreeCAD, so you should search the string "qss:images" (without "") and replace with the real path of your computer. It should be done with all the .qss files you want to install-use + find = qss:images + replace = /Users/myName/Library/Preferences/FreeCAD/Gui/Stylesheets/images + + +CUSTOMIZATION +============================================================================================================ +If you would like to change the overall look/style of the theme, just find and replace following colors in the whole file: + BACKGROUND (darker to ligher) + black + #1e1e1e + #3c3c3c + #505050 + #5a5a5a + #646464 + #6e6e6e = main background color + #787878 + #8c8c8c + #a0a0a0 + #b4b4b4 + #bebebe + #c8c8c8 + #d2d2d2 + #e0e0e0 + #f5f5f5 + white + + SELECTION (darker to lighter) + #566214 + #74831d + #819c0c + #94b30f = main selection color + #9bbc12 = used to build QSpinBox up and down buttons, it's used as color in the middle + #a5c61a + #c5d675 + #dadfc5 + + +KNOWN BUGS and TO DO +============================================================================================================ + - please, follow the link to get updated information: http://forum.freecadweb.org/viewtopic.php?f=10&t=12417 +*/ + + +/*================================================================================================== +Reset elements +==================================================================================================*/ +/* Reseting everything helps to unify styles across different operating systems */ +* { + padding: 0px; + margin: 0px; + border: 0px; + border-style: none; + border-image: none; + outline: 0; +} + +/* specific reset for elements inside QToolBar */ +QToolBar * { + margin: 0px; + padding: 0px; +} + + +/*================================================================================================== +Main window +==================================================================================================*/ +QMainWindow, +QDialog, +QToolBar { + background-color: #6e6e6e; /* main background color */ +} + +QMdiArea[showImage="true"] { + background-image: url(qss:images/background_freecad.png); + background-position: center center; + background-repeat: no-repeat; +} + + +/*================================================================================================== +MENUS +==================================================================================================*/ +QMenuBar, +QMenuBar::item { + color: #e0e0e0; + background-color: #6e6e6e; /* main background color */ +} + +QMenu, +QMenu::item { + color: #e0e0e0; + background-color: #5a5a5a; + text-decoration: none; +} + +QMenuBar::item:selected, +QMenuBar::item:pressed, +QMenu::item:selected, +QMenu::item:pressed { + color: white; + background-color: #94b30f; +} + +QMenu::right-arrow { + width: 10px; + height: 10px; + image:url(qss:images/right_arrow_dark.png); + margin-right: 2px; +} + +QMenu::right-arrow:selected { + image:url(qss:images/right_arrow_lighter.png); +} + +QMenu::item { + padding: 2px 16px 2px 26px; /* make room for icon at left */ + border: 1px solid transparent; /* reserve space for selection border */ +} + +QMenu::icon { + margin-left: 2px; +} + +QMenu::separator { + height: 1px; + background-color: rgba(255,255,255,30); + margin: 6px 4px; +} + +QMenu::indicator:non-exclusive:checked { + color: white; +} + + +/*================================================================================================== +Tool bar +==================================================================================================*/ +QToolBar { + border: none; + min-width: 32px; /* allows a minimum of space between QToolBar colums */ + min-height: 32px; /* allows a minimum of space between QToolBar rows */ +} + +QToolBar::handle:horizontal { + background-image: url(qss:images/Hmovetoolbar_dark.png); + width: 10px; + margin: 6px 2px 6px 2px; + background-position: top right; + background-repeat: repeat-y; +} + +QToolBar::handle:vertical { + background-image: url(qss:images/Vmovetoolbar_dark.png); + height: 10px; + margin: 2px 6px 2px 6px; + background-position: left bottom; + background-repeat: repeat-x; +} + +QToolBar::separator:horizontal { + background-image: url(qss:images/separtoolbar_dark.png); + width: 10px; + margin: 6px 2px 6px 2px; + background-position: center center; + background-repeat: repeat-y; +} + +QToolBar::separator:vertical { + background-image: url(qss:images/separtoolbar_dark.png); + height: 10px; + margin: 2px 6px 2px 6px; + background-position: center center; + background-repeat: repeat-x; +} + + +/*================================================================================================== +Group box +==================================================================================================*/ +QGroupBox { + color: rgba(0,0,0,120); + border:1px solid rgba(0, 0, 0, 20); /* lighter than its own border-color */; + border-radius: 3px; + margin-top: 10px; + padding: 6px; + background-color: rgba(255, 255, 255, 15); +} + +QGroupBox:title { + top: -8px; + left: 12px; +} + + +/*================================================================================================== +Tooltip +==================================================================================================*/ +QToolTip { + color: #1e1e1e; + background-color: #b4b4b4; + /*opacity: 90%; doesn't correctly work */ + padding: 4px; + border-radius: 3px; /* has no effect */ +} + + +/*================================================================================================== +Dock widget +==================================================================================================*/ +QDockWidget { + color: rgba(0,0,0,120); + titlebar-close-icon: url(qss:images/close_dark.png); + titlebar-normal-icon: url(qss:images/undock_dark.png); +} + +QDockWidget::title { + text-align: center; + background-color: rgba(0,0,0,20); + border: 4px solid #6e6e6e; /* fix to simulate margin between this :title and tabs */ /* same as main background color */ + border-radius: 6px; /* bigger than normal due to previous border fix */ + padding: 4px 0px; /* also needed because of previous border fix */ +} + +QDockWidget::close-button, +QDockWidget::float-button { + border: none; + background: transparent; + border-radius: 3px; + subcontrol-origin: padding; + subcontrol-position: right center; +} + +QDockWidget::close-button { + right: 4px; +} + +QDockWidget::float-button { + right: 22px; +} + +QDockWidget::close-button:hover, +QDockWidget::float-button:hover { + background-color: rgba(255,255,255,15); +} + +QDockWidget::close-button:pressed, +QDockWidget::float-button:pressed { + background-color: rgba(255,255,255,30); +} + +/* fix for Python Console (probably there is a smarter way to arrive to it) */ +QDockWidget > QFrame { + background-color: #c8c8c8; + border: 1px solid #505050; +} + + +/*================================================================================================== +Progress bar +==================================================================================================*/ +QProgressBar, +QProgressBar:horizontal { + color: white; + background-color: rgba(0,0,0,10); + text-align: center; + border: 1px solid rgba(0,0,0,80); + padding: 1px; + border-radius: 3px; +} +QProgressBar::chunk, +QProgressBar::chunk:horizontal { + background-color: qlineargradient(spread:pad, x1:1, y1:0.545, x2:1, y2:0, stop:0 #819c0c, stop:1 #94b30f); + border-radius: 3px; +} + + +/*================================================================================================== +Scroll +==================================================================================================*/ +QAbstractScrollArea { + border-radius: 2px; + background-color: transparent; +} + +QAbstractScrollArea::corner { + border: none; + background-color: transparent; +} + +QScrollBar:horizontal { + background-color: transparent; + height: 15px; + margin: 0px; +} + +QScrollBar::handle:vertical, +QScrollBar::handle:horizontal { + background-color: rgba(0,0,0,80); +} + +QScrollBar::handle:vertical:hover, +QScrollBar::handle:horizontal:hover { + background-color: rgba(0,0,0,100); +} + +QScrollBar::handle:horizontal { + min-width: 5px; + border-radius: 3px; + margin: 4px 15px; +} + +QScrollBar::sub-line:horizontal { + margin: 1px 3px 0px 3px; /* 1px to correctly fit the 10px width image */ + border-image: url(qss:images/left_arrow_light.png); + width: 6px; + height: 10px; + subcontrol-position: left; + subcontrol-origin: margin; +} + +QScrollBar::add-line:horizontal { + margin: 1px 3px 0px 3px; /* 1px to correctly fit the 10px width image */ + border-image: url(qss:images/right_arrow_light.png); + width: 6px; + height: 10px; + subcontrol-position: right; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:horizontal:hover, +QScrollBar::sub-line:horizontal:on { + border-image: url(qss:images/left_arrow_lighter.png); +} + +QScrollBar::add-line:horizontal:hover, +QScrollBar::add-line:horizontal:on { + border-image: url(qss:images/right_arrow_lighter.png); +} + +QScrollBar::up-arrow:horizontal, +QScrollBar::down-arrow:horizontal { + background-color: none; +} + +QScrollBar::add-page:horizontal, +QScrollBar::sub-page:horizontal { + background-color: transparent; +} + +QScrollBar:vertical { + background-color: transparent; + width: 15px; + margin: 0px; +} + +QScrollBar::handle:vertical { + min-height: 5px; + border-radius: 3px; + margin: 15px 4px; +} + +QScrollBar::sub-line:vertical { + margin: 3px 0px 3px 1px; /* 1px to correctly fit the 10px width image */ + border-image: url(qss:images/up_arrow_light.png); + height: 6px; + width: 10px; + subcontrol-position: top; + subcontrol-origin: margin; +} + +QScrollBar::add-line:vertical { + margin: 3px 0px 3px 1px; /* 1px to correctly fit the 10px width image */ + border-image: url(qss:images/down_arrow_light.png); + height: 6px; + width: 10px; + subcontrol-position: bottom; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:vertical:hover, +QScrollBar::sub-line:vertical:on { + border-image: url(qss:images/up_arrow_lighter.png); +} + +QScrollBar::add-line:vertical:hover, +QScrollBar::add-line:vertical:on { + border-image: url(qss:images/down_arrow_lighter.png); +} + +QScrollBar::up-arrow:vertical, +QScrollBar::down-arrow:vertical { + background-color: none; +} + +QScrollBar::add-page:vertical, +QScrollBar::sub-page:vertical { + background-color: transparent; +} + + +/*================================================================================================== +Tab bar +==================================================================================================*/ +QTabWidget::pane { + background-color: transparent; /* temporal (transparent background) */ /* tab content background color */ + position: absolute; +} + +QTabWidget::pane:top { + top: -1px; + border-top: 1px solid #5a5a5a; +} + +QTabWidget::pane:bottom { + bottom: -1px; + border-bottom: 1px solid #5a5a5a; +} + +QTabWidget::pane:left { + right: -1px; + border-right: 1px solid #5a5a5a; +} + +QTabWidget::pane:right { + left: -1px; + border-left: 1px solid #5a5a5a; +} + +QTabWidget::tab-bar:top, +QTabWidget::tab-bar:bottom { + left: 10px; +} + +QTabWidget::tab-bar:left, +QTabWidget::tab-bar:right { + top: 10px; +} + +QTabBar { + qproperty-drawBase: 0; /* important */ + background-color: transparent; +} + +/* Workaround for QTabBars created from docked QDockWidgets which don't draw the border if not set and reseted as follows: */ +QTabBar { + border-top: 1px solid #5a5a5a; /* set color for all QTabBars */ +} +QDockWidget QTabBar { + border-color: transparent; /* set color for all QTabBars but ones created from QDockWidget */ +} +QDialog QTabBar { + border-color: transparent; /* set color for QTabBars inside Preferences dialog */ +} +/* end fix */ + +QTabBar::tab { + background-color: transparent; + border: 1px solid transparent; + padding: 3px; +} + +QTabBar::tab:top, +QTabBar::tab:bottom { + border-top-width: 4px; /* same as selected tab colored border in order to center close-button */ + border-bottom-width: 4px; /* same as selected tab colored border in order to center close-button */ + min-width: 11ex; + margin-left: 2px; + margin-right: 2px; +} + +QTabBar::tab:left, +QTabBar::tab:right { + border-left-width: 4px; /* same as selected tab colored border in order to center close-button */ + border-right-width: 4px; /* same as selected tab colored border in order to center close-button */ + min-height: 14ex; + margin-top: 2px; + margin-bottom: 2px; +} + +QTabBar::tab:selected { + color: #d2d2d2; + background-color: transparent; /* temporal (transparent background) */ + border-color: #5a5a5a; +} + +QTabBar::tab:top:selected { + border-top: 4px solid qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #94b30f, stop:1 #819c0c); /* selection color */ + border-bottom-color: #6e6e6e; /* same as tab content background color */ +} + +QTabBar::tab:bottom:selected { + border-bottom: 4px solid qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #94b30f, stop:1 #819c0c); /* selection color */ + border-top-color: #6e6e6e; /* same as tab content background color */ +} + +QTabBar::tab:right:selected { + border-left: 4px solid qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 #94b30f, stop:1 #819c0c); /* selection color */ + border-right-color: #6e6e6e; /* same as tab content background color */ +} + +QTabBar::tab:left:selected { + border-right: 4px solid qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 #94b30f, stop:1 #819c0c); /* selection color */ + border-left-color: #6e6e6e; /* same as tab content background color */ +} + +QTabBar::tab:!selected { + color: rgba(0,0,0,120); +} + +QTabBar::tab:!selected:hover { + color: rgba(0,0,0,180); + background-color: rgba(0,0,0,20); +} + +QTabBar::tab:first:selected { + margin-left: 0; /* the first selected tab has nothing to overlap with on the left */ +} + +QTabBar::tab:last:selected { + margin-right: 0; /* the last selected tab has nothing to overlap with on the right */ +} + +QTabBar::tab:only-one { + margin: 0; /* if there is only one tab, we don't want overlapping margins */ +} + +/* hack to access Preference TabBar background */ +QDialog#Gui__Dialog__DlgPreferences > QFrame QFrame { + background-color: transparent; /* main background color (in Windows is #6e6e6e) */ +} + +/* fix for previous hack that broke QTabWidget background on Windows */ +QDialog#Gui__Dialog__DlgPreferences QTabWidget::pane { + background-color: transparent; /* temporal (transparent background) */ +} + +/* hack to correctly align Preferences icon list on OSX */ +QDialog#Gui__Dialog__DlgPreferences > QListView { + min-width: 130px; +} + +/* unique styles for sections inside Preferences */ +QDialog#Gui__Dialog__DlgPreferences > QListView::item { + border-radius: 6px; +} + +QDialog#Gui__Dialog__DlgPreferences > QListView::item:hover { + background-color: #b4b4b4; +} + +QDialog#Gui__Dialog__DlgPreferences > QListView::item:selected { + color: white; + background-color: #94b30f; + border: 3px solid #819c0c; +} + + +/*================================================================================================== +Tab bar buttons +==================================================================================================*/ +/* Close button */ +QTabBar::close-button { + subcontrol-origin: margin; + subcontrol-position: center right; /* only works for QT 4.6 and newer */; + border-radius: 2px; + background-image: url(qss:images/close_dark.png); + background-position: center center; + background-repeat: none; +} + +QTabBar::close-button:hover { + background-color: rgba(255,255,255,20); +} + +QTabBar::close-button:pressed { + background-color: rgba(255,255,255,30); +} + +/* Fix for lists inside Model tab */ +QDockWidget QTreeView, +QDockWidget QListView, +QDockWidget QTableView { + margin: 6px; + border: 1px solid #505050; /* same as regular QTreeView, QListView and QTableView */ + min-height: 40px; /* neccesary in some areas of FreeCAD */ +} + +/* Buttons to scroll tabs if there is not space to show all of them: */ +QTabBar::scroller { + width: 20px; /* the width of the scroll buttons */ +} + +QTabBar QToolButton, +QTabBar QToolButton:hover { + background-color: #6e6e6e; /* same as main background color */ +} + +QTabBar QToolButton::right-arrow:enabled { + image: url(qss:images/right_arrow_dark.png); +} + +QTabBar QToolButton::right-arrow:disabled, +QTabBar QToolButton::right-arrow:off { + image: url(qss:images/right_arrow_disabled_dark.png); +} + +QTabBar QToolButton::right-arrow:hover { + image: url(qss:images/right_arrow_darker.png); +} + + QTabBar QToolButton::left-arrow:enabled { + image: url(qss:images/left_arrow_dark.png); +} + + QTabBar QToolButton::left-arrow:disabled, + QTabBar QToolButton::left-arrow:off { + image: url(qss:images/left_arrow_disabled_dark.png); +} + + QTabBar QToolButton::left-arrow:hover { + image: url(qss:images/left_arrow_darker.png); +} + + QTabBar QToolButton::up-arrow:enabled { + image: url(qss:images/up_arrow_dark.png); +} + + QTabBar QToolButton::up-arrow:disabled, + QTabBar QToolButton::up-arrow:off { + image: url(qss:images/up_arrow_disabled_dark.png); +} + + QTabBar QToolButton::up-arrow:hover { + image: url(qss:images/up_arrow_darker.png); +} + + QTabBar QToolButton::down-arrow:enabled { + image: url(qss:images/down_arrow_dark.png); +} + + QTabBar QToolButton::down-arrow:disabled, + QTabBar QToolButton::down-arrow:off { + image: url(qss:images/down_arrow_disabled_dark.png); +} + + QTabBar QToolButton::down-arrow:hover { + image: url(qss:images/down_arrow_darker.png); +} + +QTabBar::tear { + /* default OS tear better */ +} + + +/*================================================================================================== +Tree and list views +==================================================================================================*/ +QTreeView, +QListView, +QTableView { + background-color: #c8c8c8; + alternate-background-color: #bebebe; /* related with QListView background */ + border: 1px solid #505050; + selection-color: white; + selection-background-color: #94b30f; /* should be similar to QListView::item selected background-color */ + show-decoration-selected: 1; /* make the selection span the entire width of the view */ + border-radius: 3px; +} + +QListView::item:hover, +QTreeView::item:hover { + background-color: transparent; /* fix to homogenize it on all OSs */ +} + +QListView::item:selected, +QTreeView::item:selected { + color: white; /* should be similar to QListView selection-color */ + background-color: #94b30f; /* should be similar to QListView selection-background-color */ + show-decoration-selected: 1; /* make the selection span the entire width of the view */ +} + +/* Property Editor QTreeView (FreeCAD custom widget) */ +Gui--PropertyEditor--PropertyEditor { + gridline-color: #a0a0a0; /* same as Group header background */ +} + +/* fix for column items background when a link is present */ +Gui--PropertyEditor--PropertyEditor > QWidget > QFrame:focus { + background-color: #dadfc5; /* same as focused background color */ +} + +/* hack to hide weird redundant information inside the value of a Placement cell */ +Gui--PropertyEditor--PropertyEditor > QWidget > QWidget > QLabel, +Gui--PropertyEditor--PropertyEditor > QWidget > QWidget > QLabel:disabled { + color: transparent; + background-color: transparent; + border: none; + border-radius: 0px; + margin: 0px; + padding: 0px; +} + +/* hack to hide non editable cells inside Property values */ +Gui--PropertyEditor--PropertyEditor QLineEdit:read-only, +Gui--PropertyEditor--PropertyEditor QLineEdit:disabled, +Gui--PropertyEditor--PropertyEditor QAbstractSpinBox:read-only, +Gui--PropertyEditor--PropertyEditor QAbstractSpinBox:disabled { + color: transparent; + border-color: transparent; + background-color: transparent; + selection-color: transparent; + selection-background-color: transparent; +} + +/* hack to disable margin inside Property values to following elements */ +Gui--PropertyEditor--PropertyEditor QSpinBox, +Gui--PropertyEditor--PropertyEditor QDoubleSpinBox, +Gui--PropertyEditor--PropertyEditor QAbstractSpinBox, +Gui--PropertyEditor--PropertyEditor QLineEdit, +Gui--PropertyEditor--PropertyEditor QComboBox { + margin-left: 0px; + margin-right: 0px; + padding-top: 0px; + padding-bottom: 0px; +} + +/* set border-radius to 0px inside list views */ +QTreeView > QWidget > QComboBox, +QTreeView > QWidget > QAbstractSpinBox, +QTreeView > QWidget > QSpinBox, +QTreeView > QWidget > QDoubleSpinBox, +QTreeView > QWidget > QLineEdit, +QTreeView > QWidget > QTextEdit, +QTreeView > QWidget > QTimeEdit, +QTreeView > QWidget > QDateEdit, +QTreeView > QWidget > QDateTimeEdit, +QTreeView > QWidget > QComboBox:drop-down, +QTreeView > QWidget > QAbstractSpinBox:up-button, +QTreeView > QWidget > QSpinBox:up-button, +QTreeView > QWidget > QDoubleSpinBox:up-button, +QTreeView > QWidget > QTimeEdit:up-button, +QTreeView > QWidget > QDateEdit:up-button, +QTreeView > QWidget > QDateTimeEdit:up-button, +QTreeView > QWidget > QAbstractSpinBox:down-button, +QTreeView > QWidget > QSpinBox:down-button, +QTreeView > QWidget > QDoubleSpinBox:down-button, +QTreeView > QWidget > QTimeEdit:down-button, +QTreeView > QWidget > QDateEdit:down-button, +QTreeView > QWidget > QDateTimeEdit:down-button, +QTreeView > QWidget > Gui--ColorButton { + border-radius: 0px; +} + +/* set focus colors to best viewing the editable fields */ +QTreeView > QWidget > QComboBox:focus, +QTreeView > QWidget > QAbstractSpinBox:focus, +QTreeView > QWidget > QSpinBox:focus, +QTreeView > QWidget > QDoubleSpinBox:focus, +QTreeView > QWidget > QLineEdit:focus, +QTreeView > QWidget > QTextEdit:focus, +QTreeView > QWidget > QTimeEdit:focus, +QTreeView > QWidget > QDateEdit:focus, +QTreeView > QWidget > QDateTimeEdit:focus { + border-color: #dadfc5; /* same as focused background color */ + border-bottom-color: #a5c61a; /* same as focused border color */ +} + +QTreeView > QWidget > QAbstractSpinBox:read-only, +QTreeView > QWidget > QSpinBox:read-only, +QTreeView > QWidget > QDoubleSpinBox:read-only, +QTreeView > QWidget > QLineEdit:read-only, +QTreeView > QWidget > QTextEdit:read-only, +QTreeView > QWidget > QTimeEdit:read-only, +QTreeView > QWidget > QDateEdit:read-only, +QTreeView > QWidget > QDateTimeEdit:read-only { + color: transparent; + background-color: transparent; + border-color: transparent; +} + +/* Fix to correctly (not totally) draw QTextEdit on OSX at Page properties: "Page result", "Template" and "Editable Texts" */ +Gui--PropertyEditor--PropertyEditor > QWidget > QWidget > QWidget { + min-height: 14px; +} + + +/*================================================================================================== +Header of tree and list views +==================================================================================================*/ +QHeaderView { + color: #c8c8c8; + background-color: #505050; + border-top-left-radius: 2px; /* 1px less than its container */ + border-top-right-radius: 2px; /* 1px less than its container */ + border-bottom-left-radius: 0px; + border-bottom-right-radius: 0px; +} + +QHeaderView::section { + border:none; + padding: 4px 6px; + background-color: #505050; +} + +QHeaderView::section:horizontal { + padding: 4px 6px; /* left and right value similar to QHeaderView::section */ + border-right: 1px solid rgba(255,255,255,30); +} + +QHeaderView::section:vertical { + border-bottom: 1px solid rgba(255,255,255,30); +} + +QTableCornerButton::section { + background-color: #505050; + border-top: none; + border-left: none; + border-right: 1px solid rgba(255,255,255,30); + border-bottom: 1px solid rgba(255,255,255,30); +} + +QHeaderView::section:last { + border-right: none; +} + +QHeaderView::up-arrow { + image: url(qss:images/up_arrow_light.png); +} + +QHeaderView::up-arrow:hover { + image: url(qss:images/up_arrow_lighter.png); +} + +QHeaderView::down-arrow { + image: url(qss:images/down_arrow_light.png); +} + +QHeaderView::down-arrow:hover { + image: url(qss:images/down_arrow_lighter.png); +} + +/* Group header inside Property Editor (FreeCAD custom widget) */ +Gui--PropertyEditor--PropertyEditor { + qproperty-groupTextColor: #505050; + qproperty-groupBackground: #8c8c8c; +} + + +/*================================================================================================== +Branch system for QTreeViews +==================================================================================================*/ +QTreeView::branch { + background: transparent; +} + +QTreeView::branch:has-siblings:!adjoins-item { + border-image: url(qss:images/branch_vline.png) 0; +} + +QTreeView::branch:has-siblings:adjoins-item { + border-image: url(qss:images/branch_more.png) 0; +} + +QTreeView::branch:!has-children:!has-siblings:adjoins-item { + border-image: url(qss:images/branch_end.png) 0; +} + +QTreeView::branch:closed:has-children:has-siblings { + image: url(qss:images/branch_closed_dark.png); +} + +QTreeView::branch:has-children:!has-siblings:closed { + image: url(qss:images/branch_closed_dark.png); + border-image: url(qss:images/branch_end.png) 0; +} + +QTreeView::branch:open:has-children:has-siblings { + image: url(qss:images/branch_open_dark.png); + border-image: url(qss:images/branch_more.png) 0; +} + +QTreeView::branch:open:has-children:!has-siblings { + image: url(qss:images/branch_open_dark.png); + border-image: url(qss:images/branch_end.png) 0; +} + + +/*================================================================================================== +Text/Python editor (macros, etc...) +==================================================================================================*/ +QPlainTextEdit, +QPlainTextEdit:focus { + background-color: #c8c8c8; + selection-color: white; + selection-background-color: #819c0c; + border: 1px solid #505050; + border-radius: 3px; + margin: 4px; +} + + +/*================================================================================================== +Splitter and windows separator +==================================================================================================*/ +QSplitter::handle { + margin: 0px 11px; + padding: 0px; +} + +QSplitter::handle:vertical { + background-image: url(qss:images/splitter_horizontal_dark.png); + background-position: center center; + background-repeat: none; + margin: 2px 4px 2px 4px; + height: 2px; +} + +QSplitter::handle:horizontal { + background-image: url(qss:images/splitter_vertical_dark.png); + background-position: center center; + background-repeat: none; + margin: 4px 2px 4px 2px; + width: 2px; +} + +/* Similar to the splitter is the following window separator: */ +QMainWindow::separator { + background-position: center center; + background-repeat: none; +} + +QMainWindow::separator:horizontal { + height: 2px; + background-image: url(qss:images/splitter_horizontal_dark.png); + margin: 4px 2px 4px 2px; +} + +QMainWindow::separator:vertical { + width: 2px; + background-image: url(qss:images/splitter_vertical_dark.png); + margin: 2px 4px 2px 4px; +} + + +/*================================================================================================== +Tasks panel (custom FreeCAD class) +==================================================================================================*/ +/* Action group */ +QFrame[class="panel"] { + background-color: transparent; /* temporal (transparent background) */ +} + +/* Separator line */ +QSint--ActionGroup QFrame[height="1"], +QSint--ActionGroup QFrame[height="2"], +QSint--ActionGroup QFrame[height="3"], +QSint--ActionGroup QFrame[width="1"], +QSint--ActionGroup QFrame[width="2"], +QSint--ActionGroup QFrame[width="3"] { + border-color: rgba(0,0,0,60); +} + +/* Panel header */ +QSint--ActionGroup QFrame[class="header"] { + border: none; + background-color: #505050; /* Task Panel Header background color */ + border-top-left-radius: 3px; + border-top-right-radius: 3px; + border-bottom-left-radius: 0px; + border-bottom-right-radius: 0px; + margin: 0px; + padding: 0px; +} + +QSint--ActionGroup QFrame[class="header"]:hover { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #94b30f, stop:1 #819c0c); +} + +QSint--ActionGroup QToolButton[class="header"] { + color: #e0e0e0; /* Task Panel Header text color */ + text-align: left; + font-weight: bold; + border: none; + margin: 0px; + padding: 0px; +} + +QSint--ActionGroup QFrame[class="header"] QLabel { + background-color: transparent; + background-image: url(qss:images/down_arrow_light.png); + background-repeat: none; + background-position: center center; + padding: 0px; + margin: 0px; +} + +QSint--ActionGroup QFrame[class="header"] QLabel:hover { + background-color: transparent; + background-image: url(qss:images/down_arrow_lighter.png); +} + +QSint--ActionGroup QFrame[class="header"] QLabel[fold="true"] { + background-color: transparent; + background-image: url(qss:images/up_arrow_light.png); + background-repeat: none; + background-position: center center; + padding: 0px; + margin: 0px; +} + +QSint--ActionGroup QFrame[class="header"] QLabel[fold="true"]:hover { + background-color: transparent; + background-image: url(qss:images/up_arrow_lighter.png); +} + +QSint--ActionGroup QFrame[class="content"] { + background-color: #8c8c8c; /* Task Panel background color */ + margin: 0px; + padding: 0px; + border: none; + border-top-left-radius: 0px; + border-top-right-radius: 0px; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; +} + +QSint--ActionGroup QFrame[class="content"] > QWidget { + background-color: #8c8c8c; /* Task Panel background color */ +} + +/* Fixs for tabs inside Task Panel */ +QSint--ActionGroup QFrame[class="content"] QTabBar::tab:top:selected { + border-bottom-color: #8c8c8c; /* same as Task Panel background color */ +} + +QSint--ActionGroup QFrame[class="content"] QTabBar::tab:bottom:selected { + border-top-color: #8c8c8c; /* same as Task Panel background color */ +} + +QSint--ActionGroup QFrame[class="content"] QTabBar::tab:right:selected { + border-right-color: #8c8c8c; /* same as Task Panel background color */ +} + +QSint--ActionGroup QFrame[class="content"] QTabBar::tab:left:selected { + border-left-color: #8c8c8c; /* same as Task Panel background color */ +} + + +/*================================================================================================== +Buttons +==================================================================================================*/ +/* Common */ +QComboBox, +QAbstractSpinBox, +QSpinBox, +QDoubleSpinBox, +QLineEdit, +QTextEdit, +QTimeEdit, +QDateEdit, +QDateTimeEdit { + color: #bebebe; + background-color: #5a5a5a; + selection-color: white; + selection-background-color: #819c0c; + border: 1px solid #5a5a5a; + border-radius: 3px; + min-width: 50px; /* it ensures the default value is correctly displayed */ + padding: 1px 2px; /* temporal: could don't be compatible with elements inside Tree/List view */ +} + +/* shifts text/number editable field to the left to make space for the up/down or drop-down buttons */ +QComboBox, +QAbstractSpinBox, +QSpinBox, +QDoubleSpinBox, +QTimeEdit, +QDateEdit, +QDateTimeEdit { + padding-right: 20px; +} + +/* when QTextEdit are no editable */ +QTextEdit:!editable { + background-color: #c8c8c8; + border: 1px solid #505050; +} + +QComboBox:focus, +QAbstractSpinBox:focus, +QSpinBox:focus, +QDoubleSpinBox:focus, +QLineEdit:focus, +QTextEdit:focus, +QTimeEdit:focus, +QDateEdit:focus, +QDateTimeEdit:focus { + color: black; + border-color: #a5c61a; + border-right-color: qlineargradient(spread:pad, x1:1, y1:0.8, x2:1, y2:0, stop:0 #94b30f, stop:1 #a5c61a); /* same as up/down or drop-down button color */ + background-color: #dadfc5; +} + +QComboBox:disabled, +QAbstractSpinBox:disabled, +QSpinBox:disabled, +QDoubleSpinBox:disabled, +QLineEdit:disabled, +QTextEdit:disabled, +QTimeEdit:disabled, +QDateEdit:disabled, +QDateTimeEdit:disabled { + color: #787878; + background-color: #5a5a5a; /* same as enabled color */ + border-color: #5a5a5a; /* same as enabled color */ +} + +QAbstractSpinBox:up-button, +QSpinBox:up-button, +QDoubleSpinBox:up-button, +QTimeEdit:up-button, +QDateEdit:up-button, +QDateTimeEdit:up-button, +QAbstractSpinBox:down-button, +QSpinBox:down-button, +QDoubleSpinBox:down-button, +QTimeEdit:down-button, +QDateEdit:down-button, +QDateTimeEdit:down-button { + background-color: #505050; /* same color for QComboBox background-color */ + subcontrol-origin: border; /* important */ + width: 20px; /* same as QComboBox ... QDateTimeEdit padding-right */ +} + +QAbstractSpinBox:up-button, +QSpinBox:up-button, +QDoubleSpinBox:up-button, +QTimeEdit:up-button, +QDateEdit:up-button, +QDateTimeEdit:up-button { + subcontrol-position: top right; + border-top-right-radius: 3px; + height: 12px; /* fix for Ubuntu that doesn't divide the up/down button into the exact middle */ +} + +QAbstractSpinBox:down-button, +QSpinBox:down-button, +QDoubleSpinBox:down-button, +QTimeEdit:down-button, +QDateEdit:down-button, +QDateTimeEdit:down-button { + subcontrol-position: bottom right; + border-bottom-right-radius: 3px; +} + +QAbstractSpinBox:up-button:focus, +QSpinBox:up-button:focus, +QDoubleSpinBox:up-button:focus, +QTimeEdit:up-button:focus, +QDateEdit:up-button:focus, +QDateTimeEdit:up-button:focus { + background-color: qlineargradient(spread:pad, x1:1, y1:0.8, x2:1, y2:0, stop:0 #9bbc12, stop:1 #a5c61a); +} + +QAbstractSpinBox:down-button:focus, +QSpinBox:down-button:focus, +QDoubleSpinBox:down-button:focus, +QTimeEdit:down-button:focus, +QDateEdit:down-button:focus, +QDateTimeEdit:down-button:focus { + background-color: qlineargradient(spread:pad, x1:1, y1:0.8, x2:1, y2:0, stop:0 #94b30f, stop:1 #9bbc12); +} + +QAbstractSpinBox:up-button:disabled, +QSpinBox:up-button:disabled, +QDoubleSpinBox:up-button:disabled, +QTimeEdit:up-button:disabled, +QDateEdit:up-button:disabled, +QDateTimeEdit:up-button:disabled, +QAbstractSpinBox:down-button:disabled, +QSpinBox:down-button:disabled, +QDoubleSpinBox:down-button:disabled, +QTimeEdit:down-button:disabled, +QDateEdit:down-button:disabled, +QDateTimeEdit:down-button:disabled { + background-color: transparent; +} + +QAbstractSpinBox::up-arrow, +QSpinBox::up-arrow, +QDoubleSpinBox::up-arrow, +QTimeEdit::up-arrow, +QDateEdit::up-arrow, +QDateTimeEdit::up-arrow { + image: url(qss:images/up_arrow_light.png); + top: 0px; /* fix simetry between up and down images */ +} + +QAbstractSpinBox::up-arrow:focus, +QSpinBox::up-arrow:focus, +QDoubleSpinBox::up-arrow:focus, +QTimeEdit::up-arrow:focus, +QDateEdit::up-arrow:focus, +QDateTimeEdit::up-arrow:focus { + image: url(qss:images/up_arrow_lighter.png); +} + +QAbstractSpinBox::up-arrow:off, +QSpinBox::up-arrow:off, +QDoubleSpinBox::up-arrow:off, +QTimeEdit::up-arrow:off, +QDateEdit::up-arrow:off, +QDateTimeEdit::up-arrow:off { + image: url(qss:images/up_arrow_disabled_dark.png); +} + +QAbstractSpinBox::up-arrow:disabled, +QSpinBox::up-arrow:disabled, +QDoubleSpinBox::up-arrow:disabled, +QTimeEdit::up-arrow:disabled, +QDateEdit::up-arrow:disabled, +QDateTimeEdit::up-arrow:disabled { + image: url(qss:images/up_arrow_disabled_dark.png); +} + +QAbstractSpinBox::down-arrow, +QSpinBox::down-arrow, +QDoubleSpinBox::down-arrow, +QTimeEdit::down-arrow, +QDateEdit::down-arrow, +QDateTimeEdit::down-arrow { + image: url(qss:images/down_arrow_light.png); + bottom: 0px; /* fix simetry between up and down images */ +} + +QAbstractSpinBox::down-arrow:focus, +QSpinBox::down-arrow:focus, +QDoubleSpinBox::down-arrow:focus, +QTimeEdit::down-arrow:focus, +QDateEdit::down-arrow:focus, +QDateTimeEdit::down-arrow:focus { + image: url(qss:images/down_arrow_lighter.png); +} + +QAbstractSpinBox::down-arrow:off, +QSpinBox::down-arrow:off, +QDoubleSpinBox::down-arrow:off, +QTimeEdit::down-arrow:off, +QDateEdit::down-arrow:off, +QDateTimeEdit::down-arrow:off { + image: url(qss:images/down_arrow_disabled_dark.png); +} + +QAbstractSpinBox::down-arrow:disabled, +QSpinBox::down-arrow:disabled, +QDoubleSpinBox::down-arrow:disabled, +QTimeEdit::down-arrow:disabled, +QDateEdit::down-arrow:disabled, +QDateTimeEdit::down-arrow:disabled { + image: url(qss:images/down_arrow_disabled_dark.png); +} + +/* ComboBox */ +QComboBox::drop-down { + background-color: #505050; /* same color as up/down QSpinBox ... QDateTimeView background-color */ + subcontrol-origin: border; /* important */ + subcontrol-position: top right; + width: 20px; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} + +QComboBox::drop-down:on, +QComboBox::drop-down:focus { + background-color: qlineargradient(spread:pad, x1:1, y1:0.8, x2:1, y2:0, stop:0 #94b30f, stop:1 #a5c61a); +} + +QComboBox::down-arrow { + image: url(qss:images/down_arrow_light.png); +} + +QComboBox::down-arrow:on, +QComboBox::down-arrow:focus { + image: url(qss:images/down_arrow_lighter.png); +} + +QComboBox::down-arrow:off, +QComboBox::down-arrow:disabled { + image: url(qss:images/down_arrow_disabled_dark.png); +} + +/* ComboBox menu */ +QComboBox { + selection-color: white; + selection-background-color: #94b30f; +} + +QComboBox QAbstractItemView { + color: #bebebe; /* same as regular QComboBox color */ + background-color: transparent; + selection-color: white; + selection-background-color: #94b30f; + border-width: 5px 0px 5px 0px; + border-style: solid; + border-color: transparent; + margin: 0px -1px 0px 0px; /* hack for Mac... try it on Windows and Linux */ +} + + +/*================================================================================================== +Push button +==================================================================================================*/ +QPushButton { + color: #e0e0e0; + text-align: center; + background-color: qlineargradient(spread:pad, x1:0, y1:0.3, x2:0, y2:1, stop:0 #6e6e6e, stop:1 #646464); + border: 1px solid #5a5a5a; + border-bottom-color: #505050; /* simulates shadow under the button */ + padding: 4px 22px; + margin: 4px 4px; + min-height: 16px; /* same as QTabBar QPushButton min-width */ + border-radius: 4px; +} + +QPushButton:hover, +QPushButton:focus { + color: white; + border-color: #819c0c; + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #94b30f, stop:1 #819c0c); +} + +QPushButton:disabled, +QPushButton:disabled:checked { + color: #787878; + background-color: #5a5a5a; /* same as enabled color */ + border-color: #5a5a5a; /* same as enabled color */ +} + +QPushButton:pressed { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #819c0c, stop:1 #94b30f); +} + +QPushButton:checked { + background-color: #94b30f; + border-color: #819c0c; +} + +/* Color Buttons */ +Gui--ColorButton, +Gui--ColorButton:disabled { + padding: 0px; /* reset */ + margin: 0px; /* reset */ +} + +Gui--ColorButton { + background-color: qlineargradient(spread:pad, x1:0, y1:0.3, x2:0, y2:1, stop:0 #6e6e6e, stop:1 #646464); + border: 1px solid #5a5a5a; + border-bottom-color: #505050; /* simulates shadow under the button */ +} + +Gui--ColorButton:disabled { + border-color: transparent; + background-color: rgba(0,0,0,10); +} + +Gui--ColorButton:hover, +Gui--ColorButton:focus { + border-color: #819c0c; + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #94b30f, stop:1 #819c0c); +} + +Gui--ColorButton:pressed { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #819c0c, stop:1 #94b30f); +} + +/* Pushbutton style for "..." inside Placement cell which launches Placement tool */ +Gui--PropertyEditor--PropertyEditor > QWidget > QWidget > QPushButton { + background-color: #6e6e6e; + border: 1px solid #5a5a5a; + min-width: 16px; /* reset it due to larger value on regular QPushButton, same or bigger value as regular QPushButton min-height */ + border-radius: 0px; + margin: 0px; /* reset */ + padding: 0px; /* reset */ +} + +/* Fix for Expressions description QFrame that is "broken" with initial reset */ +Gui--PropertyEditor--PropertyEditor > QWidget > QWidget > QWidget > QWidget > QFrame { + background-color: #6e6e6e; /* main background color */ + border: 1px solid #5a5a5a; + border-radius: 2px; + padding: 2px 6px; +} + + +/*================================================================================================== +Tool button inside QDialogs that works as QPushButtons +==================================================================================================*/ +/* found under Tools -> Customize -> Macros -> Pixmap "..." button */ +QDialog QToolButton { + color: #e0e0e0; + text-align: center; + background-color: qlineargradient(spread:pad, x1:0, y1:0.3, x2:0, y2:1, stop:0 #6e6e6e, stop:1 #646464); + border: 1px solid #5a5a5a; + border-bottom-color: #505050; /* simulates shadow under the button */ + padding: 0px; /* different than regular QPushButton */ + margin: 2px; /* different than regular QPushButton */ + min-height: 16px; /* same as QTabBar QPushButton min-width */ + border-radius: 4px; +} + +QDialog QToolButton:hover, +QDialog QToolButton:focus { + color: white; + border-color: #819c0c; + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #94b30f, stop:1 #819c0c); +} + +QDialog QToolButton:disabled, +QDialog QToolButton:disabled:checked { + color: #6e6e6e; + border-color: #5a5a5a; + background-color: #5a5a5a; +} + +QDialog QToolButton:pressed { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #819c0c, stop:1 #94b30f); +} + +QPushButton:checked { + background-color: #94b30f; + border-color: #819c0c; +} + + +/*================================================================================================== +Radio button +==================================================================================================*/ +QRadioButton::indicator:unchecked{ + color: black; + background-color: rgba(255,255,255,20); + border: 1px solid #5a5a5a; +} + +QRadioButton::indicator:checked { + background-color: #94b30f; /* QCheckBox has the same color */ + border: 1px solid #819c0c; /* QCheckBox has the same color */ + image:url(qss:images/radiobutton_light.png); +} + +QRadioButton, +QRadioButton:disabled { + color: black; + padding: 3px; + outline: none; + background-color: transparent; +} + +QRadioButton::indicator { + width: 11px; + height: 11px; + border-radius: 6px; +} + +QRadioButton::indicator:pressed { + border-color: #c5d675; +} + +QRadioButton::indicator:disabled { + border: 1px solid #f5f5f5; +} + +QRadioButton::indicator:disabled { + color: #f5f5f5; + background-color: transparent; +} + +QRadioButton:focus { + border: none; +} + + +/*================================================================================================== +Checkbox +==================================================================================================*/ +QCheckBox, +QCheckBox:disabled { + color: black; + padding: 3px; + outline: none; + background-color: transparent; +} + +QCheckBox::indicator { + color: black; + background-color: rgba(255,255,255,20); + border: 1px solid #5a5a5a; +} + +QCheckBox::indicator { + width: 11px; + height: 11px; + border-radius:2px; +} + +QCheckBox::indicator:pressed, +QCheckBox::indicator:non-exclusive:checked:pressed, +QCheckBox::indicator:indeterminate:pressed, +QCheckBox::indicator:checked:pressed { + border-color: #c5d675; +} + +QCheckBox::indicator:checked { + background-color: #94b30f; /* QRadioButton has the same color */ + border: 1px solid #819c0c; /* QRadioButton has the same color */ + image:url(qss:images/checkbox_light.png); +} + +QCheckBox:disabled { + color: rgba(255,255,255,40); + background-color: transparent; +} + +QCheckBox::indicator:disabled { + background-color: rgba(255,255,255,20); + border: 1px solid rgba(255,255,255,20); +} + +QCheckBox::indicator:indeterminate { + background-color: #94b30f; + border: 1px solid #819c0c; + image: url(qss:images/checkbox_indeterminate_light.png); +} + +QCheckBox:focus { + border: none; +} + + +/*================================================================================================== +Slider +==================================================================================================*/ +QSlider, +QSlider:active, +QSlider:!active { + border: none; + background-color: transparent; +} + +QSlider:horizontal { + padding: 0px 10px; +} + +QSlider:vertical { + padding: 10px 0px; +} + +QSlider::groove { + background-color: rgba(0,0,0,30); + border: 1px solid rgba(0,0,0,40); + border-radius: 5px; + margin: 4px 0px; +} + +QSlider::groove:horizontal { + height: 8px; +} + +QSlider::groove:vertical { + width: 8px; +} + +QSlider::groove:horizontal:disabled, +QSlider::groove:vertical:disabled { + border-color: #5a5a5a; + background-color: #5a5a5a; +} + +QSlider::handle:horizontal, +QSlider::handle:vertical { + background-color: #505050; + border: 1px solid #505050; + width: 14px; + height: 14px; + border-radius: 8px; +} + +QSlider::handle:horizontal { + margin: -4px 0; +} + +QSlider::handle:vertical { + margin: 0 -4px; +} + +QSlider::handle:horizontal:hover, +QSlider::handle:vertical:hover, +QSlider::handle:horizontal:pressed, +QSlider::handle:vertical:pressed { + border-color: #94b30f; + background-color: #94b30f; +} + +QSlider::handle:horizontal:disabled, +QSlider::handle:vertical:disabled { + border-color: #5a5a5a; + background-color: #5a5a5a; +} + + +/*================================================================================================== +Toolbar buttons +==================================================================================================*/ +QToolBar > QToolButton { + margin: 2px; + padding: 2px; +} + +QToolBar > QPushButton, +/*QToolBar > QComboBox, disabled because creates different margins for body and drop-down button */ +QToolBar > QAbstractSpinBox, +QToolBar > QSpinBox, +QToolBar > QDoubleSpinBox, +QToolBar > QLineEdit, +QToolBar > QTextEdit, +QToolBar > QTimeEdit, +QToolBar > QDateEdit, +QToolBar > QDateTimeEdit { + margin: 2px; + padding: 2px; +} + +QToolBar > QPushButton { + border-radius: 4px; /* same as regular QPushButton */ + min-width: 20px; /* reset it due to larger value on regular QPushButton, same or bigger value as regular QPushButton min-height */ +} + +QToolBar > QPushButton:checked { + border: 1px solid #819c0c; + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #94b30f, stop:1 #819c0c); +} + +QToolBar > QPushButton:!checked { + background-color: qlineargradient(spread:pad, x1:0, y1:0.3, x2:0, y2:1, stop:0 #6e6e6e, stop:1 #646464); + border: 1px solid #5a5a5a; + border-bottom-color: #505050; /* simulates shadow under the button */ +} + +QToolBar > QPushButton:checked:hover { + border-color: #74831d; +} + +QToolBar > QPushButton:!checked:hover { + color: #dadfc5; + border-color: #505050; +} + +QToolBar > QPushButton:checked:pressed { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #819c0c, stop:1 #94b30f); +} + +QToolBar > QPushButton:!checked:pressed { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #5a5a5a, stop:1 #6e6e6e); +} + +QToolBar > QPushButton:checked:disabled, +QToolBar > QPushButton:!checked:disabled { + border: none; + background-color: transparent; +} + +/* ToolBar menu buttons (buttons with drop-down menu) */ +QToolBar > QToolButton#qt_toolbutton_menubutton { + padding-right: 20px; /* Hack to add more width to buttons with menu */ + border: 1px solid transparent; + border-radius: 3px; +} + +QToolBar > QToolButton#qt_toolbutton_menubutton:hover, +QToolBar > QToolButton#qt_toolbutton_menubutton:pressed, +QToolBar > QToolButton#qt_toolbutton_menubutton:open { + border: 1px solid #a5c61a; +} + +QToolBar QToolButton::menu-button, +QToolBar > QToolButton#qt_toolbutton_menubutton::menu-button { + border: none; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + width: 16px; /* 16px width + 4px for border = 20px allocated above */ + outline: none; + background-color: transparent; +} + +QToolBar > QToolButton#qt_toolbutton_menubutton::menu-button:hover, +QToolBar > QToolButton#qt_toolbutton_menubutton::menu-button:pressed, +QToolBar > QToolButton#qt_toolbutton_menubutton::menu-button:open { + background-color: qlineargradient(spread:pad, x1:1, y1:0.8, x2:1, y2:0, stop:0 #94b30f, stop:1 #a5c61a); +} + +QToolBar > QToolButton::menu-arrow { + background-image: url(qss:images/down_arrow_dark.png); + background-position: center center; + background-repeat: none; + subcontrol-origin: padding; + subcontrol-position: bottom right; + height: 10px; /* same as arrow image */ +} + +QToolBar > QToolButton::menu-arrow:hover { + background-image: url(qss:images/down_arrow_lighter.png); +} + +QToolBar > QToolButton::menu-arrow:open { + background-image: url(qss:images/down_arrow_lighter.png); +} + +/*The "show more" button (it can also be stylable with "QToolBarExtension" */ +QToolBar QToolButton#qt_toolbar_ext_button { + margin: 0px; + padding: 0px; + /*background-image: url(qss:images/more_dark.png);*/ + image: transparent; + background-repeat: none; + background-position: center left; +} + +QToolBar QToolButton#qt_toolbar_ext_button:hover { + /*background-image: url(qss:images/more_light.png);*/ + border-color: #5a5a5a; + background-color: #5a5a5a; +} + +QToolBar QToolButton#qt_toolbar_ext_button:on { + /*background-image: url(qss:images/more_light.png);*/ + border-color: #5a5a5a; + background-color: #5a5a5a; +} + + +/*================================================================================================== +Tables (spreadsheets) +==================================================================================================*/ +QTableView { + gridline-color: #a0a0a0; + selection-color: #566214; + selection-background-color: #dadfc5; +} + +QTableView::item:hover { + background-color: rgba(0,0,0,10); /* temporal: is it displayed in Linux or Windows? on OSX it isn't */ +} + +QTableView::item:disabled { + color: #8c8c8c; +} + +QTableView::item:selected { + color: #566214; + border-color: #dadfc5; /* same as focused background color */ + border-bottom-color: #a5c61a; /* same as focused border color */ +} + +/* fix for elements inside the cells */ +QTableView QComboBox, +QTableView QAbstractSpinBox, +QTableView QSpinBox, +QTableView QDoubleSpinBox, +QTableView QLineEdit, +QTableView QTextEdit, +QTableView QTimeEdit, +QTableView QDateEdit, +QTableView QDateTimeEdit, +QTableView QComboBox:drop-down, +QTableView QAbstractSpinBox:up-button, +QTableView QSpinBox:up-button, +QTableView QDoubleSpinBox:up-button, +QTableView QTimeEdit:up-button, +QTableView QDateEdit:up-button, +QTableView QDateTimeEdit:up-button, +QTableView QAbstractSpinBox:down-button, +QTableView QSpinBox:down-button, +QTableView QDoubleSpinBox:down-button, +QTableView QTimeEdit:down-button, +QTableView QDateEdit:down-button, +QTableView QDateTimeEdit:down-button, +QTableView Gui--ColorButton { + border-radius: 0px; +} + +QTableView QComboBox, +QTableView QAbstractSpinBox, +QTableView QSpinBox, +QTableView QDoubleSpinBox, +QTableView QLineEdit, +QTableView QTextEdit, +QTableView QTimeEdit, +QTableView QDateEdit, +QTableView QDateTimeEdit { + color: black; + background-color: transparent; + border-color: transparent; +} + +QTableView QComboBox:drop-down, +QTableView QAbstractSpinBox:up-button, +QTableView QSpinBox:up-button, +QTableView QDoubleSpinBox:up-button, +QTableView QTimeEdit:up-button, +QTableView QDateEdit:up-button, +QTableView QDateTimeEdit:up-button, +QTableView QAbstractSpinBox:down-button, +QTableView QSpinBox:down-button, +QTableView QDoubleSpinBox:down-button, +QTableView QTimeEdit:down-button, +QTableView QDateEdit:down-button, +QTableView QDateTimeEdit:down-button, +QTableView Gui--ColorButton { + background-color: rgba(0,0,0,30); +} + +QTableView QComboBox:focus, +QTableView QAbstractSpinBox:focus, +QTableView QSpinBox:focus, +QTableView QDoubleSpinBox:focus, +QTableView QLineEdit:focus, +QTableView QTextEdit:focus, +QTableView QTimeEdit:focus, +QTableView QDateEdit:focus, +QTableView QDateTimeEdit:focus { + color: #566214; + selection-color: white; + selection-background-color: #94b30f; + border-color: #dadfc5; + background-color: #dadfc5; +} + +QTableView QComboBox:disabled, +QTableView QAbstractSpinBox:disabled, +QTableView QSpinBox:disabled, +QTableView QDoubleSpinBox:disabled, +QTableView QLineEdit:disabled, +QTableView QTextEdit:disabled, +QTableView QTimeEdit:disabled, +QTableView QDateEdit:disabled, +QTableView QDateTimeEdit:disabled { + color: rgba(0,0,0,120); + background-color: transparent; + border-color: transparent; +} + +QTableView QComboBox:read-only, +QTableView QAbstractSpinBox:read-only, +QTableView QSpinBox:read-only, +QTableView QDoubleSpinBox:read-only, +QTableView QLineEdit:read-only, +QTableView QTextEdit:read-only, +QTableView QTimeEdit:read-only, +QTableView QDateEdit:read-only, +QTableView QDateTimeEdit:read-only { + color: black; + background-color: transparent; + border-color: transparent; +} + + +/*================================================================================================== +EXPERIMENTAL +==================================================================================================*/ + +/* Fix for preventing elements in different rows to accidentaly overlap */ +QDialog QGroupBox QFrame { + margin: 2px 0px; +} + +*[mandatoryField="true"] { background-color: cyan } \ No newline at end of file diff --git a/src/Gui/Stylesheets/Dark - orange.qss b/src/Gui/Stylesheets/Dark - orange.qss new file mode 100644 index 000000000..e0061aa9d --- /dev/null +++ b/src/Gui/Stylesheets/Dark - orange.qss @@ -0,0 +1,1902 @@ +/* +ABOUT +============================================================================================================ +version 2.01 +QT theme (stylesheet) specially developed for FreeCAD (http://www.freecadweb.org/). +It might work with other software that uses QT styling. + + +LICENSE +============================================================================================================ +Copyright (c) 2016 Pablo Gil Fernández + +This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. +To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/. + + +INSTALLATION +============================================================================================================ +1) Place the .qss files and /images/ folder in the path that fits your OS: + OSX = /Users/[YOUR_USER_NAME]/Library/Preferences/FreeCAD/Gui/Stylesheets/ + WINDOWS = C:/[INSTALLATION_PATH]/FreeCAD/data/Gui/fStylesheets/ + LINUX = /home/[YOUR_USER_NAME]/.FreeCAD/Gui/Stylesheets/ + +2) In order to display correctly images: + 2.1) FreeCAD 0.16 (development builds newer than commit 5b3d50a): that's it, you are done! + + 2.2) FreeCAD 0.15: Images used in the theme need ABSOLUTE paths to be found by FreeCAD, so you should search the string "qss:images" (without "") and replace with the real path of your computer. It should be done with all the .qss files you want to install-use + find = qss:images + replace = /Users/myName/Library/Preferences/FreeCAD/Gui/Stylesheets/images + + +CUSTOMIZATION +============================================================================================================ +If you would like to change the overall look/style of the theme, just find and replace following colors in the whole file: + BACKGROUND (darker to ligher) + black + #1e1e1e + #3c3c3c + #505050 + #5a5a5a + #646464 + #6e6e6e = main background color + #787878 + #8c8c8c + #a0a0a0 + #b4b4b4 + #bebebe + #c8c8c8 + #d2d2d2 + #e0e0e0 + #f5f5f5 + white + + SELECTION (darker to lighter) + #624b14 + #b28416 + #d0970c + #daa116 = main selection color + #e2ac2a = used to build QSpinBox up and down buttons, it's used as color in the middle + #e3b64d + #e0c992 + #e3d8b9 + + +KNOWN BUGS and TO DO +============================================================================================================ + - please, follow the link to get updated information: http://forum.freecadweb.org/viewtopic.php?f=10&t=12417 +*/ + + +/*================================================================================================== +Reset elements +==================================================================================================*/ +/* Reseting everything helps to unify styles across different operating systems */ +* { + padding: 0px; + margin: 0px; + border: 0px; + border-style: none; + border-image: none; + outline: 0; +} + +/* specific reset for elements inside QToolBar */ +QToolBar * { + margin: 0px; + padding: 0px; +} + + +/*================================================================================================== +Main window +==================================================================================================*/ +QMainWindow, +QDialog, +QToolBar { + background-color: #6e6e6e; /* main background color */ +} + +QMdiArea[showImage="true"] { + background-image: url(qss:images/background_freecad.png); + background-position: center center; + background-repeat: no-repeat; +} + + +/*================================================================================================== +MENUS +==================================================================================================*/ +QMenuBar, +QMenuBar::item { + color: #e0e0e0; + background-color: #6e6e6e; /* main background color */ +} + +QMenu, +QMenu::item { + color: #e0e0e0; + background-color: #5a5a5a; + text-decoration: none; +} + +QMenuBar::item:selected, +QMenuBar::item:pressed, +QMenu::item:selected, +QMenu::item:pressed { + color: white; + background-color: #daa116; +} + +QMenu::right-arrow { + width: 10px; + height: 10px; + image:url(qss:images/right_arrow_dark.png); + margin-right: 2px; +} + +QMenu::right-arrow:selected { + image:url(qss:images/right_arrow_lighter.png); +} + +QMenu::item { + padding: 2px 16px 2px 26px; /* make room for icon at left */ + border: 1px solid transparent; /* reserve space for selection border */ +} + +QMenu::icon { + margin-left: 2px; +} + +QMenu::separator { + height: 1px; + background-color: rgba(255,255,255,30); + margin: 6px 4px; +} + +QMenu::indicator:non-exclusive:checked { + color: white; +} + + +/*================================================================================================== +Tool bar +==================================================================================================*/ +QToolBar { + border: none; + min-width: 32px; /* allows a minimum of space between QToolBar colums */ + min-height: 32px; /* allows a minimum of space between QToolBar rows */ +} + +QToolBar::handle:horizontal { + background-image: url(qss:images/Hmovetoolbar_dark.png); + width: 10px; + margin: 6px 2px 6px 2px; + background-position: top right; + background-repeat: repeat-y; +} + +QToolBar::handle:vertical { + background-image: url(qss:images/Vmovetoolbar_dark.png); + height: 10px; + margin: 2px 6px 2px 6px; + background-position: left bottom; + background-repeat: repeat-x; +} + +QToolBar::separator:horizontal { + background-image: url(qss:images/separtoolbar_dark.png); + width: 10px; + margin: 6px 2px 6px 2px; + background-position: center center; + background-repeat: repeat-y; +} + +QToolBar::separator:vertical { + background-image: url(qss:images/separtoolbar_dark.png); + height: 10px; + margin: 2px 6px 2px 6px; + background-position: center center; + background-repeat: repeat-x; +} + + +/*================================================================================================== +Group box +==================================================================================================*/ +QGroupBox { + color: rgba(0,0,0,120); + border:1px solid rgba(0, 0, 0, 20); /* lighter than its own border-color */; + border-radius: 3px; + margin-top: 10px; + padding: 6px; + background-color: rgba(255, 255, 255, 15); +} + +QGroupBox:title { + top: -8px; + left: 12px; +} + + +/*================================================================================================== +Tooltip +==================================================================================================*/ +QToolTip { + color: #1e1e1e; + background-color: #b4b4b4; + /*opacity: 90%; doesn't correctly work */ + padding: 4px; + border-radius: 3px; /* has no effect */ +} + + +/*================================================================================================== +Dock widget +==================================================================================================*/ +QDockWidget { + color: rgba(0,0,0,120); + titlebar-close-icon: url(qss:images/close_dark.png); + titlebar-normal-icon: url(qss:images/undock_dark.png); +} + +QDockWidget::title { + text-align: center; + background-color: rgba(0,0,0,20); + border: 4px solid #6e6e6e; /* fix to simulate margin between this :title and tabs */ /* same as main background color */ + border-radius: 6px; /* bigger than normal due to previous border fix */ + padding: 4px 0px; /* also needed because of previous border fix */ +} + +QDockWidget::close-button, +QDockWidget::float-button { + border: none; + background: transparent; + border-radius: 3px; + subcontrol-origin: padding; + subcontrol-position: right center; +} + +QDockWidget::close-button { + right: 4px; +} + +QDockWidget::float-button { + right: 22px; +} + +QDockWidget::close-button:hover, +QDockWidget::float-button:hover { + background-color: rgba(255,255,255,15); +} + +QDockWidget::close-button:pressed, +QDockWidget::float-button:pressed { + background-color: rgba(255,255,255,30); +} + +/* fix for Python Console (probably there is a smarter way to arrive to it) */ +QDockWidget > QFrame { + background-color: #c8c8c8; + border: 1px solid #505050; +} + + +/*================================================================================================== +Progress bar +==================================================================================================*/ +QProgressBar, +QProgressBar:horizontal { + color: white; + background-color: rgba(0,0,0,10); + text-align: center; + border: 1px solid rgba(0,0,0,80); + padding: 1px; + border-radius: 3px; +} +QProgressBar::chunk, +QProgressBar::chunk:horizontal { + background-color: qlineargradient(spread:pad, x1:1, y1:0.545, x2:1, y2:0, stop:0 #d0970c, stop:1 #daa116); + border-radius: 3px; +} + + +/*================================================================================================== +Scroll +==================================================================================================*/ +QAbstractScrollArea { + border-radius: 2px; + background-color: transparent; +} + +QAbstractScrollArea::corner { + border: none; + background-color: transparent; +} + +QScrollBar:horizontal { + background-color: transparent; + height: 15px; + margin: 0px; +} + +QScrollBar::handle:vertical, +QScrollBar::handle:horizontal { + background-color: rgba(0,0,0,80); +} + +QScrollBar::handle:vertical:hover, +QScrollBar::handle:horizontal:hover { + background-color: rgba(0,0,0,100); +} + +QScrollBar::handle:horizontal { + min-width: 5px; + border-radius: 3px; + margin: 4px 15px; +} + +QScrollBar::sub-line:horizontal { + margin: 1px 3px 0px 3px; /* 1px to correctly fit the 10px width image */ + border-image: url(qss:images/left_arrow_light.png); + width: 6px; + height: 10px; + subcontrol-position: left; + subcontrol-origin: margin; +} + +QScrollBar::add-line:horizontal { + margin: 1px 3px 0px 3px; /* 1px to correctly fit the 10px width image */ + border-image: url(qss:images/right_arrow_light.png); + width: 6px; + height: 10px; + subcontrol-position: right; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:horizontal:hover, +QScrollBar::sub-line:horizontal:on { + border-image: url(qss:images/left_arrow_lighter.png); +} + +QScrollBar::add-line:horizontal:hover, +QScrollBar::add-line:horizontal:on { + border-image: url(qss:images/right_arrow_lighter.png); +} + +QScrollBar::up-arrow:horizontal, +QScrollBar::down-arrow:horizontal { + background-color: none; +} + +QScrollBar::add-page:horizontal, +QScrollBar::sub-page:horizontal { + background-color: transparent; +} + +QScrollBar:vertical { + background-color: transparent; + width: 15px; + margin: 0px; +} + +QScrollBar::handle:vertical { + min-height: 5px; + border-radius: 3px; + margin: 15px 4px; +} + +QScrollBar::sub-line:vertical { + margin: 3px 0px 3px 1px; /* 1px to correctly fit the 10px width image */ + border-image: url(qss:images/up_arrow_light.png); + height: 6px; + width: 10px; + subcontrol-position: top; + subcontrol-origin: margin; +} + +QScrollBar::add-line:vertical { + margin: 3px 0px 3px 1px; /* 1px to correctly fit the 10px width image */ + border-image: url(qss:images/down_arrow_light.png); + height: 6px; + width: 10px; + subcontrol-position: bottom; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:vertical:hover, +QScrollBar::sub-line:vertical:on { + border-image: url(qss:images/up_arrow_lighter.png); +} + +QScrollBar::add-line:vertical:hover, +QScrollBar::add-line:vertical:on { + border-image: url(qss:images/down_arrow_lighter.png); +} + +QScrollBar::up-arrow:vertical, +QScrollBar::down-arrow:vertical { + background-color: none; +} + +QScrollBar::add-page:vertical, +QScrollBar::sub-page:vertical { + background-color: transparent; +} + + +/*================================================================================================== +Tab bar +==================================================================================================*/ +QTabWidget::pane { + background-color: transparent; /* temporal (transparent background) */ /* tab content background color */ + position: absolute; +} + +QTabWidget::pane:top { + top: -1px; + border-top: 1px solid #5a5a5a; +} + +QTabWidget::pane:bottom { + bottom: -1px; + border-bottom: 1px solid #5a5a5a; +} + +QTabWidget::pane:left { + right: -1px; + border-right: 1px solid #5a5a5a; +} + +QTabWidget::pane:right { + left: -1px; + border-left: 1px solid #5a5a5a; +} + +QTabWidget::tab-bar:top, +QTabWidget::tab-bar:bottom { + left: 10px; +} + +QTabWidget::tab-bar:left, +QTabWidget::tab-bar:right { + top: 10px; +} + +QTabBar { + qproperty-drawBase: 0; /* important */ + background-color: transparent; +} + +/* Workaround for QTabBars created from docked QDockWidgets which don't draw the border if not set and reseted as follows: */ +QTabBar { + border-top: 1px solid #5a5a5a; /* set color for all QTabBars */ +} +QDockWidget QTabBar { + border-color: transparent; /* set color for all QTabBars but ones created from QDockWidget */ +} +QDialog QTabBar { + border-color: transparent; /* set color for QTabBars inside Preferences dialog */ +} +/* end fix */ + +QTabBar::tab { + background-color: transparent; + border: 1px solid transparent; + padding: 3px; +} + +QTabBar::tab:top, +QTabBar::tab:bottom { + border-top-width: 4px; /* same as selected tab colored border in order to center close-button */ + border-bottom-width: 4px; /* same as selected tab colored border in order to center close-button */ + min-width: 11ex; + margin-left: 2px; + margin-right: 2px; +} + +QTabBar::tab:left, +QTabBar::tab:right { + border-left-width: 4px; /* same as selected tab colored border in order to center close-button */ + border-right-width: 4px; /* same as selected tab colored border in order to center close-button */ + min-height: 14ex; + margin-top: 2px; + margin-bottom: 2px; +} + +QTabBar::tab:selected { + color: #d2d2d2; + background-color: transparent; /* temporal (transparent background) */ + border-color: #5a5a5a; +} + +QTabBar::tab:top:selected { + border-top: 4px solid qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #daa116, stop:1 #d0970c); /* selection color */ + border-bottom-color: #6e6e6e; /* same as tab content background color */ +} + +QTabBar::tab:bottom:selected { + border-bottom: 4px solid qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #daa116, stop:1 #d0970c); /* selection color */ + border-top-color: #6e6e6e; /* same as tab content background color */ +} + +QTabBar::tab:right:selected { + border-left: 4px solid qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 #daa116, stop:1 #d0970c); /* selection color */ + border-right-color: #6e6e6e; /* same as tab content background color */ +} + +QTabBar::tab:left:selected { + border-right: 4px solid qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 #daa116, stop:1 #d0970c); /* selection color */ + border-left-color: #6e6e6e; /* same as tab content background color */ +} + +QTabBar::tab:!selected { + color: rgba(0,0,0,120); +} + +QTabBar::tab:!selected:hover { + color: rgba(0,0,0,180); + background-color: rgba(0,0,0,20); +} + +QTabBar::tab:first:selected { + margin-left: 0; /* the first selected tab has nothing to overlap with on the left */ +} + +QTabBar::tab:last:selected { + margin-right: 0; /* the last selected tab has nothing to overlap with on the right */ +} + +QTabBar::tab:only-one { + margin: 0; /* if there is only one tab, we don't want overlapping margins */ +} + +/* hack to access Preference TabBar background */ +QDialog#Gui__Dialog__DlgPreferences > QFrame QFrame { + background-color: transparent; /* main background color (in Windows is #6e6e6e) */ +} + +/* fix for previous hack that broke QTabWidget background on Windows */ +QDialog#Gui__Dialog__DlgPreferences QTabWidget::pane { + background-color: transparent; /* temporal (transparent background) */ +} + +/* hack to correctly align Preferences icon list on OSX */ +QDialog#Gui__Dialog__DlgPreferences > QListView { + min-width: 130px; +} + +/* unique styles for sections inside Preferences */ +QDialog#Gui__Dialog__DlgPreferences > QListView::item { + border-radius: 6px; +} + +QDialog#Gui__Dialog__DlgPreferences > QListView::item:hover { + background-color: #b4b4b4; +} + +QDialog#Gui__Dialog__DlgPreferences > QListView::item:selected { + color: white; + background-color: #daa116; + border: 3px solid #d0970c; +} + + +/*================================================================================================== +Tab bar buttons +==================================================================================================*/ +/* Close button */ +QTabBar::close-button { + subcontrol-origin: margin; + subcontrol-position: center right; /* only works for QT 4.6 and newer */; + border-radius: 2px; + background-image: url(qss:images/close_dark.png); + background-position: center center; + background-repeat: none; +} + +QTabBar::close-button:hover { + background-color: rgba(255,255,255,20); +} + +QTabBar::close-button:pressed { + background-color: rgba(255,255,255,30); +} + +/* Fix for lists inside Model tab */ +QDockWidget QTreeView, +QDockWidget QListView, +QDockWidget QTableView { + margin: 6px; + border: 1px solid #505050; /* same as regular QTreeView, QListView and QTableView */ + min-height: 40px; /* neccesary in some areas of FreeCAD */ +} + +/* Buttons to scroll tabs if there is not space to show all of them: */ +QTabBar::scroller { + width: 20px; /* the width of the scroll buttons */ +} + +QTabBar QToolButton, +QTabBar QToolButton:hover { + background-color: #6e6e6e; /* same as main background color */ +} + +QTabBar QToolButton::right-arrow:enabled { + image: url(qss:images/right_arrow_dark.png); +} + +QTabBar QToolButton::right-arrow:disabled, +QTabBar QToolButton::right-arrow:off { + image: url(qss:images/right_arrow_disabled_dark.png); +} + +QTabBar QToolButton::right-arrow:hover { + image: url(qss:images/right_arrow_darker.png); +} + + QTabBar QToolButton::left-arrow:enabled { + image: url(qss:images/left_arrow_dark.png); +} + + QTabBar QToolButton::left-arrow:disabled, + QTabBar QToolButton::left-arrow:off { + image: url(qss:images/left_arrow_disabled_dark.png); +} + + QTabBar QToolButton::left-arrow:hover { + image: url(qss:images/left_arrow_darker.png); +} + + QTabBar QToolButton::up-arrow:enabled { + image: url(qss:images/up_arrow_dark.png); +} + + QTabBar QToolButton::up-arrow:disabled, + QTabBar QToolButton::up-arrow:off { + image: url(qss:images/up_arrow_disabled_dark.png); +} + + QTabBar QToolButton::up-arrow:hover { + image: url(qss:images/up_arrow_darker.png); +} + + QTabBar QToolButton::down-arrow:enabled { + image: url(qss:images/down_arrow_dark.png); +} + + QTabBar QToolButton::down-arrow:disabled, + QTabBar QToolButton::down-arrow:off { + image: url(qss:images/down_arrow_disabled_dark.png); +} + + QTabBar QToolButton::down-arrow:hover { + image: url(qss:images/down_arrow_darker.png); +} + +QTabBar::tear { + /* default OS tear better */ +} + + +/*================================================================================================== +Tree and list views +==================================================================================================*/ +QTreeView, +QListView, +QTableView { + background-color: #c8c8c8; + alternate-background-color: #bebebe; /* related with QListView background */ + border: 1px solid #505050; + selection-color: white; + selection-background-color: #daa116; /* should be similar to QListView::item selected background-color */ + show-decoration-selected: 1; /* make the selection span the entire width of the view */ + border-radius: 3px; +} + +QListView::item:hover, +QTreeView::item:hover { + background-color: transparent; /* fix to homogenize it on all OSs */ +} + +QListView::item:selected, +QTreeView::item:selected { + color: white; /* should be similar to QListView selection-color */ + background-color: #daa116; /* should be similar to QListView selection-background-color */ + show-decoration-selected: 1; /* make the selection span the entire width of the view */ +} + +/* Property Editor QTreeView (FreeCAD custom widget) */ +Gui--PropertyEditor--PropertyEditor { + gridline-color: #a0a0a0; /* same as Group header background */ +} + +/* fix for column items background when a link is present */ +Gui--PropertyEditor--PropertyEditor > QWidget > QFrame:focus { + background-color: #e3d8b9; /* same as focused background color */ +} + +/* hack to hide weird redundant information inside the value of a Placement cell */ +Gui--PropertyEditor--PropertyEditor > QWidget > QWidget > QLabel, +Gui--PropertyEditor--PropertyEditor > QWidget > QWidget > QLabel:disabled { + color: transparent; + background-color: transparent; + border: none; + border-radius: 0px; + margin: 0px; + padding: 0px; +} + +/* hack to hide non editable cells inside Property values */ +Gui--PropertyEditor--PropertyEditor QLineEdit:read-only, +Gui--PropertyEditor--PropertyEditor QLineEdit:disabled, +Gui--PropertyEditor--PropertyEditor QAbstractSpinBox:read-only, +Gui--PropertyEditor--PropertyEditor QAbstractSpinBox:disabled { + color: transparent; + border-color: transparent; + background-color: transparent; + selection-color: transparent; + selection-background-color: transparent; +} + +/* hack to disable margin inside Property values to following elements */ +Gui--PropertyEditor--PropertyEditor QSpinBox, +Gui--PropertyEditor--PropertyEditor QDoubleSpinBox, +Gui--PropertyEditor--PropertyEditor QAbstractSpinBox, +Gui--PropertyEditor--PropertyEditor QLineEdit, +Gui--PropertyEditor--PropertyEditor QComboBox { + margin-left: 0px; + margin-right: 0px; + padding-top: 0px; + padding-bottom: 0px; +} + +/* set border-radius to 0px inside list views */ +QTreeView > QWidget > QComboBox, +QTreeView > QWidget > QAbstractSpinBox, +QTreeView > QWidget > QSpinBox, +QTreeView > QWidget > QDoubleSpinBox, +QTreeView > QWidget > QLineEdit, +QTreeView > QWidget > QTextEdit, +QTreeView > QWidget > QTimeEdit, +QTreeView > QWidget > QDateEdit, +QTreeView > QWidget > QDateTimeEdit, +QTreeView > QWidget > QComboBox:drop-down, +QTreeView > QWidget > QAbstractSpinBox:up-button, +QTreeView > QWidget > QSpinBox:up-button, +QTreeView > QWidget > QDoubleSpinBox:up-button, +QTreeView > QWidget > QTimeEdit:up-button, +QTreeView > QWidget > QDateEdit:up-button, +QTreeView > QWidget > QDateTimeEdit:up-button, +QTreeView > QWidget > QAbstractSpinBox:down-button, +QTreeView > QWidget > QSpinBox:down-button, +QTreeView > QWidget > QDoubleSpinBox:down-button, +QTreeView > QWidget > QTimeEdit:down-button, +QTreeView > QWidget > QDateEdit:down-button, +QTreeView > QWidget > QDateTimeEdit:down-button, +QTreeView > QWidget > Gui--ColorButton { + border-radius: 0px; +} + +/* set focus colors to best viewing the editable fields */ +QTreeView > QWidget > QComboBox:focus, +QTreeView > QWidget > QAbstractSpinBox:focus, +QTreeView > QWidget > QSpinBox:focus, +QTreeView > QWidget > QDoubleSpinBox:focus, +QTreeView > QWidget > QLineEdit:focus, +QTreeView > QWidget > QTextEdit:focus, +QTreeView > QWidget > QTimeEdit:focus, +QTreeView > QWidget > QDateEdit:focus, +QTreeView > QWidget > QDateTimeEdit:focus { + border-color: #e3d8b9; /* same as focused background color */ + border-bottom-color: #e3b64d; /* same as focused border color */ +} + +QTreeView > QWidget > QAbstractSpinBox:read-only, +QTreeView > QWidget > QSpinBox:read-only, +QTreeView > QWidget > QDoubleSpinBox:read-only, +QTreeView > QWidget > QLineEdit:read-only, +QTreeView > QWidget > QTextEdit:read-only, +QTreeView > QWidget > QTimeEdit:read-only, +QTreeView > QWidget > QDateEdit:read-only, +QTreeView > QWidget > QDateTimeEdit:read-only { + color: transparent; + background-color: transparent; + border-color: transparent; +} + +/* Fix to correctly (not totally) draw QTextEdit on OSX at Page properties: "Page result", "Template" and "Editable Texts" */ +Gui--PropertyEditor--PropertyEditor > QWidget > QWidget > QWidget { + min-height: 14px; +} + + +/*================================================================================================== +Header of tree and list views +==================================================================================================*/ +QHeaderView { + color: #c8c8c8; + background-color: #505050; + border-top-left-radius: 2px; /* 1px less than its container */ + border-top-right-radius: 2px; /* 1px less than its container */ + border-bottom-left-radius: 0px; + border-bottom-right-radius: 0px; +} + +QHeaderView::section { + border:none; + padding: 4px 6px; + background-color: #505050; +} + +QHeaderView::section:horizontal { + padding: 4px 6px; /* left and right value similar to QHeaderView::section */ + border-right: 1px solid rgba(255,255,255,30); +} + +QHeaderView::section:vertical { + border-bottom: 1px solid rgba(255,255,255,30); +} + +QTableCornerButton::section { + background-color: #505050; + border-top: none; + border-left: none; + border-right: 1px solid rgba(255,255,255,30); + border-bottom: 1px solid rgba(255,255,255,30); +} + +QHeaderView::section:last { + border-right: none; +} + +QHeaderView::up-arrow { + image: url(qss:images/up_arrow_light.png); +} + +QHeaderView::up-arrow:hover { + image: url(qss:images/up_arrow_lighter.png); +} + +QHeaderView::down-arrow { + image: url(qss:images/down_arrow_light.png); +} + +QHeaderView::down-arrow:hover { + image: url(qss:images/down_arrow_lighter.png); +} + +/* Group header inside Property Editor (FreeCAD custom widget) */ +Gui--PropertyEditor--PropertyEditor { + qproperty-groupTextColor: #505050; + qproperty-groupBackground: #8c8c8c; +} + + +/*================================================================================================== +Branch system for QTreeViews +==================================================================================================*/ +QTreeView::branch { + background: transparent; +} + +QTreeView::branch:has-siblings:!adjoins-item { + border-image: url(qss:images/branch_vline.png) 0; +} + +QTreeView::branch:has-siblings:adjoins-item { + border-image: url(qss:images/branch_more.png) 0; +} + +QTreeView::branch:!has-children:!has-siblings:adjoins-item { + border-image: url(qss:images/branch_end.png) 0; +} + +QTreeView::branch:closed:has-children:has-siblings { + image: url(qss:images/branch_closed_dark.png); +} + +QTreeView::branch:has-children:!has-siblings:closed { + image: url(qss:images/branch_closed_dark.png); + border-image: url(qss:images/branch_end.png) 0; +} + +QTreeView::branch:open:has-children:has-siblings { + image: url(qss:images/branch_open_dark.png); + border-image: url(qss:images/branch_more.png) 0; +} + +QTreeView::branch:open:has-children:!has-siblings { + image: url(qss:images/branch_open_dark.png); + border-image: url(qss:images/branch_end.png) 0; +} + + +/*================================================================================================== +Text/Python editor (macros, etc...) +==================================================================================================*/ +QPlainTextEdit, +QPlainTextEdit:focus { + background-color: #c8c8c8; + selection-color: white; + selection-background-color: #d0970c; + border: 1px solid #505050; + border-radius: 3px; + margin: 4px; +} + + +/*================================================================================================== +Splitter and windows separator +==================================================================================================*/ +QSplitter::handle { + margin: 0px 11px; + padding: 0px; +} + +QSplitter::handle:vertical { + background-image: url(qss:images/splitter_horizontal_dark.png); + background-position: center center; + background-repeat: none; + margin: 2px 4px 2px 4px; + height: 2px; +} + +QSplitter::handle:horizontal { + background-image: url(qss:images/splitter_vertical_dark.png); + background-position: center center; + background-repeat: none; + margin: 4px 2px 4px 2px; + width: 2px; +} + +/* Similar to the splitter is the following window separator: */ +QMainWindow::separator { + background-position: center center; + background-repeat: none; +} + +QMainWindow::separator:horizontal { + height: 2px; + background-image: url(qss:images/splitter_horizontal_dark.png); + margin: 4px 2px 4px 2px; +} + +QMainWindow::separator:vertical { + width: 2px; + background-image: url(qss:images/splitter_vertical_dark.png); + margin: 2px 4px 2px 4px; +} + + +/*================================================================================================== +Tasks panel (custom FreeCAD class) +==================================================================================================*/ +/* Action group */ +QFrame[class="panel"] { + background-color: transparent; /* temporal (transparent background) */ +} + +/* Separator line */ +QSint--ActionGroup QFrame[height="1"], +QSint--ActionGroup QFrame[height="2"], +QSint--ActionGroup QFrame[height="3"], +QSint--ActionGroup QFrame[width="1"], +QSint--ActionGroup QFrame[width="2"], +QSint--ActionGroup QFrame[width="3"] { + border-color: rgba(0,0,0,60); +} + +/* Panel header */ +QSint--ActionGroup QFrame[class="header"] { + border: none; + background-color: #505050; /* Task Panel Header background color */ + border-top-left-radius: 3px; + border-top-right-radius: 3px; + border-bottom-left-radius: 0px; + border-bottom-right-radius: 0px; + margin: 0px; + padding: 0px; +} + +QSint--ActionGroup QFrame[class="header"]:hover { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #daa116, stop:1 #d0970c); +} + +QSint--ActionGroup QToolButton[class="header"] { + color: #e0e0e0; /* Task Panel Header text color */ + text-align: left; + font-weight: bold; + border: none; + margin: 0px; + padding: 0px; +} + +QSint--ActionGroup QFrame[class="header"] QLabel { + background-color: transparent; + background-image: url(qss:images/down_arrow_light.png); + background-repeat: none; + background-position: center center; + padding: 0px; + margin: 0px; +} + +QSint--ActionGroup QFrame[class="header"] QLabel:hover { + background-color: transparent; + background-image: url(qss:images/down_arrow_lighter.png); +} + +QSint--ActionGroup QFrame[class="header"] QLabel[fold="true"] { + background-color: transparent; + background-image: url(qss:images/up_arrow_light.png); + background-repeat: none; + background-position: center center; + padding: 0px; + margin: 0px; +} + +QSint--ActionGroup QFrame[class="header"] QLabel[fold="true"]:hover { + background-color: transparent; + background-image: url(qss:images/up_arrow_lighter.png); +} + +QSint--ActionGroup QFrame[class="content"] { + background-color: #8c8c8c; /* Task Panel background color */ + margin: 0px; + padding: 0px; + border: none; + border-top-left-radius: 0px; + border-top-right-radius: 0px; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; +} + +QSint--ActionGroup QFrame[class="content"] > QWidget { + background-color: #8c8c8c; /* Task Panel background color */ +} + +/* Fixs for tabs inside Task Panel */ +QSint--ActionGroup QFrame[class="content"] QTabBar::tab:top:selected { + border-bottom-color: #8c8c8c; /* same as Task Panel background color */ +} + +QSint--ActionGroup QFrame[class="content"] QTabBar::tab:bottom:selected { + border-top-color: #8c8c8c; /* same as Task Panel background color */ +} + +QSint--ActionGroup QFrame[class="content"] QTabBar::tab:right:selected { + border-right-color: #8c8c8c; /* same as Task Panel background color */ +} + +QSint--ActionGroup QFrame[class="content"] QTabBar::tab:left:selected { + border-left-color: #8c8c8c; /* same as Task Panel background color */ +} + + +/*================================================================================================== +Buttons +==================================================================================================*/ +/* Common */ +QComboBox, +QAbstractSpinBox, +QSpinBox, +QDoubleSpinBox, +QLineEdit, +QTextEdit, +QTimeEdit, +QDateEdit, +QDateTimeEdit { + color: #bebebe; + background-color: #5a5a5a; + selection-color: white; + selection-background-color: #d0970c; + border: 1px solid #5a5a5a; + border-radius: 3px; + min-width: 50px; /* it ensures the default value is correctly displayed */ + padding: 1px 2px; /* temporal: could don't be compatible with elements inside Tree/List view */ +} + +/* shifts text/number editable field to the left to make space for the up/down or drop-down buttons */ +QComboBox, +QAbstractSpinBox, +QSpinBox, +QDoubleSpinBox, +QTimeEdit, +QDateEdit, +QDateTimeEdit { + padding-right: 20px; +} + +/* when QTextEdit are no editable */ +QTextEdit:!editable { + background-color: #c8c8c8; + border: 1px solid #505050; +} + +QComboBox:focus, +QAbstractSpinBox:focus, +QSpinBox:focus, +QDoubleSpinBox:focus, +QLineEdit:focus, +QTextEdit:focus, +QTimeEdit:focus, +QDateEdit:focus, +QDateTimeEdit:focus { + color: black; + border-color: #e3b64d; + border-right-color: qlineargradient(spread:pad, x1:1, y1:0.8, x2:1, y2:0, stop:0 #daa116, stop:1 #e3b64d); /* same as up/down or drop-down button color */ + background-color: #e3d8b9; +} + +QComboBox:disabled, +QAbstractSpinBox:disabled, +QSpinBox:disabled, +QDoubleSpinBox:disabled, +QLineEdit:disabled, +QTextEdit:disabled, +QTimeEdit:disabled, +QDateEdit:disabled, +QDateTimeEdit:disabled { + color: #787878; + background-color: #5a5a5a; /* same as enabled color */ + border-color: #5a5a5a; /* same as enabled color */ +} + +QAbstractSpinBox:up-button, +QSpinBox:up-button, +QDoubleSpinBox:up-button, +QTimeEdit:up-button, +QDateEdit:up-button, +QDateTimeEdit:up-button, +QAbstractSpinBox:down-button, +QSpinBox:down-button, +QDoubleSpinBox:down-button, +QTimeEdit:down-button, +QDateEdit:down-button, +QDateTimeEdit:down-button { + background-color: #505050; /* same color for QComboBox background-color */ + subcontrol-origin: border; /* important */ + width: 20px; /* same as QComboBox ... QDateTimeEdit padding-right */ +} + +QAbstractSpinBox:up-button, +QSpinBox:up-button, +QDoubleSpinBox:up-button, +QTimeEdit:up-button, +QDateEdit:up-button, +QDateTimeEdit:up-button { + subcontrol-position: top right; + border-top-right-radius: 3px; + height: 12px; /* fix for Ubuntu that doesn't divide the up/down button into the exact middle */ +} + +QAbstractSpinBox:down-button, +QSpinBox:down-button, +QDoubleSpinBox:down-button, +QTimeEdit:down-button, +QDateEdit:down-button, +QDateTimeEdit:down-button { + subcontrol-position: bottom right; + border-bottom-right-radius: 3px; +} + +QAbstractSpinBox:up-button:focus, +QSpinBox:up-button:focus, +QDoubleSpinBox:up-button:focus, +QTimeEdit:up-button:focus, +QDateEdit:up-button:focus, +QDateTimeEdit:up-button:focus { + background-color: qlineargradient(spread:pad, x1:1, y1:0.8, x2:1, y2:0, stop:0 #e2ac2a, stop:1 #e3b64d); +} + +QAbstractSpinBox:down-button:focus, +QSpinBox:down-button:focus, +QDoubleSpinBox:down-button:focus, +QTimeEdit:down-button:focus, +QDateEdit:down-button:focus, +QDateTimeEdit:down-button:focus { + background-color: qlineargradient(spread:pad, x1:1, y1:0.8, x2:1, y2:0, stop:0 #daa116, stop:1 #e2ac2a); +} + +QAbstractSpinBox:up-button:disabled, +QSpinBox:up-button:disabled, +QDoubleSpinBox:up-button:disabled, +QTimeEdit:up-button:disabled, +QDateEdit:up-button:disabled, +QDateTimeEdit:up-button:disabled, +QAbstractSpinBox:down-button:disabled, +QSpinBox:down-button:disabled, +QDoubleSpinBox:down-button:disabled, +QTimeEdit:down-button:disabled, +QDateEdit:down-button:disabled, +QDateTimeEdit:down-button:disabled { + background-color: transparent; +} + +QAbstractSpinBox::up-arrow, +QSpinBox::up-arrow, +QDoubleSpinBox::up-arrow, +QTimeEdit::up-arrow, +QDateEdit::up-arrow, +QDateTimeEdit::up-arrow { + image: url(qss:images/up_arrow_light.png); + top: 0px; /* fix simetry between up and down images */ +} + +QAbstractSpinBox::up-arrow:focus, +QSpinBox::up-arrow:focus, +QDoubleSpinBox::up-arrow:focus, +QTimeEdit::up-arrow:focus, +QDateEdit::up-arrow:focus, +QDateTimeEdit::up-arrow:focus { + image: url(qss:images/up_arrow_lighter.png); +} + +QAbstractSpinBox::up-arrow:off, +QSpinBox::up-arrow:off, +QDoubleSpinBox::up-arrow:off, +QTimeEdit::up-arrow:off, +QDateEdit::up-arrow:off, +QDateTimeEdit::up-arrow:off { + image: url(qss:images/up_arrow_disabled_dark.png); +} + +QAbstractSpinBox::up-arrow:disabled, +QSpinBox::up-arrow:disabled, +QDoubleSpinBox::up-arrow:disabled, +QTimeEdit::up-arrow:disabled, +QDateEdit::up-arrow:disabled, +QDateTimeEdit::up-arrow:disabled { + image: url(qss:images/up_arrow_disabled_dark.png); +} + +QAbstractSpinBox::down-arrow, +QSpinBox::down-arrow, +QDoubleSpinBox::down-arrow, +QTimeEdit::down-arrow, +QDateEdit::down-arrow, +QDateTimeEdit::down-arrow { + image: url(qss:images/down_arrow_light.png); + bottom: 0px; /* fix simetry between up and down images */ +} + +QAbstractSpinBox::down-arrow:focus, +QSpinBox::down-arrow:focus, +QDoubleSpinBox::down-arrow:focus, +QTimeEdit::down-arrow:focus, +QDateEdit::down-arrow:focus, +QDateTimeEdit::down-arrow:focus { + image: url(qss:images/down_arrow_lighter.png); +} + +QAbstractSpinBox::down-arrow:off, +QSpinBox::down-arrow:off, +QDoubleSpinBox::down-arrow:off, +QTimeEdit::down-arrow:off, +QDateEdit::down-arrow:off, +QDateTimeEdit::down-arrow:off { + image: url(qss:images/down_arrow_disabled_dark.png); +} + +QAbstractSpinBox::down-arrow:disabled, +QSpinBox::down-arrow:disabled, +QDoubleSpinBox::down-arrow:disabled, +QTimeEdit::down-arrow:disabled, +QDateEdit::down-arrow:disabled, +QDateTimeEdit::down-arrow:disabled { + image: url(qss:images/down_arrow_disabled_dark.png); +} + +/* ComboBox */ +QComboBox::drop-down { + background-color: #505050; /* same color as up/down QSpinBox ... QDateTimeView background-color */ + subcontrol-origin: border; /* important */ + subcontrol-position: top right; + width: 20px; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} + +QComboBox::drop-down:on, +QComboBox::drop-down:focus { + background-color: qlineargradient(spread:pad, x1:1, y1:0.8, x2:1, y2:0, stop:0 #daa116, stop:1 #e3b64d); +} + +QComboBox::down-arrow { + image: url(qss:images/down_arrow_light.png); +} + +QComboBox::down-arrow:on, +QComboBox::down-arrow:focus { + image: url(qss:images/down_arrow_lighter.png); +} + +QComboBox::down-arrow:off, +QComboBox::down-arrow:disabled { + image: url(qss:images/down_arrow_disabled_dark.png); +} + +/* ComboBox menu */ +QComboBox { + selection-color: white; + selection-background-color: #daa116; +} + +QComboBox QAbstractItemView { + color: #bebebe; /* same as regular QComboBox color */ + background-color: transparent; + selection-color: white; + selection-background-color: #daa116; + border-width: 5px 0px 5px 0px; + border-style: solid; + border-color: transparent; + margin: 0px -1px 0px 0px; /* hack for Mac... try it on Windows and Linux */ +} + + +/*================================================================================================== +Push button +==================================================================================================*/ +QPushButton { + color: #e0e0e0; + text-align: center; + background-color: qlineargradient(spread:pad, x1:0, y1:0.3, x2:0, y2:1, stop:0 #6e6e6e, stop:1 #646464); + border: 1px solid #5a5a5a; + border-bottom-color: #505050; /* simulates shadow under the button */ + padding: 4px 22px; + margin: 4px 4px; + min-height: 16px; /* same as QTabBar QPushButton min-width */ + border-radius: 4px; +} + +QPushButton:hover, +QPushButton:focus { + color: white; + border-color: #d0970c; + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #daa116, stop:1 #d0970c); +} + +QPushButton:disabled, +QPushButton:disabled:checked { + color: #787878; + background-color: #5a5a5a; /* same as enabled color */ + border-color: #5a5a5a; /* same as enabled color */ +} + +QPushButton:pressed { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #d0970c, stop:1 #daa116); +} + +QPushButton:checked { + background-color: #daa116; + border-color: #d0970c; +} + +/* Color Buttons */ +Gui--ColorButton, +Gui--ColorButton:disabled { + padding: 0px; /* reset */ + margin: 0px; /* reset */ +} + +Gui--ColorButton { + background-color: qlineargradient(spread:pad, x1:0, y1:0.3, x2:0, y2:1, stop:0 #6e6e6e, stop:1 #646464); + border: 1px solid #5a5a5a; + border-bottom-color: #505050; /* simulates shadow under the button */ +} + +Gui--ColorButton:disabled { + border-color: transparent; + background-color: rgba(0,0,0,10); +} + +Gui--ColorButton:hover, +Gui--ColorButton:focus { + border-color: #d0970c; + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #daa116, stop:1 #d0970c); +} + +Gui--ColorButton:pressed { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #d0970c, stop:1 #daa116); +} + +/* Pushbutton style for "..." inside Placement cell which launches Placement tool */ +Gui--PropertyEditor--PropertyEditor > QWidget > QWidget > QPushButton { + background-color: #6e6e6e; + border: 1px solid #5a5a5a; + min-width: 16px; /* reset it due to larger value on regular QPushButton, same or bigger value as regular QPushButton min-height */ + border-radius: 0px; + margin: 0px; /* reset */ + padding: 0px; /* reset */ +} + +/* Fix for Expressions description QFrame that is "broken" with initial reset */ +Gui--PropertyEditor--PropertyEditor > QWidget > QWidget > QWidget > QWidget > QFrame { + background-color: #6e6e6e; /* main background color */ + border: 1px solid #5a5a5a; + border-radius: 2px; + padding: 2px 6px; +} + + +/*================================================================================================== +Tool button inside QDialogs that works as QPushButtons +==================================================================================================*/ +/* found under Tools -> Customize -> Macros -> Pixmap "..." button */ +QDialog QToolButton { + color: #e0e0e0; + text-align: center; + background-color: qlineargradient(spread:pad, x1:0, y1:0.3, x2:0, y2:1, stop:0 #6e6e6e, stop:1 #646464); + border: 1px solid #5a5a5a; + border-bottom-color: #505050; /* simulates shadow under the button */ + padding: 0px; /* different than regular QPushButton */ + margin: 2px; /* different than regular QPushButton */ + min-height: 16px; /* same as QTabBar QPushButton min-width */ + border-radius: 4px; +} + +QDialog QToolButton:hover, +QDialog QToolButton:focus { + color: white; + border-color: #d0970c; + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #daa116, stop:1 #d0970c); +} + +QDialog QToolButton:disabled, +QDialog QToolButton:disabled:checked { + color: #6e6e6e; + border-color: #5a5a5a; + background-color: #5a5a5a; +} + +QDialog QToolButton:pressed { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #d0970c, stop:1 #daa116); +} + +QPushButton:checked { + background-color: #daa116; + border-color: #d0970c; +} + + +/*================================================================================================== +Radio button +==================================================================================================*/ +QRadioButton::indicator:unchecked{ + color: black; + background-color: rgba(255,255,255,20); + border: 1px solid #5a5a5a; +} + +QRadioButton::indicator:checked { + background-color: #daa116; /* QCheckBox has the same color */ + border: 1px solid #d0970c; /* QCheckBox has the same color */ + image:url(qss:images/radiobutton_light.png); +} + +QRadioButton, +QRadioButton:disabled { + color: black; + padding: 3px; + outline: none; + background-color: transparent; +} + +QRadioButton::indicator { + width: 11px; + height: 11px; + border-radius: 6px; +} + +QRadioButton::indicator:pressed { + border-color: #e0c992; +} + +QRadioButton::indicator:disabled { + border: 1px solid #f5f5f5; +} + +QRadioButton::indicator:disabled { + color: #f5f5f5; + background-color: transparent; +} + +QRadioButton:focus { + border: none; +} + + +/*================================================================================================== +Checkbox +==================================================================================================*/ +QCheckBox, +QCheckBox:disabled { + color: black; + padding: 3px; + outline: none; + background-color: transparent; +} + +QCheckBox::indicator { + color: black; + background-color: rgba(255,255,255,20); + border: 1px solid #5a5a5a; +} + +QCheckBox::indicator { + width: 11px; + height: 11px; + border-radius:2px; +} + +QCheckBox::indicator:pressed, +QCheckBox::indicator:non-exclusive:checked:pressed, +QCheckBox::indicator:indeterminate:pressed, +QCheckBox::indicator:checked:pressed { + border-color: #e0c992; +} + +QCheckBox::indicator:checked { + background-color: #daa116; /* QRadioButton has the same color */ + border: 1px solid #d0970c; /* QRadioButton has the same color */ + image:url(qss:images/checkbox_light.png); +} + +QCheckBox:disabled { + color: rgba(255,255,255,40); + background-color: transparent; +} + +QCheckBox::indicator:disabled { + background-color: rgba(255,255,255,20); + border: 1px solid rgba(255,255,255,20); +} + +QCheckBox::indicator:indeterminate { + background-color: #daa116; + border: 1px solid #d0970c; + image: url(qss:images/checkbox_indeterminate_light.png); +} + +QCheckBox:focus { + border: none; +} + + +/*================================================================================================== +Slider +==================================================================================================*/ +QSlider, +QSlider:active, +QSlider:!active { + border: none; + background-color: transparent; +} + +QSlider:horizontal { + padding: 0px 10px; +} + +QSlider:vertical { + padding: 10px 0px; +} + +QSlider::groove { + background-color: rgba(0,0,0,30); + border: 1px solid rgba(0,0,0,40); + border-radius: 5px; + margin: 4px 0px; +} + +QSlider::groove:horizontal { + height: 8px; +} + +QSlider::groove:vertical { + width: 8px; +} + +QSlider::groove:horizontal:disabled, +QSlider::groove:vertical:disabled { + border-color: #5a5a5a; + background-color: #5a5a5a; +} + +QSlider::handle:horizontal, +QSlider::handle:vertical { + background-color: #505050; + border: 1px solid #505050; + width: 14px; + height: 14px; + border-radius: 8px; +} + +QSlider::handle:horizontal { + margin: -4px 0; +} + +QSlider::handle:vertical { + margin: 0 -4px; +} + +QSlider::handle:horizontal:hover, +QSlider::handle:vertical:hover, +QSlider::handle:horizontal:pressed, +QSlider::handle:vertical:pressed { + border-color: #daa116; + background-color: #daa116; +} + +QSlider::handle:horizontal:disabled, +QSlider::handle:vertical:disabled { + border-color: #5a5a5a; + background-color: #5a5a5a; +} + + +/*================================================================================================== +Toolbar buttons +==================================================================================================*/ +QToolBar > QToolButton { + margin: 2px; + padding: 2px; +} + +QToolBar > QPushButton, +/*QToolBar > QComboBox, disabled because creates different margins for body and drop-down button */ +QToolBar > QAbstractSpinBox, +QToolBar > QSpinBox, +QToolBar > QDoubleSpinBox, +QToolBar > QLineEdit, +QToolBar > QTextEdit, +QToolBar > QTimeEdit, +QToolBar > QDateEdit, +QToolBar > QDateTimeEdit { + margin: 2px; + padding: 2px; +} + +QToolBar > QPushButton { + border-radius: 4px; /* same as regular QPushButton */ + min-width: 20px; /* reset it due to larger value on regular QPushButton, same or bigger value as regular QPushButton min-height */ +} + +QToolBar > QPushButton:checked { + border: 1px solid #d0970c; + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #daa116, stop:1 #d0970c); +} + +QToolBar > QPushButton:!checked { + background-color: qlineargradient(spread:pad, x1:0, y1:0.3, x2:0, y2:1, stop:0 #6e6e6e, stop:1 #646464); + border: 1px solid #5a5a5a; + border-bottom-color: #505050; /* simulates shadow under the button */ +} + +QToolBar > QPushButton:checked:hover { + border-color: #b28416; +} + +QToolBar > QPushButton:!checked:hover { + color: #e3d8b9; + border-color: #505050; +} + +QToolBar > QPushButton:checked:pressed { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #d0970c, stop:1 #daa116); +} + +QToolBar > QPushButton:!checked:pressed { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #5a5a5a, stop:1 #6e6e6e); +} + +QToolBar > QPushButton:checked:disabled, +QToolBar > QPushButton:!checked:disabled { + border: none; + background-color: transparent; +} + +/* ToolBar menu buttons (buttons with drop-down menu) */ +QToolBar > QToolButton#qt_toolbutton_menubutton { + padding-right: 20px; /* Hack to add more width to buttons with menu */ + border: 1px solid transparent; + border-radius: 3px; +} + +QToolBar > QToolButton#qt_toolbutton_menubutton:hover, +QToolBar > QToolButton#qt_toolbutton_menubutton:pressed, +QToolBar > QToolButton#qt_toolbutton_menubutton:open { + border: 1px solid #e3b64d; +} + +QToolBar QToolButton::menu-button, +QToolBar > QToolButton#qt_toolbutton_menubutton::menu-button { + border: none; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + width: 16px; /* 16px width + 4px for border = 20px allocated above */ + outline: none; + background-color: transparent; +} + +QToolBar > QToolButton#qt_toolbutton_menubutton::menu-button:hover, +QToolBar > QToolButton#qt_toolbutton_menubutton::menu-button:pressed, +QToolBar > QToolButton#qt_toolbutton_menubutton::menu-button:open { + background-color: qlineargradient(spread:pad, x1:1, y1:0.8, x2:1, y2:0, stop:0 #daa116, stop:1 #e3b64d); +} + +QToolBar > QToolButton::menu-arrow { + background-image: url(qss:images/down_arrow_dark.png); + background-position: center center; + background-repeat: none; + subcontrol-origin: padding; + subcontrol-position: bottom right; + height: 10px; /* same as arrow image */ +} + +QToolBar > QToolButton::menu-arrow:hover { + background-image: url(qss:images/down_arrow_lighter.png); +} + +QToolBar > QToolButton::menu-arrow:open { + background-image: url(qss:images/down_arrow_lighter.png); +} + +/*The "show more" button (it can also be stylable with "QToolBarExtension" */ +QToolBar QToolButton#qt_toolbar_ext_button { + margin: 0px; + padding: 0px; + /*background-image: url(qss:images/more_dark.png);*/ + image: transparent; + background-repeat: none; + background-position: center left; +} + +QToolBar QToolButton#qt_toolbar_ext_button:hover { + /*background-image: url(qss:images/more_light.png);*/ + border-color: #5a5a5a; + background-color: #5a5a5a; +} + +QToolBar QToolButton#qt_toolbar_ext_button:on { + /*background-image: url(qss:images/more_light.png);*/ + border-color: #5a5a5a; + background-color: #5a5a5a; +} + + +/*================================================================================================== +Tables (spreadsheets) +==================================================================================================*/ +QTableView { + gridline-color: #a0a0a0; + selection-color: #624b14; + selection-background-color: #e3d8b9; +} + +QTableView::item:hover { + background-color: rgba(0,0,0,10); /* temporal: is it displayed in Linux or Windows? on OSX it isn't */ +} + +QTableView::item:disabled { + color: #8c8c8c; +} + +QTableView::item:selected { + color: #624b14; + border-color: #e3d8b9; /* same as focused background color */ + border-bottom-color: #e3b64d; /* same as focused border color */ +} + +/* fix for elements inside the cells */ +QTableView QComboBox, +QTableView QAbstractSpinBox, +QTableView QSpinBox, +QTableView QDoubleSpinBox, +QTableView QLineEdit, +QTableView QTextEdit, +QTableView QTimeEdit, +QTableView QDateEdit, +QTableView QDateTimeEdit, +QTableView QComboBox:drop-down, +QTableView QAbstractSpinBox:up-button, +QTableView QSpinBox:up-button, +QTableView QDoubleSpinBox:up-button, +QTableView QTimeEdit:up-button, +QTableView QDateEdit:up-button, +QTableView QDateTimeEdit:up-button, +QTableView QAbstractSpinBox:down-button, +QTableView QSpinBox:down-button, +QTableView QDoubleSpinBox:down-button, +QTableView QTimeEdit:down-button, +QTableView QDateEdit:down-button, +QTableView QDateTimeEdit:down-button, +QTableView Gui--ColorButton { + border-radius: 0px; +} + +QTableView QComboBox, +QTableView QAbstractSpinBox, +QTableView QSpinBox, +QTableView QDoubleSpinBox, +QTableView QLineEdit, +QTableView QTextEdit, +QTableView QTimeEdit, +QTableView QDateEdit, +QTableView QDateTimeEdit { + color: black; + background-color: transparent; + border-color: transparent; +} + +QTableView QComboBox:drop-down, +QTableView QAbstractSpinBox:up-button, +QTableView QSpinBox:up-button, +QTableView QDoubleSpinBox:up-button, +QTableView QTimeEdit:up-button, +QTableView QDateEdit:up-button, +QTableView QDateTimeEdit:up-button, +QTableView QAbstractSpinBox:down-button, +QTableView QSpinBox:down-button, +QTableView QDoubleSpinBox:down-button, +QTableView QTimeEdit:down-button, +QTableView QDateEdit:down-button, +QTableView QDateTimeEdit:down-button, +QTableView Gui--ColorButton { + background-color: rgba(0,0,0,30); +} + +QTableView QComboBox:focus, +QTableView QAbstractSpinBox:focus, +QTableView QSpinBox:focus, +QTableView QDoubleSpinBox:focus, +QTableView QLineEdit:focus, +QTableView QTextEdit:focus, +QTableView QTimeEdit:focus, +QTableView QDateEdit:focus, +QTableView QDateTimeEdit:focus { + color: #624b14; + selection-color: white; + selection-background-color: #daa116; + border-color: #e3d8b9; + background-color: #e3d8b9; +} + +QTableView QComboBox:disabled, +QTableView QAbstractSpinBox:disabled, +QTableView QSpinBox:disabled, +QTableView QDoubleSpinBox:disabled, +QTableView QLineEdit:disabled, +QTableView QTextEdit:disabled, +QTableView QTimeEdit:disabled, +QTableView QDateEdit:disabled, +QTableView QDateTimeEdit:disabled { + color: rgba(0,0,0,120); + background-color: transparent; + border-color: transparent; +} + +QTableView QComboBox:read-only, +QTableView QAbstractSpinBox:read-only, +QTableView QSpinBox:read-only, +QTableView QDoubleSpinBox:read-only, +QTableView QLineEdit:read-only, +QTableView QTextEdit:read-only, +QTableView QTimeEdit:read-only, +QTableView QDateEdit:read-only, +QTableView QDateTimeEdit:read-only { + color: black; + background-color: transparent; + border-color: transparent; +} + + +/*================================================================================================== +EXPERIMENTAL +==================================================================================================*/ + +/* Fix for preventing elements in different rows to accidentaly overlap */ +QDialog QGroupBox QFrame { + margin: 2px 0px; +} + +*[mandatoryField="true"] { background-color: cyan } \ No newline at end of file diff --git a/src/Gui/Stylesheets/Light - blue.qss b/src/Gui/Stylesheets/Light - blue.qss new file mode 100644 index 000000000..e1452835f --- /dev/null +++ b/src/Gui/Stylesheets/Light - blue.qss @@ -0,0 +1,1900 @@ +/* +ABOUT +============================================================================================================ +version 2.01 +QT theme (stylesheet) specially developed for FreeCAD (http://www.freecadweb.org/). +It might work with other software that uses QT styling. + + +LICENSE +============================================================================================================ +Copyright (c) 2016 Pablo Gil Fernández + +This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. +To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/. + + +INSTALLATION +============================================================================================================ +1) Place the .qss files and /images/ folder in the path that fits your OS: + OSX = /Users/[YOUR_USER_NAME]/Library/Preferences/FreeCAD/Gui/Stylesheets/ + WINDOWS = C:/[INSTALLATION_PATH]/FreeCAD/data/Gui/Stylesheets/ + LINUX = /home/[YOUR_USER_NAME]/.FreeCAD/Gui/Stylesheets/ + +2) In order to display correctly images: + 2.1) FreeCAD 0.16 (development builds newer than commit 5b3d50a): that's it, you are done! + + 2.2) FreeCAD 0.15: Images used in the theme need ABSOLUTE paths to be found by FreeCAD, so you should search the string "qss:images" (without "") and replace with the real path of your computer. It should be done with all the .qss files you want to install-use + find = qss:images + replace = /Users/myName/Library/Preferences/FreeCAD/Gui/Stylesheets/images + + +CUSTOMIZATION +============================================================================================================ +If you would like to change the overall look/style of the theme, just find and replace following colors in the whole file: + BACKGROUND (darker to ligher) + black + #505050 + #6e6e6e + #828282 + #a2a2a0 + #b6b6b6 + #c8c8c8 + #c3c3c3 + #d2d2d2 + #dcdcdc + #e0e0e0 + #e6e6e6 + #f0f0f0 + #f5f5f5 = main background color + white + + SELECTION (darker to lighter) + #1b3774 + #2053c0 + #3874f2 + #5e90fa = main selection color + #6f9efa = used to build QSpinBox up and down buttons, it's used as color in the middle + #7cabf9 + #adc5ed + #cbd8e6 + + + + +KNOWN BUGS and TO DO +============================================================================================================ + - please, follow the link to get updated information: http://forum.freecadweb.org/viewtopic.php?f=10&t=12417 +*/ + + +/*================================================================================================== +Reset elements +==================================================================================================*/ +/* Reseting everything helps to unify styles across different operating systems */ +* { + padding: 0px; + margin: 0px; + border: 0px; + border-style: none; + border-image: none; + outline: 0; +} + +/* specific reset for elements inside QToolBar */ +QToolBar * { + margin: 0px; + padding: 0px; +} + + +/*================================================================================================== +Main window +==================================================================================================*/ +QMainWindow, +QDialog, +QToolBar { + background-color: #f5f5f5; /* main background color */ +} + +QMdiArea[showImage="true"] { + background-image: url(qss:images/background_freecad.png); + background-position: center center; + background-repeat: no-repeat; +} + + +/*================================================================================================== +MENUS +==================================================================================================*/ +QMenuBar, +QMenuBar::item { + color: black; + background-color: #f5f5f5; /* main background color */ +} + +QMenu, +QMenu::item { + color: black; + background-color: #f5f5f5; /* main background color */ + text-decoration: none; +} + +QMenuBar::item:selected, +QMenuBar::item:pressed, +QMenu::item:selected, +QMenu::item:pressed { + color: white; + background-color: #5e90fa; +} + +QMenu::right-arrow { + width: 10px; + height: 10px; + image:url(qss:images/right_arrow_dark.png); + margin-right: 2px; +} + +QMenu::right-arrow:selected { + image:url(qss:images/right_arrow_lighter.png); +} + +QMenu::item { + padding: 2px 16px 2px 26px; /* make room for icon at left */ + border: 1px solid transparent; /* reserve space for selection border */ +} + +QMenu::icon { + margin-left: 2px; +} + +QMenu::separator { + height: 1px; + background-color: rgba(0,0,0,30); + margin: 6px 4px; +} + +QMenu::indicator:non-exclusive:checked { + color: white; +} + + +/*================================================================================================== +Tool bar +==================================================================================================*/ +QToolBar { + border: none; + min-width: 32px; /* allows a minimum of space between QToolBar colums */ + min-height: 32px; /* allows a minimum of space between QToolBar rows */ +} + +QToolBar::handle:horizontal { + background-image: url(qss:images/Hmovetoolbar_dark.png); + width: 10px; + margin: 6px 2px 6px 2px; + background-position: top right; + background-repeat: repeat-y; +} + +QToolBar::handle:vertical { + background-image: url(qss:images/Vmovetoolbar_dark.png); + height: 10px; + margin: 2px 6px 2px 6px; + background-position: left bottom; + background-repeat: repeat-x; +} + +QToolBar::separator:horizontal { + background-image: url(qss:images/separtoolbar_dark.png); + width: 10px; + margin: 6px 2px 6px 2px; + background-position: center center; + background-repeat: repeat-y; +} + +QToolBar::separator:vertical { + background-image: url(qss:images/separtoolbar_dark.png); + height: 10px; + margin: 2px 6px 2px 6px; + background-position: center center; + background-repeat: repeat-x; +} + + +/*================================================================================================== +Group box +==================================================================================================*/ +QGroupBox { + color: rgba(0,0,0,120); + border:1px solid rgba(0, 0, 0, 20); /* lighter than its own border-color */; + border-radius: 3px; + margin-top: 10px; + padding: 6px; + background-color: rgba(255, 255, 255, 15); +} + +QGroupBox:title { + top: -8px; + left: 12px; +} + + +/*================================================================================================== +Tooltip +==================================================================================================*/ +QToolTip { + color: white; + background-color: #828282; + /*opacity: 90%; doesn't correctly work */ + padding: 4px; + border-radius: 3px; /* has no effect */ +} + + +/*================================================================================================== +Dock widget +==================================================================================================*/ +QDockWidget { + color: rgba(0,0,0,120); + titlebar-close-icon: url(qss:images/close_dark.png); + titlebar-normal-icon: url(qss:images/undock_dark.png); +} + +QDockWidget::title { + text-align: center; + background-color: rgba(0,0,0,10); + border: 4px solid #f5f5f5; /* fix to simulate margin between this :title and tabs */ /* same as main background color */ + border-radius: 6px; /* bigger than normal due to previous border fix */ + padding: 4px 0px; /* also needed because of previous border fix */ +} + +QDockWidget::close-button, +QDockWidget::float-button { + border: none; + background: transparent; + border-radius: 3px; + subcontrol-origin: padding; + subcontrol-position: right center; +} + +QDockWidget::close-button { + right: 4px; +} + +QDockWidget::float-button { + right: 22px; +} + +QDockWidget::close-button:hover, +QDockWidget::float-button:hover { + background-color: rgba(0,0,0,15); +} + +QDockWidget::close-button:pressed, +QDockWidget::float-button:pressed { + background-color: rgba(0,0,0,30); +} + +/* fix for Python Console (probably there is a smarter way to arrive to it) */ +QDockWidget > QFrame { + background-color: #f0f0f0; + border: 1px solid #c3c3c3; +} + + +/*================================================================================================== +Progress bar +==================================================================================================*/ +QProgressBar, +QProgressBar:horizontal { + color: white; + background-color: rgba(0,0,0,10); + text-align: center; + border: 1px solid rgba(0,0,0,80); + padding: 1px; + border-radius: 3px; +} +QProgressBar::chunk, +QProgressBar::chunk:horizontal { + background-color: qlineargradient(spread:pad, x1:1, y1:0.545, x2:1, y2:0, stop:0 #3874f2, stop:1 #5e90fa); + border-radius: 3px; +} + + +/*================================================================================================== +Scroll +==================================================================================================*/ +QAbstractScrollArea { + border-radius: 2px; + background-color: transparent; +} + +QAbstractScrollArea::corner { + border: none; + background-color: transparent; +} + +QScrollBar:horizontal { + background-color: transparent; + height: 15px; + margin: 0px; +} + +QScrollBar::handle:vertical, +QScrollBar::handle:horizontal { + background-color: rgba(0,0,0,80); +} + +QScrollBar::handle:vertical:hover, +QScrollBar::handle:horizontal:hover { + background-color: rgba(0,0,0,100); +} + +QScrollBar::handle:horizontal { + min-width: 5px; + border-radius: 3px; + margin: 4px 15px; +} + +QScrollBar::sub-line:horizontal { + margin: 1px 3px 0px 3px; /* 1px to correctly fit the 10px width image */ + border-image: url(qss:images/left_arrow_dark.png); + width: 6px; + height: 10px; + subcontrol-position: left; + subcontrol-origin: margin; +} + +QScrollBar::add-line:horizontal { + margin: 1px 3px 0px 3px; /* 1px to correctly fit the 10px width image */ + border-image: url(qss:images/right_arrow_dark.png); + width: 6px; + height: 10px; + subcontrol-position: right; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:horizontal:hover, +QScrollBar::sub-line:horizontal:on { + border-image: url(qss:images/left_arrow_darker.png); +} + +QScrollBar::add-line:horizontal:hover, +QScrollBar::add-line:horizontal:on { + border-image: url(qss:images/right_arrow_darker.png); +} + +QScrollBar::up-arrow:horizontal, +QScrollBar::down-arrow:horizontal { + background-color: none; +} + +QScrollBar::add-page:horizontal, +QScrollBar::sub-page:horizontal { + background-color: transparent; +} + +QScrollBar:vertical { + background-color: transparent; + width: 15px; + margin: 0px; +} + +QScrollBar::handle:vertical { + min-height: 5px; + border-radius: 3px; + margin: 15px 4px; +} + +QScrollBar::sub-line:vertical { + margin: 3px 0px 3px 1px; /* 1px to correctly fit the 10px width image */ + border-image: url(qss:images/up_arrow_dark.png); + height: 6px; + width: 10px; + subcontrol-position: top; + subcontrol-origin: margin; +} + +QScrollBar::add-line:vertical { + margin: 3px 0px 3px 1px; /* 1px to correctly fit the 10px width image */ + border-image: url(qss:images/down_arrow_dark.png); + height: 6px; + width: 10px; + subcontrol-position: bottom; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:vertical:hover, +QScrollBar::sub-line:vertical:on { + border-image: url(qss:images/up_arrow_darker.png); +} + +QScrollBar::add-line:vertical:hover, +QScrollBar::add-line:vertical:on { + border-image: url(qss:images/down_arrow_darker.png); +} + +QScrollBar::up-arrow:vertical, +QScrollBar::down-arrow:vertical { + background-color: none; +} + +QScrollBar::add-page:vertical, +QScrollBar::sub-page:vertical { + background-color: transparent; +} + + +/*================================================================================================== +Tab bar +==================================================================================================*/ +QTabWidget::pane { + background-color: transparent; /* temporal (transparent background) */ /* tab content background color */ + position: absolute; +} + +QTabWidget::pane:top { + top: -1px; + border-top: 1px solid #d2d2d2; +} + +QTabWidget::pane:bottom { + bottom: -1px; + border-bottom: 1px solid #d2d2d2; +} + +QTabWidget::pane:left { + right: -1px; + border-right: 1px solid #d2d2d2; +} + +QTabWidget::pane:right { + left: -1px; + border-left: 1px solid #d2d2d2; +} + +QTabWidget::tab-bar:top, +QTabWidget::tab-bar:bottom { + left: 10px; +} + +QTabWidget::tab-bar:left, +QTabWidget::tab-bar:right { + top: 10px; +} + +QTabBar { + qproperty-drawBase: 0; /* important */ + background-color: transparent; +} + +/* Workaround for QTabBars created from docked QDockWidgets which don't draw the border if not set and reseted as follows: */ +QTabBar { + border-top: 1px solid #d2d2d2; /* set color for all QTabBars */ +} +QDockWidget QTabBar { + border-color: transparent; /* set color for all QTabBars but ones created from QDockWidget */ +} +QDialog QTabBar { + border-color: transparent; /* set color for QTabBars inside Preferences dialog */ +} +/* end fix */ + +QTabBar::tab { + background-color: transparent; + border: 1px solid transparent; + padding: 3px; +} + +QTabBar::tab:top, +QTabBar::tab:bottom { + border-top-width: 4px; /* same as selected tab colored border in order to center close-button */ + border-bottom-width: 4px; /* same as selected tab colored border in order to center close-button */ + min-width: 11ex; + margin-left: 2px; + margin-right: 2px; +} + +QTabBar::tab:left, +QTabBar::tab:right { + border-left-width: 4px; /* same as selected tab colored border in order to center close-button */ + border-right-width: 4px; /* same as selected tab colored border in order to center close-button */ + min-height: 14ex; + margin-top: 2px; + margin-bottom: 2px; +} + +QTabBar::tab:selected { + background-color: transparent; /* temporal (transparent background) */ + border-color: #d2d2d2; +} + +QTabBar::tab:top:selected { + border-top: 4px solid qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #5e90fa, stop:1 #3874f2); /* selection color */ + border-bottom-color: #f5f5f5; /* same as tab content background color */ +} + +QTabBar::tab:bottom:selected { + border-bottom: 4px solid qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #5e90fa, stop:1 #3874f2); /* selection color */ + border-top-color: #f5f5f5; /* same as tab content background color */ +} + +QTabBar::tab:right:selected { + border-left: 4px solid qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 #5e90fa, stop:1 #3874f2); /* selection color */ + border-right-color: #f5f5f5; /* same as tab content background color */ +} + +QTabBar::tab:left:selected { + border-right: 4px solid qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 #5e90fa, stop:1 #3874f2); /* selection color */ + border-left-color: #f5f5f5; /* same as tab content background color */ +} + +QTabBar::tab:!selected { + color: rgba(0,0,0,160); +} + +QTabBar::tab:!selected:hover { + color: rgba(0,0,0,220); + background-color: rgba(0,0,0,20); +} + +QTabBar::tab:first:selected { + margin-left: 0; /* the first selected tab has nothing to overlap with on the left */ +} + +QTabBar::tab:last:selected { + margin-right: 0; /* the last selected tab has nothing to overlap with on the right */ +} + +QTabBar::tab:only-one { + margin: 0; /* if there is only one tab, we don't want overlapping margins */ +} + +/* hack to access Preference TabBar background */ +QDialog#Gui__Dialog__DlgPreferences > QFrame QFrame { + background-color: transparent; /* main background color (in Windows is #f5f5f5) */ +} + +/* fix for previous hack that broke QTabWidget background on Windows */ +QDialog#Gui__Dialog__DlgPreferences QTabWidget::pane { + background-color: transparent; /* temporal (transparent background) */ +} + +/* hack to correctly align Preferences icon list on OSX */ +QDialog#Gui__Dialog__DlgPreferences > QListView { + min-width: 130px; +} + +/* unique styles for sections inside Preferences */ +QDialog#Gui__Dialog__DlgPreferences > QListView::item { + border-radius: 6px; +} + +QDialog#Gui__Dialog__DlgPreferences > QListView::item:hover { + background-color: #dcdcdc; +} + +QDialog#Gui__Dialog__DlgPreferences > QListView::item:selected { + color: #1b3774; + background-color: #cbd8e6; + border: 3px solid #7cabf9; +} + + +/*================================================================================================== +Tab bar buttons +==================================================================================================*/ +/* Close button */ +QTabBar::close-button { + subcontrol-origin: margin; + subcontrol-position: center right; /* only works for QT 4.6 and newer */; + border-radius: 2px; + background-image: url(qss:images/close_dark.png); + background-position: center center; + background-repeat: none; +} + +QTabBar::close-button:hover { + background-color: rgba(0,0,0,20); +} + +QTabBar::close-button:pressed { + background-color: rgba(0,0,0,30); +} + +/* Fix for lists inside Model tab */ +QDockWidget QTreeView, +QDockWidget QListView, +QDockWidget QTableView { + margin: 6px; + border: 1px solid #c3c3c3; /* same as regular QTreeView, QListView and QTableView */ + min-height: 40px; /* neccesary in some areas of FreeCAD */ +} + +/* Buttons to scroll tabs if there is not space to show all of them: */ +QTabBar::scroller { + width: 20px; /* the width of the scroll buttons */ +} + +QTabBar QToolButton, +QTabBar QToolButton:hover { + background-color: #f5f5f5; /* same as main background color */ +} + +QTabBar QToolButton::right-arrow:enabled { + image: url(qss:images/right_arrow_dark.png); +} + +QTabBar QToolButton::right-arrow:disabled, +QTabBar QToolButton::right-arrow:off { + image: url(qss:images/right_arrow_disabled_dark.png); +} + +QTabBar QToolButton::right-arrow:hover { + image: url(qss:images/right_arrow_darker.png); +} + + QTabBar QToolButton::left-arrow:enabled { + image: url(qss:images/left_arrow_dark.png); +} + + QTabBar QToolButton::left-arrow:disabled, + QTabBar QToolButton::left-arrow:off { + image: url(qss:images/left_arrow_disabled_dark.png); +} + + QTabBar QToolButton::left-arrow:hover { + image: url(qss:images/left_arrow_darker.png); +} + + QTabBar QToolButton::up-arrow:enabled { + image: url(qss:images/up_arrow_dark.png); +} + + QTabBar QToolButton::up-arrow:disabled, + QTabBar QToolButton::up-arrow:off { + image: url(qss:images/up_arrow_disabled_dark.png); +} + + QTabBar QToolButton::up-arrow:hover { + image: url(qss:images/up_arrow_darker.png); +} + + QTabBar QToolButton::down-arrow:enabled { + image: url(qss:images/down_arrow_dark.png); +} + + QTabBar QToolButton::down-arrow:disabled, + QTabBar QToolButton::down-arrow:off { + image: url(qss:images/down_arrow_disabled_dark.png); +} + + QTabBar QToolButton::down-arrow:hover { + image: url(qss:images/down_arrow_darker.png); +} + +QTabBar::tear { + /* default OS tear better */ +} + + +/*================================================================================================== +Tree and list views +==================================================================================================*/ +QTreeView, +QListView, +QTableView { + background-color: #f0f0f0; + alternate-background-color: #e6e6e6; /* related with QListView background */ + border: 1px solid #c3c3c3; + selection-color: white; + selection-background-color: #5e90fa; /* should be similar to QListView::item selected background-color */ + show-decoration-selected: 1; /* make the selection span the entire width of the view */ + border-radius: 3px; +} + +QListView::item:hover, +QTreeView::item:hover { + background-color: transparent; /* fix to homogenize it on all OSs */ +} + +QListView::item:selected, +QTreeView::item:selected { + color: white; /* should be similar to QListView selection-color */ + background-color: #5e90fa; /* should be similar to QListView selection-background-color */ + show-decoration-selected: 1; /* make the selection span the entire width of the view */ +} + +/* Property Editor QTreeView (FreeCAD custom widget) */ +Gui--PropertyEditor--PropertyEditor { + gridline-color: #d2d2d2; /* same as Group header background */ +} + +/* fix for column items background when a link is present */ +Gui--PropertyEditor--PropertyEditor > QWidget > QFrame:focus { + background-color: #cbd8e6; /* same as focused background color */ +} + +/* hack to hide weird redundant information inside the value of a Placement cell */ +Gui--PropertyEditor--PropertyEditor > QWidget > QWidget > QLabel, +Gui--PropertyEditor--PropertyEditor > QWidget > QWidget > QLabel:disabled { + color: transparent; + background-color: transparent; + border: none; + border-radius: 0px; + margin: 0px; + padding: 0px; +} + +/* hack to hide non editable cells inside Property values */ +Gui--PropertyEditor--PropertyEditor QLineEdit:read-only, +Gui--PropertyEditor--PropertyEditor QLineEdit:disabled, +Gui--PropertyEditor--PropertyEditor QAbstractSpinBox:read-only, +Gui--PropertyEditor--PropertyEditor QAbstractSpinBox:disabled { + color: transparent; + border-color: transparent; + background-color: transparent; + selection-color: transparent; + selection-background-color: transparent; +} + +/* hack to disable margin inside Property values to following elements */ +Gui--PropertyEditor--PropertyEditor QSpinBox, +Gui--PropertyEditor--PropertyEditor QDoubleSpinBox, +Gui--PropertyEditor--PropertyEditor QAbstractSpinBox, +Gui--PropertyEditor--PropertyEditor QLineEdit, +Gui--PropertyEditor--PropertyEditor QComboBox { + margin-left: 0px; + margin-right: 0px; + padding-top: 0px; + padding-bottom: 0px; +} + +/* set border-radius to 0px inside list views */ +QTreeView > QWidget > QComboBox, +QTreeView > QWidget > QAbstractSpinBox, +QTreeView > QWidget > QSpinBox, +QTreeView > QWidget > QDoubleSpinBox, +QTreeView > QWidget > QLineEdit, +QTreeView > QWidget > QTextEdit, +QTreeView > QWidget > QTimeEdit, +QTreeView > QWidget > QDateEdit, +QTreeView > QWidget > QDateTimeEdit, +QTreeView > QWidget > QComboBox:drop-down, +QTreeView > QWidget > QAbstractSpinBox:up-button, +QTreeView > QWidget > QSpinBox:up-button, +QTreeView > QWidget > QDoubleSpinBox:up-button, +QTreeView > QWidget > QTimeEdit:up-button, +QTreeView > QWidget > QDateEdit:up-button, +QTreeView > QWidget > QDateTimeEdit:up-button, +QTreeView > QWidget > QAbstractSpinBox:down-button, +QTreeView > QWidget > QSpinBox:down-button, +QTreeView > QWidget > QDoubleSpinBox:down-button, +QTreeView > QWidget > QTimeEdit:down-button, +QTreeView > QWidget > QDateEdit:down-button, +QTreeView > QWidget > QDateTimeEdit:down-button, +QTreeView > QWidget > Gui--ColorButton { + border-radius: 0px; +} + +/* set focus colors to best viewing the editable fields */ +QTreeView > QWidget > QComboBox:focus, +QTreeView > QWidget > QAbstractSpinBox:focus, +QTreeView > QWidget > QSpinBox:focus, +QTreeView > QWidget > QDoubleSpinBox:focus, +QTreeView > QWidget > QLineEdit:focus, +QTreeView > QWidget > QTextEdit:focus, +QTreeView > QWidget > QTimeEdit:focus, +QTreeView > QWidget > QDateEdit:focus, +QTreeView > QWidget > QDateTimeEdit:focus { + border-color: #cbd8e6; /* same as focused background color */ + border-bottom-color: #7cabf9; /* same as focused border color */ +} + +QTreeView > QWidget > QAbstractSpinBox:read-only, +QTreeView > QWidget > QSpinBox:read-only, +QTreeView > QWidget > QDoubleSpinBox:read-only, +QTreeView > QWidget > QLineEdit:read-only, +QTreeView > QWidget > QTextEdit:read-only, +QTreeView > QWidget > QTimeEdit:read-only, +QTreeView > QWidget > QDateEdit:read-only, +QTreeView > QWidget > QDateTimeEdit:read-only { + color: transparent; + background-color: transparent; + border-color: transparent; +} + +/* Fix to correctly (not totally) draw QTextEdit on OSX at Page properties: "Page result", "Template" and "Editable Texts" */ +Gui--PropertyEditor--PropertyEditor > QWidget > QWidget > QWidget { + min-height: 14px; +} + + +/*================================================================================================== +Header of tree and list views +==================================================================================================*/ +QHeaderView { + background-color: #c3c3c3; + border-top-left-radius: 2px; /* 1px less than its container */ + border-top-right-radius: 2px; /* 1px less than its container */ + border-bottom-left-radius: 0px; + border-bottom-right-radius: 0px; +} + +QHeaderView::section { + border:none; + padding: 4px 6px; + background-color: #c3c3c3; +} + +QHeaderView::section:horizontal { + padding: 4px 6px; /* left and right value similar to QHeaderView::section */ + border-right: 1px solid rgba(0,0,0,30); +} + +QHeaderView::section:vertical { + border-bottom: 1px solid rgba(0,0,0,30); +} + +QTableCornerButton::section { + background-color: #c3c3c3; + border-top: none; + border-left: none; + border-right: 1px solid rgba(0,0,0,30); + border-bottom: 1px solid rgba(0,0,0,30); +} + +QHeaderView::section:last { + border-right: none; +} + +QHeaderView::up-arrow { + image: url(qss:images/up_arrow_dark.png); +} + +QHeaderView::up-arrow:hover { + image: url(qss:images/up_arrow_darker.png); +} + +QHeaderView::down-arrow { + image: url(qss:images/down_arrow_dark.png); +} + +QHeaderView::down-arrow:hover { + image: url(qss:images/down_arrow_darker.png); +} + +/* Group header inside Property Editor (FreeCAD custom widget) */ +Gui--PropertyEditor--PropertyEditor { + qproperty-groupTextColor: #828282; /* same as main background color */ + qproperty-groupBackground: #d2d2d2; /* same as item gridlines */ +} + + +/*================================================================================================== +Branch system for QTreeViews +==================================================================================================*/ +QTreeView::branch { + background: transparent; +} + +QTreeView::branch:has-siblings:!adjoins-item { + border-image: url(qss:images/branch_vline.png) 0; +} + +QTreeView::branch:has-siblings:adjoins-item { + border-image: url(qss:images/branch_more.png) 0; +} + +QTreeView::branch:!has-children:!has-siblings:adjoins-item { + border-image: url(qss:images/branch_end.png) 0; +} + +QTreeView::branch:closed:has-children:has-siblings { + image: url(qss:images/branch_closed_dark.png); +} + +QTreeView::branch:has-children:!has-siblings:closed { + image: url(qss:images/branch_closed_dark.png); + border-image: url(qss:images/branch_end.png) 0; +} + +QTreeView::branch:open:has-children:has-siblings { + image: url(qss:images/branch_open_dark.png); + border-image: url(qss:images/branch_more.png) 0; +} + +QTreeView::branch:open:has-children:!has-siblings { + image: url(qss:images/branch_open_dark.png); + border-image: url(qss:images/branch_end.png) 0; +} + + +/*================================================================================================== +Splitter and windows separator +==================================================================================================*/ +QSplitter::handle { + margin: 0px 11px; + padding: 0px; +} + +QSplitter::handle:vertical { + background-image: url(qss:images/splitter_horizontal_dark.png); + background-position: center center; + background-repeat: none; + margin: 2px 4px 2px 4px; + height: 2px; +} + +QSplitter::handle:horizontal { + background-image: url(qss:images/splitter_vertical_dark.png); + background-position: center center; + background-repeat: none; + margin: 4px 2px 4px 2px; + width: 2px; +} + +/* Similar to the splitter is the following window separator: */ +QMainWindow::separator { + background-position: center center; + background-repeat: none; +} + +QMainWindow::separator:horizontal { + height: 2px; + background-image: url(qss:images/splitter_horizontal_dark.png); + margin: 4px 2px 4px 2px; +} + +QMainWindow::separator:vertical { + width: 2px; + background-image: url(qss:images/splitter_vertical_dark.png); + margin: 2px 4px 2px 4px; +} + + +/*================================================================================================== +Text/Python editor (macros, etc...) +==================================================================================================*/ +QPlainTextEdit, +QPlainTextEdit:focus { + background-color: #c8c8c8; + selection-color: white; + selection-background-color: #3874f2; + border: 1px solid #505050; + border-radius: 3px; + margin: 4px; +} + + +/*================================================================================================== +Tasks panel (custom FreeCAD class) +==================================================================================================*/ +/* Action group */ +QFrame[class="panel"] { + background-color: transparent; /* temporal (transparent background) */ +} + +/* Separator line */ +QSint--ActionGroup QFrame[height="1"], +QSint--ActionGroup QFrame[height="2"], +QSint--ActionGroup QFrame[height="3"], +QSint--ActionGroup QFrame[width="1"], +QSint--ActionGroup QFrame[width="2"], +QSint--ActionGroup QFrame[width="3"] { + border-color: rgba(0,0,0,60); +} + +/* Panel header */ +QSint--ActionGroup QFrame[class="header"] { + border: none; + background-color: #b6b6b6; /* Task Panel Header background color */ + border-top-left-radius: 3px; + border-top-right-radius: 3px; + border-bottom-left-radius: 0px; + border-bottom-right-radius: 0px; + margin: 0px; + padding: 0px; +} + +QSint--ActionGroup QFrame[class="header"]:hover { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #5e90fa, stop:1 #3874f2); +} + +QSint--ActionGroup QToolButton[class="header"] { + color: white; /* Task Panel Header text color */ + text-align: left; + font-weight: bold; + border: none; + margin: 0px; + padding: 0px; +} + +QSint--ActionGroup QFrame[class="header"] QLabel { + background-color: transparent; + background-image: url(qss:images/down_arrow_light.png); + background-repeat: none; + background-position: center center; + padding: 0px; + margin: 0px; +} + +QSint--ActionGroup QFrame[class="header"] QLabel:hover { + background-color: transparent; + background-image: url(qss:images/down_arrow_lighter.png); +} + +QSint--ActionGroup QFrame[class="header"] QLabel[fold="true"] { + background-color: transparent; + background-image: url(qss:images/up_arrow_light.png); + background-repeat: none; + background-position: center center; + padding: 0px; + margin: 0px; +} + +QSint--ActionGroup QFrame[class="header"] QLabel[fold="true"]:hover { + background-color: transparent; + background-image: url(qss:images/up_arrow_lighter.png); +} + +QSint--ActionGroup QFrame[class="content"] { + background-color: #e6e6e6; /* Task Panel background color */ + margin: 0px; + padding: 0px; + border: none; + border-top-left-radius: 0px; + border-top-right-radius: 0px; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; +} + +QSint--ActionGroup QFrame[class="content"] > QWidget { + background-color: #e6e6e6; /* Task Panel background color */ +} + +/* Fixs for tabs inside Task Panel */ +QSint--ActionGroup QFrame[class="content"] QTabBar::tab:top:selected { + border-bottom-color: #e6e6e6; /* same as Task Panel background color */ +} + +QSint--ActionGroup QFrame[class="content"] QTabBar::tab:bottom:selected { + border-top-color: #e6e6e6; /* same as Task Panel background color */ +} + +QSint--ActionGroup QFrame[class="content"] QTabBar::tab:right:selected { + border-right-color: #e6e6e6; /* same as Task Panel background color */ +} + +QSint--ActionGroup QFrame[class="content"] QTabBar::tab:left:selected { + border-left-color: #e6e6e6; /* same as Task Panel background color */ +} + + +/*================================================================================================== +Buttons +==================================================================================================*/ +/* Common */ +QComboBox, +QAbstractSpinBox, +QSpinBox, +QDoubleSpinBox, +QLineEdit, +QTextEdit, +QTimeEdit, +QDateEdit, +QDateTimeEdit { + color: #6e6e6e; + background-color: #e0e0e0; + selection-color: white; + selection-background-color: #5e90fa; + border: 1px solid #e0e0e0; + border-radius: 3px; + min-width: 50px; /* it ensures the default value is correctly displayed */ + padding: 1px 2px; /* temporal: could don't be compatible with elements inside Tree/List view */ +} + +/* shifts text/number editable field to the left to make space for the up/down or drop-down buttons */ +QComboBox, +QAbstractSpinBox, +QSpinBox, +QDoubleSpinBox, +QTimeEdit, +QDateEdit, +QDateTimeEdit { + padding-right: 20px; +} + +/* when QTextEdit are no editable */ +QTextEdit:!editable { + background-color: #f0f0f0; + border: 1px solid #c3c3c3; +} + +QComboBox:focus, +QAbstractSpinBox:focus, +QSpinBox:focus, +QDoubleSpinBox:focus, +QLineEdit:focus, +QTextEdit:focus, +QTimeEdit:focus, +QDateEdit:focus, +QDateTimeEdit:focus { + color: black; + border-color: #7cabf9; + border-right-color: qlineargradient(spread:pad, x1:1, y1:0.8, x2:1, y2:0, stop:0 #5e90fa, stop:1 #7cabf9); /* same as up/down or drop-down button color */ + background-color: #cbd8e6; +} + +QComboBox:disabled, +QAbstractSpinBox:disabled, +QSpinBox:disabled, +QDoubleSpinBox:disabled, +QLineEdit:disabled, +QTextEdit:disabled, +QTimeEdit:disabled, +QDateEdit:disabled, +QDateTimeEdit:disabled { + color: #c3c3c3; + background-color: #e0e0e0; /* same as enabled color */ + border-color: #e0e0e0; /* same as enabled color */ +} + +QAbstractSpinBox:up-button, +QSpinBox:up-button, +QDoubleSpinBox:up-button, +QTimeEdit:up-button, +QDateEdit:up-button, +QDateTimeEdit:up-button, +QAbstractSpinBox:down-button, +QSpinBox:down-button, +QDoubleSpinBox:down-button, +QTimeEdit:down-button, +QDateEdit:down-button, +QDateTimeEdit:down-button { + background-color: #d2d2d2; + subcontrol-origin: border; /* important */ + width: 20px; /* same as QComboBox ... QDateTimeEdit padding-right */ +} + +QAbstractSpinBox:up-button, +QSpinBox:up-button, +QDoubleSpinBox:up-button, +QTimeEdit:up-button, +QDateEdit:up-button, +QDateTimeEdit:up-button { + subcontrol-position: top right; + border-top-right-radius: 3px; + height: 12px; /* fix for Ubuntu that doesn't divide the up/down button into the exact middle */ +} + +QAbstractSpinBox:down-button, +QSpinBox:down-button, +QDoubleSpinBox:down-button, +QTimeEdit:down-button, +QDateEdit:down-button, +QDateTimeEdit:down-button { + subcontrol-position: bottom right; + border-bottom-right-radius: 3px; +} + +QAbstractSpinBox:up-button:focus, +QSpinBox:up-button:focus, +QDoubleSpinBox:up-button:focus, +QTimeEdit:up-button:focus, +QDateEdit:up-button:focus, +QDateTimeEdit:up-button:focus { + background-color: qlineargradient(spread:pad, x1:1, y1:0.8, x2:1, y2:0, stop:0 #6f9efa, stop:1 #7cabf9); +} + +QAbstractSpinBox:down-button:focus, +QSpinBox:down-button:focus, +QDoubleSpinBox:down-button:focus, +QTimeEdit:down-button:focus, +QDateEdit:down-button:focus, +QDateTimeEdit:down-button:focus { + background-color: qlineargradient(spread:pad, x1:1, y1:0.8, x2:1, y2:0, stop:0 #5e90fa, stop:1 #6f9efa); +} + +QAbstractSpinBox:up-button:disabled, +QSpinBox:up-button:disabled, +QDoubleSpinBox:up-button:disabled, +QTimeEdit:up-button:disabled, +QDateEdit:up-button:disabled, +QDateTimeEdit:up-button:disabled, +QAbstractSpinBox:down-button:disabled, +QSpinBox:down-button:disabled, +QDoubleSpinBox:down-button:disabled, +QTimeEdit:down-button:disabled, +QDateEdit:down-button:disabled, +QDateTimeEdit:down-button:disabled { + background-color: transparent; +} + +QAbstractSpinBox::up-arrow, +QSpinBox::up-arrow, +QDoubleSpinBox::up-arrow, +QTimeEdit::up-arrow, +QDateEdit::up-arrow, +QDateTimeEdit::up-arrow { + image: url(qss:images/up_arrow_dark.png); + top: 0px; /* fix simetry between up and down images */ +} + +QAbstractSpinBox::up-arrow:focus, +QSpinBox::up-arrow:focus, +QDoubleSpinBox::up-arrow:focus, +QTimeEdit::up-arrow:focus, +QDateEdit::up-arrow:focus, +QDateTimeEdit::up-arrow:focus { + image: url(qss:images/up_arrow_lighter.png); +} + +QAbstractSpinBox::up-arrow:off, +QSpinBox::up-arrow:off, +QDoubleSpinBox::up-arrow:off, +QTimeEdit::up-arrow:off, +QDateEdit::up-arrow:off, +QDateTimeEdit::up-arrow:off { + image: url(qss:images/up_arrow_disabled_dark.png); +} + +QAbstractSpinBox::up-arrow:disabled, +QSpinBox::up-arrow:disabled, +QDoubleSpinBox::up-arrow:disabled, +QTimeEdit::up-arrow:disabled, +QDateEdit::up-arrow:disabled, +QDateTimeEdit::up-arrow:disabled { + image: url(qss:images/up_arrow_disabled_dark.png); +} + +QAbstractSpinBox::down-arrow, +QSpinBox::down-arrow, +QDoubleSpinBox::down-arrow, +QTimeEdit::down-arrow, +QDateEdit::down-arrow, +QDateTimeEdit::down-arrow { + image: url(qss:images/down_arrow_dark.png); + bottom: 0px; /* fix simetry between up and down images */ +} + +QAbstractSpinBox::down-arrow:focus, +QSpinBox::down-arrow:focus, +QDoubleSpinBox::down-arrow:focus, +QTimeEdit::down-arrow:focus, +QDateEdit::down-arrow:focus, +QDateTimeEdit::down-arrow:focus { + image: url(qss:images/down_arrow_lighter.png); +} + +QAbstractSpinBox::down-arrow:off, +QSpinBox::down-arrow:off, +QDoubleSpinBox::down-arrow:off, +QTimeEdit::down-arrow:off, +QDateEdit::down-arrow:off, +QDateTimeEdit::down-arrow:off { + image: url(qss:images/down_arrow_disabled_dark.png); +} + +QAbstractSpinBox::down-arrow:disabled, +QSpinBox::down-arrow:disabled, +QDoubleSpinBox::down-arrow:disabled, +QTimeEdit::down-arrow:disabled, +QDateEdit::down-arrow:disabled, +QDateTimeEdit::down-arrow:disabled { + image: url(qss:images/down_arrow_disabled_dark.png); +} + +/* ComboBox */ +QComboBox::drop-down { + background-color: #d2d2d2; + subcontrol-origin: border; /* important */ + subcontrol-position: top right; + width: 20px; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} + +QComboBox::drop-down:on, +QComboBox::drop-down:focus { + background-color: qlineargradient(spread:pad, x1:1, y1:0.8, x2:1, y2:0, stop:0 #5e90fa, stop:1 #7cabf9); +} + +QComboBox::down-arrow { + image: url(qss:images/down_arrow_dark.png); +} + +QComboBox::down-arrow:on, +QComboBox::down-arrow:focus { + image: url(qss:images/down_arrow_lighter.png); +} + +QComboBox::down-arrow:off, +QComboBox::down-arrow:disabled { + image: url(qss:images/down_arrow_disabled_dark.png); +} + +/* ComboBox menu */ +QComboBox { + selection-color: white; + selection-background-color: #5e90fa; +} + +QComboBox QAbstractItemView { + color: #6e6e6e; /* same as regular QComboBox color */ + background-color: transparent; + selection-color: white; + selection-background-color: #5e90fa; + border-width: 5px 0px 5px 0px; + border-style: solid; + border-color: transparent; + margin: 0px -1px 0px 0px; /* temporal: hack for Mac... try it on Windows and Linux */ +} + + +/*================================================================================================== +Push button +==================================================================================================*/ +QPushButton { + color: #6e6e6e; + text-align: center; + background-color: qlineargradient(spread:pad, x1:0, y1:0.3, x2:0, y2:1, stop:0 #f5f5f5, stop:1 #e6e6e6); + border: 1px solid #d2d2d2; + border-bottom-color: #c3c3c3; /* simulates shadow under the button */ + padding: 4px 22px; + margin: 4px 4px; + min-height: 16px; /* same as QTabBar QPushButton min-width */ + border-radius: 4px; +} + +QPushButton:hover, +QPushButton:focus { + color: white; + border-color: #3874f2; + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #5e90fa, stop:1 #3874f2); +} + +QPushButton:disabled, +QPushButton:disabled:checked { + color: #b6b6b6; + border-color: #e6e6e6; + background-color: #e6e6e6; +} + +QPushButton:pressed { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #3874f2, stop:1 #5e90fa); +} + +QPushButton:checked { + background-color: #5e90fa; + border-color: #3874f2; +} + +/* Color Buttons */ +Gui--ColorButton, +Gui--ColorButton:disabled { + padding: 0px; /* reset */ + margin: 0px; /* reset */ +} + +Gui--ColorButton { + background-color: qlineargradient(spread:pad, x1:0, y1:0.3, x2:0, y2:1, stop:0 #f5f5f5, stop:1 #e6e6e6); + border: 1px solid #d2d2d2; + border-bottom-color: #c3c3c3; /* simulates shadow under the button */ +} + +Gui--ColorButton:disabled { + border-color: transparent; + background-color: rgba(0,0,0,10); +} + +Gui--ColorButton:hover, +Gui--ColorButton:focus { + border-color: #3874f2; + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #5e90fa, stop:1 #3874f2); +} + +Gui--ColorButton:pressed { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #3874f2, stop:1 #5e90fa); +} + +/* Pushbutton style for "..." inside Placement cell which launches Placement tool */ +Gui--PropertyEditor--PropertyEditor > QWidget > QWidget > QPushButton { + background-color: #b6b6b6; + border: 1px solid #828282; + min-width: 16px; /* reset it due to larger value on regular QPushButton, same or bigger value as regular QPushButton min-height */ + border-radius: 0px; + margin: 0px; /* reset */ + padding: 0px; /* reset */ +} + +/* Fix for Expressions description QFrame that is "broken" with initial reset */ +Gui--PropertyEditor--PropertyEditor > QWidget > QWidget > QWidget > QWidget > QFrame { + background-color: #f5f5f5; /* main background color */ + border: 1px solid #dcdcdc; + border-radius: 2px; + padding: 2px 6px; +} + + +/*================================================================================================== +Tool button inside QDialogs that works as QPushButtons +==================================================================================================*/ +/* found under Tools -> Customize -> Macros -> Pixmap "..." button */ +QDialog QToolButton { + color: #6e6e6e; + text-align: center; + background-color: qlineargradient(spread:pad, x1:0, y1:0.3, x2:0, y2:1, stop:0 #f5f5f5, stop:1 #e6e6e6); + border: 1px solid #d2d2d2; + border-bottom-color: #c3c3c3; /* simulates shadow under the button */ + padding: 0px; /* different than regular QPushButton */ + margin: 2px; /* different than regular QPushButton */ + min-height: 16px; /* same as QTabBar QPushButton min-width */ + border-radius: 4px; +} + +QDialog QToolButton:hover, +QDialog QToolButton:focus { + color: white; + border-color: #3874f2; + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #5e90fa, stop:1 #3874f2); +} + +QDialog QToolButton:disabled, +QDialog QToolButton:disabled:checked { + color: #b6b6b6; + border-color: #e6e6e6; + background-color: #e6e6e6; +} + +QDialog QToolButton:pressed { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #3874f2, stop:1 #5e90fa); +} + +QPushButton:checked { + background-color: #5e90fa; + border-color: #3874f2; +} + + +/*================================================================================================== +Radio button +==================================================================================================*/ +QRadioButton::indicator:unchecked{ + color: #505050; + background-color: rgba(0, 0, 0, 20); + border: 1px solid #505050; +} + +QRadioButton::indicator:checked { + background-color: #5e90fa; /* QCheckBox has the same color */ + border: 1px solid #3874f2; /* QCheckBox has the same color */ + image:url(qss:images/radiobutton_light.png); +} + +QRadioButton, +QRadioButton:disabled { + color: #505050; + padding: 3px; + outline: none; + background-color: transparent; +} + +QRadioButton::indicator { + width: 11px; + height: 11px; + border-radius: 6px; +} + +QRadioButton::indicator:pressed { + border-color: #adc5ed; +} + +QRadioButton::indicator:disabled { + border: 1px solid #6e6e6e; +} + +QRadioButton::indicator:disabled { + color: #6e6e6e; + background-color: transparent; +} + +QRadioButton:focus { + border: none; +} + + +/*================================================================================================== +Checkbox +==================================================================================================*/ +QCheckBox, +QCheckBox:disabled { + color: #505050; + padding: 3px; + outline: none; + background-color: transparent; +} + +QCheckBox::indicator { + color: #c8c8c8; + background-color: rgba(0,0,0,20); + border: 1px solid #505050; +} + +QCheckBox::indicator { + width: 11px; + height: 11px; + border-radius:2px; +} + +QCheckBox::indicator:pressed, +QCheckBox::indicator:non-exclusive:checked:pressed, +QCheckBox::indicator:indeterminate:pressed, +QCheckBox::indicator:checked:pressed { + border-color: #adc5ed; +} + +QCheckBox::indicator:checked { + background-color: #5e90fa; /* QRadioButton has the same color */ + border: 1px solid #3874f2; /* QRadioButton has the same color */ + image:url(qss:images/checkbox_light.png); +} + +QCheckBox:disabled { + color: rgba(0,0,0,40); + background-color: transparent; +} + +QCheckBox::indicator:disabled { + background-color: rgba(0,0,0,20); + border: 1px solid rgba(0,0,0,20); +} + +QCheckBox::indicator:indeterminate { + background-color: #5e90fa; + border: 1px solid #3874f2; + image: url(qss:images/checkbox_indeterminate_light.png); +} + +QCheckBox:focus { + border: none; +} + + +/*================================================================================================== +Slider +==================================================================================================*/ +QSlider, +QSlider:active, +QSlider:!active { + border: none; + background-color: transparent; +} + +QSlider:horizontal { + padding: 0px 10px; +} + +QSlider:vertical { + padding: 10px 0px; +} + +QSlider::groove { + background-color: rgba(0,0,0,30); + border: 1px solid rgba(0,0,0,40); + border-radius: 5px; + margin: 4px 0px; +} + +QSlider::groove:horizontal { + height: 8px; +} + +QSlider::groove:vertical { + width: 8px; +} + +QSlider::groove:horizontal:disabled, +QSlider::groove:vertical:disabled { + border-color: #dcdcdc; + background-color: #dcdcdc; +} + +QSlider::handle:horizontal, +QSlider::handle:vertical { + background-color: #b6b6b6; + border: 1px solid #b6b6b6; + width: 14px; + height: 14px; + border-radius: 8px; +} + +QSlider::handle:horizontal { + margin: -4px 0; +} + +QSlider::handle:vertical { + margin: 0 -4px; +} + +QSlider::handle:horizontal:hover, +QSlider::handle:vertical:hover, +QSlider::handle:horizontal:pressed, +QSlider::handle:vertical:pressed { + border-color: #5e90fa; + background-color: #5e90fa; +} + +QSlider::handle:horizontal:disabled, +QSlider::handle:vertical:disabled { + border-color: #dcdcdc; + background-color: #dcdcdc; +} + + +/*================================================================================================== +Toolbar buttons +==================================================================================================*/ +QToolBar > QToolButton { + margin: 2px; + padding: 2px; +} + +QToolBar > QPushButton, +/*QToolBar > QComboBox, disabled because creates different margins for body and drop-down button */ +QToolBar > QAbstractSpinBox, +QToolBar > QSpinBox, +QToolBar > QDoubleSpinBox, +QToolBar > QLineEdit, +QToolBar > QTextEdit, +QToolBar > QTimeEdit, +QToolBar > QDateEdit, +QToolBar > QDateTimeEdit { + margin: 2px; + padding: 2px; +} + +QToolBar > QPushButton { + border-radius: 4px; /* same as regular QPushButton */ + min-width: 20px; /* reset it due to larger value on regular QPushButton, same or bigger value as regular QPushButton min-height */ +} + +QToolBar > QPushButton:checked { + border: 1px solid #3874f2; + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #5e90fa, stop:1 #3874f2); +} + +QToolBar > QPushButton:!checked { + background-color: qlineargradient(spread:pad, x1:0, y1:0.3, x2:0, y2:1, stop:0 #f5f5f5, stop:1 #e6e6e6); + border: 1px solid #d2d2d2; + border-bottom-color: #c3c3c3; /* simulates shadow under the button */ +} + +QToolBar > QPushButton:checked:hover { + border-color: #2053c0; +} + +QToolBar > QPushButton:!checked:hover { + color: black; + border-color: #b6b6b6; +} + +QToolBar > QPushButton:checked:pressed { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #3874f2, stop:1 #5e90fa); +} + +QToolBar > QPushButton:!checked:pressed { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #b6b6b6, stop:1 #e6e6e6); +} + +QToolBar > QPushButton:checked:disabled, +QToolBar > QPushButton:!checked:disabled { + border: none; + background-color: transparent; +} + +/* ToolBar menu buttons (buttons with drop-down menu) */ +QToolBar > QToolButton#qt_toolbutton_menubutton { + padding-right: 20px; /* Hack to add more width to buttons with menu */ + border: 1px solid transparent; + border-radius: 3px; +} + +QToolBar > QToolButton#qt_toolbutton_menubutton:hover, +QToolBar > QToolButton#qt_toolbutton_menubutton:pressed, +QToolBar > QToolButton#qt_toolbutton_menubutton:open { + border: 1px solid #7cabf9; +} + +QToolBar QToolButton::menu-button, +QToolBar > QToolButton#qt_toolbutton_menubutton::menu-button { + border: none; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + width: 16px; /* 16px width + 4px for border = 20px allocated above */ + outline: none; + background-color: transparent; +} + +QToolBar > QToolButton#qt_toolbutton_menubutton::menu-button:hover, +QToolBar > QToolButton#qt_toolbutton_menubutton::menu-button:pressed, +QToolBar > QToolButton#qt_toolbutton_menubutton::menu-button:open { + background-color: qlineargradient(spread:pad, x1:1, y1:0.8, x2:1, y2:0, stop:0 #5e90fa, stop:1 #7cabf9); +} + +QToolBar > QToolButton::menu-arrow { + background-image: url(qss:images/down_arrow_dark.png); + background-position: center center; + background-repeat: none; + subcontrol-origin: padding; + subcontrol-position: bottom right; + height: 10px; /* same as arrow image */ +} + +QToolBar > QToolButton::menu-arrow:hover { + background-image: url(qss:images/down_arrow_lighter.png); +} + +QToolBar > QToolButton::menu-arrow:open { + background-image: url(qss:images/down_arrow_lighter.png); +} + +/*The "show more" button (it can also be stylable with "QToolBarExtension" */ +QToolBar QToolButton#qt_toolbar_ext_button { + margin: 0px; + padding: 0px; + /*background-image: url(qss:images/more_dark.png);*/ + image: transparent; + background-repeat: none; + background-position: center left; +} + +QToolBar QToolButton#qt_toolbar_ext_button:hover { + /*background-image: url(qss:images/more_light.png);*/ + border-color: #e0e0e0; + background-color: #e0e0e0; +} + +QToolBar QToolButton#qt_toolbar_ext_button:on { + /*background-image: url(qss:images/more_light.png);*/ + border-color: #e0e0e0; + background-color: #e0e0e0; +} + + +/*================================================================================================== +Tables (spreadsheets) +==================================================================================================*/ +QTableView { + gridline-color: #d2d2d2; + selection-color: #1b3774; + selection-background-color: #cbd8e6; +} + +QTableView::item:hover { + background-color: rgba(0,0,0,10); /* temporal: is it displayed in Linux or Windows? on OSX it isn't */ +} + +QTableView::item:disabled { + color: #e6e6e6; +} + +QTableView::item:selected { + color: #1b3774; + border-color: #cbd8e6; /* same as focused background color */ + border-bottom-color: #7cabf9; /* same as focused border color */ +} + +/* fix for elements inside the cells */ +QTableView QComboBox, +QTableView QAbstractSpinBox, +QTableView QSpinBox, +QTableView QDoubleSpinBox, +QTableView QLineEdit, +QTableView QTextEdit, +QTableView QTimeEdit, +QTableView QDateEdit, +QTableView QDateTimeEdit, +QTableView QComboBox:drop-down, +QTableView QAbstractSpinBox:up-button, +QTableView QSpinBox:up-button, +QTableView QDoubleSpinBox:up-button, +QTableView QTimeEdit:up-button, +QTableView QDateEdit:up-button, +QTableView QDateTimeEdit:up-button, +QTableView QAbstractSpinBox:down-button, +QTableView QSpinBox:down-button, +QTableView QDoubleSpinBox:down-button, +QTableView QTimeEdit:down-button, +QTableView QDateEdit:down-button, +QTableView QDateTimeEdit:down-button, +QTableView Gui--ColorButton { + border-radius: 0px; +} + +QTableView QComboBox, +QTableView QAbstractSpinBox, +QTableView QSpinBox, +QTableView QDoubleSpinBox, +QTableView QLineEdit, +QTableView QTextEdit, +QTableView QTimeEdit, +QTableView QDateEdit, +QTableView QDateTimeEdit { + color: black; + background-color: transparent; + border-color: transparent; +} + +QTableView QComboBox:drop-down, +QTableView QAbstractSpinBox:up-button, +QTableView QSpinBox:up-button, +QTableView QDoubleSpinBox:up-button, +QTableView QTimeEdit:up-button, +QTableView QDateEdit:up-button, +QTableView QDateTimeEdit:up-button, +QTableView QAbstractSpinBox:down-button, +QTableView QSpinBox:down-button, +QTableView QDoubleSpinBox:down-button, +QTableView QTimeEdit:down-button, +QTableView QDateEdit:down-button, +QTableView QDateTimeEdit:down-button, +QTableView Gui--ColorButton { + background-color: rgba(0,0,0,30); +} + +QTableView QComboBox:focus, +QTableView QAbstractSpinBox:focus, +QTableView QSpinBox:focus, +QTableView QDoubleSpinBox:focus, +QTableView QLineEdit:focus, +QTableView QTextEdit:focus, +QTableView QTimeEdit:focus, +QTableView QDateEdit:focus, +QTableView QDateTimeEdit:focus { + color: #1b3774; + selection-color: white; + selection-background-color: #5e90fa; + border-color: #cbd8e6; + background-color: #cbd8e6; +} + +QTableView QComboBox:disabled, +QTableView QAbstractSpinBox:disabled, +QTableView QSpinBox:disabled, +QTableView QDoubleSpinBox:disabled, +QTableView QLineEdit:disabled, +QTableView QTextEdit:disabled, +QTableView QTimeEdit:disabled, +QTableView QDateEdit:disabled, +QTableView QDateTimeEdit:disabled { + color: rgba(0,0,0,120); + background-color: transparent; + border-color: transparent; +} + +QTableView QComboBox:read-only, +QTableView QAbstractSpinBox:read-only, +QTableView QSpinBox:read-only, +QTableView QDoubleSpinBox:read-only, +QTableView QLineEdit:read-only, +QTableView QTextEdit:read-only, +QTableView QTimeEdit:read-only, +QTableView QDateEdit:read-only, +QTableView QDateTimeEdit:read-only { + color: black; + background-color: transparent; + border-color: transparent; +} + + +/*================================================================================================== +EXPERIMENTAL +==================================================================================================*/ + +/* Fix for preventing elements in different rows to accidentaly overlap */ +QDialog QGroupBox QFrame { + margin: 2px 0px; +} + +*[mandatoryField="true"] { background-color: cyan } \ No newline at end of file diff --git a/src/Gui/Stylesheets/Light - green.qss b/src/Gui/Stylesheets/Light - green.qss new file mode 100644 index 000000000..1b14de033 --- /dev/null +++ b/src/Gui/Stylesheets/Light - green.qss @@ -0,0 +1,1900 @@ +/* +ABOUT +============================================================================================================ +version 2.01 +QT theme (stylesheet) specially developed for FreeCAD (http://www.freecadweb.org/). +It might work with other software that uses QT styling. + + +LICENSE +============================================================================================================ +Copyright (c) 2016 Pablo Gil Fernández + +This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. +To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/. + + +INSTALLATION +============================================================================================================ +1) Place the .qss files and /images/ folder in the path that fits your OS: + OSX = /Users/[YOUR_USER_NAME]/Library/Preferences/FreeCAD/Gui/Stylesheets/ + WINDOWS = C:/[INSTALLATION_PATH]/FreeCAD/data/Gui/Stylesheets/ + LINUX = /home/[YOUR_USER_NAME]/.FreeCAD/Gui/Stylesheets/ + +2) In order to display correctly images: + 2.1) FreeCAD 0.16 (development builds newer than commit 5b3d50a): that's it, you are done! + + 2.2) FreeCAD 0.15: Images used in the theme need ABSOLUTE paths to be found by FreeCAD, so you should search the string "qss:images" (without "") and replace with the real path of your computer. It should be done with all the .qss files you want to install-use + find = qss:images + replace = /Users/myName/Library/Preferences/FreeCAD/Gui/Stylesheets/images + + +CUSTOMIZATION +============================================================================================================ +If you would like to change the overall look/style of the theme, just find and replace following colors in the whole file: + BACKGROUND (darker to ligher) + black + #505050 + #6e6e6e + #828282 + #a2a2a0 + #b6b6b6 + #c8c8c8 + #c3c3c3 + #d2d2d2 + #dcdcdc + #e0e0e0 + #e6e6e6 + #f0f0f0 + #f5f5f5 = main background color + white + + SELECTION (darker to lighter) + #566214 + #74831d + #819c0c + #94b30f = main selection color + #9bbc12 = used to build QSpinBox up and down buttons, it's used as color in the middle + #a5c61a + #c5d675 + #dadfc5 + + + + +KNOWN BUGS and TO DO +============================================================================================================ + - please, follow the link to get updated information: http://forum.freecadweb.org/viewtopic.php?f=10&t=12417 +*/ + + +/*================================================================================================== +Reset elements +==================================================================================================*/ +/* Reseting everything helps to unify styles across different operating systems */ +* { + padding: 0px; + margin: 0px; + border: 0px; + border-style: none; + border-image: none; + outline: 0; +} + +/* specific reset for elements inside QToolBar */ +QToolBar * { + margin: 0px; + padding: 0px; +} + + +/*================================================================================================== +Main window +==================================================================================================*/ +QMainWindow, +QDialog, +QToolBar { + background-color: #f5f5f5; /* main background color */ +} + +QMdiArea[showImage="true"] { + background-image: url(qss:images/background_freecad.png); + background-position: center center; + background-repeat: no-repeat; +} + + +/*================================================================================================== +MENUS +==================================================================================================*/ +QMenuBar, +QMenuBar::item { + color: black; + background-color: #f5f5f5; /* main background color */ +} + +QMenu, +QMenu::item { + color: black; + background-color: #f5f5f5; /* main background color */ + text-decoration: none; +} + +QMenuBar::item:selected, +QMenuBar::item:pressed, +QMenu::item:selected, +QMenu::item:pressed { + color: white; + background-color: #94b30f; +} + +QMenu::right-arrow { + width: 10px; + height: 10px; + image:url(qss:images/right_arrow_dark.png); + margin-right: 2px; +} + +QMenu::right-arrow:selected { + image:url(qss:images/right_arrow_lighter.png); +} + +QMenu::item { + padding: 2px 16px 2px 26px; /* make room for icon at left */ + border: 1px solid transparent; /* reserve space for selection border */ +} + +QMenu::icon { + margin-left: 2px; +} + +QMenu::separator { + height: 1px; + background-color: rgba(0,0,0,30); + margin: 6px 4px; +} + +QMenu::indicator:non-exclusive:checked { + color: white; +} + + +/*================================================================================================== +Tool bar +==================================================================================================*/ +QToolBar { + border: none; + min-width: 32px; /* allows a minimum of space between QToolBar colums */ + min-height: 32px; /* allows a minimum of space between QToolBar rows */ +} + +QToolBar::handle:horizontal { + background-image: url(qss:images/Hmovetoolbar_dark.png); + width: 10px; + margin: 6px 2px 6px 2px; + background-position: top right; + background-repeat: repeat-y; +} + +QToolBar::handle:vertical { + background-image: url(qss:images/Vmovetoolbar_dark.png); + height: 10px; + margin: 2px 6px 2px 6px; + background-position: left bottom; + background-repeat: repeat-x; +} + +QToolBar::separator:horizontal { + background-image: url(qss:images/separtoolbar_dark.png); + width: 10px; + margin: 6px 2px 6px 2px; + background-position: center center; + background-repeat: repeat-y; +} + +QToolBar::separator:vertical { + background-image: url(qss:images/separtoolbar_dark.png); + height: 10px; + margin: 2px 6px 2px 6px; + background-position: center center; + background-repeat: repeat-x; +} + + +/*================================================================================================== +Group box +==================================================================================================*/ +QGroupBox { + color: rgba(0,0,0,120); + border:1px solid rgba(0, 0, 0, 20); /* lighter than its own border-color */; + border-radius: 3px; + margin-top: 10px; + padding: 6px; + background-color: rgba(255, 255, 255, 15); +} + +QGroupBox:title { + top: -8px; + left: 12px; +} + + +/*================================================================================================== +Tooltip +==================================================================================================*/ +QToolTip { + color: white; + background-color: #828282; + /*opacity: 90%; doesn't correctly work */ + padding: 4px; + border-radius: 3px; /* has no effect */ +} + + +/*================================================================================================== +Dock widget +==================================================================================================*/ +QDockWidget { + color: rgba(0,0,0,120); + titlebar-close-icon: url(qss:images/close_dark.png); + titlebar-normal-icon: url(qss:images/undock_dark.png); +} + +QDockWidget::title { + text-align: center; + background-color: rgba(0,0,0,10); + border: 4px solid #f5f5f5; /* fix to simulate margin between this :title and tabs */ /* same as main background color */ + border-radius: 6px; /* bigger than normal due to previous border fix */ + padding: 4px 0px; /* also needed because of previous border fix */ +} + +QDockWidget::close-button, +QDockWidget::float-button { + border: none; + background: transparent; + border-radius: 3px; + subcontrol-origin: padding; + subcontrol-position: right center; +} + +QDockWidget::close-button { + right: 4px; +} + +QDockWidget::float-button { + right: 22px; +} + +QDockWidget::close-button:hover, +QDockWidget::float-button:hover { + background-color: rgba(0,0,0,15); +} + +QDockWidget::close-button:pressed, +QDockWidget::float-button:pressed { + background-color: rgba(0,0,0,30); +} + +/* fix for Python Console (probably there is a smarter way to arrive to it) */ +QDockWidget > QFrame { + background-color: #f0f0f0; + border: 1px solid #c3c3c3; +} + + +/*================================================================================================== +Progress bar +==================================================================================================*/ +QProgressBar, +QProgressBar:horizontal { + color: white; + background-color: rgba(0,0,0,10); + text-align: center; + border: 1px solid rgba(0,0,0,80); + padding: 1px; + border-radius: 3px; +} +QProgressBar::chunk, +QProgressBar::chunk:horizontal { + background-color: qlineargradient(spread:pad, x1:1, y1:0.545, x2:1, y2:0, stop:0 #819c0c, stop:1 #94b30f); + border-radius: 3px; +} + + +/*================================================================================================== +Scroll +==================================================================================================*/ +QAbstractScrollArea { + border-radius: 2px; + background-color: transparent; +} + +QAbstractScrollArea::corner { + border: none; + background-color: transparent; +} + +QScrollBar:horizontal { + background-color: transparent; + height: 15px; + margin: 0px; +} + +QScrollBar::handle:vertical, +QScrollBar::handle:horizontal { + background-color: rgba(0,0,0,80); +} + +QScrollBar::handle:vertical:hover, +QScrollBar::handle:horizontal:hover { + background-color: rgba(0,0,0,100); +} + +QScrollBar::handle:horizontal { + min-width: 5px; + border-radius: 3px; + margin: 4px 15px; +} + +QScrollBar::sub-line:horizontal { + margin: 1px 3px 0px 3px; /* 1px to correctly fit the 10px width image */ + border-image: url(qss:images/left_arrow_dark.png); + width: 6px; + height: 10px; + subcontrol-position: left; + subcontrol-origin: margin; +} + +QScrollBar::add-line:horizontal { + margin: 1px 3px 0px 3px; /* 1px to correctly fit the 10px width image */ + border-image: url(qss:images/right_arrow_dark.png); + width: 6px; + height: 10px; + subcontrol-position: right; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:horizontal:hover, +QScrollBar::sub-line:horizontal:on { + border-image: url(qss:images/left_arrow_darker.png); +} + +QScrollBar::add-line:horizontal:hover, +QScrollBar::add-line:horizontal:on { + border-image: url(qss:images/right_arrow_darker.png); +} + +QScrollBar::up-arrow:horizontal, +QScrollBar::down-arrow:horizontal { + background-color: none; +} + +QScrollBar::add-page:horizontal, +QScrollBar::sub-page:horizontal { + background-color: transparent; +} + +QScrollBar:vertical { + background-color: transparent; + width: 15px; + margin: 0px; +} + +QScrollBar::handle:vertical { + min-height: 5px; + border-radius: 3px; + margin: 15px 4px; +} + +QScrollBar::sub-line:vertical { + margin: 3px 0px 3px 1px; /* 1px to correctly fit the 10px width image */ + border-image: url(qss:images/up_arrow_dark.png); + height: 6px; + width: 10px; + subcontrol-position: top; + subcontrol-origin: margin; +} + +QScrollBar::add-line:vertical { + margin: 3px 0px 3px 1px; /* 1px to correctly fit the 10px width image */ + border-image: url(qss:images/down_arrow_dark.png); + height: 6px; + width: 10px; + subcontrol-position: bottom; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:vertical:hover, +QScrollBar::sub-line:vertical:on { + border-image: url(qss:images/up_arrow_darker.png); +} + +QScrollBar::add-line:vertical:hover, +QScrollBar::add-line:vertical:on { + border-image: url(qss:images/down_arrow_darker.png); +} + +QScrollBar::up-arrow:vertical, +QScrollBar::down-arrow:vertical { + background-color: none; +} + +QScrollBar::add-page:vertical, +QScrollBar::sub-page:vertical { + background-color: transparent; +} + + +/*================================================================================================== +Tab bar +==================================================================================================*/ +QTabWidget::pane { + background-color: transparent; /* temporal (transparent background) */ /* tab content background color */ + position: absolute; +} + +QTabWidget::pane:top { + top: -1px; + border-top: 1px solid #d2d2d2; +} + +QTabWidget::pane:bottom { + bottom: -1px; + border-bottom: 1px solid #d2d2d2; +} + +QTabWidget::pane:left { + right: -1px; + border-right: 1px solid #d2d2d2; +} + +QTabWidget::pane:right { + left: -1px; + border-left: 1px solid #d2d2d2; +} + +QTabWidget::tab-bar:top, +QTabWidget::tab-bar:bottom { + left: 10px; +} + +QTabWidget::tab-bar:left, +QTabWidget::tab-bar:right { + top: 10px; +} + +QTabBar { + qproperty-drawBase: 0; /* important */ + background-color: transparent; +} + +/* Workaround for QTabBars created from docked QDockWidgets which don't draw the border if not set and reseted as follows: */ +QTabBar { + border-top: 1px solid #d2d2d2; /* set color for all QTabBars */ +} +QDockWidget QTabBar { + border-color: transparent; /* set color for all QTabBars but ones created from QDockWidget */ +} +QDialog QTabBar { + border-color: transparent; /* set color for QTabBars inside Preferences dialog */ +} +/* end fix */ + +QTabBar::tab { + background-color: transparent; + border: 1px solid transparent; + padding: 3px; +} + +QTabBar::tab:top, +QTabBar::tab:bottom { + border-top-width: 4px; /* same as selected tab colored border in order to center close-button */ + border-bottom-width: 4px; /* same as selected tab colored border in order to center close-button */ + min-width: 11ex; + margin-left: 2px; + margin-right: 2px; +} + +QTabBar::tab:left, +QTabBar::tab:right { + border-left-width: 4px; /* same as selected tab colored border in order to center close-button */ + border-right-width: 4px; /* same as selected tab colored border in order to center close-button */ + min-height: 14ex; + margin-top: 2px; + margin-bottom: 2px; +} + +QTabBar::tab:selected { + background-color: transparent; /* temporal (transparent background) */ + border-color: #d2d2d2; +} + +QTabBar::tab:top:selected { + border-top: 4px solid qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #94b30f, stop:1 #819c0c); /* selection color */ + border-bottom-color: #f5f5f5; /* same as tab content background color */ +} + +QTabBar::tab:bottom:selected { + border-bottom: 4px solid qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #94b30f, stop:1 #819c0c); /* selection color */ + border-top-color: #f5f5f5; /* same as tab content background color */ +} + +QTabBar::tab:right:selected { + border-left: 4px solid qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 #94b30f, stop:1 #819c0c); /* selection color */ + border-right-color: #f5f5f5; /* same as tab content background color */ +} + +QTabBar::tab:left:selected { + border-right: 4px solid qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 #94b30f, stop:1 #819c0c); /* selection color */ + border-left-color: #f5f5f5; /* same as tab content background color */ +} + +QTabBar::tab:!selected { + color: rgba(0,0,0,160); +} + +QTabBar::tab:!selected:hover { + color: rgba(0,0,0,220); + background-color: rgba(0,0,0,20); +} + +QTabBar::tab:first:selected { + margin-left: 0; /* the first selected tab has nothing to overlap with on the left */ +} + +QTabBar::tab:last:selected { + margin-right: 0; /* the last selected tab has nothing to overlap with on the right */ +} + +QTabBar::tab:only-one { + margin: 0; /* if there is only one tab, we don't want overlapping margins */ +} + +/* hack to access Preference TabBar background */ +QDialog#Gui__Dialog__DlgPreferences > QFrame QFrame { + background-color: transparent; /* main background color (in Windows is #f5f5f5) */ +} + +/* fix for previous hack that broke QTabWidget background on Windows */ +QDialog#Gui__Dialog__DlgPreferences QTabWidget::pane { + background-color: transparent; /* temporal (transparent background) */ +} + +/* hack to correctly align Preferences icon list on OSX */ +QDialog#Gui__Dialog__DlgPreferences > QListView { + min-width: 130px; +} + +/* unique styles for sections inside Preferences */ +QDialog#Gui__Dialog__DlgPreferences > QListView::item { + border-radius: 6px; +} + +QDialog#Gui__Dialog__DlgPreferences > QListView::item:hover { + background-color: #dcdcdc; +} + +QDialog#Gui__Dialog__DlgPreferences > QListView::item:selected { + color: #566214; + background-color: #dadfc5; + border: 3px solid #a5c61a; +} + + +/*================================================================================================== +Tab bar buttons +==================================================================================================*/ +/* Close button */ +QTabBar::close-button { + subcontrol-origin: margin; + subcontrol-position: center right; /* only works for QT 4.6 and newer */; + border-radius: 2px; + background-image: url(qss:images/close_dark.png); + background-position: center center; + background-repeat: none; +} + +QTabBar::close-button:hover { + background-color: rgba(0,0,0,20); +} + +QTabBar::close-button:pressed { + background-color: rgba(0,0,0,30); +} + +/* Fix for lists inside Model tab */ +QDockWidget QTreeView, +QDockWidget QListView, +QDockWidget QTableView { + margin: 6px; + border: 1px solid #c3c3c3; /* same as regular QTreeView, QListView and QTableView */ + min-height: 40px; /* neccesary in some areas of FreeCAD */ +} + +/* Buttons to scroll tabs if there is not space to show all of them: */ +QTabBar::scroller { + width: 20px; /* the width of the scroll buttons */ +} + +QTabBar QToolButton, +QTabBar QToolButton:hover { + background-color: #f5f5f5; /* same as main background color */ +} + +QTabBar QToolButton::right-arrow:enabled { + image: url(qss:images/right_arrow_dark.png); +} + +QTabBar QToolButton::right-arrow:disabled, +QTabBar QToolButton::right-arrow:off { + image: url(qss:images/right_arrow_disabled_dark.png); +} + +QTabBar QToolButton::right-arrow:hover { + image: url(qss:images/right_arrow_darker.png); +} + + QTabBar QToolButton::left-arrow:enabled { + image: url(qss:images/left_arrow_dark.png); +} + + QTabBar QToolButton::left-arrow:disabled, + QTabBar QToolButton::left-arrow:off { + image: url(qss:images/left_arrow_disabled_dark.png); +} + + QTabBar QToolButton::left-arrow:hover { + image: url(qss:images/left_arrow_darker.png); +} + + QTabBar QToolButton::up-arrow:enabled { + image: url(qss:images/up_arrow_dark.png); +} + + QTabBar QToolButton::up-arrow:disabled, + QTabBar QToolButton::up-arrow:off { + image: url(qss:images/up_arrow_disabled_dark.png); +} + + QTabBar QToolButton::up-arrow:hover { + image: url(qss:images/up_arrow_darker.png); +} + + QTabBar QToolButton::down-arrow:enabled { + image: url(qss:images/down_arrow_dark.png); +} + + QTabBar QToolButton::down-arrow:disabled, + QTabBar QToolButton::down-arrow:off { + image: url(qss:images/down_arrow_disabled_dark.png); +} + + QTabBar QToolButton::down-arrow:hover { + image: url(qss:images/down_arrow_darker.png); +} + +QTabBar::tear { + /* default OS tear better */ +} + + +/*================================================================================================== +Tree and list views +==================================================================================================*/ +QTreeView, +QListView, +QTableView { + background-color: #f0f0f0; + alternate-background-color: #e6e6e6; /* related with QListView background */ + border: 1px solid #c3c3c3; + selection-color: white; + selection-background-color: #94b30f; /* should be similar to QListView::item selected background-color */ + show-decoration-selected: 1; /* make the selection span the entire width of the view */ + border-radius: 3px; +} + +QListView::item:hover, +QTreeView::item:hover { + background-color: transparent; /* fix to homogenize it on all OSs */ +} + +QListView::item:selected, +QTreeView::item:selected { + color: white; /* should be similar to QListView selection-color */ + background-color: #94b30f; /* should be similar to QListView selection-background-color */ + show-decoration-selected: 1; /* make the selection span the entire width of the view */ +} + +/* Property Editor QTreeView (FreeCAD custom widget) */ +Gui--PropertyEditor--PropertyEditor { + gridline-color: #d2d2d2; /* same as Group header background */ +} + +/* fix for column items background when a link is present */ +Gui--PropertyEditor--PropertyEditor > QWidget > QFrame:focus { + background-color: #dadfc5; /* same as focused background color */ +} + +/* hack to hide weird redundant information inside the value of a Placement cell */ +Gui--PropertyEditor--PropertyEditor > QWidget > QWidget > QLabel, +Gui--PropertyEditor--PropertyEditor > QWidget > QWidget > QLabel:disabled { + color: transparent; + background-color: transparent; + border: none; + border-radius: 0px; + margin: 0px; + padding: 0px; +} + +/* hack to hide non editable cells inside Property values */ +Gui--PropertyEditor--PropertyEditor QLineEdit:read-only, +Gui--PropertyEditor--PropertyEditor QLineEdit:disabled, +Gui--PropertyEditor--PropertyEditor QAbstractSpinBox:read-only, +Gui--PropertyEditor--PropertyEditor QAbstractSpinBox:disabled { + color: transparent; + border-color: transparent; + background-color: transparent; + selection-color: transparent; + selection-background-color: transparent; +} + +/* hack to disable margin inside Property values to following elements */ +Gui--PropertyEditor--PropertyEditor QSpinBox, +Gui--PropertyEditor--PropertyEditor QDoubleSpinBox, +Gui--PropertyEditor--PropertyEditor QAbstractSpinBox, +Gui--PropertyEditor--PropertyEditor QLineEdit, +Gui--PropertyEditor--PropertyEditor QComboBox { + margin-left: 0px; + margin-right: 0px; + padding-top: 0px; + padding-bottom: 0px; +} + +/* set border-radius to 0px inside list views */ +QTreeView > QWidget > QComboBox, +QTreeView > QWidget > QAbstractSpinBox, +QTreeView > QWidget > QSpinBox, +QTreeView > QWidget > QDoubleSpinBox, +QTreeView > QWidget > QLineEdit, +QTreeView > QWidget > QTextEdit, +QTreeView > QWidget > QTimeEdit, +QTreeView > QWidget > QDateEdit, +QTreeView > QWidget > QDateTimeEdit, +QTreeView > QWidget > QComboBox:drop-down, +QTreeView > QWidget > QAbstractSpinBox:up-button, +QTreeView > QWidget > QSpinBox:up-button, +QTreeView > QWidget > QDoubleSpinBox:up-button, +QTreeView > QWidget > QTimeEdit:up-button, +QTreeView > QWidget > QDateEdit:up-button, +QTreeView > QWidget > QDateTimeEdit:up-button, +QTreeView > QWidget > QAbstractSpinBox:down-button, +QTreeView > QWidget > QSpinBox:down-button, +QTreeView > QWidget > QDoubleSpinBox:down-button, +QTreeView > QWidget > QTimeEdit:down-button, +QTreeView > QWidget > QDateEdit:down-button, +QTreeView > QWidget > QDateTimeEdit:down-button, +QTreeView > QWidget > Gui--ColorButton { + border-radius: 0px; +} + +/* set focus colors to best viewing the editable fields */ +QTreeView > QWidget > QComboBox:focus, +QTreeView > QWidget > QAbstractSpinBox:focus, +QTreeView > QWidget > QSpinBox:focus, +QTreeView > QWidget > QDoubleSpinBox:focus, +QTreeView > QWidget > QLineEdit:focus, +QTreeView > QWidget > QTextEdit:focus, +QTreeView > QWidget > QTimeEdit:focus, +QTreeView > QWidget > QDateEdit:focus, +QTreeView > QWidget > QDateTimeEdit:focus { + border-color: #dadfc5; /* same as focused background color */ + border-bottom-color: #a5c61a; /* same as focused border color */ +} + +QTreeView > QWidget > QAbstractSpinBox:read-only, +QTreeView > QWidget > QSpinBox:read-only, +QTreeView > QWidget > QDoubleSpinBox:read-only, +QTreeView > QWidget > QLineEdit:read-only, +QTreeView > QWidget > QTextEdit:read-only, +QTreeView > QWidget > QTimeEdit:read-only, +QTreeView > QWidget > QDateEdit:read-only, +QTreeView > QWidget > QDateTimeEdit:read-only { + color: transparent; + background-color: transparent; + border-color: transparent; +} + +/* Fix to correctly (not totally) draw QTextEdit on OSX at Page properties: "Page result", "Template" and "Editable Texts" */ +Gui--PropertyEditor--PropertyEditor > QWidget > QWidget > QWidget { + min-height: 14px; +} + + +/*================================================================================================== +Header of tree and list views +==================================================================================================*/ +QHeaderView { + background-color: #c3c3c3; + border-top-left-radius: 2px; /* 1px less than its container */ + border-top-right-radius: 2px; /* 1px less than its container */ + border-bottom-left-radius: 0px; + border-bottom-right-radius: 0px; +} + +QHeaderView::section { + border:none; + padding: 4px 6px; + background-color: #c3c3c3; +} + +QHeaderView::section:horizontal { + padding: 4px 6px; /* left and right value similar to QHeaderView::section */ + border-right: 1px solid rgba(0,0,0,30); +} + +QHeaderView::section:vertical { + border-bottom: 1px solid rgba(0,0,0,30); +} + +QTableCornerButton::section { + background-color: #c3c3c3; + border-top: none; + border-left: none; + border-right: 1px solid rgba(0,0,0,30); + border-bottom: 1px solid rgba(0,0,0,30); +} + +QHeaderView::section:last { + border-right: none; +} + +QHeaderView::up-arrow { + image: url(qss:images/up_arrow_dark.png); +} + +QHeaderView::up-arrow:hover { + image: url(qss:images/up_arrow_darker.png); +} + +QHeaderView::down-arrow { + image: url(qss:images/down_arrow_dark.png); +} + +QHeaderView::down-arrow:hover { + image: url(qss:images/down_arrow_darker.png); +} + +/* Group header inside Property Editor (FreeCAD custom widget) */ +Gui--PropertyEditor--PropertyEditor { + qproperty-groupTextColor: #828282; /* same as main background color */ + qproperty-groupBackground: #d2d2d2; /* same as item gridlines */ +} + + +/*================================================================================================== +Branch system for QTreeViews +==================================================================================================*/ +QTreeView::branch { + background: transparent; +} + +QTreeView::branch:has-siblings:!adjoins-item { + border-image: url(qss:images/branch_vline.png) 0; +} + +QTreeView::branch:has-siblings:adjoins-item { + border-image: url(qss:images/branch_more.png) 0; +} + +QTreeView::branch:!has-children:!has-siblings:adjoins-item { + border-image: url(qss:images/branch_end.png) 0; +} + +QTreeView::branch:closed:has-children:has-siblings { + image: url(qss:images/branch_closed_dark.png); +} + +QTreeView::branch:has-children:!has-siblings:closed { + image: url(qss:images/branch_closed_dark.png); + border-image: url(qss:images/branch_end.png) 0; +} + +QTreeView::branch:open:has-children:has-siblings { + image: url(qss:images/branch_open_dark.png); + border-image: url(qss:images/branch_more.png) 0; +} + +QTreeView::branch:open:has-children:!has-siblings { + image: url(qss:images/branch_open_dark.png); + border-image: url(qss:images/branch_end.png) 0; +} + + +/*================================================================================================== +Splitter and windows separator +==================================================================================================*/ +QSplitter::handle { + margin: 0px 11px; + padding: 0px; +} + +QSplitter::handle:vertical { + background-image: url(qss:images/splitter_horizontal_dark.png); + background-position: center center; + background-repeat: none; + margin: 2px 4px 2px 4px; + height: 2px; +} + +QSplitter::handle:horizontal { + background-image: url(qss:images/splitter_vertical_dark.png); + background-position: center center; + background-repeat: none; + margin: 4px 2px 4px 2px; + width: 2px; +} + +/* Similar to the splitter is the following window separator: */ +QMainWindow::separator { + background-position: center center; + background-repeat: none; +} + +QMainWindow::separator:horizontal { + height: 2px; + background-image: url(qss:images/splitter_horizontal_dark.png); + margin: 4px 2px 4px 2px; +} + +QMainWindow::separator:vertical { + width: 2px; + background-image: url(qss:images/splitter_vertical_dark.png); + margin: 2px 4px 2px 4px; +} + + +/*================================================================================================== +Text/Python editor (macros, etc...) +==================================================================================================*/ +QPlainTextEdit, +QPlainTextEdit:focus { + background-color: #c8c8c8; + selection-color: white; + selection-background-color: #819c0c; + border: 1px solid #505050; + border-radius: 3px; + margin: 4px; +} + + +/*================================================================================================== +Tasks panel (custom FreeCAD class) +==================================================================================================*/ +/* Action group */ +QFrame[class="panel"] { + background-color: transparent; /* temporal (transparent background) */ +} + +/* Separator line */ +QSint--ActionGroup QFrame[height="1"], +QSint--ActionGroup QFrame[height="2"], +QSint--ActionGroup QFrame[height="3"], +QSint--ActionGroup QFrame[width="1"], +QSint--ActionGroup QFrame[width="2"], +QSint--ActionGroup QFrame[width="3"] { + border-color: rgba(0,0,0,60); +} + +/* Panel header */ +QSint--ActionGroup QFrame[class="header"] { + border: none; + background-color: #b6b6b6; /* Task Panel Header background color */ + border-top-left-radius: 3px; + border-top-right-radius: 3px; + border-bottom-left-radius: 0px; + border-bottom-right-radius: 0px; + margin: 0px; + padding: 0px; +} + +QSint--ActionGroup QFrame[class="header"]:hover { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #94b30f, stop:1 #819c0c); +} + +QSint--ActionGroup QToolButton[class="header"] { + color: white; /* Task Panel Header text color */ + text-align: left; + font-weight: bold; + border: none; + margin: 0px; + padding: 0px; +} + +QSint--ActionGroup QFrame[class="header"] QLabel { + background-color: transparent; + background-image: url(qss:images/down_arrow_light.png); + background-repeat: none; + background-position: center center; + padding: 0px; + margin: 0px; +} + +QSint--ActionGroup QFrame[class="header"] QLabel:hover { + background-color: transparent; + background-image: url(qss:images/down_arrow_lighter.png); +} + +QSint--ActionGroup QFrame[class="header"] QLabel[fold="true"] { + background-color: transparent; + background-image: url(qss:images/up_arrow_light.png); + background-repeat: none; + background-position: center center; + padding: 0px; + margin: 0px; +} + +QSint--ActionGroup QFrame[class="header"] QLabel[fold="true"]:hover { + background-color: transparent; + background-image: url(qss:images/up_arrow_lighter.png); +} + +QSint--ActionGroup QFrame[class="content"] { + background-color: #e6e6e6; /* Task Panel background color */ + margin: 0px; + padding: 0px; + border: none; + border-top-left-radius: 0px; + border-top-right-radius: 0px; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; +} + +QSint--ActionGroup QFrame[class="content"] > QWidget { + background-color: #e6e6e6; /* Task Panel background color */ +} + +/* Fixs for tabs inside Task Panel */ +QSint--ActionGroup QFrame[class="content"] QTabBar::tab:top:selected { + border-bottom-color: #e6e6e6; /* same as Task Panel background color */ +} + +QSint--ActionGroup QFrame[class="content"] QTabBar::tab:bottom:selected { + border-top-color: #e6e6e6; /* same as Task Panel background color */ +} + +QSint--ActionGroup QFrame[class="content"] QTabBar::tab:right:selected { + border-right-color: #e6e6e6; /* same as Task Panel background color */ +} + +QSint--ActionGroup QFrame[class="content"] QTabBar::tab:left:selected { + border-left-color: #e6e6e6; /* same as Task Panel background color */ +} + + +/*================================================================================================== +Buttons +==================================================================================================*/ +/* Common */ +QComboBox, +QAbstractSpinBox, +QSpinBox, +QDoubleSpinBox, +QLineEdit, +QTextEdit, +QTimeEdit, +QDateEdit, +QDateTimeEdit { + color: #6e6e6e; + background-color: #e0e0e0; + selection-color: white; + selection-background-color: #94b30f; + border: 1px solid #e0e0e0; + border-radius: 3px; + min-width: 50px; /* it ensures the default value is correctly displayed */ + padding: 1px 2px; /* temporal: could don't be compatible with elements inside Tree/List view */ +} + +/* shifts text/number editable field to the left to make space for the up/down or drop-down buttons */ +QComboBox, +QAbstractSpinBox, +QSpinBox, +QDoubleSpinBox, +QTimeEdit, +QDateEdit, +QDateTimeEdit { + padding-right: 20px; +} + +/* when QTextEdit are no editable */ +QTextEdit:!editable { + background-color: #f0f0f0; + border: 1px solid #c3c3c3; +} + +QComboBox:focus, +QAbstractSpinBox:focus, +QSpinBox:focus, +QDoubleSpinBox:focus, +QLineEdit:focus, +QTextEdit:focus, +QTimeEdit:focus, +QDateEdit:focus, +QDateTimeEdit:focus { + color: black; + border-color: #a5c61a; + border-right-color: qlineargradient(spread:pad, x1:1, y1:0.8, x2:1, y2:0, stop:0 #94b30f, stop:1 #a5c61a); /* same as up/down or drop-down button color */ + background-color: #dadfc5; +} + +QComboBox:disabled, +QAbstractSpinBox:disabled, +QSpinBox:disabled, +QDoubleSpinBox:disabled, +QLineEdit:disabled, +QTextEdit:disabled, +QTimeEdit:disabled, +QDateEdit:disabled, +QDateTimeEdit:disabled { + color: #c3c3c3; + background-color: #e0e0e0; /* same as enabled color */ + border-color: #e0e0e0; /* same as enabled color */ +} + +QAbstractSpinBox:up-button, +QSpinBox:up-button, +QDoubleSpinBox:up-button, +QTimeEdit:up-button, +QDateEdit:up-button, +QDateTimeEdit:up-button, +QAbstractSpinBox:down-button, +QSpinBox:down-button, +QDoubleSpinBox:down-button, +QTimeEdit:down-button, +QDateEdit:down-button, +QDateTimeEdit:down-button { + background-color: #d2d2d2; + subcontrol-origin: border; /* important */ + width: 20px; /* same as QComboBox ... QDateTimeEdit padding-right */ +} + +QAbstractSpinBox:up-button, +QSpinBox:up-button, +QDoubleSpinBox:up-button, +QTimeEdit:up-button, +QDateEdit:up-button, +QDateTimeEdit:up-button { + subcontrol-position: top right; + border-top-right-radius: 3px; + height: 12px; /* fix for Ubuntu that doesn't divide the up/down button into the exact middle */ +} + +QAbstractSpinBox:down-button, +QSpinBox:down-button, +QDoubleSpinBox:down-button, +QTimeEdit:down-button, +QDateEdit:down-button, +QDateTimeEdit:down-button { + subcontrol-position: bottom right; + border-bottom-right-radius: 3px; +} + +QAbstractSpinBox:up-button:focus, +QSpinBox:up-button:focus, +QDoubleSpinBox:up-button:focus, +QTimeEdit:up-button:focus, +QDateEdit:up-button:focus, +QDateTimeEdit:up-button:focus { + background-color: qlineargradient(spread:pad, x1:1, y1:0.8, x2:1, y2:0, stop:0 #9bbc12, stop:1 #a5c61a); +} + +QAbstractSpinBox:down-button:focus, +QSpinBox:down-button:focus, +QDoubleSpinBox:down-button:focus, +QTimeEdit:down-button:focus, +QDateEdit:down-button:focus, +QDateTimeEdit:down-button:focus { + background-color: qlineargradient(spread:pad, x1:1, y1:0.8, x2:1, y2:0, stop:0 #94b30f, stop:1 #9bbc12); +} + +QAbstractSpinBox:up-button:disabled, +QSpinBox:up-button:disabled, +QDoubleSpinBox:up-button:disabled, +QTimeEdit:up-button:disabled, +QDateEdit:up-button:disabled, +QDateTimeEdit:up-button:disabled, +QAbstractSpinBox:down-button:disabled, +QSpinBox:down-button:disabled, +QDoubleSpinBox:down-button:disabled, +QTimeEdit:down-button:disabled, +QDateEdit:down-button:disabled, +QDateTimeEdit:down-button:disabled { + background-color: transparent; +} + +QAbstractSpinBox::up-arrow, +QSpinBox::up-arrow, +QDoubleSpinBox::up-arrow, +QTimeEdit::up-arrow, +QDateEdit::up-arrow, +QDateTimeEdit::up-arrow { + image: url(qss:images/up_arrow_dark.png); + top: 0px; /* fix simetry between up and down images */ +} + +QAbstractSpinBox::up-arrow:focus, +QSpinBox::up-arrow:focus, +QDoubleSpinBox::up-arrow:focus, +QTimeEdit::up-arrow:focus, +QDateEdit::up-arrow:focus, +QDateTimeEdit::up-arrow:focus { + image: url(qss:images/up_arrow_lighter.png); +} + +QAbstractSpinBox::up-arrow:off, +QSpinBox::up-arrow:off, +QDoubleSpinBox::up-arrow:off, +QTimeEdit::up-arrow:off, +QDateEdit::up-arrow:off, +QDateTimeEdit::up-arrow:off { + image: url(qss:images/up_arrow_disabled_dark.png); +} + +QAbstractSpinBox::up-arrow:disabled, +QSpinBox::up-arrow:disabled, +QDoubleSpinBox::up-arrow:disabled, +QTimeEdit::up-arrow:disabled, +QDateEdit::up-arrow:disabled, +QDateTimeEdit::up-arrow:disabled { + image: url(qss:images/up_arrow_disabled_dark.png); +} + +QAbstractSpinBox::down-arrow, +QSpinBox::down-arrow, +QDoubleSpinBox::down-arrow, +QTimeEdit::down-arrow, +QDateEdit::down-arrow, +QDateTimeEdit::down-arrow { + image: url(qss:images/down_arrow_dark.png); + bottom: 0px; /* fix simetry between up and down images */ +} + +QAbstractSpinBox::down-arrow:focus, +QSpinBox::down-arrow:focus, +QDoubleSpinBox::down-arrow:focus, +QTimeEdit::down-arrow:focus, +QDateEdit::down-arrow:focus, +QDateTimeEdit::down-arrow:focus { + image: url(qss:images/down_arrow_lighter.png); +} + +QAbstractSpinBox::down-arrow:off, +QSpinBox::down-arrow:off, +QDoubleSpinBox::down-arrow:off, +QTimeEdit::down-arrow:off, +QDateEdit::down-arrow:off, +QDateTimeEdit::down-arrow:off { + image: url(qss:images/down_arrow_disabled_dark.png); +} + +QAbstractSpinBox::down-arrow:disabled, +QSpinBox::down-arrow:disabled, +QDoubleSpinBox::down-arrow:disabled, +QTimeEdit::down-arrow:disabled, +QDateEdit::down-arrow:disabled, +QDateTimeEdit::down-arrow:disabled { + image: url(qss:images/down_arrow_disabled_dark.png); +} + +/* ComboBox */ +QComboBox::drop-down { + background-color: #d2d2d2; + subcontrol-origin: border; /* important */ + subcontrol-position: top right; + width: 20px; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} + +QComboBox::drop-down:on, +QComboBox::drop-down:focus { + background-color: qlineargradient(spread:pad, x1:1, y1:0.8, x2:1, y2:0, stop:0 #94b30f, stop:1 #a5c61a); +} + +QComboBox::down-arrow { + image: url(qss:images/down_arrow_dark.png); +} + +QComboBox::down-arrow:on, +QComboBox::down-arrow:focus { + image: url(qss:images/down_arrow_lighter.png); +} + +QComboBox::down-arrow:off, +QComboBox::down-arrow:disabled { + image: url(qss:images/down_arrow_disabled_dark.png); +} + +/* ComboBox menu */ +QComboBox { + selection-color: white; + selection-background-color: #94b30f; +} + +QComboBox QAbstractItemView { + color: #6e6e6e; /* same as regular QComboBox color */ + background-color: transparent; + selection-color: white; + selection-background-color: #94b30f; + border-width: 5px 0px 5px 0px; + border-style: solid; + border-color: transparent; + margin: 0px -1px 0px 0px; /* temporal: hack for Mac... try it on Windows and Linux */ +} + + +/*================================================================================================== +Push button +==================================================================================================*/ +QPushButton { + color: #6e6e6e; + text-align: center; + background-color: qlineargradient(spread:pad, x1:0, y1:0.3, x2:0, y2:1, stop:0 #f5f5f5, stop:1 #e6e6e6); + border: 1px solid #d2d2d2; + border-bottom-color: #c3c3c3; /* simulates shadow under the button */ + padding: 4px 22px; + margin: 4px 4px; + min-height: 16px; /* same as QTabBar QPushButton min-width */ + border-radius: 4px; +} + +QPushButton:hover, +QPushButton:focus { + color: white; + border-color: #819c0c; + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #94b30f, stop:1 #819c0c); +} + +QPushButton:disabled, +QPushButton:disabled:checked { + color: #b6b6b6; + border-color: #e6e6e6; + background-color: #e6e6e6; +} + +QPushButton:pressed { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #819c0c, stop:1 #94b30f); +} + +QPushButton:checked { + background-color: #94b30f; + border-color: #819c0c; +} + +/* Color Buttons */ +Gui--ColorButton, +Gui--ColorButton:disabled { + padding: 0px; /* reset */ + margin: 0px; /* reset */ +} + +Gui--ColorButton { + background-color: qlineargradient(spread:pad, x1:0, y1:0.3, x2:0, y2:1, stop:0 #f5f5f5, stop:1 #e6e6e6); + border: 1px solid #d2d2d2; + border-bottom-color: #c3c3c3; /* simulates shadow under the button */ +} + +Gui--ColorButton:disabled { + border-color: transparent; + background-color: rgba(0,0,0,10); +} + +Gui--ColorButton:hover, +Gui--ColorButton:focus { + border-color: #819c0c; + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #94b30f, stop:1 #819c0c); +} + +Gui--ColorButton:pressed { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #819c0c, stop:1 #94b30f); +} + +/* Pushbutton style for "..." inside Placement cell which launches Placement tool */ +Gui--PropertyEditor--PropertyEditor > QWidget > QWidget > QPushButton { + background-color: #b6b6b6; + border: 1px solid #828282; + min-width: 16px; /* reset it due to larger value on regular QPushButton, same or bigger value as regular QPushButton min-height */ + border-radius: 0px; + margin: 0px; /* reset */ + padding: 0px; /* reset */ +} + +/* Fix for Expressions description QFrame that is "broken" with initial reset */ +Gui--PropertyEditor--PropertyEditor > QWidget > QWidget > QWidget > QWidget > QFrame { + background-color: #f5f5f5; /* main background color */ + border: 1px solid #dcdcdc; + border-radius: 2px; + padding: 2px 6px; +} + + +/*================================================================================================== +Tool button inside QDialogs that works as QPushButtons +==================================================================================================*/ +/* found under Tools -> Customize -> Macros -> Pixmap "..." button */ +QDialog QToolButton { + color: #6e6e6e; + text-align: center; + background-color: qlineargradient(spread:pad, x1:0, y1:0.3, x2:0, y2:1, stop:0 #f5f5f5, stop:1 #e6e6e6); + border: 1px solid #d2d2d2; + border-bottom-color: #c3c3c3; /* simulates shadow under the button */ + padding: 0px; /* different than regular QPushButton */ + margin: 2px; /* different than regular QPushButton */ + min-height: 16px; /* same as QTabBar QPushButton min-width */ + border-radius: 4px; +} + +QDialog QToolButton:hover, +QDialog QToolButton:focus { + color: white; + border-color: #819c0c; + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #94b30f, stop:1 #819c0c); +} + +QDialog QToolButton:disabled, +QDialog QToolButton:disabled:checked { + color: #b6b6b6; + border-color: #e6e6e6; + background-color: #e6e6e6; +} + +QDialog QToolButton:pressed { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #819c0c, stop:1 #94b30f); +} + +QPushButton:checked { + background-color: #94b30f; + border-color: #819c0c; +} + + +/*================================================================================================== +Radio button +==================================================================================================*/ +QRadioButton::indicator:unchecked{ + color: #505050; + background-color: rgba(0, 0, 0, 20); + border: 1px solid #505050; +} + +QRadioButton::indicator:checked { + background-color: #94b30f; /* QCheckBox has the same color */ + border: 1px solid #819c0c; /* QCheckBox has the same color */ + image:url(qss:images/radiobutton_light.png); +} + +QRadioButton, +QRadioButton:disabled { + color: #505050; + padding: 3px; + outline: none; + background-color: transparent; +} + +QRadioButton::indicator { + width: 11px; + height: 11px; + border-radius: 6px; +} + +QRadioButton::indicator:pressed { + border-color: #c5d675; +} + +QRadioButton::indicator:disabled { + border: 1px solid #6e6e6e; +} + +QRadioButton::indicator:disabled { + color: #6e6e6e; + background-color: transparent; +} + +QRadioButton:focus { + border: none; +} + + +/*================================================================================================== +Checkbox +==================================================================================================*/ +QCheckBox, +QCheckBox:disabled { + color: #505050; + padding: 3px; + outline: none; + background-color: transparent; +} + +QCheckBox::indicator { + color: #c8c8c8; + background-color: rgba(0,0,0,20); + border: 1px solid #505050; +} + +QCheckBox::indicator { + width: 11px; + height: 11px; + border-radius:2px; +} + +QCheckBox::indicator:pressed, +QCheckBox::indicator:non-exclusive:checked:pressed, +QCheckBox::indicator:indeterminate:pressed, +QCheckBox::indicator:checked:pressed { + border-color: #c5d675; +} + +QCheckBox::indicator:checked { + background-color: #94b30f; /* QRadioButton has the same color */ + border: 1px solid #819c0c; /* QRadioButton has the same color */ + image:url(qss:images/checkbox_light.png); +} + +QCheckBox:disabled { + color: rgba(0,0,0,40); + background-color: transparent; +} + +QCheckBox::indicator:disabled { + background-color: rgba(0,0,0,20); + border: 1px solid rgba(0,0,0,20); +} + +QCheckBox::indicator:indeterminate { + background-color: #94b30f; + border: 1px solid #819c0c; + image: url(qss:images/checkbox_indeterminate_light.png); +} + +QCheckBox:focus { + border: none; +} + + +/*================================================================================================== +Slider +==================================================================================================*/ +QSlider, +QSlider:active, +QSlider:!active { + border: none; + background-color: transparent; +} + +QSlider:horizontal { + padding: 0px 10px; +} + +QSlider:vertical { + padding: 10px 0px; +} + +QSlider::groove { + background-color: rgba(0,0,0,30); + border: 1px solid rgba(0,0,0,40); + border-radius: 5px; + margin: 4px 0px; +} + +QSlider::groove:horizontal { + height: 8px; +} + +QSlider::groove:vertical { + width: 8px; +} + +QSlider::groove:horizontal:disabled, +QSlider::groove:vertical:disabled { + border-color: #dcdcdc; + background-color: #dcdcdc; +} + +QSlider::handle:horizontal, +QSlider::handle:vertical { + background-color: #b6b6b6; + border: 1px solid #b6b6b6; + width: 14px; + height: 14px; + border-radius: 8px; +} + +QSlider::handle:horizontal { + margin: -4px 0; +} + +QSlider::handle:vertical { + margin: 0 -4px; +} + +QSlider::handle:horizontal:hover, +QSlider::handle:vertical:hover, +QSlider::handle:horizontal:pressed, +QSlider::handle:vertical:pressed { + border-color: #94b30f; + background-color: #94b30f; +} + +QSlider::handle:horizontal:disabled, +QSlider::handle:vertical:disabled { + border-color: #dcdcdc; + background-color: #dcdcdc; +} + + +/*================================================================================================== +Toolbar buttons +==================================================================================================*/ +QToolBar > QToolButton { + margin: 2px; + padding: 2px; +} + +QToolBar > QPushButton, +/*QToolBar > QComboBox, disabled because creates different margins for body and drop-down button */ +QToolBar > QAbstractSpinBox, +QToolBar > QSpinBox, +QToolBar > QDoubleSpinBox, +QToolBar > QLineEdit, +QToolBar > QTextEdit, +QToolBar > QTimeEdit, +QToolBar > QDateEdit, +QToolBar > QDateTimeEdit { + margin: 2px; + padding: 2px; +} + +QToolBar > QPushButton { + border-radius: 4px; /* same as regular QPushButton */ + min-width: 20px; /* reset it due to larger value on regular QPushButton, same or bigger value as regular QPushButton min-height */ +} + +QToolBar > QPushButton:checked { + border: 1px solid #819c0c; + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #94b30f, stop:1 #819c0c); +} + +QToolBar > QPushButton:!checked { + background-color: qlineargradient(spread:pad, x1:0, y1:0.3, x2:0, y2:1, stop:0 #f5f5f5, stop:1 #e6e6e6); + border: 1px solid #d2d2d2; + border-bottom-color: #c3c3c3; /* simulates shadow under the button */ +} + +QToolBar > QPushButton:checked:hover { + border-color: #74831d; +} + +QToolBar > QPushButton:!checked:hover { + color: black; + border-color: #b6b6b6; +} + +QToolBar > QPushButton:checked:pressed { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #819c0c, stop:1 #94b30f); +} + +QToolBar > QPushButton:!checked:pressed { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #b6b6b6, stop:1 #e6e6e6); +} + +QToolBar > QPushButton:checked:disabled, +QToolBar > QPushButton:!checked:disabled { + border: none; + background-color: transparent; +} + +/* ToolBar menu buttons (buttons with drop-down menu) */ +QToolBar > QToolButton#qt_toolbutton_menubutton { + padding-right: 20px; /* Hack to add more width to buttons with menu */ + border: 1px solid transparent; + border-radius: 3px; +} + +QToolBar > QToolButton#qt_toolbutton_menubutton:hover, +QToolBar > QToolButton#qt_toolbutton_menubutton:pressed, +QToolBar > QToolButton#qt_toolbutton_menubutton:open { + border: 1px solid #a5c61a; +} + +QToolBar QToolButton::menu-button, +QToolBar > QToolButton#qt_toolbutton_menubutton::menu-button { + border: none; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + width: 16px; /* 16px width + 4px for border = 20px allocated above */ + outline: none; + background-color: transparent; +} + +QToolBar > QToolButton#qt_toolbutton_menubutton::menu-button:hover, +QToolBar > QToolButton#qt_toolbutton_menubutton::menu-button:pressed, +QToolBar > QToolButton#qt_toolbutton_menubutton::menu-button:open { + background-color: qlineargradient(spread:pad, x1:1, y1:0.8, x2:1, y2:0, stop:0 #94b30f, stop:1 #a5c61a); +} + +QToolBar > QToolButton::menu-arrow { + background-image: url(qss:images/down_arrow_dark.png); + background-position: center center; + background-repeat: none; + subcontrol-origin: padding; + subcontrol-position: bottom right; + height: 10px; /* same as arrow image */ +} + +QToolBar > QToolButton::menu-arrow:hover { + background-image: url(qss:images/down_arrow_lighter.png); +} + +QToolBar > QToolButton::menu-arrow:open { + background-image: url(qss:images/down_arrow_lighter.png); +} + +/*The "show more" button (it can also be stylable with "QToolBarExtension" */ +QToolBar QToolButton#qt_toolbar_ext_button { + margin: 0px; + padding: 0px; + /*background-image: url(qss:images/more_dark.png);*/ + image: transparent; + background-repeat: none; + background-position: center left; +} + +QToolBar QToolButton#qt_toolbar_ext_button:hover { + /*background-image: url(qss:images/more_light.png);*/ + border-color: #e0e0e0; + background-color: #e0e0e0; +} + +QToolBar QToolButton#qt_toolbar_ext_button:on { + /*background-image: url(qss:images/more_light.png);*/ + border-color: #e0e0e0; + background-color: #e0e0e0; +} + + +/*================================================================================================== +Tables (spreadsheets) +==================================================================================================*/ +QTableView { + gridline-color: #d2d2d2; + selection-color: #566214; + selection-background-color: #dadfc5; +} + +QTableView::item:hover { + background-color: rgba(0,0,0,10); /* temporal: is it displayed in Linux or Windows? on OSX it isn't */ +} + +QTableView::item:disabled { + color: #e6e6e6; +} + +QTableView::item:selected { + color: #566214; + border-color: #dadfc5; /* same as focused background color */ + border-bottom-color: #a5c61a; /* same as focused border color */ +} + +/* fix for elements inside the cells */ +QTableView QComboBox, +QTableView QAbstractSpinBox, +QTableView QSpinBox, +QTableView QDoubleSpinBox, +QTableView QLineEdit, +QTableView QTextEdit, +QTableView QTimeEdit, +QTableView QDateEdit, +QTableView QDateTimeEdit, +QTableView QComboBox:drop-down, +QTableView QAbstractSpinBox:up-button, +QTableView QSpinBox:up-button, +QTableView QDoubleSpinBox:up-button, +QTableView QTimeEdit:up-button, +QTableView QDateEdit:up-button, +QTableView QDateTimeEdit:up-button, +QTableView QAbstractSpinBox:down-button, +QTableView QSpinBox:down-button, +QTableView QDoubleSpinBox:down-button, +QTableView QTimeEdit:down-button, +QTableView QDateEdit:down-button, +QTableView QDateTimeEdit:down-button, +QTableView Gui--ColorButton { + border-radius: 0px; +} + +QTableView QComboBox, +QTableView QAbstractSpinBox, +QTableView QSpinBox, +QTableView QDoubleSpinBox, +QTableView QLineEdit, +QTableView QTextEdit, +QTableView QTimeEdit, +QTableView QDateEdit, +QTableView QDateTimeEdit { + color: black; + background-color: transparent; + border-color: transparent; +} + +QTableView QComboBox:drop-down, +QTableView QAbstractSpinBox:up-button, +QTableView QSpinBox:up-button, +QTableView QDoubleSpinBox:up-button, +QTableView QTimeEdit:up-button, +QTableView QDateEdit:up-button, +QTableView QDateTimeEdit:up-button, +QTableView QAbstractSpinBox:down-button, +QTableView QSpinBox:down-button, +QTableView QDoubleSpinBox:down-button, +QTableView QTimeEdit:down-button, +QTableView QDateEdit:down-button, +QTableView QDateTimeEdit:down-button, +QTableView Gui--ColorButton { + background-color: rgba(0,0,0,30); +} + +QTableView QComboBox:focus, +QTableView QAbstractSpinBox:focus, +QTableView QSpinBox:focus, +QTableView QDoubleSpinBox:focus, +QTableView QLineEdit:focus, +QTableView QTextEdit:focus, +QTableView QTimeEdit:focus, +QTableView QDateEdit:focus, +QTableView QDateTimeEdit:focus { + color: #566214; + selection-color: white; + selection-background-color: #94b30f; + border-color: #dadfc5; + background-color: #dadfc5; +} + +QTableView QComboBox:disabled, +QTableView QAbstractSpinBox:disabled, +QTableView QSpinBox:disabled, +QTableView QDoubleSpinBox:disabled, +QTableView QLineEdit:disabled, +QTableView QTextEdit:disabled, +QTableView QTimeEdit:disabled, +QTableView QDateEdit:disabled, +QTableView QDateTimeEdit:disabled { + color: rgba(0,0,0,120); + background-color: transparent; + border-color: transparent; +} + +QTableView QComboBox:read-only, +QTableView QAbstractSpinBox:read-only, +QTableView QSpinBox:read-only, +QTableView QDoubleSpinBox:read-only, +QTableView QLineEdit:read-only, +QTableView QTextEdit:read-only, +QTableView QTimeEdit:read-only, +QTableView QDateEdit:read-only, +QTableView QDateTimeEdit:read-only { + color: black; + background-color: transparent; + border-color: transparent; +} + + +/*================================================================================================== +EXPERIMENTAL +==================================================================================================*/ + +/* Fix for preventing elements in different rows to accidentaly overlap */ +QDialog QGroupBox QFrame { + margin: 2px 0px; +} + +*[mandatoryField="true"] { background-color: cyan } \ No newline at end of file diff --git a/src/Gui/Stylesheets/Light - orange.qss b/src/Gui/Stylesheets/Light - orange.qss new file mode 100644 index 000000000..dca46d920 --- /dev/null +++ b/src/Gui/Stylesheets/Light - orange.qss @@ -0,0 +1,1900 @@ +/* +ABOUT +============================================================================================================ +version 2.01 +QT theme (stylesheet) specially developed for FreeCAD (http://www.freecadweb.org/). +It might work with other software that uses QT styling. + + +LICENSE +============================================================================================================ +Copyright (c) 2016 Pablo Gil Fernández + +This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. +To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/. + + +INSTALLATION +============================================================================================================ +1) Place the .qss files and /images/ folder in the path that fits your OS: + OSX = /Users/[YOUR_USER_NAME]/Library/Preferences/FreeCAD/Gui/Stylesheets/ + WINDOWS = C:/[INSTALLATION_PATH]/FreeCAD/data/Gui/Stylesheets/ + LINUX = /home/[YOUR_USER_NAME]/.FreeCAD/Gui/Stylesheets/ + +2) In order to display correctly images: + 2.1) FreeCAD 0.16 (development builds newer than commit 5b3d50a): that's it, you are done! + + 2.2) FreeCAD 0.15: Images used in the theme need ABSOLUTE paths to be found by FreeCAD, so you should search the string "qss:images" (without "") and replace with the real path of your computer. It should be done with all the .qss files you want to install-use + find = qss:images + replace = /Users/myName/Library/Preferences/FreeCAD/Gui/Stylesheets/images + + +CUSTOMIZATION +============================================================================================================ +If you would like to change the overall look/style of the theme, just find and replace following colors in the whole file: + BACKGROUND (darker to ligher) + black + #505050 + #6e6e6e + #828282 + #a2a2a0 + #b6b6b6 + #c8c8c8 + #c3c3c3 + #d2d2d2 + #dcdcdc + #e0e0e0 + #e6e6e6 + #f0f0f0 + #f5f5f5 = main background color + white + + SELECTION (darker to lighter) + #624b14 + #b28416 + #d0970c + #daa116 = main selection color + #e2ac2a = used to build QSpinBox up and down buttons, it's used as color in the middle + #e3b64d + #e0c992 + #e3d8b9 + + + + +KNOWN BUGS and TO DO +============================================================================================================ + - please, follow the link to get updated information: http://forum.freecadweb.org/viewtopic.php?f=10&t=12417 +*/ + + +/*================================================================================================== +Reset elements +==================================================================================================*/ +/* Reseting everything helps to unify styles across different operating systems */ +* { + padding: 0px; + margin: 0px; + border: 0px; + border-style: none; + border-image: none; + outline: 0; +} + +/* specific reset for elements inside QToolBar */ +QToolBar * { + margin: 0px; + padding: 0px; +} + + +/*================================================================================================== +Main window +==================================================================================================*/ +QMainWindow, +QDialog, +QToolBar { + background-color: #f5f5f5; /* main background color */ +} + +QMdiArea[showImage="true"] { + background-image: url(qss:images/background_freecad.png); + background-position: center center; + background-repeat: no-repeat; +} + + +/*================================================================================================== +MENUS +==================================================================================================*/ +QMenuBar, +QMenuBar::item { + color: black; + background-color: #f5f5f5; /* main background color */ +} + +QMenu, +QMenu::item { + color: black; + background-color: #f5f5f5; /* main background color */ + text-decoration: none; +} + +QMenuBar::item:selected, +QMenuBar::item:pressed, +QMenu::item:selected, +QMenu::item:pressed { + color: white; + background-color: #daa116; +} + +QMenu::right-arrow { + width: 10px; + height: 10px; + image:url(qss:images/right_arrow_dark.png); + margin-right: 2px; +} + +QMenu::right-arrow:selected { + image:url(qss:images/right_arrow_lighter.png); +} + +QMenu::item { + padding: 2px 16px 2px 26px; /* make room for icon at left */ + border: 1px solid transparent; /* reserve space for selection border */ +} + +QMenu::icon { + margin-left: 2px; +} + +QMenu::separator { + height: 1px; + background-color: rgba(0,0,0,30); + margin: 6px 4px; +} + +QMenu::indicator:non-exclusive:checked { + color: white; +} + + +/*================================================================================================== +Tool bar +==================================================================================================*/ +QToolBar { + border: none; + min-width: 32px; /* allows a minimum of space between QToolBar colums */ + min-height: 32px; /* allows a minimum of space between QToolBar rows */ +} + +QToolBar::handle:horizontal { + background-image: url(qss:images/Hmovetoolbar_dark.png); + width: 10px; + margin: 6px 2px 6px 2px; + background-position: top right; + background-repeat: repeat-y; +} + +QToolBar::handle:vertical { + background-image: url(qss:images/Vmovetoolbar_dark.png); + height: 10px; + margin: 2px 6px 2px 6px; + background-position: left bottom; + background-repeat: repeat-x; +} + +QToolBar::separator:horizontal { + background-image: url(qss:images/separtoolbar_dark.png); + width: 10px; + margin: 6px 2px 6px 2px; + background-position: center center; + background-repeat: repeat-y; +} + +QToolBar::separator:vertical { + background-image: url(qss:images/separtoolbar_dark.png); + height: 10px; + margin: 2px 6px 2px 6px; + background-position: center center; + background-repeat: repeat-x; +} + + +/*================================================================================================== +Group box +==================================================================================================*/ +QGroupBox { + color: rgba(0,0,0,120); + border:1px solid rgba(0, 0, 0, 20); /* lighter than its own border-color */; + border-radius: 3px; + margin-top: 10px; + padding: 6px; + background-color: rgba(255, 255, 255, 15); +} + +QGroupBox:title { + top: -8px; + left: 12px; +} + + +/*================================================================================================== +Tooltip +==================================================================================================*/ +QToolTip { + color: white; + background-color: #828282; + /*opacity: 90%; doesn't correctly work */ + padding: 4px; + border-radius: 3px; /* has no effect */ +} + + +/*================================================================================================== +Dock widget +==================================================================================================*/ +QDockWidget { + color: rgba(0,0,0,120); + titlebar-close-icon: url(qss:images/close_dark.png); + titlebar-normal-icon: url(qss:images/undock_dark.png); +} + +QDockWidget::title { + text-align: center; + background-color: rgba(0,0,0,10); + border: 4px solid #f5f5f5; /* fix to simulate margin between this :title and tabs */ /* same as main background color */ + border-radius: 6px; /* bigger than normal due to previous border fix */ + padding: 4px 0px; /* also needed because of previous border fix */ +} + +QDockWidget::close-button, +QDockWidget::float-button { + border: none; + background: transparent; + border-radius: 3px; + subcontrol-origin: padding; + subcontrol-position: right center; +} + +QDockWidget::close-button { + right: 4px; +} + +QDockWidget::float-button { + right: 22px; +} + +QDockWidget::close-button:hover, +QDockWidget::float-button:hover { + background-color: rgba(0,0,0,15); +} + +QDockWidget::close-button:pressed, +QDockWidget::float-button:pressed { + background-color: rgba(0,0,0,30); +} + +/* fix for Python Console (probably there is a smarter way to arrive to it) */ +QDockWidget > QFrame { + background-color: #f0f0f0; + border: 1px solid #c3c3c3; +} + + +/*================================================================================================== +Progress bar +==================================================================================================*/ +QProgressBar, +QProgressBar:horizontal { + color: white; + background-color: rgba(0,0,0,10); + text-align: center; + border: 1px solid rgba(0,0,0,80); + padding: 1px; + border-radius: 3px; +} +QProgressBar::chunk, +QProgressBar::chunk:horizontal { + background-color: qlineargradient(spread:pad, x1:1, y1:0.545, x2:1, y2:0, stop:0 #d0970c, stop:1 #daa116); + border-radius: 3px; +} + + +/*================================================================================================== +Scroll +==================================================================================================*/ +QAbstractScrollArea { + border-radius: 2px; + background-color: transparent; +} + +QAbstractScrollArea::corner { + border: none; + background-color: transparent; +} + +QScrollBar:horizontal { + background-color: transparent; + height: 15px; + margin: 0px; +} + +QScrollBar::handle:vertical, +QScrollBar::handle:horizontal { + background-color: rgba(0,0,0,80); +} + +QScrollBar::handle:vertical:hover, +QScrollBar::handle:horizontal:hover { + background-color: rgba(0,0,0,100); +} + +QScrollBar::handle:horizontal { + min-width: 5px; + border-radius: 3px; + margin: 4px 15px; +} + +QScrollBar::sub-line:horizontal { + margin: 1px 3px 0px 3px; /* 1px to correctly fit the 10px width image */ + border-image: url(qss:images/left_arrow_dark.png); + width: 6px; + height: 10px; + subcontrol-position: left; + subcontrol-origin: margin; +} + +QScrollBar::add-line:horizontal { + margin: 1px 3px 0px 3px; /* 1px to correctly fit the 10px width image */ + border-image: url(qss:images/right_arrow_dark.png); + width: 6px; + height: 10px; + subcontrol-position: right; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:horizontal:hover, +QScrollBar::sub-line:horizontal:on { + border-image: url(qss:images/left_arrow_darker.png); +} + +QScrollBar::add-line:horizontal:hover, +QScrollBar::add-line:horizontal:on { + border-image: url(qss:images/right_arrow_darker.png); +} + +QScrollBar::up-arrow:horizontal, +QScrollBar::down-arrow:horizontal { + background-color: none; +} + +QScrollBar::add-page:horizontal, +QScrollBar::sub-page:horizontal { + background-color: transparent; +} + +QScrollBar:vertical { + background-color: transparent; + width: 15px; + margin: 0px; +} + +QScrollBar::handle:vertical { + min-height: 5px; + border-radius: 3px; + margin: 15px 4px; +} + +QScrollBar::sub-line:vertical { + margin: 3px 0px 3px 1px; /* 1px to correctly fit the 10px width image */ + border-image: url(qss:images/up_arrow_dark.png); + height: 6px; + width: 10px; + subcontrol-position: top; + subcontrol-origin: margin; +} + +QScrollBar::add-line:vertical { + margin: 3px 0px 3px 1px; /* 1px to correctly fit the 10px width image */ + border-image: url(qss:images/down_arrow_dark.png); + height: 6px; + width: 10px; + subcontrol-position: bottom; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:vertical:hover, +QScrollBar::sub-line:vertical:on { + border-image: url(qss:images/up_arrow_darker.png); +} + +QScrollBar::add-line:vertical:hover, +QScrollBar::add-line:vertical:on { + border-image: url(qss:images/down_arrow_darker.png); +} + +QScrollBar::up-arrow:vertical, +QScrollBar::down-arrow:vertical { + background-color: none; +} + +QScrollBar::add-page:vertical, +QScrollBar::sub-page:vertical { + background-color: transparent; +} + + +/*================================================================================================== +Tab bar +==================================================================================================*/ +QTabWidget::pane { + background-color: transparent; /* temporal (transparent background) */ /* tab content background color */ + position: absolute; +} + +QTabWidget::pane:top { + top: -1px; + border-top: 1px solid #d2d2d2; +} + +QTabWidget::pane:bottom { + bottom: -1px; + border-bottom: 1px solid #d2d2d2; +} + +QTabWidget::pane:left { + right: -1px; + border-right: 1px solid #d2d2d2; +} + +QTabWidget::pane:right { + left: -1px; + border-left: 1px solid #d2d2d2; +} + +QTabWidget::tab-bar:top, +QTabWidget::tab-bar:bottom { + left: 10px; +} + +QTabWidget::tab-bar:left, +QTabWidget::tab-bar:right { + top: 10px; +} + +QTabBar { + qproperty-drawBase: 0; /* important */ + background-color: transparent; +} + +/* Workaround for QTabBars created from docked QDockWidgets which don't draw the border if not set and reseted as follows: */ +QTabBar { + border-top: 1px solid #d2d2d2; /* set color for all QTabBars */ +} +QDockWidget QTabBar { + border-color: transparent; /* set color for all QTabBars but ones created from QDockWidget */ +} +QDialog QTabBar { + border-color: transparent; /* set color for QTabBars inside Preferences dialog */ +} +/* end fix */ + +QTabBar::tab { + background-color: transparent; + border: 1px solid transparent; + padding: 3px; +} + +QTabBar::tab:top, +QTabBar::tab:bottom { + border-top-width: 4px; /* same as selected tab colored border in order to center close-button */ + border-bottom-width: 4px; /* same as selected tab colored border in order to center close-button */ + min-width: 11ex; + margin-left: 2px; + margin-right: 2px; +} + +QTabBar::tab:left, +QTabBar::tab:right { + border-left-width: 4px; /* same as selected tab colored border in order to center close-button */ + border-right-width: 4px; /* same as selected tab colored border in order to center close-button */ + min-height: 14ex; + margin-top: 2px; + margin-bottom: 2px; +} + +QTabBar::tab:selected { + background-color: transparent; /* temporal (transparent background) */ + border-color: #d2d2d2; +} + +QTabBar::tab:top:selected { + border-top: 4px solid qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #daa116, stop:1 #d0970c); /* selection color */ + border-bottom-color: #f5f5f5; /* same as tab content background color */ +} + +QTabBar::tab:bottom:selected { + border-bottom: 4px solid qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #daa116, stop:1 #d0970c); /* selection color */ + border-top-color: #f5f5f5; /* same as tab content background color */ +} + +QTabBar::tab:right:selected { + border-left: 4px solid qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 #daa116, stop:1 #d0970c); /* selection color */ + border-right-color: #f5f5f5; /* same as tab content background color */ +} + +QTabBar::tab:left:selected { + border-right: 4px solid qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 #daa116, stop:1 #d0970c); /* selection color */ + border-left-color: #f5f5f5; /* same as tab content background color */ +} + +QTabBar::tab:!selected { + color: rgba(0,0,0,160); +} + +QTabBar::tab:!selected:hover { + color: rgba(0,0,0,220); + background-color: rgba(0,0,0,20); +} + +QTabBar::tab:first:selected { + margin-left: 0; /* the first selected tab has nothing to overlap with on the left */ +} + +QTabBar::tab:last:selected { + margin-right: 0; /* the last selected tab has nothing to overlap with on the right */ +} + +QTabBar::tab:only-one { + margin: 0; /* if there is only one tab, we don't want overlapping margins */ +} + +/* hack to access Preference TabBar background */ +QDialog#Gui__Dialog__DlgPreferences > QFrame QFrame { + background-color: transparent; /* main background color (in Windows is #f5f5f5) */ +} + +/* fix for previous hack that broke QTabWidget background on Windows */ +QDialog#Gui__Dialog__DlgPreferences QTabWidget::pane { + background-color: transparent; /* temporal (transparent background) */ +} + +/* hack to correctly align Preferences icon list on OSX */ +QDialog#Gui__Dialog__DlgPreferences > QListView { + min-width: 130px; +} + +/* unique styles for sections inside Preferences */ +QDialog#Gui__Dialog__DlgPreferences > QListView::item { + border-radius: 6px; +} + +QDialog#Gui__Dialog__DlgPreferences > QListView::item:hover { + background-color: #dcdcdc; +} + +QDialog#Gui__Dialog__DlgPreferences > QListView::item:selected { + color: #624b14; + background-color: #e3d8b9; + border: 3px solid #e3b64d; +} + + +/*================================================================================================== +Tab bar buttons +==================================================================================================*/ +/* Close button */ +QTabBar::close-button { + subcontrol-origin: margin; + subcontrol-position: center right; /* only works for QT 4.6 and newer */; + border-radius: 2px; + background-image: url(qss:images/close_dark.png); + background-position: center center; + background-repeat: none; +} + +QTabBar::close-button:hover { + background-color: rgba(0,0,0,20); +} + +QTabBar::close-button:pressed { + background-color: rgba(0,0,0,30); +} + +/* Fix for lists inside Model tab */ +QDockWidget QTreeView, +QDockWidget QListView, +QDockWidget QTableView { + margin: 6px; + border: 1px solid #c3c3c3; /* same as regular QTreeView, QListView and QTableView */ + min-height: 40px; /* neccesary in some areas of FreeCAD */ +} + +/* Buttons to scroll tabs if there is not space to show all of them: */ +QTabBar::scroller { + width: 20px; /* the width of the scroll buttons */ +} + +QTabBar QToolButton, +QTabBar QToolButton:hover { + background-color: #f5f5f5; /* same as main background color */ +} + +QTabBar QToolButton::right-arrow:enabled { + image: url(qss:images/right_arrow_dark.png); +} + +QTabBar QToolButton::right-arrow:disabled, +QTabBar QToolButton::right-arrow:off { + image: url(qss:images/right_arrow_disabled_dark.png); +} + +QTabBar QToolButton::right-arrow:hover { + image: url(qss:images/right_arrow_darker.png); +} + + QTabBar QToolButton::left-arrow:enabled { + image: url(qss:images/left_arrow_dark.png); +} + + QTabBar QToolButton::left-arrow:disabled, + QTabBar QToolButton::left-arrow:off { + image: url(qss:images/left_arrow_disabled_dark.png); +} + + QTabBar QToolButton::left-arrow:hover { + image: url(qss:images/left_arrow_darker.png); +} + + QTabBar QToolButton::up-arrow:enabled { + image: url(qss:images/up_arrow_dark.png); +} + + QTabBar QToolButton::up-arrow:disabled, + QTabBar QToolButton::up-arrow:off { + image: url(qss:images/up_arrow_disabled_dark.png); +} + + QTabBar QToolButton::up-arrow:hover { + image: url(qss:images/up_arrow_darker.png); +} + + QTabBar QToolButton::down-arrow:enabled { + image: url(qss:images/down_arrow_dark.png); +} + + QTabBar QToolButton::down-arrow:disabled, + QTabBar QToolButton::down-arrow:off { + image: url(qss:images/down_arrow_disabled_dark.png); +} + + QTabBar QToolButton::down-arrow:hover { + image: url(qss:images/down_arrow_darker.png); +} + +QTabBar::tear { + /* default OS tear better */ +} + + +/*================================================================================================== +Tree and list views +==================================================================================================*/ +QTreeView, +QListView, +QTableView { + background-color: #f0f0f0; + alternate-background-color: #e6e6e6; /* related with QListView background */ + border: 1px solid #c3c3c3; + selection-color: white; + selection-background-color: #daa116; /* should be similar to QListView::item selected background-color */ + show-decoration-selected: 1; /* make the selection span the entire width of the view */ + border-radius: 3px; +} + +QListView::item:hover, +QTreeView::item:hover { + background-color: transparent; /* fix to homogenize it on all OSs */ +} + +QListView::item:selected, +QTreeView::item:selected { + color: white; /* should be similar to QListView selection-color */ + background-color: #daa116; /* should be similar to QListView selection-background-color */ + show-decoration-selected: 1; /* make the selection span the entire width of the view */ +} + +/* Property Editor QTreeView (FreeCAD custom widget) */ +Gui--PropertyEditor--PropertyEditor { + gridline-color: #d2d2d2; /* same as Group header background */ +} + +/* fix for column items background when a link is present */ +Gui--PropertyEditor--PropertyEditor > QWidget > QFrame:focus { + background-color: #e3d8b9; /* same as focused background color */ +} + +/* hack to hide weird redundant information inside the value of a Placement cell */ +Gui--PropertyEditor--PropertyEditor > QWidget > QWidget > QLabel, +Gui--PropertyEditor--PropertyEditor > QWidget > QWidget > QLabel:disabled { + color: transparent; + background-color: transparent; + border: none; + border-radius: 0px; + margin: 0px; + padding: 0px; +} + +/* hack to hide non editable cells inside Property values */ +Gui--PropertyEditor--PropertyEditor QLineEdit:read-only, +Gui--PropertyEditor--PropertyEditor QLineEdit:disabled, +Gui--PropertyEditor--PropertyEditor QAbstractSpinBox:read-only, +Gui--PropertyEditor--PropertyEditor QAbstractSpinBox:disabled { + color: transparent; + border-color: transparent; + background-color: transparent; + selection-color: transparent; + selection-background-color: transparent; +} + +/* hack to disable margin inside Property values to following elements */ +Gui--PropertyEditor--PropertyEditor QSpinBox, +Gui--PropertyEditor--PropertyEditor QDoubleSpinBox, +Gui--PropertyEditor--PropertyEditor QAbstractSpinBox, +Gui--PropertyEditor--PropertyEditor QLineEdit, +Gui--PropertyEditor--PropertyEditor QComboBox { + margin-left: 0px; + margin-right: 0px; + padding-top: 0px; + padding-bottom: 0px; +} + +/* set border-radius to 0px inside list views */ +QTreeView > QWidget > QComboBox, +QTreeView > QWidget > QAbstractSpinBox, +QTreeView > QWidget > QSpinBox, +QTreeView > QWidget > QDoubleSpinBox, +QTreeView > QWidget > QLineEdit, +QTreeView > QWidget > QTextEdit, +QTreeView > QWidget > QTimeEdit, +QTreeView > QWidget > QDateEdit, +QTreeView > QWidget > QDateTimeEdit, +QTreeView > QWidget > QComboBox:drop-down, +QTreeView > QWidget > QAbstractSpinBox:up-button, +QTreeView > QWidget > QSpinBox:up-button, +QTreeView > QWidget > QDoubleSpinBox:up-button, +QTreeView > QWidget > QTimeEdit:up-button, +QTreeView > QWidget > QDateEdit:up-button, +QTreeView > QWidget > QDateTimeEdit:up-button, +QTreeView > QWidget > QAbstractSpinBox:down-button, +QTreeView > QWidget > QSpinBox:down-button, +QTreeView > QWidget > QDoubleSpinBox:down-button, +QTreeView > QWidget > QTimeEdit:down-button, +QTreeView > QWidget > QDateEdit:down-button, +QTreeView > QWidget > QDateTimeEdit:down-button, +QTreeView > QWidget > Gui--ColorButton { + border-radius: 0px; +} + +/* set focus colors to best viewing the editable fields */ +QTreeView > QWidget > QComboBox:focus, +QTreeView > QWidget > QAbstractSpinBox:focus, +QTreeView > QWidget > QSpinBox:focus, +QTreeView > QWidget > QDoubleSpinBox:focus, +QTreeView > QWidget > QLineEdit:focus, +QTreeView > QWidget > QTextEdit:focus, +QTreeView > QWidget > QTimeEdit:focus, +QTreeView > QWidget > QDateEdit:focus, +QTreeView > QWidget > QDateTimeEdit:focus { + border-color: #e3d8b9; /* same as focused background color */ + border-bottom-color: #e3b64d; /* same as focused border color */ +} + +QTreeView > QWidget > QAbstractSpinBox:read-only, +QTreeView > QWidget > QSpinBox:read-only, +QTreeView > QWidget > QDoubleSpinBox:read-only, +QTreeView > QWidget > QLineEdit:read-only, +QTreeView > QWidget > QTextEdit:read-only, +QTreeView > QWidget > QTimeEdit:read-only, +QTreeView > QWidget > QDateEdit:read-only, +QTreeView > QWidget > QDateTimeEdit:read-only { + color: transparent; + background-color: transparent; + border-color: transparent; +} + +/* Fix to correctly (not totally) draw QTextEdit on OSX at Page properties: "Page result", "Template" and "Editable Texts" */ +Gui--PropertyEditor--PropertyEditor > QWidget > QWidget > QWidget { + min-height: 14px; +} + + +/*================================================================================================== +Header of tree and list views +==================================================================================================*/ +QHeaderView { + background-color: #c3c3c3; + border-top-left-radius: 2px; /* 1px less than its container */ + border-top-right-radius: 2px; /* 1px less than its container */ + border-bottom-left-radius: 0px; + border-bottom-right-radius: 0px; +} + +QHeaderView::section { + border:none; + padding: 4px 6px; + background-color: #c3c3c3; +} + +QHeaderView::section:horizontal { + padding: 4px 6px; /* left and right value similar to QHeaderView::section */ + border-right: 1px solid rgba(0,0,0,30); +} + +QHeaderView::section:vertical { + border-bottom: 1px solid rgba(0,0,0,30); +} + +QTableCornerButton::section { + background-color: #c3c3c3; + border-top: none; + border-left: none; + border-right: 1px solid rgba(0,0,0,30); + border-bottom: 1px solid rgba(0,0,0,30); +} + +QHeaderView::section:last { + border-right: none; +} + +QHeaderView::up-arrow { + image: url(qss:images/up_arrow_dark.png); +} + +QHeaderView::up-arrow:hover { + image: url(qss:images/up_arrow_darker.png); +} + +QHeaderView::down-arrow { + image: url(qss:images/down_arrow_dark.png); +} + +QHeaderView::down-arrow:hover { + image: url(qss:images/down_arrow_darker.png); +} + +/* Group header inside Property Editor (FreeCAD custom widget) */ +Gui--PropertyEditor--PropertyEditor { + qproperty-groupTextColor: #828282; /* same as main background color */ + qproperty-groupBackground: #d2d2d2; /* same as item gridlines */ +} + + +/*================================================================================================== +Branch system for QTreeViews +==================================================================================================*/ +QTreeView::branch { + background: transparent; +} + +QTreeView::branch:has-siblings:!adjoins-item { + border-image: url(qss:images/branch_vline.png) 0; +} + +QTreeView::branch:has-siblings:adjoins-item { + border-image: url(qss:images/branch_more.png) 0; +} + +QTreeView::branch:!has-children:!has-siblings:adjoins-item { + border-image: url(qss:images/branch_end.png) 0; +} + +QTreeView::branch:closed:has-children:has-siblings { + image: url(qss:images/branch_closed_dark.png); +} + +QTreeView::branch:has-children:!has-siblings:closed { + image: url(qss:images/branch_closed_dark.png); + border-image: url(qss:images/branch_end.png) 0; +} + +QTreeView::branch:open:has-children:has-siblings { + image: url(qss:images/branch_open_dark.png); + border-image: url(qss:images/branch_more.png) 0; +} + +QTreeView::branch:open:has-children:!has-siblings { + image: url(qss:images/branch_open_dark.png); + border-image: url(qss:images/branch_end.png) 0; +} + + +/*================================================================================================== +Splitter and windows separator +==================================================================================================*/ +QSplitter::handle { + margin: 0px 11px; + padding: 0px; +} + +QSplitter::handle:vertical { + background-image: url(qss:images/splitter_horizontal_dark.png); + background-position: center center; + background-repeat: none; + margin: 2px 4px 2px 4px; + height: 2px; +} + +QSplitter::handle:horizontal { + background-image: url(qss:images/splitter_vertical_dark.png); + background-position: center center; + background-repeat: none; + margin: 4px 2px 4px 2px; + width: 2px; +} + +/* Similar to the splitter is the following window separator: */ +QMainWindow::separator { + background-position: center center; + background-repeat: none; +} + +QMainWindow::separator:horizontal { + height: 2px; + background-image: url(qss:images/splitter_horizontal_dark.png); + margin: 4px 2px 4px 2px; +} + +QMainWindow::separator:vertical { + width: 2px; + background-image: url(qss:images/splitter_vertical_dark.png); + margin: 2px 4px 2px 4px; +} + + +/*================================================================================================== +Text/Python editor (macros, etc...) +==================================================================================================*/ +QPlainTextEdit, +QPlainTextEdit:focus { + background-color: #c8c8c8; + selection-color: white; + selection-background-color: #d0970c; + border: 1px solid #505050; + border-radius: 3px; + margin: 4px; +} + + +/*================================================================================================== +Tasks panel (custom FreeCAD class) +==================================================================================================*/ +/* Action group */ +QFrame[class="panel"] { + background-color: transparent; /* temporal (transparent background) */ +} + +/* Separator line */ +QSint--ActionGroup QFrame[height="1"], +QSint--ActionGroup QFrame[height="2"], +QSint--ActionGroup QFrame[height="3"], +QSint--ActionGroup QFrame[width="1"], +QSint--ActionGroup QFrame[width="2"], +QSint--ActionGroup QFrame[width="3"] { + border-color: rgba(0,0,0,60); +} + +/* Panel header */ +QSint--ActionGroup QFrame[class="header"] { + border: none; + background-color: #b6b6b6; /* Task Panel Header background color */ + border-top-left-radius: 3px; + border-top-right-radius: 3px; + border-bottom-left-radius: 0px; + border-bottom-right-radius: 0px; + margin: 0px; + padding: 0px; +} + +QSint--ActionGroup QFrame[class="header"]:hover { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #daa116, stop:1 #d0970c); +} + +QSint--ActionGroup QToolButton[class="header"] { + color: white; /* Task Panel Header text color */ + text-align: left; + font-weight: bold; + border: none; + margin: 0px; + padding: 0px; +} + +QSint--ActionGroup QFrame[class="header"] QLabel { + background-color: transparent; + background-image: url(qss:images/down_arrow_light.png); + background-repeat: none; + background-position: center center; + padding: 0px; + margin: 0px; +} + +QSint--ActionGroup QFrame[class="header"] QLabel:hover { + background-color: transparent; + background-image: url(qss:images/down_arrow_lighter.png); +} + +QSint--ActionGroup QFrame[class="header"] QLabel[fold="true"] { + background-color: transparent; + background-image: url(qss:images/up_arrow_light.png); + background-repeat: none; + background-position: center center; + padding: 0px; + margin: 0px; +} + +QSint--ActionGroup QFrame[class="header"] QLabel[fold="true"]:hover { + background-color: transparent; + background-image: url(qss:images/up_arrow_lighter.png); +} + +QSint--ActionGroup QFrame[class="content"] { + background-color: #e6e6e6; /* Task Panel background color */ + margin: 0px; + padding: 0px; + border: none; + border-top-left-radius: 0px; + border-top-right-radius: 0px; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; +} + +QSint--ActionGroup QFrame[class="content"] > QWidget { + background-color: #e6e6e6; /* Task Panel background color */ +} + +/* Fixs for tabs inside Task Panel */ +QSint--ActionGroup QFrame[class="content"] QTabBar::tab:top:selected { + border-bottom-color: #e6e6e6; /* same as Task Panel background color */ +} + +QSint--ActionGroup QFrame[class="content"] QTabBar::tab:bottom:selected { + border-top-color: #e6e6e6; /* same as Task Panel background color */ +} + +QSint--ActionGroup QFrame[class="content"] QTabBar::tab:right:selected { + border-right-color: #e6e6e6; /* same as Task Panel background color */ +} + +QSint--ActionGroup QFrame[class="content"] QTabBar::tab:left:selected { + border-left-color: #e6e6e6; /* same as Task Panel background color */ +} + + +/*================================================================================================== +Buttons +==================================================================================================*/ +/* Common */ +QComboBox, +QAbstractSpinBox, +QSpinBox, +QDoubleSpinBox, +QLineEdit, +QTextEdit, +QTimeEdit, +QDateEdit, +QDateTimeEdit { + color: #6e6e6e; + background-color: #e0e0e0; + selection-color: white; + selection-background-color: #daa116; + border: 1px solid #e0e0e0; + border-radius: 3px; + min-width: 50px; /* it ensures the default value is correctly displayed */ + padding: 1px 2px; /* temporal: could don't be compatible with elements inside Tree/List view */ +} + +/* shifts text/number editable field to the left to make space for the up/down or drop-down buttons */ +QComboBox, +QAbstractSpinBox, +QSpinBox, +QDoubleSpinBox, +QTimeEdit, +QDateEdit, +QDateTimeEdit { + padding-right: 20px; +} + +/* when QTextEdit are no editable */ +QTextEdit:!editable { + background-color: #f0f0f0; + border: 1px solid #c3c3c3; +} + +QComboBox:focus, +QAbstractSpinBox:focus, +QSpinBox:focus, +QDoubleSpinBox:focus, +QLineEdit:focus, +QTextEdit:focus, +QTimeEdit:focus, +QDateEdit:focus, +QDateTimeEdit:focus { + color: black; + border-color: #e3b64d; + border-right-color: qlineargradient(spread:pad, x1:1, y1:0.8, x2:1, y2:0, stop:0 #daa116, stop:1 #e3b64d); /* same as up/down or drop-down button color */ + background-color: #e3d8b9; +} + +QComboBox:disabled, +QAbstractSpinBox:disabled, +QSpinBox:disabled, +QDoubleSpinBox:disabled, +QLineEdit:disabled, +QTextEdit:disabled, +QTimeEdit:disabled, +QDateEdit:disabled, +QDateTimeEdit:disabled { + color: #c3c3c3; + background-color: #e0e0e0; /* same as enabled color */ + border-color: #e0e0e0; /* same as enabled color */ +} + +QAbstractSpinBox:up-button, +QSpinBox:up-button, +QDoubleSpinBox:up-button, +QTimeEdit:up-button, +QDateEdit:up-button, +QDateTimeEdit:up-button, +QAbstractSpinBox:down-button, +QSpinBox:down-button, +QDoubleSpinBox:down-button, +QTimeEdit:down-button, +QDateEdit:down-button, +QDateTimeEdit:down-button { + background-color: #d2d2d2; + subcontrol-origin: border; /* important */ + width: 20px; /* same as QComboBox ... QDateTimeEdit padding-right */ +} + +QAbstractSpinBox:up-button, +QSpinBox:up-button, +QDoubleSpinBox:up-button, +QTimeEdit:up-button, +QDateEdit:up-button, +QDateTimeEdit:up-button { + subcontrol-position: top right; + border-top-right-radius: 3px; + height: 12px; /* fix for Ubuntu that doesn't divide the up/down button into the exact middle */ +} + +QAbstractSpinBox:down-button, +QSpinBox:down-button, +QDoubleSpinBox:down-button, +QTimeEdit:down-button, +QDateEdit:down-button, +QDateTimeEdit:down-button { + subcontrol-position: bottom right; + border-bottom-right-radius: 3px; +} + +QAbstractSpinBox:up-button:focus, +QSpinBox:up-button:focus, +QDoubleSpinBox:up-button:focus, +QTimeEdit:up-button:focus, +QDateEdit:up-button:focus, +QDateTimeEdit:up-button:focus { + background-color: qlineargradient(spread:pad, x1:1, y1:0.8, x2:1, y2:0, stop:0 #e2ac2a, stop:1 #e3b64d); +} + +QAbstractSpinBox:down-button:focus, +QSpinBox:down-button:focus, +QDoubleSpinBox:down-button:focus, +QTimeEdit:down-button:focus, +QDateEdit:down-button:focus, +QDateTimeEdit:down-button:focus { + background-color: qlineargradient(spread:pad, x1:1, y1:0.8, x2:1, y2:0, stop:0 #daa116, stop:1 #e2ac2a); +} + +QAbstractSpinBox:up-button:disabled, +QSpinBox:up-button:disabled, +QDoubleSpinBox:up-button:disabled, +QTimeEdit:up-button:disabled, +QDateEdit:up-button:disabled, +QDateTimeEdit:up-button:disabled, +QAbstractSpinBox:down-button:disabled, +QSpinBox:down-button:disabled, +QDoubleSpinBox:down-button:disabled, +QTimeEdit:down-button:disabled, +QDateEdit:down-button:disabled, +QDateTimeEdit:down-button:disabled { + background-color: transparent; +} + +QAbstractSpinBox::up-arrow, +QSpinBox::up-arrow, +QDoubleSpinBox::up-arrow, +QTimeEdit::up-arrow, +QDateEdit::up-arrow, +QDateTimeEdit::up-arrow { + image: url(qss:images/up_arrow_dark.png); + top: 0px; /* fix simetry between up and down images */ +} + +QAbstractSpinBox::up-arrow:focus, +QSpinBox::up-arrow:focus, +QDoubleSpinBox::up-arrow:focus, +QTimeEdit::up-arrow:focus, +QDateEdit::up-arrow:focus, +QDateTimeEdit::up-arrow:focus { + image: url(qss:images/up_arrow_lighter.png); +} + +QAbstractSpinBox::up-arrow:off, +QSpinBox::up-arrow:off, +QDoubleSpinBox::up-arrow:off, +QTimeEdit::up-arrow:off, +QDateEdit::up-arrow:off, +QDateTimeEdit::up-arrow:off { + image: url(qss:images/up_arrow_disabled_dark.png); +} + +QAbstractSpinBox::up-arrow:disabled, +QSpinBox::up-arrow:disabled, +QDoubleSpinBox::up-arrow:disabled, +QTimeEdit::up-arrow:disabled, +QDateEdit::up-arrow:disabled, +QDateTimeEdit::up-arrow:disabled { + image: url(qss:images/up_arrow_disabled_dark.png); +} + +QAbstractSpinBox::down-arrow, +QSpinBox::down-arrow, +QDoubleSpinBox::down-arrow, +QTimeEdit::down-arrow, +QDateEdit::down-arrow, +QDateTimeEdit::down-arrow { + image: url(qss:images/down_arrow_dark.png); + bottom: 0px; /* fix simetry between up and down images */ +} + +QAbstractSpinBox::down-arrow:focus, +QSpinBox::down-arrow:focus, +QDoubleSpinBox::down-arrow:focus, +QTimeEdit::down-arrow:focus, +QDateEdit::down-arrow:focus, +QDateTimeEdit::down-arrow:focus { + image: url(qss:images/down_arrow_lighter.png); +} + +QAbstractSpinBox::down-arrow:off, +QSpinBox::down-arrow:off, +QDoubleSpinBox::down-arrow:off, +QTimeEdit::down-arrow:off, +QDateEdit::down-arrow:off, +QDateTimeEdit::down-arrow:off { + image: url(qss:images/down_arrow_disabled_dark.png); +} + +QAbstractSpinBox::down-arrow:disabled, +QSpinBox::down-arrow:disabled, +QDoubleSpinBox::down-arrow:disabled, +QTimeEdit::down-arrow:disabled, +QDateEdit::down-arrow:disabled, +QDateTimeEdit::down-arrow:disabled { + image: url(qss:images/down_arrow_disabled_dark.png); +} + +/* ComboBox */ +QComboBox::drop-down { + background-color: #d2d2d2; + subcontrol-origin: border; /* important */ + subcontrol-position: top right; + width: 20px; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} + +QComboBox::drop-down:on, +QComboBox::drop-down:focus { + background-color: qlineargradient(spread:pad, x1:1, y1:0.8, x2:1, y2:0, stop:0 #daa116, stop:1 #e3b64d); +} + +QComboBox::down-arrow { + image: url(qss:images/down_arrow_dark.png); +} + +QComboBox::down-arrow:on, +QComboBox::down-arrow:focus { + image: url(qss:images/down_arrow_lighter.png); +} + +QComboBox::down-arrow:off, +QComboBox::down-arrow:disabled { + image: url(qss:images/down_arrow_disabled_dark.png); +} + +/* ComboBox menu */ +QComboBox { + selection-color: white; + selection-background-color: #daa116; +} + +QComboBox QAbstractItemView { + color: #6e6e6e; /* same as regular QComboBox color */ + background-color: transparent; + selection-color: white; + selection-background-color: #daa116; + border-width: 5px 0px 5px 0px; + border-style: solid; + border-color: transparent; + margin: 0px -1px 0px 0px; /* temporal: hack for Mac... try it on Windows and Linux */ +} + + +/*================================================================================================== +Push button +==================================================================================================*/ +QPushButton { + color: #6e6e6e; + text-align: center; + background-color: qlineargradient(spread:pad, x1:0, y1:0.3, x2:0, y2:1, stop:0 #f5f5f5, stop:1 #e6e6e6); + border: 1px solid #d2d2d2; + border-bottom-color: #c3c3c3; /* simulates shadow under the button */ + padding: 4px 22px; + margin: 4px 4px; + min-height: 16px; /* same as QTabBar QPushButton min-width */ + border-radius: 4px; +} + +QPushButton:hover, +QPushButton:focus { + color: white; + border-color: #d0970c; + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #daa116, stop:1 #d0970c); +} + +QPushButton:disabled, +QPushButton:disabled:checked { + color: #b6b6b6; + border-color: #e6e6e6; + background-color: #e6e6e6; +} + +QPushButton:pressed { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #d0970c, stop:1 #daa116); +} + +QPushButton:checked { + background-color: #daa116; + border-color: #d0970c; +} + +/* Color Buttons */ +Gui--ColorButton, +Gui--ColorButton:disabled { + padding: 0px; /* reset */ + margin: 0px; /* reset */ +} + +Gui--ColorButton { + background-color: qlineargradient(spread:pad, x1:0, y1:0.3, x2:0, y2:1, stop:0 #f5f5f5, stop:1 #e6e6e6); + border: 1px solid #d2d2d2; + border-bottom-color: #c3c3c3; /* simulates shadow under the button */ +} + +Gui--ColorButton:disabled { + border-color: transparent; + background-color: rgba(0,0,0,10); +} + +Gui--ColorButton:hover, +Gui--ColorButton:focus { + border-color: #d0970c; + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #daa116, stop:1 #d0970c); +} + +Gui--ColorButton:pressed { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #d0970c, stop:1 #daa116); +} + +/* Pushbutton style for "..." inside Placement cell which launches Placement tool */ +Gui--PropertyEditor--PropertyEditor > QWidget > QWidget > QPushButton { + background-color: #b6b6b6; + border: 1px solid #828282; + min-width: 16px; /* reset it due to larger value on regular QPushButton, same or bigger value as regular QPushButton min-height */ + border-radius: 0px; + margin: 0px; /* reset */ + padding: 0px; /* reset */ +} + +/* Fix for Expressions description QFrame that is "broken" with initial reset */ +Gui--PropertyEditor--PropertyEditor > QWidget > QWidget > QWidget > QWidget > QFrame { + background-color: #f5f5f5; /* main background color */ + border: 1px solid #dcdcdc; + border-radius: 2px; + padding: 2px 6px; +} + + +/*================================================================================================== +Tool button inside QDialogs that works as QPushButtons +==================================================================================================*/ +/* found under Tools -> Customize -> Macros -> Pixmap "..." button */ +QDialog QToolButton { + color: #6e6e6e; + text-align: center; + background-color: qlineargradient(spread:pad, x1:0, y1:0.3, x2:0, y2:1, stop:0 #f5f5f5, stop:1 #e6e6e6); + border: 1px solid #d2d2d2; + border-bottom-color: #c3c3c3; /* simulates shadow under the button */ + padding: 0px; /* different than regular QPushButton */ + margin: 2px; /* different than regular QPushButton */ + min-height: 16px; /* same as QTabBar QPushButton min-width */ + border-radius: 4px; +} + +QDialog QToolButton:hover, +QDialog QToolButton:focus { + color: white; + border-color: #d0970c; + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #daa116, stop:1 #d0970c); +} + +QDialog QToolButton:disabled, +QDialog QToolButton:disabled:checked { + color: #b6b6b6; + border-color: #e6e6e6; + background-color: #e6e6e6; +} + +QDialog QToolButton:pressed { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #d0970c, stop:1 #daa116); +} + +QPushButton:checked { + background-color: #daa116; + border-color: #d0970c; +} + + +/*================================================================================================== +Radio button +==================================================================================================*/ +QRadioButton::indicator:unchecked{ + color: #505050; + background-color: rgba(0, 0, 0, 20); + border: 1px solid #505050; +} + +QRadioButton::indicator:checked { + background-color: #daa116; /* QCheckBox has the same color */ + border: 1px solid #d0970c; /* QCheckBox has the same color */ + image:url(qss:images/radiobutton_light.png); +} + +QRadioButton, +QRadioButton:disabled { + color: #505050; + padding: 3px; + outline: none; + background-color: transparent; +} + +QRadioButton::indicator { + width: 11px; + height: 11px; + border-radius: 6px; +} + +QRadioButton::indicator:pressed { + border-color: #e0c992; +} + +QRadioButton::indicator:disabled { + border: 1px solid #6e6e6e; +} + +QRadioButton::indicator:disabled { + color: #6e6e6e; + background-color: transparent; +} + +QRadioButton:focus { + border: none; +} + + +/*================================================================================================== +Checkbox +==================================================================================================*/ +QCheckBox, +QCheckBox:disabled { + color: #505050; + padding: 3px; + outline: none; + background-color: transparent; +} + +QCheckBox::indicator { + color: #c8c8c8; + background-color: rgba(0,0,0,20); + border: 1px solid #505050; +} + +QCheckBox::indicator { + width: 11px; + height: 11px; + border-radius:2px; +} + +QCheckBox::indicator:pressed, +QCheckBox::indicator:non-exclusive:checked:pressed, +QCheckBox::indicator:indeterminate:pressed, +QCheckBox::indicator:checked:pressed { + border-color: #e0c992; +} + +QCheckBox::indicator:checked { + background-color: #daa116; /* QRadioButton has the same color */ + border: 1px solid #d0970c; /* QRadioButton has the same color */ + image:url(qss:images/checkbox_light.png); +} + +QCheckBox:disabled { + color: rgba(0,0,0,40); + background-color: transparent; +} + +QCheckBox::indicator:disabled { + background-color: rgba(0,0,0,20); + border: 1px solid rgba(0,0,0,20); +} + +QCheckBox::indicator:indeterminate { + background-color: #daa116; + border: 1px solid #d0970c; + image: url(qss:images/checkbox_indeterminate_light.png); +} + +QCheckBox:focus { + border: none; +} + + +/*================================================================================================== +Slider +==================================================================================================*/ +QSlider, +QSlider:active, +QSlider:!active { + border: none; + background-color: transparent; +} + +QSlider:horizontal { + padding: 0px 10px; +} + +QSlider:vertical { + padding: 10px 0px; +} + +QSlider::groove { + background-color: rgba(0,0,0,30); + border: 1px solid rgba(0,0,0,40); + border-radius: 5px; + margin: 4px 0px; +} + +QSlider::groove:horizontal { + height: 8px; +} + +QSlider::groove:vertical { + width: 8px; +} + +QSlider::groove:horizontal:disabled, +QSlider::groove:vertical:disabled { + border-color: #dcdcdc; + background-color: #dcdcdc; +} + +QSlider::handle:horizontal, +QSlider::handle:vertical { + background-color: #b6b6b6; + border: 1px solid #b6b6b6; + width: 14px; + height: 14px; + border-radius: 8px; +} + +QSlider::handle:horizontal { + margin: -4px 0; +} + +QSlider::handle:vertical { + margin: 0 -4px; +} + +QSlider::handle:horizontal:hover, +QSlider::handle:vertical:hover, +QSlider::handle:horizontal:pressed, +QSlider::handle:vertical:pressed { + border-color: #daa116; + background-color: #daa116; +} + +QSlider::handle:horizontal:disabled, +QSlider::handle:vertical:disabled { + border-color: #dcdcdc; + background-color: #dcdcdc; +} + + +/*================================================================================================== +Toolbar buttons +==================================================================================================*/ +QToolBar > QToolButton { + margin: 2px; + padding: 2px; +} + +QToolBar > QPushButton, +/*QToolBar > QComboBox, disabled because creates different margins for body and drop-down button */ +QToolBar > QAbstractSpinBox, +QToolBar > QSpinBox, +QToolBar > QDoubleSpinBox, +QToolBar > QLineEdit, +QToolBar > QTextEdit, +QToolBar > QTimeEdit, +QToolBar > QDateEdit, +QToolBar > QDateTimeEdit { + margin: 2px; + padding: 2px; +} + +QToolBar > QPushButton { + border-radius: 4px; /* same as regular QPushButton */ + min-width: 20px; /* reset it due to larger value on regular QPushButton, same or bigger value as regular QPushButton min-height */ +} + +QToolBar > QPushButton:checked { + border: 1px solid #d0970c; + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #daa116, stop:1 #d0970c); +} + +QToolBar > QPushButton:!checked { + background-color: qlineargradient(spread:pad, x1:0, y1:0.3, x2:0, y2:1, stop:0 #f5f5f5, stop:1 #e6e6e6); + border: 1px solid #d2d2d2; + border-bottom-color: #c3c3c3; /* simulates shadow under the button */ +} + +QToolBar > QPushButton:checked:hover { + border-color: #b28416; +} + +QToolBar > QPushButton:!checked:hover { + color: black; + border-color: #b6b6b6; +} + +QToolBar > QPushButton:checked:pressed { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #d0970c, stop:1 #daa116); +} + +QToolBar > QPushButton:!checked:pressed { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #b6b6b6, stop:1 #e6e6e6); +} + +QToolBar > QPushButton:checked:disabled, +QToolBar > QPushButton:!checked:disabled { + border: none; + background-color: transparent; +} + +/* ToolBar menu buttons (buttons with drop-down menu) */ +QToolBar > QToolButton#qt_toolbutton_menubutton { + padding-right: 20px; /* Hack to add more width to buttons with menu */ + border: 1px solid transparent; + border-radius: 3px; +} + +QToolBar > QToolButton#qt_toolbutton_menubutton:hover, +QToolBar > QToolButton#qt_toolbutton_menubutton:pressed, +QToolBar > QToolButton#qt_toolbutton_menubutton:open { + border: 1px solid #e3b64d; +} + +QToolBar QToolButton::menu-button, +QToolBar > QToolButton#qt_toolbutton_menubutton::menu-button { + border: none; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + width: 16px; /* 16px width + 4px for border = 20px allocated above */ + outline: none; + background-color: transparent; +} + +QToolBar > QToolButton#qt_toolbutton_menubutton::menu-button:hover, +QToolBar > QToolButton#qt_toolbutton_menubutton::menu-button:pressed, +QToolBar > QToolButton#qt_toolbutton_menubutton::menu-button:open { + background-color: qlineargradient(spread:pad, x1:1, y1:0.8, x2:1, y2:0, stop:0 #daa116, stop:1 #e3b64d); +} + +QToolBar > QToolButton::menu-arrow { + background-image: url(qss:images/down_arrow_dark.png); + background-position: center center; + background-repeat: none; + subcontrol-origin: padding; + subcontrol-position: bottom right; + height: 10px; /* same as arrow image */ +} + +QToolBar > QToolButton::menu-arrow:hover { + background-image: url(qss:images/down_arrow_lighter.png); +} + +QToolBar > QToolButton::menu-arrow:open { + background-image: url(qss:images/down_arrow_lighter.png); +} + +/*The "show more" button (it can also be stylable with "QToolBarExtension" */ +QToolBar QToolButton#qt_toolbar_ext_button { + margin: 0px; + padding: 0px; + /*background-image: url(qss:images/more_dark.png);*/ + image: transparent; + background-repeat: none; + background-position: center left; +} + +QToolBar QToolButton#qt_toolbar_ext_button:hover { + /*background-image: url(qss:images/more_light.png);*/ + border-color: #e0e0e0; + background-color: #e0e0e0; +} + +QToolBar QToolButton#qt_toolbar_ext_button:on { + /*background-image: url(qss:images/more_light.png);*/ + border-color: #e0e0e0; + background-color: #e0e0e0; +} + + +/*================================================================================================== +Tables (spreadsheets) +==================================================================================================*/ +QTableView { + gridline-color: #d2d2d2; + selection-color: #624b14; + selection-background-color: #e3d8b9; +} + +QTableView::item:hover { + background-color: rgba(0,0,0,10); /* temporal: is it displayed in Linux or Windows? on OSX it isn't */ +} + +QTableView::item:disabled { + color: #e6e6e6; +} + +QTableView::item:selected { + color: #624b14; + border-color: #e3d8b9; /* same as focused background color */ + border-bottom-color: #e3b64d; /* same as focused border color */ +} + +/* fix for elements inside the cells */ +QTableView QComboBox, +QTableView QAbstractSpinBox, +QTableView QSpinBox, +QTableView QDoubleSpinBox, +QTableView QLineEdit, +QTableView QTextEdit, +QTableView QTimeEdit, +QTableView QDateEdit, +QTableView QDateTimeEdit, +QTableView QComboBox:drop-down, +QTableView QAbstractSpinBox:up-button, +QTableView QSpinBox:up-button, +QTableView QDoubleSpinBox:up-button, +QTableView QTimeEdit:up-button, +QTableView QDateEdit:up-button, +QTableView QDateTimeEdit:up-button, +QTableView QAbstractSpinBox:down-button, +QTableView QSpinBox:down-button, +QTableView QDoubleSpinBox:down-button, +QTableView QTimeEdit:down-button, +QTableView QDateEdit:down-button, +QTableView QDateTimeEdit:down-button, +QTableView Gui--ColorButton { + border-radius: 0px; +} + +QTableView QComboBox, +QTableView QAbstractSpinBox, +QTableView QSpinBox, +QTableView QDoubleSpinBox, +QTableView QLineEdit, +QTableView QTextEdit, +QTableView QTimeEdit, +QTableView QDateEdit, +QTableView QDateTimeEdit { + color: black; + background-color: transparent; + border-color: transparent; +} + +QTableView QComboBox:drop-down, +QTableView QAbstractSpinBox:up-button, +QTableView QSpinBox:up-button, +QTableView QDoubleSpinBox:up-button, +QTableView QTimeEdit:up-button, +QTableView QDateEdit:up-button, +QTableView QDateTimeEdit:up-button, +QTableView QAbstractSpinBox:down-button, +QTableView QSpinBox:down-button, +QTableView QDoubleSpinBox:down-button, +QTableView QTimeEdit:down-button, +QTableView QDateEdit:down-button, +QTableView QDateTimeEdit:down-button, +QTableView Gui--ColorButton { + background-color: rgba(0,0,0,30); +} + +QTableView QComboBox:focus, +QTableView QAbstractSpinBox:focus, +QTableView QSpinBox:focus, +QTableView QDoubleSpinBox:focus, +QTableView QLineEdit:focus, +QTableView QTextEdit:focus, +QTableView QTimeEdit:focus, +QTableView QDateEdit:focus, +QTableView QDateTimeEdit:focus { + color: #624b14; + selection-color: white; + selection-background-color: #daa116; + border-color: #e3d8b9; + background-color: #e3d8b9; +} + +QTableView QComboBox:disabled, +QTableView QAbstractSpinBox:disabled, +QTableView QSpinBox:disabled, +QTableView QDoubleSpinBox:disabled, +QTableView QLineEdit:disabled, +QTableView QTextEdit:disabled, +QTableView QTimeEdit:disabled, +QTableView QDateEdit:disabled, +QTableView QDateTimeEdit:disabled { + color: rgba(0,0,0,120); + background-color: transparent; + border-color: transparent; +} + +QTableView QComboBox:read-only, +QTableView QAbstractSpinBox:read-only, +QTableView QSpinBox:read-only, +QTableView QDoubleSpinBox:read-only, +QTableView QLineEdit:read-only, +QTableView QTextEdit:read-only, +QTableView QTimeEdit:read-only, +QTableView QDateEdit:read-only, +QTableView QDateTimeEdit:read-only { + color: black; + background-color: transparent; + border-color: transparent; +} + + +/*================================================================================================== +EXPERIMENTAL +==================================================================================================*/ + +/* Fix for preventing elements in different rows to accidentaly overlap */ +QDialog QGroupBox QFrame { + margin: 2px 0px; +} + +*[mandatoryField="true"] { background-color: cyan } \ No newline at end of file diff --git a/src/Gui/Stylesheets/images/Hmovetoolbar_dark.png b/src/Gui/Stylesheets/images/Hmovetoolbar_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..a408e856fbc3956aaf4e70c98f75061ff279be5c GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJy0V3D3_&I|FlDyqr82*Fcg1yTp14TFsJR*x3 z7`TN&n2}-D90{Nxdx@v7EBk#mPA&~*5%VM4fI_mFArU3c`MJ5Nc_lzD1A}u>YGO%h zib8p2Nrr;Er*A-tUMf3KT+-9UF@z&JIVB-s19Osq1lmHPk1v=B O((UQ$=d#Wzp$P!JI4hz6 literal 0 HcmV?d00001 diff --git a/src/Gui/Stylesheets/images/Hmovetoolbar_light.png b/src/Gui/Stylesheets/images/Hmovetoolbar_light.png new file mode 100644 index 0000000000000000000000000000000000000000..663b643a73b099fcfd1b13b76a692fdb4d9d456c GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJy0V3D3_&I|FlDyqr82*Fcg1yTp14TFsJR*x3 z7`TN&n2}-D90{Nxdx@v7EBk#mPHq-q!{V#nKq1-8kcblJ{M_8syb>Unfx)>bHL)Z$ zMWH;iBtya7(>EYRFO?lAF5~Iq7{U>q{OAAw{j$sg21Z75OcxF8ggcyN85lbEvD?4; RTkZogz|+;wWt~$(698%@Ew2Co literal 0 HcmV?d00001 diff --git a/src/Gui/Stylesheets/images/Hsepartoolbar_dark.png b/src/Gui/Stylesheets/images/Hsepartoolbar_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..002fad040e4b58f77a08878acb605a1bcf157e4a GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^>_BYK!3HFCsxJuxDYhhUcNd2LAh=-f^2tCE&H|6f zVg?3ope(mABg3pY5H=O_WNv1+-l4*_BYK!3HFCsxJuxDYhhUcNd2LAh=-f^2tCE&H|6f zVg?3ope(mABg3pY5H=O_WNv1+-lrGYkF*eLi(OAjv*HQ$q5py%<@eC|Nr-Q zE@Kt8Q}6X+a!xl9aARhi&Cl7Unfx)>bHL)Z$ zMWH;iBtya7(>EYRFO?lAF6rsw7{U>qoRE;Pp*cz6=z#+)YMyLA&N49AIx+lRzdLUw ONVlh}pUXO@geCyr7%UP1 literal 0 HcmV?d00001 diff --git a/src/Gui/Stylesheets/images/Vmovetoolbar_light.png b/src/Gui/Stylesheets/images/Vmovetoolbar_light.png new file mode 100644 index 0000000000000000000000000000000000000000..7b5130ab53c0a14b98bbf7490e2cdd5ee0a876e4 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^EI`c0!3HFsSlX9@I7!~_E&Cl4cY$RG9hKq1-8kcblJ{M_8syb>Unfx)>bHL)Z$ zMWH;iBtya7(>EYRFO?lAF5&6o7{U>q{Nw-s{jwa!4vfM*j!eE6co?kmc|MAYd%Xl{ N_H^}gS?83{1OSneDf|Ec literal 0 HcmV?d00001 diff --git a/src/Gui/Stylesheets/images/Vsepartoolbar_dark.png b/src/Gui/Stylesheets/images/Vsepartoolbar_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..18806c5baedf285550102dbba2aa9a7158ba0c78 GIT binary patch literal 152 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 literal 0 HcmV?d00001 diff --git a/src/Gui/Stylesheets/images/branch_end.png b/src/Gui/Stylesheets/images/branch_end.png new file mode 100644 index 0000000000000000000000000000000000000000..963a7cb31ba2f14cba48bc951df1c1f041c6154f GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VTavfC3&Vd9T(EcfWS|IVfk$L9 z0|U1(2s1Lwnj--eWH0gbb!ETL$sr=9?IXEak-;h&tKz}F$Xyr;3TGotm# zDrwURHzpifoA;qzF>ibFDS^3ShFc$rDQ0LW=k2vf<&f$Me!k*J1_#eo0S1PHGZ=Ej T&R)s@8ph!1>gTe~DWM4fK}j>2 literal 0 HcmV?d00001 diff --git a/src/Gui/Stylesheets/images/branch_more.png b/src/Gui/Stylesheets/images/branch_more.png new file mode 100644 index 0000000000000000000000000000000000000000..7c534f17bf4112434711e633cace507cfe5df954 GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VTavfC3&Vd9T(EcfWS|IVfk$L9 z0|U1(2s1Lwnj--eWH0gbb!ETL$sr;pops7G7${`#>Eak-;s5rsBQJx20Fz^s@YnZS zxIEk#zNa2eKB-!Ee!~;36?eFzaA z5-rYhh)3{Ejo=efQbf#q%%Tk8PE7*hzIFH-{>SgeB^>bP0l+XkKv;!o| literal 0 HcmV?d00001 diff --git a/src/Gui/Stylesheets/images/branch_open_darker.png b/src/Gui/Stylesheets/images/branch_open_darker.png new file mode 100644 index 0000000000000000000000000000000000000000..cdbc89e6c53d029ec8ea9e0aa29473ccd639e5fd GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRR!2%?ApR4f$QcOwS?k)`f+xyS#2T2!rL>4nJ za0`PlBg3pY5H=O_WPWS0)m`tj4iu>LI$2Ljv*Y;$tf!m6B05QlQgTe~DWM4fyZ$FY literal 0 HcmV?d00001 diff --git a/src/Gui/Stylesheets/images/branch_vline.png b/src/Gui/Stylesheets/images/branch_vline.png new file mode 100644 index 0000000000000000000000000000000000000000..b4c98266a0710ea8808b0eab37145f2858d09794 GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VTavfC3&Vd9T(EcfWS|IVfk$L9 z0|U1(2s1Lwnj--eWH0gbb!ETL$sr=fUm);S4=7~r>Eak-;h&tKz}F$Xyr;3TGotm# zDrwURHzpifn`gpP*v`ArXmO%Pj>p3=bE&o+hub1%9+Yom;F-)|ckW%ZKhOvUPgg&e IbxsLQ054uIyZ`_I literal 0 HcmV?d00001 diff --git a/src/Gui/Stylesheets/images/checkbox_indeterminate_light.png b/src/Gui/Stylesheets/images/checkbox_indeterminate_light.png new file mode 100644 index 0000000000000000000000000000000000000000..9d79911314e30ee5a888f23fd36ff0d211860366 GIT binary patch literal 381 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~8w)!lgYhZHOa=x9Q75D)LSlMJ~I8A!CQ?dT3E zC@3!yvTacRAo5jW?jCQ=62V=SOoA-z2akppW(O|WW_C5BmNE8L%PI?tKaKperhosw zw11k{mKBUy4N?o({_SP-Ej?)ByW2v#fz6^J;%Vp$yDvMJWlA5dj1ya!z$o$H!LJ&z z-{l<-KOd0T@`;m+^_k$0t5TG zQzy|Te0y8?ChpaB>$YXisy%FAwQJq=CIybkDuUB1sw?M}Z_>$rZE;S-dH0(IT08iX z`CmME>bdzaYxTuTa%&D+z7A#Op3jlrq$LnveVR}F&CxT0Pn@`)y_f-X^NL3M+y{*A WE>A949ZUrUG=rzBpUXO@geCy|q?6kK literal 0 HcmV?d00001 diff --git a/src/Gui/Stylesheets/images/checkbox_light.png b/src/Gui/Stylesheets/images/checkbox_light.png new file mode 100644 index 0000000000000000000000000000000000000000..0e8882c7039c2746625e2d1ec1a0c861564ecbf5 GIT binary patch literal 1021 zcmV-&>?W!_!q#A{C-_;AiW=bqp9{C?+m z&bLrD}k{MPRhq zZ1V0g#0=n_Ac}e}7K^>8t*yNQ!Fu2T`^6s05$aYLJt-JYr_&)M)CfFIppQa457J`c zT|L9QIzSf$T@(?7IOy~Fp2FxAPzR3I)YOz8Vi=*Lp#)n-1Y=d;qaccUc6oXEjmzb_ z4nYd>DL_dlSvJm53! z^NPD5LY_V>@L~$>$NXY8CgAxhpe&xJcM;;rKp^l8FHnf-=Az4@WD$Ezp)H(LiRb%3 z1A$lYd>XY0&-cJVK>L?ZBoh9{#>Nq9gI|EWEm_3Ebi?$6^MFE5g}y3xfR)5i(-_^w z>q!G|qn(|d{lQ=`gU3}c3$_h$QO4n#(;!Kj%w}_gMx$}UNMVAICptjhQpx)Les^_s zwU^pp8hq!+c3iP)wfb~hTifk$IQ$$QeWiVrVrgmVwZq}K1_j#NGYW-59KkKcDRy{U0_S0gqgpEd{8ebTr=-t)!_V$;3eSMViNf5x|=+Y>wND0$KGQ@>KA*Q#t zcYWXNb~}gAo6)9!DJB|?zHe@B9>*dnp{78D`pYd_3Fmb>-AXEzii5Sm!9iwXVq(E+ zwa#g^+SPbG9)Pz)UayzVEd5h`14Vxsr4~_?ToNx+a?v-|Y%-bjPN!1^;Wdb+u>X|F zpFmtbP0l+XkK*DFRZ literal 0 HcmV?d00001 diff --git a/src/Gui/Stylesheets/images/close_light.png b/src/Gui/Stylesheets/images/close_light.png new file mode 100644 index 0000000000000000000000000000000000000000..3e6b9d837722057d5ec7a52992f42cfb9b42be64 GIT binary patch literal 254 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 literal 0 HcmV?d00001 diff --git a/src/Gui/Stylesheets/images/down_arrow_disabled_light.png b/src/Gui/Stylesheets/images/down_arrow_disabled_light.png new file mode 100644 index 0000000000000000000000000000000000000000..b5e881a15e52f4e9cab33eee0c770b5db2853840 GIT binary patch literal 144 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 literal 0 HcmV?d00001 diff --git a/src/Gui/Stylesheets/images/down_arrow_lighter.png b/src/Gui/Stylesheets/images/down_arrow_lighter.png new file mode 100644 index 0000000000000000000000000000000000000000..73ee03ebda9c8099c0c3f9b1b1b711a50fe7ea4a GIT binary patch literal 5450 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

^4~Jd+Emt0$PF}z1iT^y4}Y+i zTj!d4eV8Bz05G{@X_nd2@QN}D=LK~|>$}|EmG|36%@8#)DRQ5-J z|K?Sut$(GVV9?(Xk_Q58X=n`6!V%CQd5AnjRz}Ak>k9*`GJ{kIF0RU^+PeQx&>{rb zjYPsLL!o|teh|Nl5F7ymm4n0KP+1rh29u#7WQYOYBqx6vZ=%RAivMzGqlqX2O*$;j z8}y6Q$rsDT)(BjZ-M{(u0L}9mIA*8 z{`0&3f62xCKL!fzO><3tG&_R-!j#MGi4K9BbnqXv?6&% rd3nOZPo%3uj890#8YjsLL>vbcz2)St-hVelI}Om+xvE{G=@|YWlb%uK literal 0 HcmV?d00001 diff --git a/src/Gui/Stylesheets/images/left_arrow_dark.png b/src/Gui/Stylesheets/images/left_arrow_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..0084e1fe4b444aaa09890c0852137c215879dd92 GIT binary patch literal 3432 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJ#!2%?0*`M!VU|_mY6%tVrlvu7%P?VpRnUkte zQdy9ykXn(M#=uZ<>+Lk}Nz#fuZQti8xjP6sJ+d${3Ek<~H(!3%$K+!(SJ{X~@`OmQ z5u0>DeZ%3OkAHLAzu*zf=XtjHq~)TeleoftY~tQZX)gO(xpj|w)wK4A@7!%32B)ss zZ?9{OdC#qr`}3m?|Fvzh_uKB-MWL) zJ9;Nf|3#m!nabYdZ1dc68o3NTWu~kMUh4Q?a@YaL)2EaEti3us!^c{Y!J_xW2$v4qnVOq!JOs!YYd}yt*PlO+{)1M=!L`u zk(CWoh2AO5F?Ht+74>xt-8^fT*xJaVQ?rV<*}Pwom2~pTrkOiMSL@A-vE9A1`eW1% zj&%mQJ0mpWyjF_(Y5Rn)S$AQ@*9XphB`+rOTmR8;&()YeZPvCsYbv$Zmc6@F_^0}v z*skxFUVEy0z4Tc=@8_1w=Zmg2MoAl8x-hYwS3dQMwCSzm-#VrCDu1^$y>&%xw`n%44;WS)tX!)!N9sd^Q;1wdyoFxc2v z6eK2Rr0UTq__OB&@Hb09I0xZL1XF8=&BvUzDm~qGzIKpzB(Z zS!SeU$E9FXl#*r@;>0WrfRwK%y57tfbt4Z!&8#sW*3we<$z62 zN!CxzNzF~oD=F4D)HBovt4~R`a?3BuO$6%C%uP&B)i20PSJDT$Rv+qIpzrnJ-UqpX z_F&W!lEQd2xJHAEq!1uU@o4HA4K9*GfF#AEscUEj7Z;)dm6``^HI)OKM-2ZP9Dq$L zrX+877l!}s{b%+Ad7K3vk;M!Q+`=Ht$S`XTuwll)UgGKN%Km^!lAT|=^|K|YWoYQ> z;uyjaot)CpsKv(SrXhWzrSO1Ho7n`ODJKscUy{D>xOn7?zx1 V{bI%zw+^V8!PC{xWt~$(69AfSH6{Q6 literal 0 HcmV?d00001 diff --git a/src/Gui/Stylesheets/images/left_arrow_darker.png b/src/Gui/Stylesheets/images/left_arrow_darker.png new file mode 100644 index 0000000000000000000000000000000000000000..18ecee7a4971fc88a29bffe56ec3c729cefa726d GIT binary patch literal 3430 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJ#!2%?0*`M!VU|_ml6%tVrlvu7%P?VpRnUkte zQdy9ykXn(M#=uZ<>+Q72Nz#fuZTBr*`x?wxjxSue@)U2;pFbCRrc0);+GO)2alx*G znH(d{{y>YJY$n?(HpMIZz z<>6+|(aJnO=);Mpt^$oJD~+Cu_B(2N9h>9wQEcJ$o!m?J_}$C>rdPf(Z>P<2r8^o+ z$}MjdZMwcQTC%FAAm<_;`!Fyt2k$RCFZ}%)y`&fH3*74Ewt;g z;hEa6P4hM$ZCmpF#(~crx&ex6oy}9MLZwR9Z47koIHhjw_UzcEl*l>U+gV-Hmmkz~ ztzrZRfX!G$#upi$8-u8%~)@6;W0@~EeN;Vml}Vs&@neVJ zB}~(_-YLx4+9S0}ZP~#ylXj+RhfP-Tofh=TzpbA2rSH!3D;dGFkCeRp zIalh)yL`2bICZm`jS||8JN%h6GUlC0QVX5;L~V0~MEfC$D<{y-`z17}tyFh523`dB6B=jtV<^nUk#C56lsTcvPQUjyF)=hTc$kE){7;3~h6MhJ1(0F zE1&_nsU?XD6}dTi#a0!zN?>!XfNYSkzLEl1NlCV?QiN}Sf^&XRs)C80iJpP3Yei<6 zk&+#kf=y9MnpKdC8`KCO&sHg;q@=(~U%$M(T(8_%FTW^V-_X+1Qs2Nx-^fT8s6w~6 zGOr}DLN~8i8Ds>+442g6|3P#>&5CE3a?zbH2ms6R6|F+EkkATM1>ALLqnsB?k7*N1x_zopr0P#*A_y7O^ literal 0 HcmV?d00001 diff --git a/src/Gui/Stylesheets/images/left_arrow_disabled_light.png b/src/Gui/Stylesheets/images/left_arrow_disabled_light.png new file mode 100644 index 0000000000000000000000000000000000000000..a1b787f72b8611cd41eb2839b36de779f92e66a8 GIT binary patch literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJ#!2%?0*`MzKQcOwS?k)`f+xyS#2l6-zJR*x3 z7`TN&n2}-D90{Nxdx@v7EBk#;CN@K{eG3yl0)@mpT^vI=qLULEn*V2}7&^|Huw~L2 aR)(SlJbfiAr!5AmVDNPHb6Mw<&;$TU!Xf7X literal 0 HcmV?d00001 diff --git a/src/Gui/Stylesheets/images/left_arrow_light.png b/src/Gui/Stylesheets/images/left_arrow_light.png new file mode 100644 index 0000000000000000000000000000000000000000..3bcdd8125ccd9a3f6eda5b66a4ce17bf29a476cd GIT binary patch literal 5484 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 literal 0 HcmV?d00001 diff --git a/src/Gui/Stylesheets/images/left_arrow_lighter.png b/src/Gui/Stylesheets/images/left_arrow_lighter.png new file mode 100644 index 0000000000000000000000000000000000000000..01fbda8a096e621de36db0db992be34b9a9b6cc2 GIT binary patch literal 5484 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 literal 0 HcmV?d00001 diff --git a/src/Gui/Stylesheets/images/more_dark.png b/src/Gui/Stylesheets/images/more_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..9bc90023446ac29a5d3210b5c5c60a04fee5df90 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^+#t-s1|(OmDOUqhY)RhkE)4%caKYZ?lYt_f1s;*b zKvlvZ%*Zfnjs#GUy~NYkmHj>&Czp|Ez`1T4ppd7hi(`mHcydYugS|E)tDQ&im) zZwRQ#xaA&H>+?1=+iKx^Y?Z{#vk`0CUNQaVp3d$lWoY9kZ=U>BWRt>)vkDCl?R2cR aGcdg9XZ;#3`al_ID1)b~pUXO@geCy>vNjt4 literal 0 HcmV?d00001 diff --git a/src/Gui/Stylesheets/images/more_light.png b/src/Gui/Stylesheets/images/more_light.png new file mode 100644 index 0000000000000000000000000000000000000000..6a958cb93fc7850f7b40e8aeba9beb165399350a GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^+#t-s1|(OmDOUqhY)RhkE)4%caKYZ?lYt_f1s;*b zKvlvZ%*Zfnjs#GUy~NYkmHj>&CpVMEHKo}vfkOVCE{-7*;Zr9V@-ZmzFdhB=GvWV^!NS8yGkCiCxvXIi90bm+{K3F& z{gE}S(p6#o2Ua_Ed4t}iQ}Z``VNF`dvXOJigqTMSyA zez4Ur?`w=V4Y*#)@}@yMz)bt?;`Mu(&j>fnPWe#anDN``aBFbyo%C-7*KWBV%DUzh zt6hBc`|ZcwFO+tk*?Rxw=a8E$N0c`nF`AYk-5ciRYq595t5vJs&FMVp`DM|AMH+p} zEVoa8;d+prM?9ryUDfBBa{08#ZBy^)U3!>sV&=|*;*R9#3SlW{?_USgTpwo6%KKz< zKYML{$?eRgwzleW3Uf+Lk}Nz#fuZQti8xjP6sJ+d${3Ek<~H(!3%$K+!(SJ{X~@`RX2 zh)uenzTxoC$G2wv*=TuR!sWyX(`!zb=UOgnRQM?rMJr8g!w zmU!?h9J-`t-tkk6TX%oz&+I23?r_fXF>s6cxUfC^ko`+@=j1a&>RokDIa3>VREQ}Y zn(^eBbd-Zb^7D}Jx^RB}QepW6erdZdy}6Oldpz|~z^?1lbj~r^_G;#wNU4=}=z0(> z$ivBTq-WAHpNlhkIVwv&tn8Sh`jL@o$*H-A7^JV*KCtk=ACbJJB=V=w<19vwqZbVq zXa+HAtKM<6$nKL`r8TQ*Rhnt3Zq(){Q%s-dRNf1`dSuedRO4dpuvnX&Rb|EBA8joV zj7f|t+8D5BN|5%Puo>$jViyL!KG-hv@`AE_*^j`!TLE^urnx&KKZixVy|eW3kMDPM zOWrTNKG|=|rI~)VpEH-wf4YWwt69pDh06TWcBfXDXKm?!D{NZj{;oJ{%Szv*%$GOk zN*zhdSIdY~x0=}~q0Uq|n-%v!Emyl*ny6H}W<(@G$@O zImqETr~Z(Y3a>2dZ|>Ks8&pq!J6US4dOK)`!r{jq*A~=AMz2gx_q7mdJ6Tet6QrU( zUqzB(Sw($tXq@2-k*AtR?)+w8;LOSdW~m5YAFJg2T)o7U{G?R9irfOAGZ+|b>?;Zq zle1Gx6p~WYGxKbf-tXS8q>!0ns}yePYv5bpoSKp8QB{;0T;&&%T$P<{nWAKG$7NGt z1vDTxwIorYA~z?m*s8)-32d$vkPQ;nS5g2gDap1~itr6kaLzAERWQ*r(KFC>t;j4h zQnKSxuqjGOvkG!?gBk(k*(zm}loVL$>z9|8>y;bpKhp88yV>WRp=I1 z=9MH?=;jqGgN%Tf;gVXMTm%fe%=|nBkeP`|`K2YcN=iU^1*qXE$#Am^N{e#9CZ{Cp zr{<*QrskCt>l^AB>Vws%BwM-V7v&}b^=IZLrl;x`p0*}aI1_o|n5N2eUHAey{$X?><>&pIsNs^sk#dxa78K97!r;B3< zM|5(+3MMCw1g6UYddhQd9y`GB=s?OXg;NcS6dL^bkEm>L60sGS8z98+e=<9x!vFQ( QfjSvHUHx3vIVCg!0P+(p^Z)<= literal 0 HcmV?d00001 diff --git a/src/Gui/Stylesheets/images/right_arrow_darker.png b/src/Gui/Stylesheets/images/right_arrow_darker.png new file mode 100644 index 0000000000000000000000000000000000000000..884627afe240897c551c332c55699a33d8f7aa20 GIT binary patch literal 3428 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 literal 0 HcmV?d00001 diff --git a/src/Gui/Stylesheets/images/separtoolbar_dark.png b/src/Gui/Stylesheets/images/separtoolbar_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..cef219933124e2dbc1da25664a290d45ee682a3c GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k8}blwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^}XliP|r`Bqp0P)Ig2B%;JQKQ}iuuLQ_tU~n!@0d BBf0

!8Td`M!{?Qs4U)#M&za=2*G-ifRIwoC4QXJ^XABHj3^ R>m5)NgQu&X%Q~loCIC}AD|Y|@ literal 0 HcmV?d00001 diff --git a/src/Gui/Stylesheets/images/sizegrip_light.png b/src/Gui/Stylesheets/images/sizegrip_light.png new file mode 100644 index 0000000000000000000000000000000000000000..14fd8136f0571e0c42da167084d6c163482fea12 GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;TYyi9E08{M;=~&F%+Ej;V@Z%- zFoVOh8)+a;lDE4HLkFv@2av;A;1OBOz`!jG!i)^F=12eq*-JcqUD@xm3UQk#K8unl z0}5$+x;Tb#M6(_=ww_S4gJ3CV@7U{-U SUGIRJ7(8A5T-G@yGywpY8!i(7 literal 0 HcmV?d00001 diff --git a/src/Gui/Stylesheets/images/splitter_horizontal_dark.png b/src/Gui/Stylesheets/images/splitter_horizontal_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..9d8e67396dfa5e2d1abe3d55d7a9808536643bb7 GIT binary patch literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^YCz1!!3HGPPkb{2#7XjYcVYMsf(!O8p9~b?Ebxdd zW?MX8A; zsVNHOnI#zt?w-B@DSD~wKyi6b7sn8d;N%1e)+g-_wgK84hYvJ-nt9^;@fGI|iZU^* WSjX`(#fdQmWQM1!pUXO@geCxHIx}nl literal 0 HcmV?d00001 diff --git a/src/Gui/Stylesheets/images/splitter_horizontal_light.png b/src/Gui/Stylesheets/images/splitter_horizontal_light.png new file mode 100644 index 0000000000000000000000000000000000000000..217271b94f289498236c2a9b5effaf49aa798c15 GIT binary patch literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^YCz1!!3HGPPkb{2#7XjYcVYMsf(!O8p9~b?Ebxdd zW?*+Y7iE Y8T@SRc3Y*~ItDVu)78&qol`;+0KZ%`=>Px# literal 0 HcmV?d00001 diff --git a/src/Gui/Stylesheets/images/splitter_vertical_dark.png b/src/Gui/Stylesheets/images/splitter_vertical_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..b4c30d6386867029a8a767a48f38bdb1cc481dca GIT binary patch literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^Y(T8W0V1C#ys85UBze2LF#HF>1$&oI28wVNctjR6 zFmMZlFeAgPITAoY_7YEDSN8jC{CpNn+!F)~fkLvGArU3c`MJ5Nc_lzD1A}u>YGO%h zib8p2Nrr;Er*A-tUMf3KT*K4FF+?LcIbi|I6=u_B0||q`B%!>$i_0GHNtevLxWS2E e@XnuwGGPpo?>QNl8FhDn4D)pLb6Mw<&;$UIs58z0 literal 0 HcmV?d00001 diff --git a/src/Gui/Stylesheets/images/splitter_vertical_light.png b/src/Gui/Stylesheets/images/splitter_vertical_light.png new file mode 100644 index 0000000000000000000000000000000000000000..1473e2b32c2cb0b76c6573fe95fef832b239f916 GIT binary patch literal 198 zcmeAS@N?(olHy`uVBq!ia0vp^Y(T8W0V1C#ys85UBze2LF#HF>1$&oI28wVNctjR6 zFmMZlFeAgPITAoY_7YEDSN8jC{CpNdV(N^dKq1-8kcblJ{M_8syb>Unfx)>bHL)Z$ zMWH;iBtya7(>EYRFO?lAuI1_C7@`rJoS-26=l}oxaxIB$1`~6I@_HASJ>ZirnR#)8 g6Tje{KZmdKI;Vst03otBHUIzs literal 0 HcmV?d00001 diff --git a/src/Gui/Stylesheets/images/transparent.png b/src/Gui/Stylesheets/images/transparent.png new file mode 100644 index 0000000000000000000000000000000000000000..483df25137d1f267b9793bb6068bb58e8825f11f GIT binary patch literal 195 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPaH#?`E`G1!eAAmx#nIRD+&iT2ysd*(pE(3#eQEFmI zYKlU6W=V#EyQgnJie4%^P+Z;9#WAGf*4u-Oyg=Te1>gO1`OFspnaH4_oY}#FfpL8m Q-wTkir>mdKI;Vst0J6j{!2kdN literal 0 HcmV?d00001 diff --git a/src/Gui/Stylesheets/images/undock_dark.png b/src/Gui/Stylesheets/images/undock_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..01b678559e81d0d34f2b54970caf8b83ffb7caae GIT binary patch literal 243 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xawj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^}XliOG|@7#lDKq1-8kcblJ{M_8syb>Unfx)>bHL)Z$ zMWH;iBtya7(>EYRFO?lA9`5Pl7@`rJoUp(=!DZ70_OqXK1MI>I)nxQqGnqV}wBk bZ{Nw#K9BR-)%rV2L3Vq(`njxgN@xNAb4W*G literal 0 HcmV?d00001 diff --git a/src/Gui/Stylesheets/images/undock_light.png b/src/Gui/Stylesheets/images/undock_light.png new file mode 100644 index 0000000000000000000000000000000000000000..36881f6425deeffff276e6e7ece5da13719dad13 GIT binary patch literal 243 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xawj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^}XliP^v4$GT=Kq1-8kcblJ{M_8syb>Unfx)>bHL)Z$ zMWH;iBtya7(>EYRFO?lA9`5Pl7@`rpH_(xfL4o6x-My-vz0J~=Z_;AD1OufWf8Quj z^8M(ev~7anKUb>p3K`TDuT|OP6~^<)bdEA$Qf$3URNJL3cV!1*=QGQxxPO3sl zWkIS!YDH!m14G5Fx6^zlNh|WSexIY{?jYn;ATw+JsyhnD&o>`?d*iWBs9I!7qJ~tI zF3TSN4YB_}*6zsnSfaRV!L+2li^{DsM&c%u>@P=7=6_weY*TjC7Hj$M>}{R_r+-TQ z{-(d-_1@;zTzk2<=U(+qE?aQ>g!O_m6D50-{fpRz?A~s#vpaF4LbM4-3=>zilo{-eTfrA0F=15_Ivc>rdIFtq(Zd9K*JE@U#fUs?VY}{PD7>NkaA-0gIiQf34CE^)W0+cRm{vIZd~-@Y${fEi*GWcusrf z(6ZDo&)~DEc+}%(rg2MKCQ2Wi%z2Q*)-L7ysUK5oSf!Hl3KwarUAW9S<2lQooUG0jZwa)*DvkxJp3_#Xni(+d3x*b+YIj= zAn?EIf<|fK`l!493Gc4V35=Fi1t#<)tSLORpd=ZT!fiVp`5GKJnBVU?r0$R?x?efw z+p~lJkEaR0RpBj3x#xd!n~=bHhdCFep7d{>dWe7C%YxF+b9s%XY0m2QzQmK%^e-;7 zlF@L#$fFl>Yl;~dII}W=`6BQBlHCS ztb$zJphf_Bwn`Z#B?VUc`sL;2dgaD?`9*7XiaAGe1uOWM*PgerbuVk`ho}0cv8bh!dFe{}AlK?coeT86KHU2tH_#r8T0&A7j|SIh zaFG-OBq<(EU8BK8QV5WwcrEH9G@w%RfUTx-VDpIKe}e?NMQuIvw(B-#0mH@HpY1`6qUx;Tb#L?@>-G-w%I zWqWAQq}d@5GlNr)C6IMmTFWXYp`;Avl`XSbjfHjE_!v%}X6rljy7eJYCxfS}pUXO@ GgeCxM7b+eA literal 0 HcmV?d00001 diff --git a/src/Gui/Stylesheets/images/up_arrow_darker.png b/src/Gui/Stylesheets/images/up_arrow_darker.png new file mode 100644 index 0000000000000000000000000000000000000000..da2b6a28d5a2af5296443e02357615fb874ef1d2 GIT binary patch literal 3426 zcmeAS@N?(olHy`uVBq!ia0vp^AT}EZ3y=)>dEA$Qf$3^hNJL3cV!1*=QGQxxPO3sl zWkIS!YDH!m14G5Fx6^zlNh|WSexIY{?jYn;ATw+JsyhnD&o>`?d*iWBs9I!7;tI1Z zIw}?N3A_J2{#|fCz{9!3QTM3KVs}o<6ulQJ_0u-1%3pgPc`EPa#dkG#;thP7!p>d4 zvAw=A_C2#s&hL*IwlLo{df#AVY;1LW-V;8Rnp>Isch}4={E=$;TQFKt@A>oZ z2?C2Xdk*#OPO&LU6FlRvNMz>UCijO=R2TXS`Tfp*d*^DckpA=Qw|;K2eG=HU`^HDl z#kuOWYwrfVxGs5d?dkq_o{#2N?J~^Wypz8am#VsGh~ABxa$hlwzb`=~g|~Y}oBPG> zp~hKP22a(NjpF8rAl&pAem`?)6C5*b`A|8J10sfC<`&Fe>~G`=yrPgRDa`jVhsT@vdpt|ST{Hw zkZsvKZ9{uk7u)hxfxeT|bOVz*q>{H-ykC)&bnwcenX0G5CM}s@ax_JA=^U?TIy(-T z9M92PKBrjIBT8UbLP?{$CcAu5i*tX)jfs6VQ@Y*;J71MreKn+5w|BOQ%zv@jJEukE zEe$>%_G)2v|J|xrJEu49HA`t(sLUsw`6N&;YxXN;(<-I!mZrC^sBPTv=Zzn4+U97E zS=T%L(iDz0I^0oX%*mK{re={q#iZG1YSLu5QUjFd7D)LfDM(mt+C}d4RU;zU-#^K@?^5gN1>1ZmaVce zOcJ@nZU0r9fq^qC6PTMKe0{8v^K+E%t*c2-KgMo0y)eUyzrsqz`hfKGeBD-|NG@4{`(T!Kfu9h4E-`jRqG< zAwZJi(bP2>TqK16Ns32P*U$`sf113p!KBgbd3qVaWeNPw15RT~Nl!gZ5gi|bs z5?O);6n7X1$8ap-(mBf!+NyFSfhma7oI6b|f=8Bt;p%rb8-EeM2B203Pgg&ebxsLQ E03JCih5!Hn literal 0 HcmV?d00001 diff --git a/src/Gui/Stylesheets/images/up_arrow_disabled_dark.png b/src/Gui/Stylesheets/images/up_arrow_disabled_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..d21f24c5a608779cfdf923eb0842add018a7eb68 GIT binary patch literal 143 zcmeAS@N?(olHy`uVBq!ia0vp^AT}EZ3y=)>dE6IBF(rAsyDbP0l+XkKivlCu literal 0 HcmV?d00001 diff --git a/src/Gui/Stylesheets/images/up_arrow_disabled_light.png b/src/Gui/Stylesheets/images/up_arrow_disabled_light.png new file mode 100644 index 0000000000000000000000000000000000000000..6a56e89ba8b2a75e9fbe4ba3a5437bbeca5ba268 GIT binary patch literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^AT}EZ3y=)>dE6IBF(rAsyD~LQ0-4jv*Y;$q5Zj|1%B5=CE-t~FZ?W!X2`$9)93isdN)utgQu&X%Q~loCIIXACN}^8 literal 0 HcmV?d00001 diff --git a/src/Gui/Stylesheets/images/up_arrow_light.png b/src/Gui/Stylesheets/images/up_arrow_light.png new file mode 100644 index 0000000000000000000000000000000000000000..675aa98fda81d86b1a3ee460a1db8fb5402b2ae6 GIT binary patch literal 5454 zcmeHJS5y<&+Ko8$s=!E<5CKJ+bO;H(LjVa)nuZV{Bm{)e5m7n=1nDBZJ9Lm<6)Dn@ zDvIszCi;}X&T@r(yv$yQbdDho*=>v6kyF}WYG)YQ@zx8%`!;WN9uH!VoWsZZhw zRxv+HKX6PSQ3DO}HKlIGmZskeanBTqAB z14F~Hx6+%LPK4Obq`X$Y9Td$^oceBI{WGbQ!WLP#4&c$5n+A%6*~pO|?#6of#Zt`r z_T|oss*nE3ty72PUF!MqzUkG3NRRH|2P~aL%f$pD>(D;YM3MX&rAn6Y6p?P}&wbJ9 z?c5jTjoXv*46@U92mOw*pBZ_EYOhvT1acYW27Wq{AHPE%adL-6R`l$+wV?(F-K00S z@C9ccFd$=H&%cUi*_@hE2H9GxbM|8Lcz-#A%kQ5CHf{8}x4LR)Ac)YC&GDNN^ zs?Vu(M4o&Zpm@P_b)KaHv!AgwRAYPIN>>XAF#@wYIXeZh=EW(=|L$I_6X&GPr;`ja zwWJXg&=Fk8=bCWu71uM6UyH}!_!BMi^W*gdYhP_(g5Km8rolvNCnqglA)5BKyP3;8 z=hO%`ejAM`w*H*?!x3tl9KMNnwO#~<=@5sdYM!GeKO|e_zmL*0v-C|eHUGFg!=Qls zfL^oln%(BErJUfo>!HMZ40Ya7fnE7yt?^tnreD7Oxts3I+|(zj1ctXYAZ1nmu7TgL z<(V(DNLoQPc(0GA-;x^>v;(rG>{rh!c!@2ybq#8t>opK7;v{Kim7b*EUBA8@*tN|( zUU*ddkg3_USiBaYhJ{q>?iZj9PZy`x3XQyVbG7QSj?*N!GQjkcx;vV#rQ%K3bNKl4 z_e~bhnjg8GK8jpHbTtlMmk!%*;YibX4;IKPmr}5O^5`BDJ_M?Vid^tlJR|Ei!*(EQ zowKt%zH0TfMSbDCmVy~`cxm+dlQNmT;zXvSQwgeID=oC7&FVuNvBNuxwu7R!GznZB z+S*!edi;mIwl7p zMx9QBwTV%$Ds^piDheC^jH}13uyjw)>bc%k9-PSWEv1C9Q(qBW%Kgi5<;}GoZhj%qM17P+iG*(0v~3yBk+j`fuoymLK>%txsp8Txc7)l3*OBg zUnFBaqS~MXAhK@^_RW0?#o4ihP(G9n(xQexKxd59YE!Q^IpQEm1``RRl>_&zvaGkj z{e7It$;fAUz6!*R)S^|D=1}#ecPG(x&eF|h@y2u32~D!kKSLx~^ko?a1zh1YCPwrn z1#RvSYH?vyj;|^>!{WoF{PTI8@70ZJSTDel2*ClfVLD88FnE1NJd8~HlkwO0CyNgo zxd46Ra-5zWF^#Njl=qi9V@(3L#wtGfn|?g0vvw&lc*&p5VQ*AHKd5gvqzHEv2pkH~ z(?)DGs($QkLoM+MQF>NId~=rUJPYkMdGzk&KAq z%Eh~>5uh*lKAtup5gcDDTgkh`IQr4I=0#_$fJ(KQ@As1NvN-XQ58c-F;R7pbyOL+E zUcU=sYA4_`VSdR^3o}_vRZaw35y(>X!}?c@3Hg^=%K3{Mu--_MS4?va zTF>Ok2eS0)%Up6zD>ZeW-IeuTAM`ilBPS;)JQ|r&&E_o6b>ZBhE&s#b?zxV_woBaZ zqJ(oela=@$5RugnXv16h2@8Q=!BpdMANVCM9jdq) zd3ziI4A4i;VG=U&XtZ}{`~9Zgm(Vx;?w8FVLB-Y^y=rz-c&!2uM)+klS6X0+J@>=U z<;|>RaJIax^pM#~YNA}3F1-+ka9c_uu|)dN)|f5gR!n6NXH0}wX6S=N1Aqh>8l^H; z#hCBM7tZ}MLm)TP-vf~Reqw#obQ6&QIW5C#jAhN5WBN$ zNjfz&tZk#;rB5wNY0Ml{sI69xbm$mUyO!a@ch7D!MBIi<<&Zb?6s1`a;B`=gf`>ll z{V-g{De6vPT`WKA+*ER#BV-Z}2#MLsy)kNC`klfezX&2EA1>2JccY3e)k$1XfQ8UO zHzLaOP?$RU#*4AbWAmkP#F2cmkWARr;yEXz2gqhbQIST)B zVlCKtIRG6xiG)yga1Ys*?5I93~n^yW}iKyJ+xiW%}Uv=krpvVK3_ zurzMejbYJT03I5!zgp~$ed)~s7Qw9TP>4=6jr6y5vBK5YZ%D9Py$if-`YDBy&S`Ds zwf1oTs>*E+#` z^xWiUw43~u{QXDoJeBxA8aDttmm(&!AK$ZjiL4gjqUjvM`w1KK-OS>3fBlIxdTKc&D=fq(t3UvmAF z0zU=*^}GJJ478IXYB%kB9smF>^N)TB zke1FyN>bu=U>cP3WbBmm@^%FrDWsH;j=G8ol@-z+5Pb1Mg)dJmq$h$&l}a+_&!-#8 nlT^sdrl9BK(#&=e9MpgsFr67=V^tmL7(hqEK)qb`!PEZ($l^^1 literal 0 HcmV?d00001 diff --git a/src/Gui/Stylesheets/images/up_arrow_lighter.png b/src/Gui/Stylesheets/images/up_arrow_lighter.png new file mode 100644 index 0000000000000000000000000000000000000000..cfe3fd389adc406bcd4e2134f267f4b29b32e911 GIT binary patch literal 5454 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