2096 lines
44 KiB
Plaintext
2096 lines
44 KiB
Plaintext
/*
|
|
* BreezeDark stylesheet.
|
|
*
|
|
* :author: Colin Duquesnoy
|
|
* :editor: Alex Huszagh
|
|
* :license: MIT, see LICENSE.md
|
|
*
|
|
* This is originally a fork of QDarkStyleSheet, and is based on Breeze/
|
|
* BreezeDark color scheme, but is in no way affiliated with KDE.
|
|
*
|
|
* ---------------------------------------------------------------------
|
|
* The MIT License (MIT)
|
|
*
|
|
* Copyright (c) <2013-2014> <Colin Duquesnoy>
|
|
* Copyright (c) <2015-2021> <Alex Huszagh>
|
|
*
|
|
* Permission is hereby granted, free of charge, to any person obtaining
|
|
* a copy of this software and associated documentation files (the
|
|
* "Software"), to deal in the Software without restriction, including
|
|
* without limitation the rights to use, copy, modify, merge, publish,
|
|
* distribute, sublicense, and/or sell copies of the Software, and to
|
|
* permit persons to whom the Software is furnished to do so, subject to
|
|
* the following conditions:
|
|
*
|
|
* The above copyright notice and this permission notice shall be included in
|
|
* all copies or substantial portions of the Software.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
|
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
* ---------------------------------------------------------------------
|
|
*/
|
|
|
|
/**
|
|
* MAIN STYLESHEET
|
|
* ---------------
|
|
*/
|
|
|
|
QToolTip
|
|
{
|
|
/* 0.2ex is the smallest value that's not ignored on Windows. */
|
|
border: 0.04em solid ^foreground^;
|
|
background-color: ^background^;
|
|
alternate-background-color: ^background:alternate^;
|
|
color: ^foreground^;
|
|
padding: 0.1em;
|
|
opacity: 200;
|
|
}
|
|
|
|
QWidget
|
|
{
|
|
color: ^foreground^;
|
|
background-color: ^background^;
|
|
selection-background-color: ^highlight^;
|
|
selection-color: ^foreground^;
|
|
background-clip: border;
|
|
border-image: none;
|
|
}
|
|
|
|
QWidget:disabled
|
|
{
|
|
color: ^button:disabled^;
|
|
background-color: ^background^;
|
|
}
|
|
|
|
QWidget:disabled:hover
|
|
{
|
|
background-color: ^background^;
|
|
}
|
|
|
|
QCheckBox
|
|
{
|
|
spacing: 0.23em;
|
|
outline: none;
|
|
color: ^foreground^;
|
|
margin-bottom: 0.09em;
|
|
opacity: 200;
|
|
}
|
|
|
|
QCheckBox:disabled
|
|
{
|
|
color: ^midtone:light^;
|
|
}
|
|
|
|
QGroupBox
|
|
{
|
|
/* Need to make sure the groupbox doesn't compress below the title. */
|
|
min-height: 1.2em;
|
|
border: 0.04em solid ^midtone^;
|
|
border-radius: 0.09em;
|
|
/**
|
|
* This gives us enough space at the top to ensure we can move the
|
|
* title to be inside the guidelines, and the padding at the top
|
|
* ensures we have space below the title.
|
|
*/
|
|
margin-top: 0.5em;
|
|
padding-top: 1em;
|
|
}
|
|
|
|
QGroupBox:focus
|
|
{
|
|
border: 0.04em solid ^midtone^;
|
|
border-radius: 0.09em;
|
|
}
|
|
|
|
QGroupBox::title
|
|
{
|
|
/* We need to move 0.6em up to be inside the lines, +1em for padding. */
|
|
top: -1.6em;
|
|
subcontrol-origin: content;
|
|
subcontrol-position: top center;
|
|
background: ^background^;
|
|
padding-left: 0.2em;
|
|
padding-right: 0.2em;
|
|
}
|
|
|
|
QCheckBox::indicator,
|
|
QTreeView::indicator
|
|
{
|
|
width: 1em;
|
|
height: 1em;
|
|
}
|
|
|
|
QCheckBox::indicator:unchecked,
|
|
QCheckBox::indicator:unchecked:focus,
|
|
QTreeView::indicator:unchecked,
|
|
QTreeView::indicator:unchecked:focus
|
|
{
|
|
border-image: url(^style^checkbox_unchecked_disabled.svg);
|
|
}
|
|
|
|
QCheckBox::indicator:unchecked:hover,
|
|
QCheckBox::indicator:unchecked:pressed,
|
|
QTreeView::indicator:unchecked:hover,
|
|
QTreeView::indicator:unchecked:pressed,
|
|
QGroupBox::indicator:unchecked,
|
|
QGroupBox::indicator:unchecked:hover,
|
|
QGroupBox::indicator:unchecked:focus,
|
|
QGroupBox::indicator:unchecked:pressed
|
|
{
|
|
border: none;
|
|
border-image: url(^style^checkbox_unchecked.svg);
|
|
}
|
|
|
|
QCheckBox::indicator:checked,
|
|
QTreeView::indicator:checked,
|
|
QGroupBox::indicator:checked
|
|
{
|
|
border-image: url(^style^checkbox_checked.svg);
|
|
}
|
|
|
|
QCheckBox::indicator:checked:hover,
|
|
QCheckBox::indicator:checked:focus,
|
|
QCheckBox::indicator:checked:pressed,
|
|
QTreeView::indicator:checked:hover,
|
|
QTreeView::indicator:checked:focus,
|
|
QTreeView::indicator:checked:pressed,
|
|
QGroupBox::indicator:checked:hover,
|
|
QGroupBox::indicator:checked:focus,
|
|
QGroupBox::indicator:checked:pressed
|
|
{
|
|
border: none;
|
|
border-image: url(^style^checkbox_checked.svg);
|
|
}
|
|
|
|
QCheckBox::indicator:indeterminate,
|
|
QTreeView::indicator:indeterminate
|
|
{
|
|
border-image: url(^style^checkbox_indeterminate.svg);
|
|
}
|
|
|
|
QCheckBox::indicator:indeterminate:focus,
|
|
QCheckBox::indicator:indeterminate:hover,
|
|
QCheckBox::indicator:indeterminate:pressed,
|
|
QTreeView::indicator:indeterminate:focus,
|
|
QTreeView::indicator:indeterminate:hover,
|
|
QTreeView::indicator:indeterminate:pressed
|
|
{
|
|
border-image: url(^style^checkbox_indeterminate.svg);
|
|
}
|
|
|
|
QCheckBox::indicator:indeterminate:disabled,
|
|
QTreeView::indicator:indeterminate:disabled
|
|
{
|
|
border-image: url(^style^checkbox_indeterminate_disabled.svg);
|
|
}
|
|
|
|
QCheckBox::indicator:checked:disabled,
|
|
QTreeView::indicator:checked:disabled,
|
|
QGroupBox::indicator:checked:disabled
|
|
{
|
|
border-image: url(^style^checkbox_checked_disabled.svg);
|
|
}
|
|
|
|
QCheckBox::indicator:unchecked:disabled,
|
|
QTreeView::indicator:unchecked:disabled,
|
|
QGroupBox::indicator:unchecked:disabled
|
|
{
|
|
border-image: url(^style^checkbox_unchecked_disabled.svg);
|
|
}
|
|
|
|
QRadioButton
|
|
{
|
|
spacing: 0.23em;
|
|
outline: none;
|
|
color: ^foreground^;
|
|
margin-bottom: 0.09em;
|
|
}
|
|
|
|
QRadioButton:disabled
|
|
{
|
|
color: ^midtone^;
|
|
}
|
|
|
|
QRadioButton::indicator
|
|
{
|
|
width: 1em;
|
|
height: 1em;
|
|
}
|
|
|
|
QRadioButton::indicator:unchecked,
|
|
QRadioButton::indicator:unchecked:focus
|
|
{
|
|
border-image: url(^style^radio_unchecked_disabled.svg);
|
|
}
|
|
|
|
QRadioButton::indicator:unchecked:hover,
|
|
QRadioButton::indicator:unchecked:pressed
|
|
{
|
|
border: none;
|
|
outline: none;
|
|
border-image: url(^style^radio_unchecked.svg);
|
|
}
|
|
|
|
QRadioButton::indicator:checked
|
|
{
|
|
border: none;
|
|
outline: none;
|
|
border-image: url(^style^radio_checked.svg);
|
|
}
|
|
|
|
QRadioButton::indicator:checked:hover,
|
|
QRadioButton::indicator:checked:focus,
|
|
QRadioButton::indicator:checked:pressed
|
|
{
|
|
border: none;
|
|
outline: none;
|
|
border-image: url(^style^radio_checked.svg);
|
|
}
|
|
|
|
QRadioButton::indicator:checked:disabled
|
|
{
|
|
outline: none;
|
|
border-image: url(^style^radio_checked_disabled.svg);
|
|
}
|
|
|
|
QRadioButton::indicator:unchecked:disabled
|
|
{
|
|
border-image: url(^style^radio_unchecked_disabled.svg);
|
|
}
|
|
|
|
QMenuBar
|
|
{
|
|
background-color: ^background^;
|
|
color: ^foreground^;
|
|
}
|
|
|
|
QMenuBar::item
|
|
{
|
|
background: transparent;
|
|
}
|
|
|
|
QMenuBar::item:selected
|
|
{
|
|
background: transparent;
|
|
}
|
|
|
|
QMenuBar::item:disabled
|
|
{
|
|
color: ^menu:disabled^;
|
|
}
|
|
|
|
QMenuBar::item:pressed
|
|
{
|
|
background-color: ^highlight^;
|
|
color: ^foreground^;
|
|
margin-bottom: -0.09em;
|
|
padding-bottom: 0.09em;
|
|
}
|
|
|
|
QMenu
|
|
{
|
|
color: ^foreground^;
|
|
margin: 0.09em;
|
|
}
|
|
|
|
QMenu::icon
|
|
{
|
|
margin: 0.23em;
|
|
}
|
|
|
|
QMenu::item
|
|
{
|
|
/* Add extra padding on the right for the QMenu arrow */
|
|
padding: 0.23em 1.5em 0.23em 1.3em;
|
|
border: 0.09em solid transparent;
|
|
background: transparent;
|
|
}
|
|
|
|
QMenu::item:selected
|
|
{
|
|
color: ^foreground^;
|
|
background-color: ^highlight^;
|
|
}
|
|
|
|
QMenu::item:selected:disabled
|
|
{
|
|
background-color: ^background^;
|
|
}
|
|
|
|
QMenu::item:disabled
|
|
{
|
|
color: ^menu:disabled^;
|
|
}
|
|
|
|
QMenu::indicator
|
|
{
|
|
width: 1em;
|
|
height: 1em;
|
|
}
|
|
|
|
QMenu::indicator:non-exclusive:unchecked
|
|
{
|
|
border-image: url(^style^checkbox_unchecked_disabled.svg);
|
|
}
|
|
|
|
QMenu::indicator:non-exclusive:unchecked:selected
|
|
{
|
|
border-image: url(^style^checkbox_unchecked_disabled.svg);
|
|
}
|
|
|
|
QMenu::indicator:non-exclusive:checked
|
|
{
|
|
border-image: url(^style^checkbox_checked.svg);
|
|
}
|
|
|
|
QMenu::indicator:non-exclusive:checked:selected
|
|
{
|
|
border-image: url(^style^checkbox_checked.svg);
|
|
}
|
|
|
|
QMenu::indicator:exclusive:unchecked
|
|
{
|
|
border-image: url(^style^radio_unchecked_disabled.svg);
|
|
}
|
|
|
|
QMenu::indicator:exclusive:unchecked:selected
|
|
{
|
|
border-image: url(^style^radio_unchecked_disabled.svg);
|
|
}
|
|
|
|
QMenu::indicator:exclusive:checked
|
|
{
|
|
border-image: url(^style^radio_checked.svg);
|
|
}
|
|
|
|
QMenu::indicator:exclusive:checked:selected
|
|
{
|
|
border-image: url(^style^radio_checked.svg);
|
|
}
|
|
|
|
QMenu::right-arrow
|
|
{
|
|
margin: 0.23em;
|
|
border-image: url(^style^right_arrow.svg);
|
|
width: 0.5em;
|
|
height: 0.8em;
|
|
}
|
|
|
|
QMenu::right-arrow:disabled
|
|
{
|
|
border-image: url(^style^right_arrow_disabled.svg);
|
|
}
|
|
|
|
QAbstractItemView
|
|
{
|
|
alternate-background-color: ^background^;
|
|
color: ^foreground^;
|
|
border: 0.09em solid ^view:border^;
|
|
border-radius: 0.09em;
|
|
}
|
|
|
|
QMenuBar::item:focus:!disabled
|
|
{
|
|
border: 0.04em solid ^highlight^;
|
|
}
|
|
|
|
QTabWidget:focus,
|
|
QCheckBox:focus,
|
|
QRadioButton:focus,
|
|
QSlider:focus
|
|
{
|
|
border: none;
|
|
}
|
|
|
|
QLineEdit
|
|
{
|
|
background-color: ^text:background^;
|
|
padding: 0.23em;
|
|
border-style: solid;
|
|
border: 0.04em solid ^midtone^;
|
|
border-radius: 0.09em;
|
|
color: ^foreground^;
|
|
}
|
|
|
|
QAbstractScrollArea
|
|
{
|
|
border-radius: 0.09em;
|
|
border: 0.09em solid ^midtone^;
|
|
background-color: transparent;
|
|
}
|
|
|
|
/**
|
|
* This is the background for the box in the bottom-right corner
|
|
* whene both scrollbars are active.
|
|
*/
|
|
QAbstractScrollArea::corner
|
|
{
|
|
background: ^background^;
|
|
}
|
|
|
|
/**
|
|
* Can't do the KDE style of where the scrollbar handle
|
|
* becomes light on the hover, and only when the handle
|
|
* is hovered does it become stylized. This is because
|
|
* both the handle and the background events are treated
|
|
* together.
|
|
*/
|
|
QScrollBar:horizontal
|
|
{
|
|
background-color: ^scrollbar:background^;
|
|
height: 0.65em;
|
|
margin: 0.13em 0.65em 0.13em 0.65em;
|
|
border: 0.04em transparent ^scrollbar:background^;
|
|
border-radius: 0.17em;
|
|
}
|
|
|
|
QScrollBar:horizontal:hover
|
|
{
|
|
background-color: ^scrollbar:background:hover^;
|
|
}
|
|
|
|
QScrollBar::handle:horizontal
|
|
{
|
|
background-color: ^scrollbar:hover^;
|
|
border: 0.04em solid ^scrollbar:hover^;
|
|
min-width: 0.5em;
|
|
border-radius: 0.17em;
|
|
}
|
|
|
|
QScrollBar::handle:horizontal:hover
|
|
{
|
|
background-color: ^scrollbar:hover^;
|
|
border: 0.04em solid ^scrollbar:hover^;
|
|
}
|
|
|
|
QScrollBar::add-line:horizontal
|
|
{
|
|
margin: 0em 0.13em 0em 0.13em;
|
|
border-image: url(^style^transparent.svg);
|
|
width: 0.41em;
|
|
height: 0.41em;
|
|
subcontrol-position: right;
|
|
subcontrol-origin: margin;
|
|
}
|
|
|
|
QScrollBar::sub-line:horizontal
|
|
{
|
|
margin: 0em 0.13em 0em 0.13em;
|
|
border-image: url(^style^transparent.svg);
|
|
width: 0.41em;
|
|
height: 0.41em;
|
|
subcontrol-position: left;
|
|
subcontrol-origin: margin;
|
|
}
|
|
|
|
QScrollBar::add-line:horizontal:hover,
|
|
QScrollBar::add-line:horizontal:on
|
|
{
|
|
border-image: url(^style^transparent.svg);
|
|
width: 0.41em;
|
|
height: 0.41em;
|
|
subcontrol-position: right;
|
|
subcontrol-origin: margin;
|
|
}
|
|
|
|
QScrollBar::sub-line:horizontal:hover,
|
|
QScrollBar::sub-line:horizontal:on
|
|
{
|
|
border-image: url(^style^transparent.svg);
|
|
width: 0.41em;
|
|
height: 0.41em;
|
|
subcontrol-position: left;
|
|
subcontrol-origin: margin;
|
|
}
|
|
|
|
QScrollBar::up-arrow:horizontal,
|
|
QScrollBar::down-arrow:horizontal
|
|
{
|
|
background: none;
|
|
}
|
|
|
|
QScrollBar::add-page:horizontal,
|
|
QScrollBar::sub-page:horizontal
|
|
{
|
|
background: none;
|
|
}
|
|
|
|
QScrollBar:vertical
|
|
{
|
|
background-color: ^scrollbar:background^;
|
|
width: 0.65em;
|
|
margin: 0.65em 0.13em 0.65em 0.13em;
|
|
border: 0.04em transparent ^scrollbar:background^;
|
|
border-radius: 0.17em;
|
|
}
|
|
|
|
QScrollBar:vertical:hover
|
|
{
|
|
background-color: ^scrollbar:background:hover^;
|
|
}
|
|
|
|
QScrollBar::handle:vertical
|
|
{
|
|
background-color: ^scrollbar:hover^;
|
|
border: 0.04em solid ^scrollbar:hover^;
|
|
min-height: 0.5em;
|
|
border-radius: 0.17em;
|
|
}
|
|
|
|
QScrollBar::handle:vertical:hover
|
|
{
|
|
background-color: ^scrollbar:hover^;
|
|
border: 0.04em solid ^scrollbar:hover^;
|
|
}
|
|
|
|
QScrollBar::sub-line:vertical
|
|
{
|
|
margin: 0.13em 0em 0.13em 0em;
|
|
border-image: url(^style^transparent.svg);
|
|
height: 0.41em;
|
|
width: 0.41em;
|
|
subcontrol-position: top;
|
|
subcontrol-origin: margin;
|
|
}
|
|
|
|
QScrollBar::add-line:vertical
|
|
{
|
|
margin: 0.13em 0em 0.13em 0em;
|
|
border-image: url(^style^transparent.svg);
|
|
height: 0.41em;
|
|
width: 0.41em;
|
|
subcontrol-position: bottom;
|
|
subcontrol-origin: margin;
|
|
}
|
|
|
|
QScrollBar::sub-line:vertical:hover,
|
|
QScrollBar::sub-line:vertical:on
|
|
{
|
|
border-image: url(^style^transparent.svg);
|
|
height: 0.41em;
|
|
width: 0.41em;
|
|
subcontrol-position: top;
|
|
subcontrol-origin: margin;
|
|
}
|
|
|
|
QScrollBar::add-line:vertical:hover,
|
|
QScrollBar::add-line:vertical:on
|
|
{
|
|
border-image: url(^style^transparent.svg);
|
|
height: 0.41em;
|
|
width: 0.41em;
|
|
subcontrol-position: bottom;
|
|
subcontrol-origin: margin;
|
|
}
|
|
|
|
QScrollBar::up-arrow:vertical,
|
|
QScrollBar::down-arrow:vertical
|
|
{
|
|
background: none;
|
|
}
|
|
|
|
QScrollBar::add-page:vertical,
|
|
QScrollBar::sub-page:vertical
|
|
{
|
|
background: none;
|
|
}
|
|
|
|
QTextEdit
|
|
{
|
|
background-color: ^text:background^;
|
|
color: ^foreground^;
|
|
border: 0.04em solid ^midtone^;
|
|
}
|
|
|
|
QPlainTextEdit
|
|
{
|
|
background-color: ^text:background^;
|
|
color: ^foreground^;
|
|
border-radius: 0.09em;
|
|
border: 0.04em solid ^midtone^;
|
|
}
|
|
|
|
QSizeGrip
|
|
{
|
|
border-image: url(^style^sizegrip.svg);
|
|
width: 0.5em;
|
|
height: 0.5em;
|
|
}
|
|
|
|
/**
|
|
* Set the separator to be transparent, since the dock has a border.
|
|
* On PyQt6, neither the border nor the background seem to be respected.
|
|
*/
|
|
QMainWindow::separator
|
|
{
|
|
border: 0.09em transparent ^midtone^;
|
|
background: transparent;
|
|
}
|
|
|
|
QMenu::separator
|
|
{
|
|
height: 0.09em;
|
|
background-color: ^midtone^;
|
|
padding-left: 0.2em;
|
|
margin-top: 0.2em;
|
|
margin-bottom: 0.2em;
|
|
margin-left: 0.41em;
|
|
margin-right: 0.41em;
|
|
}
|
|
|
|
QFrame[frameShape="2"], /* QFrame::Panel == 0x0003 */
|
|
QFrame[frameShape="3"], /* QFrame::WinPanel == 0x0003 */
|
|
QFrame[frameShape="4"], /* QFrame::HLine == 0x0004 */
|
|
QFrame[frameShape="5"], /* QFrame::VLine == 0x0005 */
|
|
QFrame[frameShape="6"] /* QFrame::StyledPanel == 0x0006 */
|
|
{
|
|
border-width: 0.04em;
|
|
padding: 0.09em;
|
|
border-style: solid;
|
|
border-color: ^background^;
|
|
background-color: ^midtone^;
|
|
border-radius: 0.23em;
|
|
}
|
|
|
|
/* Provide highlighting for frame objects. */
|
|
QFrame[frameShape="2"]:hover,
|
|
QFrame[frameShape="3"]:hover,
|
|
QFrame[frameShape="4"]:hover,
|
|
QFrame[frameShape="5"]:hover,
|
|
QFrame[frameShape="6"]:hover
|
|
{
|
|
border: 0.04em solid ^highlight^;
|
|
}
|
|
|
|
/* Don't provide an outline if we have a widget that takes up the space. */
|
|
QFrame[frameShape] QAbstractItemView:hover
|
|
{
|
|
border: 0em solid black;
|
|
}
|
|
|
|
/**
|
|
* Note: I can't really change the background of the toolbars
|
|
* independently, since KDE Breeze has different colors for the
|
|
* window bar and the rest of the UI. The top toolbar uses
|
|
* the window style, and the rest use the application style,
|
|
* which we can't do.
|
|
*/
|
|
QToolBar
|
|
{
|
|
font-weight: bold;
|
|
}
|
|
|
|
QToolBar:horizontal
|
|
{
|
|
background: 0.09em solid ^toolbar:horizontal:background^;
|
|
}
|
|
|
|
QToolBar:vertical
|
|
{
|
|
background: 0.09em solid ^toolbar:vertical:background^;
|
|
}
|
|
|
|
QToolBar::handle:horizontal
|
|
{
|
|
border-image: url(^style^hmovetoolbar.svg);
|
|
}
|
|
|
|
QToolBar::handle:vertical
|
|
{
|
|
border-image: url(^style^vmovetoolbar.svg);
|
|
}
|
|
|
|
QToolBar::separator:horizontal
|
|
{
|
|
border-image: url(^style^hseptoolbar.svg);
|
|
}
|
|
|
|
QToolBar::separator:vertical
|
|
{
|
|
border-image: url(^style^vseptoolbar.svg);
|
|
}
|
|
|
|
QToolBar QToolButton
|
|
{
|
|
font-weight: bold;
|
|
min-height: 1em;
|
|
min-width: 2em;
|
|
border: 0.04em transparent black;
|
|
padding-left: 0.2em;
|
|
padding-right: 0.3em;
|
|
}
|
|
|
|
QToolBar QToolButton:hover
|
|
{
|
|
border: 0.04em solid ^highlight^;
|
|
}
|
|
|
|
QToolBar QToolButton:pressed
|
|
{
|
|
border: 0.04em solid ^highlight^;
|
|
/* The padding doesn't inherit from `QToolBar QToolButton`, so leave it in. */
|
|
padding-left: 0.2em;
|
|
padding-right: 0.3em;
|
|
}
|
|
|
|
QPushButton
|
|
{
|
|
color: ^foreground^;
|
|
background-color: ^button:background^;
|
|
border: 0.04em solid ^midtone^;
|
|
padding: 0.23em;
|
|
border-radius: 0.09em;
|
|
outline: none;
|
|
min-height: 1.1em;
|
|
}
|
|
|
|
QComboBox:open,
|
|
QPushButton:open
|
|
{
|
|
border-width: 0.04em;
|
|
border-color: ^button:border^;
|
|
}
|
|
|
|
QComboBox:closed,
|
|
QPushButton:closed
|
|
{
|
|
border-width: 0.04em;
|
|
border-color: ^button:border^;
|
|
}
|
|
|
|
QPushButton:disabled
|
|
{
|
|
background-color: ^background^;
|
|
border-width: 0.04em;
|
|
border-color: ^button:border^;
|
|
border-style: solid;
|
|
padding-top: 0.23em;
|
|
padding-bottom: 0.23em;
|
|
padding-left: 1ex;
|
|
padding-right: 1ex;
|
|
border-radius: 0.04em;
|
|
color: ^button:disabled^;
|
|
}
|
|
|
|
QPushButton:focus
|
|
{
|
|
color: ^foreground^;
|
|
}
|
|
|
|
QPushButton:pressed
|
|
{
|
|
background-color: ^button:background:pressed^;
|
|
padding-top: -0.65em;
|
|
padding-bottom: -0.74em;
|
|
color: ^foreground^;
|
|
}
|
|
|
|
QComboBox
|
|
{
|
|
border: 0.04em solid ^midtone^;
|
|
border-radius: 0.09em;
|
|
padding: 0.23em;
|
|
min-width: 2.5em;
|
|
}
|
|
|
|
QComboBox:editable
|
|
{
|
|
background-color: ^text:background^;
|
|
}
|
|
|
|
QPushButton:checked
|
|
{
|
|
background-color: ^button:checked^;
|
|
border: 0.04em solid ^button:border^;
|
|
color: ^foreground^;
|
|
}
|
|
|
|
QPushButton:hover
|
|
{
|
|
background-color: ^button:background^;
|
|
border: 0.04em solid ^highlight^;
|
|
color: ^foreground^;
|
|
}
|
|
|
|
QPushButton:checked:hover
|
|
{
|
|
background-color: ^button:checked^;
|
|
border: 0.04em solid ^highlight^;
|
|
color: ^foreground^;
|
|
}
|
|
|
|
QComboBox:hover,
|
|
QComboBox:focus,
|
|
QAbstractSpinBox:hover,
|
|
QAbstractSpinBox:focus,
|
|
QLineEdit:hover,
|
|
QLineEdit:focus,
|
|
QTextEdit:hover,
|
|
QTextEdit:focus,
|
|
QPlainTextEdit:hover,
|
|
QPlainTextEdit:focus,
|
|
QAbstractView:hover,
|
|
QTreeView:hover,
|
|
QTreeView:focus
|
|
{
|
|
border: 0.04em solid ^highlight^;
|
|
color: ^foreground^;
|
|
}
|
|
|
|
QComboBox:hover:pressed:!editable,
|
|
QPushButton:hover:pressed,
|
|
QAbstractSpinBox:hover:pressed,
|
|
QLineEdit:hover:pressed,
|
|
QTextEdit:hover:pressed,
|
|
QPlainTextEdit:hover:pressed,
|
|
QAbstractView:hover:pressed,
|
|
QTreeView:hover:pressed
|
|
{
|
|
background-color: ^background^;
|
|
}
|
|
|
|
QComboBox:hover:pressed:editable
|
|
{
|
|
background-color: ^text:background^;
|
|
}
|
|
|
|
QComboBox QAbstractItemView
|
|
{
|
|
/* This happens for the drop-down menu always, whether editable or not.*/
|
|
background-color: ^text:background^;
|
|
selection-background-color: ^highlight:dark^;
|
|
outline-color: 0em;
|
|
border-radius: 0.09em;
|
|
}
|
|
|
|
QComboBox::drop-down
|
|
{
|
|
subcontrol-origin: padding;
|
|
subcontrol-position: top right;
|
|
width: 0.65em;
|
|
|
|
border-left-width: 0em;
|
|
border-left-style: solid;
|
|
border-top-right-radius: 0.13em;
|
|
border-bottom-right-radius: 0.13em;
|
|
}
|
|
|
|
QComboBox::down-arrow
|
|
{
|
|
border-image: url(^style^down_arrow_disabled.svg);
|
|
width: 0.8em;
|
|
height: 0.5em;
|
|
margin-right: 0.41em;
|
|
}
|
|
|
|
QComboBox::down-arrow:on,
|
|
QComboBox::down-arrow:hover,
|
|
QComboBox::down-arrow:focus
|
|
{
|
|
border-image: url(^style^down_arrow.svg);
|
|
width: 0.8em;
|
|
height: 0.5em;
|
|
margin-right: 0.41em;
|
|
}
|
|
|
|
QAbstractSpinBox
|
|
{
|
|
padding: 0.23em;
|
|
border: 0.09em solid ^midtone^;
|
|
background-color: ^text:background^;
|
|
color: ^foreground^;
|
|
border-radius: 0.09em;
|
|
min-width: 3em;
|
|
min-height: 1em;
|
|
}
|
|
|
|
QAbstractSpinBox:hover
|
|
{
|
|
border: 0.09em solid ^highlight^;
|
|
}
|
|
|
|
QAbstractSpinBox:up-button,
|
|
QAbstractSpinBox:up-button:hover
|
|
{
|
|
background-color: transparent;
|
|
subcontrol-origin: padding;
|
|
subcontrol-position: center right;
|
|
padding-right: 0.1em;
|
|
width: 0.8em;
|
|
height: 0.5em;
|
|
}
|
|
|
|
QAbstractSpinBox:down-button,
|
|
QAbstractSpinBox:down-button:hover
|
|
{
|
|
background-color: transparent;
|
|
subcontrol-origin: padding;
|
|
subcontrol-position: center left;
|
|
padding-left: 0.1em;
|
|
width: 0.8em;
|
|
height: 0.5em;
|
|
}
|
|
|
|
QAbstractSpinBox::up-arrow
|
|
{
|
|
border-image: url(^style^up_arrow.svg);
|
|
}
|
|
|
|
QAbstractSpinBox::up-arrow:disabled,
|
|
QAbstractSpinBox::up-arrow:off
|
|
{
|
|
border-image: url(^style^up_arrow_disabled.svg);
|
|
}
|
|
|
|
QAbstractSpinBox::up-arrow:hover
|
|
{
|
|
border-image: url(^style^up_arrow_hover.svg);
|
|
}
|
|
|
|
QAbstractSpinBox::down-arrow
|
|
{
|
|
border-image: url(^style^down_arrow.svg);
|
|
}
|
|
|
|
QAbstractSpinBox::down-arrow:disabled,
|
|
QAbstractSpinBox::down-arrow:off
|
|
{
|
|
border-image: url(^style^down_arrow_disabled.svg);
|
|
}
|
|
|
|
QAbstractSpinBox::down-arrow:!off:!disabled:hover
|
|
{
|
|
border-image: url(^style^down_arrow_hover.svg);
|
|
}
|
|
|
|
QDoubleSpinBox
|
|
{
|
|
min-width: 4em;
|
|
}
|
|
|
|
/**
|
|
* `QCalendarWidget QAbstractItemView:enabled` sets the color, background
|
|
* color, and selection color for active dates in the view.
|
|
* `QCalendarWidget QAbstractItemView:enabled` sets the disabled dates.
|
|
*/
|
|
QCalendarWidget QAbstractItemView:enabled
|
|
{
|
|
color: ^foreground^;
|
|
selection-color: ^foreground^;
|
|
selection-background-color: ^highlight^;
|
|
}
|
|
|
|
/* Won't take hover events. */
|
|
QPrevNextCalButton#qt_calendar_nextmonth
|
|
{
|
|
image: none;
|
|
subcontrol-origin: content;
|
|
subcontrol-position: right;
|
|
}
|
|
|
|
QPrevNextCalButton#qt_calendar_prevmonth
|
|
{
|
|
image: none;
|
|
subcontrol-origin: content;
|
|
subcontrol-position: left;
|
|
}
|
|
|
|
/**
|
|
* Setting for the month and year displays and drop-down menu for the
|
|
* month select. We style this separately because we want a drop-down
|
|
* indicator in the bottom right, unlike the normal QToolButton.
|
|
*/
|
|
QCalendarWidget QToolButton
|
|
{
|
|
background-color: transparent;
|
|
border: 0.04em solid ^midtone^;
|
|
border-radius: 0.09em;
|
|
margin: 0.23em;
|
|
padding: 0.23em;
|
|
padding-top: 0.1em;
|
|
padding-right: 1.2em;
|
|
min-height: 1.1em;
|
|
}
|
|
|
|
QCalendarWidget QToolButton:hover
|
|
{
|
|
border: 0.04em solid ^highlight^;
|
|
}
|
|
|
|
QCalendarWidget QToolButton:checked,
|
|
QCalendarWidget QToolButton:pressed
|
|
{
|
|
background-color: ^highlight^;
|
|
padding: 0.23em;
|
|
padding-right: 1.2em;
|
|
min-height: 1.3em;
|
|
outline: none;
|
|
}
|
|
|
|
QCalendarWidget QToolButton::menu-indicator
|
|
{
|
|
border-image: none;
|
|
image: url(^style^down_arrow.svg);
|
|
width: 0.8em;
|
|
height: 0.5em;
|
|
top: -0.7ex;
|
|
left: -0.09em;
|
|
padding-right: -1.11em;
|
|
subcontrol-origin: content;
|
|
subcontrol-position: bottom right;
|
|
}
|
|
|
|
QCalendarWidget QToolButton::menu-arrow
|
|
{
|
|
border-image: none;
|
|
image: url(^style^down_arrow.svg);
|
|
width: 0.8em;
|
|
height: 0.5em;
|
|
padding-right: 0.09em;
|
|
subcontrol-origin: content;
|
|
subcontrol-position: bottom right;
|
|
}
|
|
|
|
/**
|
|
* Setting for the year button. Both the month select and the year
|
|
* select are QToolButtons, and both are auto-raised. The year
|
|
* button however has the popup mode set to `DelayedPopup`.
|
|
*/
|
|
QCalendarWidget QToolButton[autoRaise="true"][popupMode="0"]
|
|
{
|
|
padding: 0.23em;
|
|
}
|
|
|
|
QCalendarWidget QSpinBox
|
|
{
|
|
max-height: 1.5em;
|
|
min-width: 3.5em;
|
|
margin: 0em;
|
|
margin-top: 0.2em;
|
|
padding: 0em;
|
|
outline: 0em;
|
|
padding-left: 0.5em;
|
|
}
|
|
|
|
QLabel
|
|
{
|
|
border: 0em solid black;
|
|
}
|
|
|
|
/* BORDERS */
|
|
QTabWidget::pane
|
|
{
|
|
padding: 0.23em;
|
|
margin: 0.04em;
|
|
}
|
|
|
|
QTabWidget::pane:top
|
|
{
|
|
border: 0.04em solid ^midtone^;
|
|
top: -0.04em;
|
|
}
|
|
|
|
QTabWidget::pane:bottom
|
|
{
|
|
border: 0.04em solid ^midtone^;
|
|
bottom: -0.04em;
|
|
}
|
|
|
|
QTabWidget::pane:left
|
|
{
|
|
border: 0.04em solid ^midtone^;
|
|
left: -0.04em;
|
|
}
|
|
|
|
QTabWidget::pane:right
|
|
{
|
|
border: 0.04em solid ^midtone^;
|
|
right: -0.04em;
|
|
}
|
|
|
|
QTabBar
|
|
{
|
|
qproperty-drawBase: 0;
|
|
left: 0.23em;
|
|
border-radius: 0.13em;
|
|
/**
|
|
* Note: this is the underline for each tab title. It's not
|
|
* documented, and this took forever to track down. At least
|
|
* 10 hours have been wasted trying to turn off this line,
|
|
* do not deleted this comment.
|
|
*/
|
|
selection-color: transparent;
|
|
}
|
|
|
|
QTabBar:focus
|
|
{
|
|
border: 0em transparent black;
|
|
}
|
|
|
|
QTabBar::close-button
|
|
{
|
|
/* Doesn't seem possible to resize these buttons */
|
|
border-image: url(^style^transparent.svg);
|
|
image: url(^style^close.svg);
|
|
background: transparent;
|
|
}
|
|
|
|
QTabBar::close-button:hover
|
|
{
|
|
image: url(^style^close_hover.svg);
|
|
}
|
|
|
|
QTabBar::close-button:pressed
|
|
{
|
|
image: url(^style^close_pressed.svg);
|
|
}
|
|
|
|
/* TOP TABS */
|
|
QTabBar::tab:top,
|
|
QTabBar::tab:top:last,
|
|
QTabBar::tab:top:only-one
|
|
{
|
|
color: ^foreground^;
|
|
border: 0.04em transparent black;
|
|
border-left: 0.04em solid ^midtone^;
|
|
border-right: 0.04em solid ^midtone^;
|
|
border-top: 0.09em solid ^highlight^;
|
|
background-color: ^tab:background:selected^;
|
|
padding: 0.23em;
|
|
min-width: 50px;
|
|
border-radius: 0.09em;
|
|
border-bottom-left-radius: 0em;
|
|
border-bottom-right-radius: 0em;
|
|
}
|
|
|
|
QTabBar::tab:top:!selected
|
|
{
|
|
color: ^foreground^;
|
|
background-color: ^tab:background^;
|
|
border: 0.04em transparent black;
|
|
border-right: 0.04em solid ^midtone^;
|
|
border-bottom: 0.04em solid ^midtone^;
|
|
border-radius: 0.09em;
|
|
border-bottom-left-radius: 0em;
|
|
border-bottom-right-radius: 0em;
|
|
}
|
|
|
|
QTabBar::tab:top:next-selected
|
|
{
|
|
border-right: 0.04em transparent ^tab:background^;
|
|
border-bottom-left-radius: 0em;
|
|
border-bottom-right-radius: 0em;
|
|
}
|
|
|
|
QTabBar::tab:top:!selected:hover
|
|
{
|
|
background-color: ^view:hover^;
|
|
border-radius: 0.09em;
|
|
border-bottom-left-radius: 0em;
|
|
border-bottom-right-radius: 0em;
|
|
}
|
|
|
|
QTabBar::tab:top:!selected:first:hover
|
|
{
|
|
background-color: ^view:hover^;
|
|
border-radius: 0.09em;
|
|
border-bottom-left-radius: 0em;
|
|
border-bottom-right-radius: 0em;
|
|
}
|
|
|
|
/* BOTTOM TABS */
|
|
QTabBar::tab:bottom,
|
|
QTabBar::tab:bottom:last,
|
|
QTabBar::tab:bottom:only-one
|
|
{
|
|
color: ^foreground^;
|
|
border: 0.04em transparent black;
|
|
border-left: 0.04em solid ^midtone^;
|
|
border-right: 0.04em solid ^midtone^;
|
|
border-bottom: 0.09em solid ^highlight^;
|
|
background-color: ^tab:background:selected^;
|
|
padding: 0.23em;
|
|
min-width: 50px;
|
|
border-radius: 0.09em;
|
|
border-top-left-radius: 0em;
|
|
border-top-right-radius: 0em;
|
|
}
|
|
|
|
QTabBar::tab:bottom:!selected
|
|
{
|
|
color: ^foreground^;
|
|
background-color: ^tab:background^;
|
|
border: 0.04em transparent black;
|
|
border-top: 0.04em solid ^midtone^;
|
|
border-right: 0.04em solid ^midtone^;
|
|
border-radius: 0.09em;
|
|
border-top-left-radius: 0em;
|
|
border-top-right-radius: 0em;
|
|
}
|
|
|
|
QTabBar::tab:bottom:next-selected
|
|
{
|
|
border-right: 0.04em transparent ^tab:background^;
|
|
border-top-left-radius: 0em;
|
|
border-top-right-radius: 0em;
|
|
}
|
|
|
|
QTabBar::tab:bottom:!selected:hover
|
|
{
|
|
background-color: ^view:hover^;
|
|
border-radius: 0.09em;
|
|
border-top-left-radius: 0em;
|
|
border-top-right-radius: 0em;
|
|
}
|
|
|
|
QTabBar::tab:bottom:!selected:first:hover
|
|
{
|
|
background-color: ^view:hover^;
|
|
border-radius: 0.09em;
|
|
border-top-left-radius: 0em;
|
|
border-top-right-radius: 0em;
|
|
}
|
|
|
|
/* LEFT TABS */
|
|
QTabBar::tab:left,
|
|
QTabBar::tab:left:last,
|
|
QTabBar::tab:left:only-one
|
|
{
|
|
color: ^foreground^;
|
|
border: 0.04em transparent black;
|
|
border-top: 0.09em solid ^highlight^;
|
|
border-bottom: 0.04em solid ^midtone^;
|
|
border-left: 0.04em solid ^midtone^;
|
|
background-color: ^tab:background:selected^;
|
|
padding: 0.23em;
|
|
min-height: 50px;
|
|
border-radius: 0.09em;
|
|
border-top-right-radius: 0em;
|
|
border-bottom-right-radius: 0em;
|
|
}
|
|
|
|
QTabBar::tab:left:!selected
|
|
{
|
|
color: ^foreground^;
|
|
background-color: ^tab:background^;
|
|
border: 0.04em transparent black;
|
|
border-top: 0.04em solid ^midtone^;
|
|
border-right: 0.04em solid ^midtone^;
|
|
border-radius: 0.09em;
|
|
border-top-right-radius: 0em;
|
|
border-bottom-right-radius: 0em;
|
|
}
|
|
|
|
QTabBar::tab:left:previous-selected
|
|
{
|
|
border-top: 0.04em transparent ^tab:background^;
|
|
border-top-right-radius: 0em;
|
|
border-bottom-right-radius: 0em;
|
|
}
|
|
|
|
QTabBar::tab:left:!selected:hover
|
|
{
|
|
background-color: ^view:hover^;
|
|
border-radius: 0.09em;
|
|
border-top-right-radius: 0em;
|
|
border-bottom-right-radius: 0em;
|
|
}
|
|
|
|
QTabBar::tab:left:!selected:first:hover
|
|
{
|
|
background-color: ^view:hover^;
|
|
border-radius: 0.09em;
|
|
border-top-right-radius: 0em;
|
|
border-bottom-right-radius: 0em;
|
|
}
|
|
|
|
/* RIGHT TABS */
|
|
QTabBar::tab:right,
|
|
QTabBar::tab:right:last,
|
|
QTabBar::tab:right:only-one
|
|
{
|
|
color: ^foreground^;
|
|
border: 0.04em transparent black;
|
|
border-top: 0.09em solid ^highlight^;
|
|
border-bottom: 0.04em solid ^midtone^;
|
|
border-right: 0.04em solid ^midtone^;
|
|
background-color: ^tab:background:selected^;
|
|
padding: 0.23em;
|
|
min-height: 50px;
|
|
border-radius: 0.09em;
|
|
border-top-left-radius: 0em;
|
|
border-bottom-left-radius: 0em;
|
|
}
|
|
|
|
QTabBar::tab:right:!selected
|
|
{
|
|
color: ^foreground^;
|
|
background-color: ^tab:background^;
|
|
border: 0.04em transparent black;
|
|
border-top: 0.04em solid ^midtone^;
|
|
border-left: 0.04em solid ^midtone^;
|
|
border-radius: 0.09em;
|
|
border-top-left-radius: 0em;
|
|
border-bottom-left-radius: 0em;
|
|
}
|
|
|
|
QTabBar::tab:right:previous-selected
|
|
{
|
|
border-top: 0.04em transparent ^tab:background^;
|
|
border-top-left-radius: 0em;
|
|
border-bottom-left-radius: 0em;
|
|
}
|
|
|
|
QTabBar::tab:right:!selected:hover
|
|
{
|
|
background-color: ^view:hover^;
|
|
border-radius: 0.09em;
|
|
border-top-left-radius: 0em;
|
|
border-bottom-left-radius: 0em;
|
|
}
|
|
|
|
QTabBar::tab:right:!selected:first:hover
|
|
{
|
|
background-color: ^view:hover^;
|
|
border-radius: 0.09em;
|
|
border-top-left-radius: 0em;
|
|
border-bottom-left-radius: 0em;
|
|
}
|
|
|
|
QTabBar QToolButton::right-arrow:enabled
|
|
{
|
|
border-image: url(^style^right_arrow.svg);
|
|
width: 0.5em;
|
|
height: 0.8em;
|
|
}
|
|
|
|
QTabBar QToolButton::left-arrow:enabled
|
|
{
|
|
border-image: url(^style^left_arrow.svg);
|
|
width: 0.5em;
|
|
height: 0.8em;
|
|
}
|
|
|
|
QTabBar QToolButton::right-arrow:disabled
|
|
{
|
|
border-image: url(^style^right_arrow_disabled.svg);
|
|
width: 0.5em;
|
|
height: 0.8em;
|
|
}
|
|
|
|
QTabBar QToolButton::left-arrow:disabled
|
|
{
|
|
border-image: url(^style^left_arrow_disabled.svg);
|
|
width: 0.5em;
|
|
height: 0.8em;
|
|
}
|
|
|
|
QDockWidget
|
|
{
|
|
background: ^dock:background^;
|
|
/**
|
|
* It doesn't seem possible to change the border of the
|
|
* QDockWidget without changing the content margins.
|
|
*/
|
|
/**
|
|
* This is a bug fix so we can handle hover, pressed, and other events.
|
|
* Reference: https://stackoverflow.com/questions/32145080/qdockwidget-float-close-button-hover-images
|
|
*/
|
|
titlebar-close-icon: url(^style^transparent.svg);
|
|
titlebar-normal-icon: url(^style^transparent.svg);
|
|
}
|
|
|
|
/**
|
|
* Don't style the title, since it gives a weird, missing border
|
|
* around the rest of the dock widget, which the remaining border
|
|
* cannot be removed.
|
|
*
|
|
* There is a bug in Qt6, where the icons are small. It doesn't
|
|
* change if we use `image` instead of `border-image`, nor if we
|
|
* use `qproperty-icon`, etc. The icon seem to be half the size
|
|
* of our desired values.
|
|
*/
|
|
QDockWidget::close-button,
|
|
QDockWidget::float-button
|
|
{
|
|
border: 0.04em solid transparent;
|
|
border-radius: 0.09em;
|
|
background: transparent;
|
|
/* Maximum icon size for buttons */
|
|
icon-size: 14px;
|
|
}
|
|
|
|
QDockWidget::float-button
|
|
{
|
|
border-image: url(^style^transparent.svg);
|
|
image: url(^style^undock.svg);
|
|
}
|
|
|
|
QDockWidget::float-button:hover
|
|
{
|
|
image: url(^style^undock_hover.svg);
|
|
}
|
|
|
|
/* The :pressed events don't register, seems to be a Qt bug. */
|
|
QDockWidget::float-button:pressed
|
|
{
|
|
image: url(^style^undock_hover.svg);
|
|
}
|
|
|
|
QDockWidget::close-button
|
|
{
|
|
border-image: url(^style^transparent.svg);
|
|
image: url(^style^close.svg);
|
|
}
|
|
|
|
QDockWidget::close-button:hover
|
|
{
|
|
image: url(^style^close_hover.svg);
|
|
}
|
|
|
|
/* The :pressed events don't register, seems to be a Qt bug. */
|
|
QDockWidget::close-button:pressed
|
|
{
|
|
image: url(^style^close_pressed.svg);
|
|
}
|
|
|
|
QTreeView,
|
|
QListView
|
|
{
|
|
background-color: ^view:background^;
|
|
border: 0em solid black;
|
|
}
|
|
|
|
QTreeView:selected,
|
|
QTreeView:!selected,
|
|
QListView:selected,
|
|
QListView:!selected
|
|
{
|
|
border: 0em solid black;
|
|
}
|
|
|
|
QTreeView::branch:has-siblings
|
|
{
|
|
border-image: url(^style^vline.svg);
|
|
image: none;
|
|
}
|
|
|
|
/* These branch indicators don't scale */
|
|
TreeView::branch:!has-siblings
|
|
{
|
|
border-image: none;
|
|
image: none;
|
|
}
|
|
|
|
QTreeView::branch:has-siblings:adjoins-item
|
|
{
|
|
border-image: url(^style^branch_more.svg);
|
|
}
|
|
|
|
QTreeView::branch:!has-children:!has-siblings:adjoins-item
|
|
{
|
|
border-image: url(^style^branch_end.svg);
|
|
}
|
|
|
|
QTreeView::branch:has-children:!has-siblings:closed,
|
|
QTreeView::branch:closed:has-children:has-siblings
|
|
{
|
|
image: url(^style^branch_closed.svg);
|
|
}
|
|
|
|
QTreeView::branch:has-children:!has-siblings:closed:hover,
|
|
QTreeView::branch:closed:has-children:has-siblings:hover
|
|
{
|
|
image: url(^style^branch_closed_hover.svg);
|
|
}
|
|
|
|
QTreeView::branch:has-children:!has-siblings:closed,
|
|
QTreeView::branch:open:has-children:!has-siblings
|
|
{
|
|
border-image: url(^style^branch_end_arrow.svg);
|
|
}
|
|
|
|
QTreeView::branch:closed:has-children:has-siblings,
|
|
QTreeView::branch:open:has-children:has-siblings
|
|
{
|
|
border-image: url(^style^branch_more_arrow.svg);
|
|
}
|
|
|
|
QTreeView::branch:open:has-children:!has-siblings,
|
|
QTreeView::branch:open:has-children:has-siblings
|
|
{
|
|
image: url(^style^branch_open.svg);
|
|
}
|
|
|
|
QTreeView::branch:open:has-children:!has-siblings:hover,
|
|
QTreeView::branch:open:has-children:has-siblings:hover
|
|
{
|
|
image: url(^style^branch_open_hover.svg);
|
|
}
|
|
|
|
QListView
|
|
{
|
|
/* Give space for elements aligned left or right. */
|
|
padding: 0.2em;
|
|
}
|
|
|
|
QTableView::item,
|
|
QListView::item,
|
|
QTreeView::item
|
|
{
|
|
padding: 0.13em;
|
|
color: ^foreground^;
|
|
}
|
|
|
|
QTableView::item:!selected:hover,
|
|
QListView::item:!selected:hover,
|
|
QTreeView::item:!selected:hover
|
|
{
|
|
background-color: ^view:hover^;
|
|
outline: 0;
|
|
color: ^foreground^;
|
|
padding: 0.13em;
|
|
}
|
|
|
|
QSlider::handle:horizontal,
|
|
QSlider::handle:vertical
|
|
{
|
|
background: ^slider:handle:background^;
|
|
border: 0.04em solid ^midtone:dark^;
|
|
width: 0.7em;
|
|
height: 0.7em;
|
|
border-radius: 0.35em;
|
|
}
|
|
|
|
QSlider:horizontal
|
|
{
|
|
height: 2em;
|
|
}
|
|
|
|
QSlider:vertical
|
|
{
|
|
width: 2em;
|
|
}
|
|
|
|
QSlider::handle:horizontal
|
|
{
|
|
margin: -0.23em 0;
|
|
}
|
|
|
|
QSlider::handle:vertical
|
|
{
|
|
margin: 0 -0.23em;
|
|
}
|
|
|
|
QSlider::groove:horizontal,
|
|
QSlider::groove:vertical
|
|
{
|
|
background: ^tab:background^;
|
|
border: 0em solid ^background^;
|
|
border-radius: 0.19em;
|
|
}
|
|
|
|
QSlider::groove:horizontal
|
|
{
|
|
height: 0.4em;
|
|
}
|
|
|
|
QSlider::groove:vertical
|
|
{
|
|
width: 0.4em;
|
|
}
|
|
|
|
QSlider::handle:horizontal:hover,
|
|
QSlider::handle:horizontal:focus,
|
|
QSlider::handle:vertical:hover,
|
|
QSlider::handle:vertical:focus
|
|
{
|
|
border: 0.04em solid ^slider:foreground^;
|
|
}
|
|
|
|
QSlider::handle:horizontal:!focus:!hover,
|
|
QSlider::handle:vertical:!focus:!hover
|
|
{
|
|
border: 0.04em solid ^midtone:dark^;
|
|
}
|
|
|
|
QSlider::sub-page:horizontal,
|
|
QSlider::add-page:vertical
|
|
{
|
|
background: ^slider:foreground^;
|
|
border-radius: 0.19em;
|
|
}
|
|
|
|
QSlider::add-page:horizontal,
|
|
QSlider::sub-page:vertical
|
|
{
|
|
background: ^midtone:dark^;
|
|
border-radius: 0.19em;
|
|
}
|
|
|
|
/* QToolButton */
|
|
/**
|
|
* QToolButton's that have a push button need to be styled differently,
|
|
* and auto-raise is automatically disabled if there is a push button,
|
|
* IE, there is no arrow attached to the text in the QToolButton.
|
|
* Note that this is not affected by the following:
|
|
* popupMode: any pop-up mode does not affect the right arrow style.
|
|
* arrowType: only replaces the icon.
|
|
* toolButtonStyle: this is almost always set to icon only, even with text.
|
|
*
|
|
* This particularly affects QFileDialog, but also affects anything with
|
|
* auto-raise set to true. Therefore, our styles should only be set when
|
|
* auto-raise is false.
|
|
*
|
|
* The affected issues are #22 and #28.
|
|
* https://github.com/Alexhuszagh/BreezeStyleSheets/issues/22
|
|
* https://github.com/Alexhuszagh/BreezeStyleSheets/issues/28
|
|
*
|
|
* The invalid clear text icon in issue #28 still has:
|
|
* autoRaise: false
|
|
* arrowType: 0
|
|
* toolButtonStyle: 0
|
|
*/
|
|
QToolButton[autoRaise="false"]
|
|
{
|
|
background-color: transparent;
|
|
border: 0.04em solid ^midtone^;
|
|
border-radius: 0.09em;
|
|
margin: 0.23em;
|
|
padding: 0.23em;
|
|
padding-top: 0.1em;
|
|
padding-right: 1.2em;
|
|
}
|
|
|
|
QToolButton[autoRaise="false"]::right-arrow,
|
|
QToolButton[autoRaise="false"]::left-arrow,
|
|
QToolButton[autoRaise="false"]::up-arrow,
|
|
QToolButton[autoRaise="false"]::down-arrow
|
|
{
|
|
subcontrol-origin: margin;
|
|
subcontrol-position: right;
|
|
}
|
|
|
|
QToolButton::right-arrow
|
|
{
|
|
image: url(^style^right_arrow.svg);
|
|
}
|
|
|
|
QToolButton::left-arrow
|
|
{
|
|
image: url(^style^left_arrow.svg);
|
|
}
|
|
|
|
QToolButton::up-arrow
|
|
{
|
|
image: url(^style^up_arrow.svg);
|
|
}
|
|
|
|
QToolButton::down-arrow
|
|
{
|
|
image: url(^style^down_arrow.svg);
|
|
}
|
|
|
|
QToolButton[autoRaise="false"]:hover
|
|
{
|
|
border: 0.04em solid ^highlight^;
|
|
}
|
|
|
|
QToolButton[autoRaise="false"]:checked,
|
|
QToolButton[autoRaise="false"]:pressed
|
|
{
|
|
border: 0.04em solid ^highlight^;
|
|
background-color: ^highlight^;
|
|
padding: 0.23em;
|
|
padding-right: 1.2em;
|
|
outline: none;
|
|
}
|
|
|
|
QToolButton[autoRaise="false"]::menu-indicator
|
|
{
|
|
border-image: none;
|
|
image: url(^style^down_arrow.svg);
|
|
width: 0.8em;
|
|
height: 0.5em;
|
|
left: -0.09em;
|
|
/* -1.2em + 0.09em */
|
|
padding-right: -1.11em;
|
|
/**
|
|
* Qt5 and Qt6 differ if the subcontrol-origin is set to
|
|
* the default, AKA, padding. Setting it to the content,
|
|
* which we adjust the padding to, makes it uniform between
|
|
* both.
|
|
*/
|
|
subcontrol-origin: content;
|
|
subcontrol-position: right;
|
|
}
|
|
|
|
QToolButton[autoRaise="false"]::menu-arrow
|
|
{
|
|
border-image: none;
|
|
image: url(^style^down_arrow.svg);
|
|
width: 0.8em;
|
|
height: 0.5em;
|
|
padding-right: 0.09em;
|
|
subcontrol-position: right;
|
|
}
|
|
|
|
QToolButton[autoRaise="false"]::menu-button
|
|
{
|
|
border-top-right-radius: 0.5em;
|
|
border-bottom-right-radius: 0.5em;
|
|
/* 1ex width + 0.4ex for border + no text = 2ex allocated above */
|
|
width: 1.3em;
|
|
padding: 0.23em;
|
|
outline: none;
|
|
}
|
|
|
|
QToolButton[autoRaise="false"]::menu-button::menu-arrow
|
|
{
|
|
left: -0.09em;
|
|
subcontrol-position: right;
|
|
}
|
|
|
|
QToolButton[autoRaise="false"]::menu-button:hover
|
|
{
|
|
background-color: transparent;
|
|
}
|
|
|
|
QToolButton[autoRaise="false"]::menu-button:pressed
|
|
{
|
|
background-color: transparent;
|
|
padding: 0.23em;
|
|
outline: none;
|
|
}
|
|
|
|
QToolButton[autoRaise="true"]
|
|
{
|
|
background-color: transparent;
|
|
border: 0.04em solid transparent;
|
|
}
|
|
|
|
QToolButton[autoRaise="true"]:hover
|
|
{
|
|
border: 0.04em solid ^highlight^;
|
|
}
|
|
|
|
QToolButton[autoRaise="true"]:checked,
|
|
QToolButton[autoRaise="true"]:pressed
|
|
{
|
|
border: 0.04em solid ^highlight^;
|
|
background-color: ^highlight^;
|
|
}
|
|
|
|
QTableView
|
|
{
|
|
border: 0em solid black;
|
|
gridline-color: ^view:border^;
|
|
background-color: ^view:background^;
|
|
}
|
|
|
|
QTableView:!selected,
|
|
QTableView:selected
|
|
{
|
|
border: 0em solid black;
|
|
}
|
|
|
|
QTableView
|
|
{
|
|
border-radius: 0em;
|
|
}
|
|
|
|
QAbstractItemView::item
|
|
{
|
|
color: ^foreground^;
|
|
}
|
|
|
|
QAbstractItemView::item:pressed
|
|
{
|
|
background: ^highlight:dark^;
|
|
color: ^foreground^;
|
|
}
|
|
|
|
QAbstractItemView::item:selected:!active
|
|
{
|
|
background: ^view:hover^;
|
|
}
|
|
|
|
/* Use background with qlineargradient to avoid ugly border on widget. */
|
|
QAbstractItemView::item:selected:active
|
|
{
|
|
background: qlineargradient(
|
|
x1: 0.5, y1: 0.5
|
|
x2: 0.5, y2: 1,
|
|
stop: 0 ^highlight:dark^,
|
|
stop: 1 ^highlight:dark^
|
|
);
|
|
color: ^foreground^;
|
|
}
|
|
|
|
QAbstractItemView::item:selected:hover
|
|
{
|
|
background: qlineargradient(
|
|
x1: 0.5, y1: 0.5
|
|
x2: 0.5, y2: 1,
|
|
stop: 0 ^highlight:alternate^,
|
|
stop: 1 ^highlight:alternate^
|
|
);
|
|
color: ^foreground^;
|
|
}
|
|
|
|
QHeaderView
|
|
{
|
|
background-color: ^view:header^;
|
|
border: 0.04em transparent;
|
|
border-radius: 0em;
|
|
margin: 0em;
|
|
padding: 0em;
|
|
}
|
|
|
|
QHeaderView::section
|
|
{
|
|
background-color: ^view:header^;
|
|
border: 0.04em solid ^midtone^;
|
|
color: ^foreground^;
|
|
border-radius: 0em;
|
|
padding: 0em 0.23em 0em 0.23em;
|
|
text-align: center;
|
|
}
|
|
|
|
QHeaderView::section::vertical::first,
|
|
QHeaderView::section::vertical::only-one
|
|
{
|
|
border-top: 0.04em solid ^midtone^;
|
|
}
|
|
|
|
QHeaderView::section::vertical
|
|
{
|
|
border-top: transparent;
|
|
}
|
|
|
|
QHeaderView::section::horizontal::first,
|
|
QHeaderView::section::horizontal::only-one
|
|
{
|
|
border-left: 0.04em solid ^midtone^;
|
|
}
|
|
|
|
QHeaderView::section::horizontal
|
|
{
|
|
border-left: transparent;
|
|
}
|
|
|
|
QHeaderView[showSortIndicator="true"]::section::horizontal
|
|
{
|
|
/* Same as the width of the arrow subcontrols below. */
|
|
padding-right: 0.8em;
|
|
}
|
|
|
|
QHeaderView::section:checked
|
|
{
|
|
color: ^foreground:light^;
|
|
background-color: ^view:checked^;
|
|
}
|
|
|
|
/* Note that this doesn't work for QTreeView unless the header is clickable */
|
|
QHeaderView::section:hover,
|
|
QHeaderView::section::horizontal::first:hover,
|
|
QHeaderView::section::horizontal::only-one:hover,
|
|
QHeaderView::section::vertical::first:hover,
|
|
QHeaderView::section::vertical::only-one:hover
|
|
{
|
|
border: 0.04em solid ^highlight^;
|
|
}
|
|
|
|
QHeaderView[showSortIndicator="true"]::down-arrow
|
|
{
|
|
image: url(^style^down_arrow.svg);
|
|
/**
|
|
* Qt5 and Qt6 differ if the subcontrol-origin is set to
|
|
* the default, AKA, padding. Setting it to the content,
|
|
* which we adjust the padding to, makes it uniform between
|
|
* both.
|
|
*/
|
|
subcontrol-origin: content;
|
|
subcontrol-position: center right;
|
|
width: 0.8em;
|
|
height: 0.5em;
|
|
/**
|
|
* Qt5 and Qt6 have different ideas of the padding of the
|
|
* arrow subcontrols: using `padding-left` to ensure that
|
|
* the width is undone fixes the padding of the content by
|
|
* an extra `0.8em` in Qt6, but doesn't affect Qt5.
|
|
*/
|
|
padding-right: 0.09em;
|
|
padding-left: -0.8em;
|
|
}
|
|
|
|
QHeaderView[showSortIndicator="true"]::up-arrow
|
|
{
|
|
image: url(^style^up_arrow.svg);
|
|
subcontrol-origin: content;
|
|
subcontrol-position: center right;
|
|
width: 0.8em;
|
|
height: 0.5em;
|
|
padding-right: 0.09em;
|
|
padding-left: -0.8em;
|
|
}
|
|
|
|
QTableView QTableCornerButton::section
|
|
{
|
|
background-color: ^view:corner^;
|
|
border: 0.04em transparent ^view:header:border^;
|
|
border-top: 0.04em solid ^view:header:border^;
|
|
border-left: 0.04em solid ^view:header:border^;
|
|
border-radius: 0em;
|
|
}
|
|
|
|
/* No hover event */
|
|
QTableView QTableCornerButton:hover
|
|
{
|
|
border: 0.04em transparent ^view:header:border^;
|
|
}
|
|
|
|
QTableView QTableCornerButton::section:pressed
|
|
{
|
|
border: 0.04em solid ^highlight^;
|
|
border-radius: 0em;
|
|
}
|
|
|
|
QToolBox
|
|
{
|
|
padding: 0.23em;
|
|
border: 0.09em transparent black;
|
|
}
|
|
|
|
QToolBox::tab
|
|
{
|
|
border-bottom: 0.09em solid ^midtone^;
|
|
margin-left: 1.5em;
|
|
}
|
|
|
|
QToolBox::tab:selected,
|
|
QToolBox::tab:hover
|
|
{
|
|
border-bottom: 0.09em solid ^highlight^;
|
|
}
|
|
|
|
QSplitter::handle
|
|
{
|
|
border: 0.09em solid ^tab:background^;
|
|
background: -0.5em solid ^tab:background^;
|
|
max-width: 0em;
|
|
max-height: 0em;
|
|
}
|
|
|
|
/**
|
|
* It's not possible to get satisfactory rounded borders here.
|
|
* If you set the border to be negative, while adjusting the
|
|
* widths, you get an asymmetrical curve which produces an
|
|
* unappealing border.
|
|
*/
|
|
QProgressBar:horizontal,
|
|
QProgressBar:vertical
|
|
{
|
|
background-color: ^midtone:dark^;
|
|
border: 0.9em solid ^background^;
|
|
border-radius: 0.13em;
|
|
padding: 0em;
|
|
}
|
|
|
|
QProgressBar:horizontal
|
|
{
|
|
height: 0.2em;
|
|
min-width: 6em;
|
|
text-align: right;
|
|
padding-left: -0.03em;
|
|
padding-right: -0.03em;
|
|
margin-top: 0.2em;
|
|
margin-bottom: 0.2em;
|
|
margin-right: 1.3em;
|
|
}
|
|
|
|
QProgressBar:vertical
|
|
{
|
|
width: 0.2em;
|
|
min-height: 6em;
|
|
text-align: bottom;
|
|
padding-top: -0.03em;
|
|
padding-bottom: -0.03em;
|
|
margin-left: 0.2em;
|
|
margin-right: 0.2em;
|
|
margin-bottom: 0.41em;
|
|
}
|
|
|
|
QProgressBar::chunk:horizontal,
|
|
QProgressBar::chunk:vertical
|
|
{
|
|
background-color: ^slider:foreground^;
|
|
border: 0.9em transparent;
|
|
border-radius: 0.08em;
|
|
}
|
|
|
|
QScrollArea,
|
|
QScrollArea:focus,
|
|
QScrollArea:hover
|
|
{
|
|
border: 0em solid black;
|
|
}
|
|
|
|
/* ICONS */
|
|
/**
|
|
* Qt's built-in icons can look pretty bad if the system theme
|
|
* is a different color than the current one. For example, when
|
|
* using a dark theme, with a light UI, the `Ok` button is greyed
|
|
* out for an about dialog.
|
|
*
|
|
* QDialogButtonBox will apply for all standard buttons in all standard
|
|
* widgets, such as QMessageBox, etc. However, we do need to override
|
|
* standard icons elsewhere.
|
|
*
|
|
* The rest of the icons make little sense to implement:
|
|
* Qt uses native window decorations.
|
|
* Qt normally uses native file dialogs, which look nicer.
|
|
* Media controls are used in custom widgets, which aren't standard.
|
|
*/
|
|
QDialogButtonBox
|
|
{
|
|
dialogbuttonbox-buttons-have-icons: true;
|
|
|
|
dialog-cancel-icon: url(^style^dialog_cancel.svg);
|
|
dialog-close-icon: url(^style^dialog_close.svg);
|
|
dialog-ok-icon: url(^style^dialog_ok.svg);
|
|
dialog-open-icon: url(^style^dialog_open.svg);
|
|
dialog-reset-icon: url(^style^dialog_reset.svg);
|
|
dialog-save-icon: url(^style^dialog_save.svg);
|
|
/**
|
|
* No support yet for overriding saveall.
|
|
* dialog-saveall-icon: url(^style^dialog_saveall.svg);
|
|
*/
|
|
dialog-yes-icon: url(^style^dialog_ok.svg);
|
|
dialog-help-icon: url(^style^dialog_help.svg);
|
|
dialog-no-icon: url(^style^dialog_no.svg);
|
|
dialog-apply-icon: url(^style^dialog_ok.svg);
|
|
dialog-discard-icon: url(^style^dialog_discard.svg);
|
|
}
|
|
|
|
QMessageBox
|
|
{
|
|
messagebox-critical-icon: url(^style^message_critical.svg);
|
|
messagebox-information-icon: url(^style^message_information.svg);
|
|
messagebox-question-icon: url(^style^message_question.svg);
|
|
messagebox-warning-icon: url(^style^message_warning.svg);
|
|
}
|
|
|
|
/* Set some styles for these custom dialog buttons */
|
|
QDialogButtonBox QPushButton,
|
|
QMessageBox QPushButton
|
|
{
|
|
min-height: 1.1em;
|
|
min-width: 5em;
|
|
}
|