1
0
Fork 0
mirror of synced 2024-06-02 02:34:40 +12:00
Rare/rare/resources/static_css/stylesheet.py

226 lines
6.2 KiB
Python
Raw Normal View History

import os
import sys
from typing import Union, Type
import qstylizer.style
from PyQt5.QtCore import QDir, QObject
from PyQt5.QtGui import QColor
from PyQt5.pyrcc import RCCResourceLibrary, CONSTANT_COMPRESSTHRESHOLD_DEFAULT
from PyQt5.sip import wrappertype
from rare.utils.misc import widget_object_name
verbose = True
compressLevel = 6
compressThreshold = CONSTANT_COMPRESSTHRESHOLD_DEFAULT
resourceRoot = ''
def processResourceFile(filenamesIn, filenameOut, listFiles):
if verbose:
sys.stderr.write("PyQt5 resource compiler\n")
# Setup.
library = RCCResourceLibrary()
library.setInputFiles(filenamesIn)
library.setVerbose(verbose)
library.setCompressLevel(compressLevel)
library.setCompressThreshold(compressThreshold)
library.setResourceRoot(resourceRoot)
if not library.readFiles():
return False
if filenameOut == '-':
filenameOut = ''
if listFiles:
# Open the output file or use stdout if not specified.
if filenameOut:
try:
out_fd = open(filenameOut, 'w')
except Exception:
sys.stderr.write(
"Unable to open %s for writing\n" % filenameOut)
return False
else:
out_fd = sys.stdout
for df in library.dataFiles():
out_fd.write("%s\n" % QDir.cleanPath(df))
if out_fd is not sys.stdout:
out_fd.close()
return True
return library.output(filenameOut)
def css_name(widget: Union[wrappertype, QObject, Type], subwidget: str = ""):
return f"#{widget_object_name(widget, '')}{subwidget}"
css = qstylizer.style.StyleSheet()
# InfoLabel
css.QLabel["#InfoLabel"].setValues(
color="#999",
fontStyle="italic",
fontWeight="normal",
)
# [Un]InstallButton
css.QPushButton["#InstallButton"].setValues(
borderColor=QColor(0, 180, 0).name(),
backgroundColor=QColor(0, 120, 0).name()
)
css.QPushButton["#InstallButton"].hover.setValues(
borderColor=QColor(0, 135, 0).name(),
backgroundColor=QColor(0, 90, 0).name()
)
css.QPushButton["#InstallButton"].disabled.setValues(
borderColor=QColor(0, 60, 0).name(),
backgroundColor=QColor(0, 40, 0).name()
)
css.QPushButton["#UninstallButton"].setValues(
borderColor=QColor(180, 0, 0).name(),
backgroundColor=QColor(120, 0, 0).name()
)
css.QPushButton["#UninstallButton"].hover.setValues(
borderColor=QColor(135, 0, 0).name(),
backgroundColor=QColor(90, 0, 0).name()
)
css.QPushButton["#UninstallButton"].disabled.setValues(
borderColor=QColor(60, 0, 0).name(),
backgroundColor=QColor(40, 0, 0).name()
)
# QueueWorkerLabel
css.QLabel["#QueueWorkerLabel"].setValues(
borderWidth="1px",
borderStyle="solid",
borderRadius="3px",
)
verify_color = QColor("#d6af57")
css.QLabel["#QueueWorkerLabel"]['[workerType="Verify"]'].setValues(
borderColor=verify_color.darker(200).name(),
backgroundColor=verify_color.darker(400).name()
)
move_color = QColor("#41cad9")
css.QLabel["#QueueWorkerLabel"]['[workerType="Move"]'].setValues(
borderColor=move_color.darker(200).name(),
backgroundColor=move_color.darker(400).name()
)
# ProgressLabel
from rare.components.tabs.games.game_widgets.library_widget import ProgressLabel
css.QLabel[css_name(ProgressLabel)].setValues(
borderWidth="1px",
borderRadius="5%",
fontWeight="bold",
fontSize="16pt",
)
# IconGameWidget
from rare.components.tabs.games.game_widgets.icon_widget import IconWidget
icon_background_props = {
"backgroundColor": "rgba(0, 0, 0, 65%)",
}
css.QLabel[css_name(IconWidget, "StatusLabel")].setValues(
fontWeight="bold",
color="white",
**icon_background_props,
borderRadius="5%",
borderTopLeftRadius="11%",
borderTopRightRadius="11%",
)
css.QWidget[css_name(IconWidget, "MiniWidget")].setValues(
color="rgb(238, 238, 238)",
**icon_background_props,
borderRadius="5%",
borderBottomLeftRadius="9%",
borderBottomRightRadius="9%",
)
icon_bottom_label_props = {
"color": "white",
"backgroundColor": "rgba(0, 0, 0, 0%)",
}
css.QLabel[css_name(IconWidget, "TitleLabel")].setValues(
fontWeight="bold",
**icon_bottom_label_props,
)
css.QLabel[css_name(IconWidget, "TooltipLabel")].setValues(
**icon_bottom_label_props,
)
icon_square_button_props = {
"border": "1px solid black",
"borderRadius": "10%",
}
icon_square_button_props.update(icon_background_props)
css.QPushButton[css_name(IconWidget, "Button")].setValues(
**icon_square_button_props
)
css.QPushButton[css_name(IconWidget, "Button")].hover.borderColor.setValue("gray")
# ListGameWidget
from rare.components.tabs.games.game_widgets.list_widget import ListWidget
css.QLabel[css_name(ListWidget, "TitleLabel")].fontWeight.setValue("bold")
list_status_label_props = {
"color": "white",
"backgroundColor": "rgba(0, 0, 0, 75%)",
"border": "1px solid black",
"borderRadius": "5px",
}
css.QLabel[css_name(ListWidget, "StatusLabel")].setValues(
fontWeight="bold",
**list_status_label_props,
)
css.QLabel[css_name(ListWidget, "TooltipLabel")].setValues(
**list_status_label_props,
)
css.QPushButton[css_name(ListWidget, "Button")].textAlign.setValue("left")
css.QLabel[css_name(ListWidget, "InfoLabel")].color.setValue("#999")
# WaitingSpinner
from rare.utils.extra_widgets import WaitingSpinner
css.QLabel[css_name(WaitingSpinner)].setValues(
marginLeft="auto",
marginRight="auto",
)
# SelectViewWidget
from rare.utils.extra_widgets import SelectViewWidget
css.QPushButton[css_name(SelectViewWidget, "Button")].setValues(
border="none",
backgroundColor="transparent",
)
# ButtonLineEdit
from rare.utils.extra_widgets import ButtonLineEdit
css.QPushButton[css_name(ButtonLineEdit, "Button")].setValues(
backgroundColor="transparent",
border="0px",
padding="0px",
)
if __name__ == "__main__":
with open("stylesheet.qss", "w") as qss:
qss.write(f'\n/* This file is auto-generated from "{os.path.basename(__file__)}". DO NOT EDIT!!! */\n\n')
qss.write(css.toString())
if not processResourceFile(["stylesheet.qrc"], "__init__.py", False):
print("Error while creating compiled resources")
sys.exit(1)
sys.exit(0)