From 5d95b52ddaaa9a628abf934d981f6799ec190ee5 Mon Sep 17 00:00:00 2001 From: Score_Under Date: Wed, 11 Dec 2024 23:55:30 +0000 Subject: [PATCH 1/3] Use recommended colours by default for e621 stylesheet --- static/qss/e621.qss | 86 ++++++++++++++------------------------------- 1 file changed, 26 insertions(+), 60 deletions(-) diff --git a/static/qss/e621.qss b/static/qss/e621.qss index e17abec29..067d4c567 100644 --- a/static/qss/e621.qss +++ b/static/qss/e621.qss @@ -2,23 +2,6 @@ An e621.net-inspired style/theme for Hydrus. Created by IchHabs in February 2024. -Please enable darkmode and consider using the following colors: -- Thumbnail Background: - - local, normal: #152f56 - - local, selected: #25477b - - not local, normal: #a0522d - - not local, selected: #ed5d1f -- Thumbnail Border: - - local, normal: #152f56 - - local, selected: #b4c7d9 - - not local, normal: #a0522d - - not local, selected: #b4c7d9 -- Thumbnail Grid Background: #020f23 -- Autocomplete Background: #ffffcc -- Media Viewer Background: #020f23 -- Media Viewer Text: #b4c7d9 -- Tabs Box Background: #152f56 - If you want to change your tag namespace colors as well, try these: - Character: #00aa00 - Copyright: #dd00dd @@ -186,6 +169,24 @@ QListView, QListView::item { padding: 1px; } +QWidget#HydrusMediaList +{ + qproperty-hmrp_background: #020f23; + qproperty-hmrp_thumbnail_local_background_normal: #152f56; + qproperty-hmrp_thumbnail_local_border_normal: #152f56; + qproperty-hmrp_thumbnail_local_background_selected: #25477b; + qproperty-hmrp_thumbnail_local_border_selected: #b4c7d9; + qproperty-hmrp_thumbnail_not_local_background_normal: #a0522d; + qproperty-hmrp_thumbnail_not_local_border_normal: #a0522d; + qproperty-hmrp_thumbnail_not_local_background_selected: #ed5d1f; + qproperty-hmrp_thumbnail_not_local_border_selected: #b4c7d9; +} + +QWidget#HydrusTagList +{ + qproperty-htl_background: #152f56; +} + /********************************** Buttons ***********************************/ @@ -579,6 +580,11 @@ QPlainTextEdit#HydrusInvalid { background: #800000; } +QWidget#HydrusTagAutocomplete +{ + qproperty-hta_background: #ffffcc; +} + /******************************** Progress Bar ********************************/ @@ -669,50 +675,10 @@ QLocatorResultWidget#selectedLocatorResult { border-bottom: 1px solid#2b538e; } - -/* - -Here is more hydev added--now we have this tech, I am copying the default 'darkmode' colours in the options to all of the darkmode stylesheets so the default choice for new users isn't the dark/light jank-mix. Stylesheet authors are welcome to fix this up with better colours for their particular style and send them in. - -*/ - - -/* The main thumbnail grid. */ - -QWidget#HydrusMediaList -{ - qproperty-hmrp_background: #343434; - qproperty-hmrp_thumbnail_local_background_normal: #404048; - qproperty-hmrp_thumbnail_local_border_normal: #91a3b0; - qproperty-hmrp_thumbnail_local_background_selected: #708090; - qproperty-hmrp_thumbnail_local_border_selected: #dfe3e6; - qproperty-hmrp_thumbnail_not_local_background_normal: #400d02; - qproperty-hmrp_thumbnail_not_local_border_normal: #f8d0cc; - qproperty-hmrp_thumbnail_not_local_background_selected: #ab274f; - qproperty-hmrp_thumbnail_not_local_border_selected: #e34234; -} - - -/* The media viewer. */ +/**************************** Hydrus: Media Viewer ****************************/ QWidget#HydrusMediaViewer { - qproperty-hmv_background: #343434; - qproperty-hmv_text: #708090; -} - - -/* The tag autocomplete text input. */ - -QWidget#HydrusTagAutocomplete -{ - qproperty-hta_background: #536267; -} - - -/* Tag lists across the program. */ - -QWidget#HydrusTagList -{ - qproperty-htl_background: #232629; + qproperty-hmv_background: #020f23; + qproperty-hmv_text: #b4c7d9; } From 42200f08baa2ba4c16754c1e852ffc978ff9ba14 Mon Sep 17 00:00:00 2001 From: Score_Under Date: Sun, 15 Dec 2024 17:59:53 +0000 Subject: [PATCH 2/3] Add tweaked (possibly more fragile) e621 stylesheet --- static/qss/e621_redux.qss | 781 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 781 insertions(+) create mode 100644 static/qss/e621_redux.qss diff --git a/static/qss/e621_redux.qss b/static/qss/e621_redux.qss new file mode 100644 index 000000000..c606c5f86 --- /dev/null +++ b/static/qss/e621_redux.qss @@ -0,0 +1,781 @@ +/******************************************************************************* +An e621.net-inspired style/theme for Hydrus. +Created by IchHabs in February 2024 / Tweaked by scoreunder in December 2024 + +If you want to change your tag namespace colors as well, try these: +- Character: #00aa00 +- Copyright: #dd00dd +- Creator: #f2ac08 +- Invalid: #ff0000 +- Lore: #228822 +- Meta: #ffffff +- Series: #3b81ea +- Species: #ed5d1f +- System: #ffffcc +- Unnamespaced: #b4c7d9 +*******************************************************************************/ + +/******************************************************************************* +Development Notes: +- All default stylesheets mention QGroupBox, + but the actual Hydrus repository does not mention it once. +- Hydrus uses QTreeView/Widget for tables. (???) +- Qt reads hex colors as #RGB, #RRGGBB or #AARRGGBB. This file exclusivly uses + #RRGGBB and #AARRGGBB for all colors to aid with search/replace. +*******************************************************************************/ + + +/********************************** Tool Tip **********************************/ + +/* Text that shows up when hovering over something. */ +/* QToolTip {} */ +/* Not included because the 'color' property is buggy. The default is fine. */ + + +/******************************* Generic Stuff ********************************/ + +/* Pretty much everything is a widget. */ +QWidget { + color: #ffffff; + background: transparent; +} +QWidget:disabled { + color: #767676; +} +QWidget::item { + color: #b4c7d9; + border-radius: 2px; +} +QWidget::item:hover { + color: #e9f2fa; + background: #1f3c67; +} +QWidget::item:selected { + color: #ffffff; + background: #2b538e; +} +QWidget::item:pressed { + color: #e8c446; + background: #2b538e; +} +QWidget#HydrusAnimationBar { + qproperty-hab_border: #44000000; + qproperty-hab_background: #44ffffff; + qproperty-hab_nub: #ffffff; +} + +/* Most things are inside of a frame. */ +QFrame { + border: 0; + padding: 0; + margin: 0; +} + + +/****************************** Menu + Menu Bar *******************************/ + +/* The bar at the top of the main window, with stuff like 'file' and 'help'. */ +QMenuBar { + spacing: 0; +} +QMenuBar::item { + color: #b4c7d9; + padding: 1px 0.5em; +} +QMenuBar::item:selected { + color: #ffffff; + background: #152f56; +} +QMenuBar::item:pressed { + color: #e8c446; + background: #152f56; +} + +/* The list that pops up when you click on 'file', or right-click an image. */ +QMenu { + color: #ffffff; + background: #1f3c67; +} +QMenu::item { + color: #b4c7d9; + background: #1f3c67; + padding: 0.25em 16px 0.25em 4px; +} +QMenu::item:selected { + color: #e9f2fa; + background: #2b538e; +} +QMenu::item:pressed { + color: #e8c446; + background: #2b538e; +} +QMenu::separator { + background: #152f56; + height: 2px; + margin: 2px 3px; +} + + +/******************************* Tables + Lists *******************************/ + +/* Table/List rows. */ +QAbstractItemView { + alternate-background-color: #40020f23; +} +QAbstractItemView::item { + border-top: 1px solid #402B538E; + border-right: 1px solid #40020f23; + border-bottom: 1px solid #40020f23; + border-left: 1px solid #402B538E; +} + +/* Table headers. */ +QHeaderView::section { + color: #b4c7d9; + background: #193153; + border-bottom: 2px solid #020f23; + border-top-left-radius: 2px; + border-top-right-radius: 2px; + padding-left: 4px; + padding-right: 4px; +} +QHeaderView::section:hover { + color: #e9f2fa; +} + +/* Intended for expandable folder UI. Used for tables instead. */ +QTreeWidget, QTreeWidget::item { + border-radius: 2px; + padding: 1px; +} + +/* Lists with (often) clickable items. */ +QListView, QListView::item { + border: none; + padding: 1px; +} + +QWidget#HydrusMediaList +{ + qproperty-hmrp_background: #152f56; + qproperty-hmrp_thumbnail_local_background_normal: #25477b; + qproperty-hmrp_thumbnail_local_border_normal: #25477b; + qproperty-hmrp_thumbnail_local_background_selected: #2b538e; + qproperty-hmrp_thumbnail_local_border_selected: #b4c7d9; + qproperty-hmrp_thumbnail_not_local_background_normal: #a0522d; + qproperty-hmrp_thumbnail_not_local_border_normal: #a0522d; + qproperty-hmrp_thumbnail_not_local_background_selected: #ed5d1f; + qproperty-hmrp_thumbnail_not_local_border_selected: #b4c7d9; +} + + +/********************************** Buttons ***********************************/ + +/* Drop-down button field. The pop-up menu is a separate list object. */ +QComboBox { + color: #000000; + background: #e9e9ed; + /* Undocumented property! combobox-popup: */ + /* Which style of popup list to use. Fusion defaults to 1. */ + /* Disabled due to buggy behaviour. */ + combobox-popup: 0; + border: none; + border-radius: 2px; + padding: 0 3px 0 5px; + margin: 0 1px; +} +QComboBox:hover { + background: #ffffff; + border: 2px solid #e59700; + padding: 0 1px 0 3px; +} +QComboBox:on { + background: #ffffcc; + selection-background-color: #0078d7; + border: 2px solid #e59700; + padding: 0 1px 0 3px; + padding-top: 2px; +} + +QComboBox QAbstractItemView { + background: #1f3c67; +} + +/* Drop-down arrow icon. */ +QComboBox::drop-down { + border: none; + width: 9px; + padding: 3px; + subcontrol-origin: content; + subcontrol-position: top right; +} +QComboBox::down-arrow { + image: url("static/qss/e621/dropdown.svg"); +} + +/* Generic buttons. */ +QPushButton { + color: #000000; + background: #e9e9ed; + border: none; + border-radius: 6px; + min-height: 21px; + min-width: 24px; + padding: 0 3px; +} +QPushButton:disabled { + color: #767676; + background: #d0d0d7; +} +QPushButton:default { + border: 2px solid #e59700; + padding: 0 1px; +} +QPushButton:hover { + background: #ffffff; + border: 2px solid #e59700; + padding: 0 1px; +} +QPushButton:pressed { + background: #ffffcc; + padding-top: 2px; +} +QPushButton#HydrusAccept, +QPushButton#HydrusOnOffButton[hydrus_on=true] { + color: #ffffff; + background: #006400; + min-height: 21px; + min-width: 54px; + margin: 0 3px; +} +QPushButton#HydrusCancel, +QPushButton#HydrusOnOffButton[hydrus_on=false] { + color: #ffffff; + background: #800000; + min-height: 21px; + min-width: 54px; + margin: 0 3px; +} +QPushButton#HydrusAccept:default, +QPushButton#HydrusOnOffButton[hydrus_on=true]:default { + border: 2px solid #3e9e49; +} +QPushButton#HydrusCancel:default, +QPushButton#HydrusOnOffButton[hydrus_on=false]:default { + border: 2px solid #e45f5f; +} +QPushButton#HydrusAccept:hover, +QPushButton#HydrusOnOffButton[hydrus_on=true]:hover { + border: 2px solid #3e9e49; + background: #004b00; +} +QPushButton#HydrusCancel:hover, +QPushButton#HydrusOnOffButton[hydrus_on=false]:hover { + border: 2px solid #e45f5f; + background: #670000; +} +QPushButton#HydrusAccept:pressed, +QPushButton#HydrusOnOffButton[hydrus_on=true]:pressed { + padding-top: 2px; +} +QPushButton#HydrusCancel:pressed, +QPushButton#HydrusOnOffButton[hydrus_on=false]:pressed { + padding-top: 2px; +} + +/* Square button with a checkmark. */ +QCheckBox { + background: transparent; + spacing: 5px; +} +QCheckBox::indicator { + width: 14px; + height: 14px; +} +QCheckBox::indicator:unchecked { + image: url("static/qss/e621/cbox-un.svg"); +} +QCheckBox::indicator:unchecked:hover { + image: url("static/qss/e621/cbox-un-ho.svg"); +} +QCheckBox::indicator:unchecked:pressed { + image: url("static/qss/e621/cbox-un-pr.svg"); +} +QCheckBox::indicator:checked { + image: url("static/qss/e621/cbox-ch.svg"); +} +QCheckBox::indicator:checked:hover { + image: url("static/qss/e621/cbox-ch-ho.svg"); +} +QCheckBox::indicator:checked:pressed { + image: url("static/qss/e621/cbox-ch-pr.svg"); +} +QCheckBox::indicator:indeterminate { + image: url("static/qss/e621/cbox-in.svg"); +} +QCheckBox::indicator:indeterminate:hover { + image: url("static/qss/e621/cbox-in-ho.svg"); +} +QCheckBox::indicator:indeterminate:pressed { + image: url("static/qss/e621/cbox-in-pr.svg"); +} +QCheckBox#HydrusWarning { + color: #ffffff; + background: #670000; +} + +/* Circular button with a dot. */ +QRadioButton { + background: transparent; + spacing: 5px; +} +QRadioButton::indicator { + width: 14px; + height: 14px; +} +QRadioButton::indicator:unchecked { + image: url("static/qss/e621/rbtn-un.svg"); +} +QRadioButton::indicator:unchecked:hover { + image: url("static/qss/e621/rbtn-un-ho.svg"); +} +QRadioButton::indicator:unchecked:pressed { + image: url("static/qss/e621/rbtn-un-pr.svg"); +} +QRadioButton::indicator:checked { + image: url("static/qss/e621/rbtn-ch.svg"); +} +QRadioButton::indicator:checked:hover { + image: url("static/qss/e621/rbtn-ch-ho.svg"); +} +QRadioButton::indicator:checked:pressed { + image: url("static/qss/e621/rbtn-ch-pr.svg"); +} + + +/********************************* Scroll Bar *********************************/ + +/* Visual indicator for scrolling vertically or horizontally. */ +QScrollBar { + background: #071020; +} +QScrollBar:vertical { + width: 13px; + margin: 13px 0; +} +QScrollBar:horizontal { + height: 13px; + margin: 0 13px; +} + +/* Handle - The bar in the middle that you can drag with your mouse. */ +QScrollBar::handle { + background: #77ffffff; + border-radius: 2px; +} +QScrollBar::handle:hover { + background: #55ffffff; +} +QScrollBar::handle:pressed { + background: #33ffffff; +} +QScrollBar::handle:vertical { + min-height: 13px; +} +QScrollBar::handle:horizontal { + min-width: 13px; +} + +/* Add/Subtract Line Buttons - The buttons at each end. */ +QScrollBar::sub-line, +QScrollBar::add-line { + background: #00ffffff; +} +QScrollBar::sub-line:hover, +QScrollBar::add-line:hover { + background: #11ffffff; +} +QScrollBar::sub-line:pressed, +QScrollBar::add-line:pressed { + background: #22ffffff; +} +QScrollBar::add-line:vertical { + height: 13px; + subcontrol-position: bottom; + subcontrol-origin: margin; +} +QScrollBar::sub-line:vertical { + height: 13px; + subcontrol-position: top; + subcontrol-origin: margin; +} +QScrollBar::add-line:horizontal { + width: 13px; + subcontrol-position: right; + subcontrol-origin: margin; +} +QScrollBar::sub-line:horizontal { + width: 13px; + subcontrol-position: left; + subcontrol-origin: margin; +} + +/* Arrows - Decorative arrow inside the add/sub buttons. */ +QScrollBar::up-arrow:vertical { + image: url("static/qss/e621/sbar-u.svg"); +} +QScrollBar::down-arrow:vertical { + image: url("static/qss/e621/sbar-d.svg"); +} +QScrollBar::right-arrow:horizontal { + image: url("static/qss/e621/sbar-r.svg"); +} +QScrollBar::left-arrow:horizontal { + image: url("static/qss/e621/sbar-l.svg"); +} + +/* Add/Subtract Page Buttons - Area below/above the handle. */ +QScrollBar::add-page:vertical, +QScrollBar::sub-page:vertical, +QScrollBar::add-page:horizontal, +QScrollBar::sub-page:horizontal { + background: transparent; +} + + +/********************************** Spin Box **********************************/ + +/* Like a line edit box, but it only allows numbers. */ +/* Also includes Date Time Edit as it's visually the same thing. */ +QSpinBox, +QDateTimeEdit { + font-family: "Consolas","Liberation Mono","Courier New",monospace; + color: #000000; + background: #ffffff; + selection-color: #ffffff; + selection-background-color: #0078d7; + min-height: 21px; + min-width: 42px; + border-radius: 2px; + padding-right: 3px; +} +QSpinBox:disabled, +QDateTimeEdit:disabled { + color: #767676; + background: #d0d0d7; +} +QSpinBox:focus, +QDateTimeEdit:focus { + background: #ffffcc; + placeholder-text-color: #76765e; +} +QSpinBox::up-button, +QDateTimeEdit::up-button { + background: #e9e9ed; + width: 18px; + border-radius: 2px; + subcontrol-origin: border; + subcontrol-position: top right; +} +QSpinBox::down-button, +QDateTimeEdit::down-button { + background: #e9e9ed; + width: 18px; + border-radius: 2px; + subcontrol-origin: border; + subcontrol-position: bottom right; +} +QSpinBox::up-arrow, +QDateTimeEdit::up-arrow { + image: url("static/qss/e621/sbox-u.svg"); + width: 8px; + height: 8px; +} +QSpinBox::down-arrow, +QDateTimeEdit::down-arrow { + image: url("static/qss/e621/sbox-d.svg"); + width: 8px; + height: 8px; +} +QSpinBox::up-button:hover, QSpinBox::down-button:hover, +QDateTimeEdit::up-button:hover, QDateTimeEdit::down-button:hover { + background: #d0d0d7; +} +QSpinBox::up-button:pressed, QSpinBox::down-button:pressed, +QDateTimeEdit::up-button:pressed, QDateTimeEdit::down-button:pressed { + background: #b4b4be; +} +QSpinBox::up-button:disabled, QSpinBox::up-button:off, +QSpinBox::down-button:disabled, QSpinBox::down-button:off, +QDateTimeEdit::up-button:disabled, QDateTimeEdit::up-button:off, +QDateTimeEdit::down-button:disabled, QDateTimeEdit::down-button:off { + background: #767676; +} + + +/*********************** Line, Text and Plain Text Edit ***********************/ + +QLineEdit { + font-family: "Consolas","Liberation Mono","Courier New",monospace; + color: #000000; + background: #ffffff; + selection-color: #ffffff; + selection-background-color: #0078d7; + placeholder-text-color: #767676; + border-radius: 2px; + min-height: 21px; + min-width: 42px; +} +QTextEdit, QPlainTextEdit { + font-family: "Consolas","Liberation Mono","Courier New",monospace; + color: #000000; + background: #ffffff; + selection-color: #ffffff; + selection-background-color: #0078d7; + placeholder-text-color: #767676; + border-radius: 2px; + min-height: 21px; + min-width: 42px; +} +QLineEdit:disabled, QTextEdit:disabled, QPlainTextEdit:disabled { + color: #767676; + background: #e9e9ed; + placeholder-text-color: #767676; +} +QLineEdit:focus, QTextEdit:focus, QPlainTextEdit:focus { + background: #ffffcc; + placeholder-text-color: #76765e; +} +QLineEdit:read-only, QTextEdit:read-only, QPlainTextEdit:read-only { + background: #d0d0d7; +} +QLineEdit#HydrusValid, +QTextEdit#HydrusValid, +QPlainTextEdit#HydrusValid { + background: #006400; +} +QLineEdit#HydrusIndeterminate, +QTextEdit#HydrusIndeterminate, +QPlainTextEdit#HydrusIndeterminate { + background: #5d4600; +} +QLineEdit#HydrusInvalid, +QTextEdit#HydrusInvalid, +QPlainTextEdit#HydrusInvalid { + background: #800000; +} + +QWidget#HydrusTagAutocomplete +{ + qproperty-hta_background: #ffffcc; +} + + +/******************************** Progress Bar ********************************/ + +QProgressBar { + color: #ffffff; + background: #152f56; + text-align: center; +} +QProgressBar::chunk { + background-color: #006400; +} + + +/**************************** Tab Widget + Tab Bar ****************************/ + +/* Areas with multiple tabs, like pages and tagging. */ + +/* QTabBar: The clickable tab labels. */ +QTabBar { + qproperty-drawBase: 0; + color: #b4c7d9; + border: none; +} +QTabBar::tab { + border-top-left-radius: 3px; + border-top-right-radius: 3px; + padding: 0.25em 0.5em; +} +QTabBar::tab:hover { + color: #e9f2fa; +} +QTabBar::tab:selected { + color: #ffffff; + background: #152f56; +} +QTabBar::tab:pressed { + color: #e8c446; + background: #152f56; +} + + +/*********************************** Label ************************************/ + +/* Text labels. */ + +QLabel#HydrusHyperlink { + qproperty-link_color: #b4c7d9; +} +QLabel#HydrusValid { + color: #3e9e49; +} +QLabel#HydrusIndeterminate { + color: #ffe666; +} +QLabel#HydrusInvalid { + color: #e45f5f; +} +QLabel#HydrusWarning { + color: #ffffff; + background: #670000; + border-left: 3px solid #e45f5f; + padding: 0.5em; +} + + +/****************************** Hydrus: Locator *******************************/ + +/* The command palette. (Ctrl+P) */ + +QLocatorResultWidget#unselectedLocatorResult { + background: #1f3c67; + border-bottom: 1px solid#2b538e; +} +QLocatorResultWidget#selectedLocatorResult { + background: #2b538e; + border-bottom: 1px solid#2b538e; +} + +/**************************** Hydrus: Media Viewer ****************************/ + +QWidget#HydrusMediaViewer +{ + qproperty-hmv_background: #020f23; + qproperty-hmv_text: #b4c7d9; +} + +/* Make the preview viewer the same colour as the rest of the page */ +Page QWidget#HydrusMediaViewer +{ + qproperty-hmv_background: #152f56; + qproperty-hmv_text: #b4c7d9; +} + +/***************************** Positional stylings ****************************/ + +/* Windows */ +QDialog, QMainWindow, Frame { + background-color: #020f23; /* e621 color-background */ + background-image: url("static/qss/e621/bg.svg"); + background-position: top left; + background-repeat: repeat-xy; +} + +/* QTabWidget: The area of a tab. */ +QTabWidget::pane { + border: none; + padding: 0 1em; +} + +QTabWidget::tab-bar { + left: 1.5em; +} + +Page > QSplitter { + background-color: #152f56; + border-radius: 6px; +} + +/* Deeper nested tabs need lighter colours */ +QTabWidget Frame QTabWidget QTabWidget QTabBar::tab:selected, +Frame QTabWidget QTabWidget QTabBar::tab:selected, +QTabWidget QDialog QTabWidget QTabWidget QTabBar::tab:selected, +QDialog QTabWidget QTabWidget QTabBar::tab:selected, +QTabWidget QTabWidget QTabBar::tab:selected { + color: #ffffff; + background: #1f3c67; +} + +QTabWidget Frame QTabWidget QTabWidget QTabBar::tab:pressed, +Frame QTabWidget QTabWidget QTabBar::tab:pressed, +QTabWidget QDialog QTabWidget QTabWidget QTabBar::tab:pressed, +QDialog QTabWidget QTabWidget QTabBar::tab:pressed, +QTabWidget QTabWidget QTabBar::tab:pressed { + color: #e8c446; + background: #1f3c67; +} + +QTabWidget Frame QTabWidget QTabBar::tab:selected, +Frame QTabWidget QTabBar::tab:selected, +QTabWidget QDialog QTabWidget QTabBar::tab:selected, +QDialog QTabWidget QTabBar::tab:selected, +QTabBar::tab:selected { + color: #ffffff; + background: #152f56; +} + +QTabWidget Frame QTabWidget QTabWidget QTabBar::tab:pressed, +Frame QTabWidget QTabWidget QTabBar::tab:pressed, +QTabWidget QDialog QTabWidget QTabWidget QTabBar::tab:pressed, +QDialog QTabWidget QTabWidget QTabBar::tab:pressed, +QTabBar::tab:pressed { + color: #e8c446; + background: #152f56; +} + +QTabWidget QDialog QTabWidget QStackedWidget, +QDialog QTabWidget QStackedWidget, +QTabWidget Frame QTabWidget QStackedWidget, +Frame QTabWidget QStackedWidget, +QTabWidget QStackedWidget { + background: #152f56; +} + +QTabWidget QDialog QTabWidget QTabWidget QStackedWidget, +QDialog QTabWidget QTabWidget QStackedWidget, +QTabWidget Frame QTabWidget QTabWidget QStackedWidget, +Frame QTabWidget QTabWidget QStackedWidget, +QTabWidget QTabWidget QStackedWidget { + background: #1f3c67; +} + +QTabWidget QStackedWidget { + background: #152f56; + border-radius: 6px; +} + +Page QSplitter::handle { + padding: 4px; + background: transparent; +} + +CanvasFrame CanvasHoverFrame, +ManageOptionsPanel { + background: #152f56; /* e621 color-foreground */ + border-radius: 6px; +} + +PopupWindow { + padding: 0.5em; + background: #1f3c67; + border-radius: 6px; +} + +Page > .QFrame /* <- dropdowns, which get reparented and have no unique class or name so are hard to catch */ { + padding: 0.5em; + background: #152f56; + border: 3px solid #1f3c67; + border-radius: 6px; +} + +QWidget#HydrusTagList +{ + qproperty-htl_background: #152f56; +} + +QTabWidget QTabWidget QStackedWidget QWidget#HydrusTagList +{ + qproperty-htl_background: #1f3c67; +} From 5ddfdde4a4b37ebebd78c8c76d3f64bea7218a7f Mon Sep 17 00:00:00 2001 From: Score_Under Date: Sun, 15 Dec 2024 18:56:17 +0000 Subject: [PATCH 3/3] e621_redux: hextile background on Page And make hmv_background transparent to reduce duplication --- hydrus/client/gui/lists/ClientGUIListBoxes.py | 23 ++++++++++++++++--- .../ClientGUIMediaResultsPanelThumbnails.py | 18 +++++++-------- static/qss/e621/bg-small.svg | 1 + static/qss/e621_redux.qss | 18 +++++++-------- 4 files changed, 38 insertions(+), 22 deletions(-) create mode 100644 static/qss/e621/bg-small.svg diff --git a/hydrus/client/gui/lists/ClientGUIListBoxes.py b/hydrus/client/gui/lists/ClientGUIListBoxes.py index c501f93d8..448672c9f 100644 --- a/hydrus/client/gui/lists/ClientGUIListBoxes.py +++ b/hydrus/client/gui/lists/ClientGUIListBoxes.py @@ -2091,9 +2091,12 @@ def _Redraw( self, painter ): bg_colour = self._GetBackgroundColour() - painter.setBackground( QG.QBrush( bg_colour ) ) - - painter.eraseRect( painter.viewport() ) + if self._draw_background: + + painter.setBackground( QG.QBrush( bg_colour ) ) + + painter.eraseRect( painter.viewport() ) + if len( self._ordered_terms ) == 0: @@ -2846,6 +2849,8 @@ def __init__( self, parent, *args, tag_display_type: int = ClientTags.TAG_DISPLA self._sibling_connector_namespace = CG.client_controller.new_options.GetNoneableString( 'sibling_connector_custom_namespace_colour' ) + self._draw_background = True + self._UpdateBackgroundColour() CG.client_controller.sub( self, 'ForceTagRecalc', 'refresh_all_tag_presentation_gui' ) @@ -4043,6 +4048,18 @@ def set_htl_background( self, colour ): htl_background = QC.Property( QG.QColor, get_htl_background, set_htl_background ) + def get_draw_background( self ): + + return self._draw_background + + + def set_draw_background( self, draw_background ): + + self._draw_background = draw_background + + + draw_background = QC.Property( bool, get_draw_background, set_draw_background ) + class ListBoxTagsPredicates( ListBoxTags ): diff --git a/hydrus/client/gui/pages/ClientGUIMediaResultsPanelThumbnails.py b/hydrus/client/gui/pages/ClientGUIMediaResultsPanelThumbnails.py index a1214ca7b..2b11b40ef 100644 --- a/hydrus/client/gui/pages/ClientGUIMediaResultsPanelThumbnails.py +++ b/hydrus/client/gui/pages/ClientGUIMediaResultsPanelThumbnails.py @@ -252,24 +252,22 @@ def _DrawCanvasPage( self, page_index, canvas_page ): bg_colour = ClientGUIFunctions.GetLighterDarkerColour( bg_colour ) + comp_mode = painter.compositionMode() + + painter.setCompositionMode( QG.QPainter.CompositionMode_Source ) + if new_options.GetNoneableString( 'media_background_bmp_path' ) is not None: - comp_mode = painter.compositionMode() - - painter.setCompositionMode( QG.QPainter.CompositionMode_Source ) - painter.setBackground( QG.QBrush( QC.Qt.GlobalColor.transparent ) ) - painter.eraseRect( painter.viewport() ) - - painter.setCompositionMode( comp_mode ) - else: painter.setBackground( QG.QBrush( bg_colour ) ) - painter.eraseRect( painter.viewport() ) - + + painter.eraseRect( painter.viewport() ) + + painter.setCompositionMode( comp_mode ) # diff --git a/static/qss/e621/bg-small.svg b/static/qss/e621/bg-small.svg new file mode 100644 index 000000000..f49c1e5e6 --- /dev/null +++ b/static/qss/e621/bg-small.svg @@ -0,0 +1 @@ + diff --git a/static/qss/e621_redux.qss b/static/qss/e621_redux.qss index c606c5f86..a65f6af45 100644 --- a/static/qss/e621_redux.qss +++ b/static/qss/e621_redux.qss @@ -157,7 +157,9 @@ QListView, QListView::item { QWidget#HydrusMediaList { - qproperty-hmrp_background: #152f56; + /* Override background drawing; use our own image and colour from the QSplitter parent */ + qproperty-hmrp_background: transparent; + qproperty-hmrp_thumbnail_local_background_normal: #25477b; qproperty-hmrp_thumbnail_local_border_normal: #25477b; qproperty-hmrp_thumbnail_local_background_selected: #2b538e; @@ -652,14 +654,7 @@ QLocatorResultWidget#selectedLocatorResult { QWidget#HydrusMediaViewer { - qproperty-hmv_background: #020f23; - qproperty-hmv_text: #b4c7d9; -} - -/* Make the preview viewer the same colour as the rest of the page */ -Page QWidget#HydrusMediaViewer -{ - qproperty-hmv_background: #152f56; + qproperty-hmv_background: transparent; qproperty-hmv_text: #b4c7d9; } @@ -685,6 +680,10 @@ QTabWidget::tab-bar { Page > QSplitter { background-color: #152f56; + background-image: url("static/qss/e621/bg-small.svg"); + background-position: top left; + background-repeat: repeat-x; + background-attachment: fixed; border-radius: 6px; } @@ -773,6 +772,7 @@ Page > .QFrame /* <- dropdowns, which get reparented and have no unique class or QWidget#HydrusTagList { qproperty-htl_background: #152f56; + qproperty-draw_background: 0; } QTabWidget QTabWidget QStackedWidget QWidget#HydrusTagList