theme switch

This commit is contained in:
BarsTiger
2022-05-29 15:36:08 +03:00
parent 8bc4397805
commit 41523cd1c5
6 changed files with 330 additions and 291 deletions

View File

@@ -3,17 +3,21 @@ import json
class Settings:
@staticmethod
def fix() -> None:
settings = {
def default():
return {
"animation": "InOutQuart",
"theme": "Black acrylic",
"app_id": None,
"key": None,
"secret": None,
"cluster": None,
"client_id": None
}
@staticmethod
def fix() -> None:
with open("data/settings.json", "w") as file:
json.dump(settings, file)
json.dump(Settings.default(), file)
@staticmethod
def get_settings() -> dict:
@@ -61,3 +65,11 @@ class Settings:
json.dump(settings, file)
return settings
@staticmethod
def get(key: str) -> any:
try:
return Settings.get_settings()[key]
except KeyError:
Settings.update(key, Settings.default()[key])
return Settings.default()[key]

View File

@@ -36,7 +36,9 @@ MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
ui.pagesWidget.setCurrentIndex(0)
GlobalBlur(MainWindow.winId(), acrylic=True)
if 'acrylic' in Settings.get("theme"):
GlobalBlur(MainWindow.winId(), acrylic=True)
# Trying to get settings or set default
try:

View File

@@ -25,6 +25,7 @@ def t_popup(title, text, style=0):
def fill_settings(ui) -> None:
settings = Settings.get_settings()
ui.chooseAnimationBox.setCurrentText(settings.get("animation"))
ui.chooseThemeBox.setCurrentText(settings.get("theme"))
ui.pusher_app_id_edit.setText(settings.get("app_id"))
ui.pusher_key_edit.setText(settings.get("key"))
ui.pusher_secret_edit.setText(settings.get("secret"))
@@ -37,6 +38,7 @@ def update_settings(ui) -> None:
settings = {
"animation": get_text(ui.chooseAnimationBox.currentText()),
"theme": get_text(ui.chooseThemeBox.currentText()),
"app_id": get_text(ui.pusher_app_id_edit.text().strip()),
"key": get_text(ui.pusher_key_edit.text().strip()),
"secret": get_text(ui.pusher_secret_edit.text().strip()),

View File

@@ -9,6 +9,7 @@
from PyQt5 import QtCore, QtGui, QtWidgets
import gui.styles as styles
class Ui_MainWindow(object):
@@ -26,269 +27,7 @@ class Ui_MainWindow(object):
icon.addPixmap(QtGui.QPixmap(":/img/img/logo.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
MainWindow.setWindowIcon(icon)
MainWindow.setAutoFillBackground(False)
MainWindow.setStyleSheet("\n"
"QWidget {\n"
" background-color: rgba(30, 30, 30, 0.1);\n"
" color: white;\n"
" font: 10pt \"Segoe UI\";\n"
"}\n"
"\n"
"\n"
"QScrollBar:vertical,\n"
"QScrollBar:horizontal {\n"
" border: none;\n"
" background: rgba(30, 30, 30, 0);\n"
" width: 10px;\n"
" margin: 15px 0 15px 0;\n"
" border-radius: 0px;\n"
"}\n"
"\n"
"QScrollBar::handle:vertical,\n"
"QScrollBar::handle:horizontal { \n"
" background-color: rgba(139, 139, 139, 0);\n"
" min-height: 30px;\n"
" border-radius: 5px;\n"
"}\n"
"\n"
"QScrollBar::handle:vertical:hover,\n"
"QScrollBar::handle:vertical:pressed,\n"
"QScrollBar::handle:horizontal:hover,\n"
"QScrollBar::handle:horizontal:pressed { \n"
" background-color: rgba(149, 149, 149, 0);\n"
"}\n"
"\n"
"QScrollBar::sub-line:vertical,\n"
"QScrollBar::add-line:vertical,\n"
"QScrollBar::up-arrow:vertical,\n"
"QScrollBar::down-arrow:vertical {\n"
" height: 0px;\n"
"}\n"
"\n"
"QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical,\n"
"QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical, \n"
"QScrollBar::up-arrow:horizontal, QScrollBar::down-arrow:horizontal,\n"
"QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal {\n"
" background: none;\n"
"}\n"
"\n"
"\n"
"QPushButton {\n"
" color: white;\n"
" border-width: 1px;\n"
" border-radius:6px;\n"
" border-style: solid;\n"
" border-color: rgba(48, 48, 48, 0.5);\n"
" background-color: rgba(44, 45, 46, 0.3);\n"
"}\n"
"QPushButton:hover {\n"
" border-width: 2px;\n"
" background-color: rgba(50, 50, 50, 0.7);\n"
"}\n"
"QPushButton:pressed {\n"
" background-color: rgba(38, 39, 40, 0.7);\n"
"}\n"
"QPushButton:disabled {\n"
" background-color: rgba(67, 67, 67, 0.7);\n"
" border-color: rgba(0, 0, 0, 0.7);\n"
"}\n"
"\n"
"\n"
"QLineEdit, QTextBrowser, QPlainTextEdit, QTextEdit {\n"
" border-width: 1px;\n"
" border-radius: 5px;\n"
" border-style: solid;\n"
" border-color: rgba(48, 48, 48);\n"
" background-color: rgba(36, 36, 36, 0);\n"
" font: 10pt \"Segoe UI\";\n"
"}\n"
"\n"
"\n"
"QListWidget {\n"
" border-width: 1px;\n"
" border-radius: 15px;\n"
" border-style: solid;\n"
" border-color: rgba(48, 48, 48);\n"
" padding: 10px;\n"
" background-color: rgba(100, 100, 100, 0);\n"
" font: 10pt \"Segoe UI\";\n"
"}\n"
"QListWidget:item {\n"
" background-color: rgba(36, 36, 36, 0);\n"
" selection-color: white;\n"
"}\n"
"QListWidget:item:hover {\n"
" background-color: rgba(50, 50, 50, 0);\n"
"}\n"
"QListWidget:item:selected {\n"
" background-color: rgba(119, 119, 119, 1);\n"
"}\n"
"\n"
"\n"
"QComboBox\n"
"{\n"
" border-width: 1px;\n"
" border-radius:6px;\n"
" border-style: solid;\n"
" border-color: rgba(48, 48, 48);\n"
" background-color: rgba(44, 45, 46, 0);\n"
" color: white;\n"
"}\n"
"\n"
"QComboBox::disabled\n"
"{\n"
" background-color: rgba(67, 67, 67, 0);\n"
" color: #656565;\n"
" border-color: rgba(67, 67, 67);\n"
"}\n"
"\n"
"QComboBox:hover\n"
"{\n"
" background-color: rgba(50, 50, 50, 0);\n"
"}\n"
"\n"
"QComboBox:on\n"
"{\n"
" background-color: rgba(67, 67, 67, 0);\n"
"}\n"
"\n"
"QComboBox QAbstractItemView\n"
"{\n"
" background-color: rgba(67, 67, 67, 0);\n"
" color: #ffffff;\n"
" selection-background-color: rgba(119, 119, 119, 0);\n"
" selection-color: white;\n"
" outline: 0;\n"
"}\n"
"\n"
"QComboBox::drop-down\n"
"{\n"
" subcontrol-origin: padding;\n"
" subcontrol-position: top right;\n"
" border-radius: 6px; \n"
"}\n"
"\n"
"\n"
"QTabBar::tab\n"
"{\n"
" background-color: rgba(44, 45, 46, 0);\n"
" color: #ffffff;\n"
" border-style: solid;\n"
" border-width: 1px;\n"
" border-top-left-radius: 3px;\n"
" border-top-right-radius: 3px;\n"
" border-color: rgba(48, 48, 48);\n"
" padding: 5px;\n"
"}\n"
"\n"
"QTabBar::tab:disabled\n"
"{\n"
" background-color: rgba(101, 101, 101, 0);\n"
" color: #656565;\n"
"}\n"
"\n"
"QTabWidget::pane \n"
"{\n"
" background-color: rgba(160, 160, 160, 0);\n"
" color: #ffffff;\n"
" border: 3px solid;\n"
" border-radius: 15px;\n"
" border-color: rgba(28, 28, 28);\n"
"}\n"
"\n"
"QTabBar::tab:selected\n"
"{\n"
" background-color: rgba(38, 39, 40, 0);\n"
" color: #ffffff;\n"
" border-style: solid;\n"
" border-width: 1px;\n"
" border-top-left-radius: 3px;\n"
" border-top-right-radius: 3px;\n"
" border-color: rgba(48, 48, 48);\n"
" padding: 5px;\n"
"}\n"
"\n"
"QTabBar::tab:selected:disabled\n"
"{\n"
" background-color: rgba(64, 64, 64, 0);\n"
" color: #656565;\n"
"}\n"
"\n"
"QTabBar::tab:!selected \n"
"{\n"
" background-color: rgba(38, 38, 38, 0);\n"
"}\n"
"\n"
"QTabBar::tab:!selected:hover \n"
"{\n"
" background-color: rgba(50, 50, 50, 0);\n"
"}\n"
"\n"
"QTabBar::tab:top:!selected \n"
"{\n"
" margin-top: 3px;\n"
"}\n"
"\n"
"QTabBar::tab:bottom:!selected \n"
"{\n"
" margin-bottom: 3px;\n"
"}\n"
"\n"
"QTabBar::tab:top, QTabBar::tab:bottom \n"
"{\n"
" min-width: 8ex;\n"
" margin-right: -1px;\n"
" padding: 5px 10px 5px 10px;\n"
"}\n"
"\n"
"QTabBar::tab:top:selected \n"
"{\n"
" border-bottom-color: none;\n"
"}\n"
"\n"
"QTabBar::tab:bottom:selected \n"
"{\n"
" border-top-color: none;\n"
"}\n"
"\n"
"QTabBar::tab:top:last, QTabBar::tab:bottom:last,\n"
"QTabBar::tab:top:only-one, QTabBar::tab:bottom:only-one \n"
"{\n"
" margin-right: 0;\n"
"}\n"
"\n"
"QTabBar::tab:left:!selected \n"
"{\n"
" margin-right: 3px;\n"
"}\n"
"\n"
"QTabBar::tab:right:!selected\n"
"{\n"
" margin-left: 3px;\n"
"}\n"
"\n"
"QTabBar::tab:left, QTabBar::tab:right \n"
"{\n"
" min-height: 8ex;\n"
" margin-bottom: -1px;\n"
" padding: 10px 5px 10px 5px;\n"
"}\n"
"\n"
"QTabBar::tab:left:selected \n"
"{\n"
" border-left-color: none;\n"
"}\n"
"\n"
"QTabBar::tab:right:selected \n"
"{\n"
" border-right-color: none;\n"
"}\n"
"\n"
"QTabBar::tab:left:last, QTabBar::tab:right:last,\n"
"QTabBar::tab:left:only-one, QTabBar::tab:right:only-one \n"
"{\n"
" margin-bottom: 0;\n"
"}\n"
"")
MainWindow.setStyleSheet(styles.centralwidget())
MainWindow.setLocale(QtCore.QLocale(QtCore.QLocale.Russian, QtCore.QLocale.Ukraine))
MainWindow.setDockOptions(QtWidgets.QMainWindow.AllowTabbedDocks|QtWidgets.QMainWindow.AnimatedDocks)
self.centralwidget = QtWidgets.QWidget(MainWindow)
@@ -301,28 +40,7 @@ class Ui_MainWindow(object):
self.leftMenu.setMinimumSize(QtCore.QSize(60, 0))
self.leftMenu.setMaximumSize(QtCore.QSize(60, 16777215))
self.leftMenu.setFocusPolicy(QtCore.Qt.NoFocus)
self.leftMenu.setStyleSheet("\n"
"QListWidget {\n"
" border-width: 0px;\n"
" border-radius: 0px;\n"
" border: none;\n"
" padding: 0px;\n"
" background-color: rgba(36, 36, 36, 0);\n"
" font: 10pt \"Segoe UI\";\n"
"}\n"
"QListWidget:item {\n"
" padding-left: 10px;\n"
" height: 60px;\n"
" background-color: rgba(25, 25, 25, 0);\n"
" selection-color: rgba(255, 255, 255);\n"
"}\n"
"QListWidget:item:hover {\n"
" background-color: rgba(50, 50, 50, 0);\n"
"}\n"
"QListWidget:item:selected {\n"
" background-color: rgba(38, 39, 40, 0);\n"
"}\n"
"")
self.leftMenu.setStyleSheet(styles.menupage())
self.leftMenu.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.leftMenu.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.leftMenu.setAutoScroll(False)
@@ -599,6 +317,16 @@ class Ui_MainWindow(object):
self.chooseAnimationBox.addItem("")
self.chooseAnimationBox.addItem("")
self.verticalLayout_7.addWidget(self.chooseAnimationBox, 0, QtCore.Qt.AlignTop)
self.chooseThemeLabel = QtWidgets.QLabel(self.visualSettingsTab)
self.chooseThemeLabel.setObjectName("chooseThemeLabel")
self.verticalLayout_7.addWidget(self.chooseThemeLabel)
self.chooseThemeBox = QtWidgets.QComboBox(self.visualSettingsTab)
self.chooseThemeBox.setMinimumSize(QtCore.QSize(0, 30))
self.chooseThemeBox.setObjectName("chooseThemeBox")
self.chooseThemeBox.addItem("")
self.chooseThemeBox.addItem("")
self.chooseThemeBox.addItem("")
self.verticalLayout_7.addWidget(self.chooseThemeBox)
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout_7.addItem(spacerItem)
self.settingsTabWidget.addTab(self.visualSettingsTab, "")
@@ -714,6 +442,10 @@ class Ui_MainWindow(object):
self.chooseAnimationBox.setItemText(2, _translate("MainWindow", "InOutBounce"))
self.chooseAnimationBox.setItemText(3, _translate("MainWindow", "OutBack"))
self.chooseAnimationBox.setItemText(4, _translate("MainWindow", "OutElastic"))
self.chooseThemeLabel.setText(_translate("MainWindow", "Admin theme (requires app restart)"))
self.chooseThemeBox.setItemText(0, _translate("MainWindow", "Black acrylic"))
self.chooseThemeBox.setItemText(1, _translate("MainWindow", "Black"))
self.chooseThemeBox.setItemText(2, _translate("MainWindow", "Dark gray"))
self.settingsTabWidget.setTabText(self.settingsTabWidget.indexOf(self.visualSettingsTab), _translate("MainWindow", "Visual"))
self.pusher_app_id_edit.setPlaceholderText(_translate("MainWindow", "app_id"))
self.pusher_key_edit.setPlaceholderText(_translate("MainWindow", "key"))

View File

@@ -1020,6 +1020,38 @@ p, li { white-space: pre-wrap; }
</item>
</widget>
</item>
<item>
<widget class="QLabel" name="chooseThemeLabel">
<property name="text">
<string>Admin theme (requires app restart)</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="chooseThemeBox">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
<item>
<property name="text">
<string>Black acrylic</string>
</property>
</item>
<item>
<property name="text">
<string>Black</string>
</property>
</item>
<item>
<property name="text">
<string>Dark gray</string>
</property>
</item>
</widget>
</item>
<item>
<spacer name="visualSettingsSpacer">
<property name="orientation">

View File

@@ -1,4 +1,7 @@
centralwidget = """
from data.settings import Settings
centralwidget_b = """
QWidget {
background-color: rgba(30, 30, 30, 0.1);
color: white;
@@ -262,7 +265,7 @@ QTabBar::tab:left:only-one, QTabBar::tab:right:only-one
}
"""
menupage = """
menupage_b = """
QListWidget {
border-width: 0px;
border-radius: 0px;
@@ -284,3 +287,259 @@ QListWidget:item:selected {
background-color: rgba(38, 39, 40, 0);
}
"""
centralwidget_g = """
QWidget {
background-color: rgb(30, 30, 30);
color: rgb(255, 255, 255);
font: 10pt "Segoe UI";
}
QScrollBar:vertical,
QScrollBar:horizontal {
border: none;
background: rgb(30, 30, 30);
width: 10px;
margin: 15px 0 15px 0;
border-radius: 0px;
}
QScrollBar::handle:vertical,
QScrollBar::handle:horizontal {
background-color: rgb(139, 139, 139);
min-height: 30px;
border-radius: 5px;
}
QScrollBar::handle:vertical:hover,
QScrollBar::handle:vertical:pressed,
QScrollBar::handle:horizontal:hover,
QScrollBar::handle:horizontal:pressed {
background-color: rgb(149, 149, 149);
}
QScrollBar::sub-line:vertical,
QScrollBar::add-line:vertical,
QScrollBar::up-arrow:vertical,
QScrollBar::down-arrow:vertical {
height: 0px;
}
QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical,
QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical,
QScrollBar::up-arrow:horizontal, QScrollBar::down-arrow:horizontal,
QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal {
background: none;
}
QPushButton {
color: white;
border-width: 1px;
border-radius:6px;
border-style: solid;
border-color: #303030;
background-color: #2c2d2e;
}
QPushButton:hover {
border-width: 2px;
background-color: #323232;
}
QPushButton:pressed {
background-color: #262728;
}
QPushButton:disabled {
background-color: #434343;
border-color: #0000;
}
QLineEdit, QTextBrowser, QPlainTextEdit, QTextEdit {
border-width: 1px;
border-radius: 5px;
border-style: solid;
border-color: #303030;
background-color: #242424;
font: 10pt "Segoe UI";
}
QListWidget {
border-width: 1px;
border-radius: 15px;
border-style: solid;
border-color: #303030;
padding: 10px;
background-color: #242424;
font: 10pt "Segoe UI";
}
QListWidget:item {
background-color: #242424;
selection-color: white;
}
QListWidget:item:hover {
background-color: #323232;
}
QListWidget:item:selected {
background-color: #777777;
}
QComboBox
{
border-width: 1px;
border-radius:6px;
border-style: solid;
border-color: #303030;
background-color: #2c2d2e;
color: #ffffff;
}
QComboBox::disabled
{
background-color: #434343;
color: #656565;
border-color: #434343;
}
QComboBox:hover
{
background-color: #323232;
}
QComboBox:on
{
background-color: #434343;
}
QComboBox QAbstractItemView
{
background-color: #434343;
color: #ffffff;
selection-background-color: #777777;
selection-color: white;
outline: 0;
}
QComboBox::drop-down
{
subcontrol-origin: padding;
subcontrol-position: top right;
border-radius: 6px;
}
QTabBar::tab
{
background-color: #2c2d2e;
color: #ffffff;
border-style: solid;
border-width: 1px;
border-top-left-radius: 3px;
border-top-right-radius: 3px;
border-color: #303030;
padding: 5px;
}
QTabBar::tab:disabled
{
background-color: #656565;
color: #656565;
}
QTabWidget::pane
{
background-color: #a0a0a0;
color: #ffffff;
border: 3px solid;
border-radius: 15px;
border-color: #1c1c1c;
}
QTabBar::tab:selected
{
background-color: #262728;
color: #ffffff;
border-style: solid;
border-width: 1px;
border-top-left-radius: 3px;
border-top-right-radius: 3px;
border-color: #303030;
padding: 5px;
}
QTabBar::tab:selected:disabled
{
background-color: #404040;
color: #656565;
}
QTabBar::tab:!selected
{
background-color: #262626;
}
QTabBar::tab:!selected:hover
{
background-color: #323232;
}
QTabBar::tab:top:!selected
{
margin-top: 3px;
}
QTabBar::tab:bottom:!selected
{
margin-bottom: 3px;
}
QTabBar::tab:top, QTabBar::tab:bottom
{
min-width: 8ex;
margin-right: -1px;
padding: 5px 10px 5px 10px;
}
QTabBar::tab:top:selected
{
border-bottom-color: none;
}
QTabBar::tab:bottom:selected
{
border-top-color: none;
}
QTabBar::tab:top:last, QTabBar::tab:bottom:last,
QTabBar::tab:top:only-one, QTabBar::tab:bottom:only-one
{
margin-right: 0;
}
QTabBar::tab:left:!selected
{
margin-right: 3px;
}
QTabBar::tab:right:!selected
{
margin-left: 3px;
}
QTabBar::tab:left, QTabBar::tab:right
{
min-height: 8ex;
margin-bottom: -1px;
padding: 10px 5px 10px 5px;
}
QTabBar::tab:left:selected
{
border-left-color: none;
}
QTabBar::tab:right:selected
{
border-right-color: none;
}
QTabBar::tab:left:last, QTabBar::tab:right:last,
QTabBar::tab:left:only-one, QTabBar::tab:right:only-one
{
margin-bottom: 0;
}
"""
menupage_g = """
QListWidget {
border-width: 0px;
border-radius: 0px;
border: none;
padding: 0px;
background-color: #242424;
font: 10pt "Segoe UI";
}
QListWidget:item {
padding-left: 10px;
height: 60px;
background-color: #191919;
selection-color: rgba(255, 255, 255);
}
QListWidget:item:hover {
background-color: #323232;
}
QListWidget:item:selected {
background-color: #262728;
}
"""
def centralwidget():
return centralwidget_g if Settings.get("theme") == "Dark gray" else centralwidget_b
def menupage():
return menupage_g if Settings.get("theme") == "Dark gray" else menupage_b