diff --git a/misc/qrc2py.sh b/misc/qrc2py.sh
index e122affe..3eb738b9 100755
--- a/misc/qrc2py.sh
+++ b/misc/qrc2py.sh
@@ -3,6 +3,14 @@
cwd="$(pwd)"
cd "$(dirname "$0")"/../ || exit
-pyrcc5 rare/resources/resources.qrc -o rare/resources/resources.py
+pyrcc5 -compress 6 \
+ rare/resources/resources.qrc \
+ -o rare/resources/resources.py
+pyrcc5 -compress 6 \
+ rare/resources/stylesheets/RareStyle/stylesheet.qrc \
+ -o rare/resources/stylesheets/RareStyle/__init__.py
+pyrcc5 -compress 6 \
+ rare/resources/stylesheets/ChildOfMetropolis/stylesheet.qrc \
+ -o rare/resources/stylesheets/ChildOfMetropolis/__init__.py
cd "$cwd" || exit
diff --git a/rare/resources/__init__.py b/rare/resources/__init__.py
index e69de29b..acf2c8cb 100644
--- a/rare/resources/__init__.py
+++ b/rare/resources/__init__.py
@@ -0,0 +1,2 @@
+import rare.resources.resources
+import rare.resources.stylesheets
diff --git a/rare/resources/resources.py b/rare/resources/resources.py
index 3f35740f..711165b6 100644
Binary files a/rare/resources/resources.py and b/rare/resources/resources.py differ
diff --git a/rare/resources/resources.qrc b/rare/resources/resources.qrc
index 3fc8d09a..53804ee1 100644
--- a/rare/resources/resources.qrc
+++ b/rare/resources/resources.qrc
@@ -1,32 +1,17 @@
-
-
-
- colors/Adapta-Nokto.scheme
- colors/Airy.scheme
- colors/Arc-Dark.scheme
- colors/Arc-Darker.scheme
- colors/Darker.scheme
- colors/Dusk.scheme
- colors/Numix-Dark.scheme
- colors/Rare.scheme
- colors/Zukitre.scheme
-
-
- stylesheets/RareStyle/stylesheet.qss
-
-
- stylesheets/RareStyle/circle.svg
- stylesheets/RareStyle/circle-disabled.svg
- stylesheets/RareStyle/drop-down.svg
- stylesheets/RareStyle/half-square.svg
- stylesheets/RareStyle/half-square-disabled.svg
- stylesheets/RareStyle/sort-down.svg
- stylesheets/RareStyle/sort-up.svg
- stylesheets/RareStyle/square.svg
- stylesheets/RareStyle/square-disabled.svg
-
-
- images/Rare.png
- images/loader.gif
-
-
\ No newline at end of file
+
+
+ colors/Adapta-Nokto.scheme
+ colors/Airy.scheme
+ colors/Arc-Dark.scheme
+ colors/Arc-Darker.scheme
+ colors/Darker.scheme
+ colors/Dusk.scheme
+ colors/Numix-Dark.scheme
+ colors/Rare.scheme
+ colors/Zukitre.scheme
+
+
+ images/Rare.png
+ images/loader.gif
+
+
diff --git a/rare/resources/stylesheets/ChildOfMetropolis/__init__.py b/rare/resources/stylesheets/ChildOfMetropolis/__init__.py
new file mode 100644
index 00000000..0fc74bf6
Binary files /dev/null and b/rare/resources/stylesheets/ChildOfMetropolis/__init__.py differ
diff --git a/rare/resources/stylesheets/ChildOfMetropolis/circle-disabled.svg b/rare/resources/stylesheets/ChildOfMetropolis/circle-disabled.svg
new file mode 100644
index 00000000..50d7e934
--- /dev/null
+++ b/rare/resources/stylesheets/ChildOfMetropolis/circle-disabled.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/rare/resources/stylesheets/ChildOfMetropolis/circle.svg b/rare/resources/stylesheets/ChildOfMetropolis/circle.svg
new file mode 100644
index 00000000..54e3f42f
--- /dev/null
+++ b/rare/resources/stylesheets/ChildOfMetropolis/circle.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/rare/resources/stylesheets/ChildOfMetropolis/drop-down.svg b/rare/resources/stylesheets/ChildOfMetropolis/drop-down.svg
new file mode 100644
index 00000000..6e759ba3
--- /dev/null
+++ b/rare/resources/stylesheets/ChildOfMetropolis/drop-down.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/rare/resources/stylesheets/ChildOfMetropolis/half-square-disabled.svg b/rare/resources/stylesheets/ChildOfMetropolis/half-square-disabled.svg
new file mode 100644
index 00000000..c41e2c97
--- /dev/null
+++ b/rare/resources/stylesheets/ChildOfMetropolis/half-square-disabled.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/rare/resources/stylesheets/ChildOfMetropolis/half-square.svg b/rare/resources/stylesheets/ChildOfMetropolis/half-square.svg
new file mode 100644
index 00000000..924998ee
--- /dev/null
+++ b/rare/resources/stylesheets/ChildOfMetropolis/half-square.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/rare/resources/stylesheets/ChildOfMetropolis/sort-down.svg b/rare/resources/stylesheets/ChildOfMetropolis/sort-down.svg
new file mode 100644
index 00000000..a0430ce7
--- /dev/null
+++ b/rare/resources/stylesheets/ChildOfMetropolis/sort-down.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/rare/resources/stylesheets/ChildOfMetropolis/sort-up.svg b/rare/resources/stylesheets/ChildOfMetropolis/sort-up.svg
new file mode 100644
index 00000000..2d6db47a
--- /dev/null
+++ b/rare/resources/stylesheets/ChildOfMetropolis/sort-up.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/rare/resources/stylesheets/ChildOfMetropolis/square-disabled.svg b/rare/resources/stylesheets/ChildOfMetropolis/square-disabled.svg
new file mode 100644
index 00000000..4ea24b9b
--- /dev/null
+++ b/rare/resources/stylesheets/ChildOfMetropolis/square-disabled.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/rare/resources/stylesheets/ChildOfMetropolis/square.svg b/rare/resources/stylesheets/ChildOfMetropolis/square.svg
new file mode 100644
index 00000000..f215b10e
--- /dev/null
+++ b/rare/resources/stylesheets/ChildOfMetropolis/square.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/rare/resources/stylesheets/ChildOfMetropolis/stylesheet.qrc b/rare/resources/stylesheets/ChildOfMetropolis/stylesheet.qrc
new file mode 100644
index 00000000..a0211b37
--- /dev/null
+++ b/rare/resources/stylesheets/ChildOfMetropolis/stylesheet.qrc
@@ -0,0 +1,14 @@
+
+
+ circle-disabled.svg
+ circle.svg
+ drop-down.svg
+ half-square-disabled.svg
+ half-square.svg
+ sort-down.svg
+ sort-up.svg
+ square-disabled.svg
+ square.svg
+ stylesheet.qss
+
+
diff --git a/rare/resources/stylesheets/ChildOfMetropolis/stylesheet.qss b/rare/resources/stylesheets/ChildOfMetropolis/stylesheet.qss
new file mode 100644
index 00000000..8d84174f
--- /dev/null
+++ b/rare/resources/stylesheets/ChildOfMetropolis/stylesheet.qss
@@ -0,0 +1,791 @@
+/*
+[Text]
+normal: #eeeeee #36393F -- main font color
+disabled: #43474d #767778 -- disabled font color
+ rgba( 67, 71, 77, 55%) == #DADDDE
+ rgba( 67, 71, 77, 25%) == #A8AAAB
+[Background]
+normal: #202225 #C2C4C5 -- main background color
+editable: #333344 #DADDDE -- background color for reactive/editable widgets (TextEdits, ProgressBars etc)
+hover: #222233 #B2D3DE -- background color when hovering over reactive widgets (Buttons, Headers)
+selection: #2f4f4f #71DA7E -- background color for selectable widgets
+alternate: #282a2e #BCBEBF -- background color for alternating rows in List/Tree/TableViews and for ScrollBars
+
+[Border]
+normal: #483d8b #5CD3FF -- border color for most widgets
+ rgba( 72, 61, 139, 25%) == #B2D3DE
+editable: #2f4f4f #71DA7E -- border color for editable widgets (TextEdits, ProgressBars etc)
+highlight: #5246a0 #5CD3FF -- border color for dropdown widgets, a bit lighter than border for more separation
+disabled: #43474d #767778 -- border for disabled widgets
+alternate: #3c3f41 #A3DAAA -- border color for gradient backgrounds on widgets like Tabs and Popups
+
+[Special]
+info-normal: #bbb #4D5059 -- infoLabel
+install-normal: #070 #F9A7FF -- install
+install-hover: #050 #BB7DBF -- install
+install-disabled: #020 #7D5380 -- install
+uninstall-normal: #700 #FFB085 -- uninstall
+uninstall-hover: #500 #BF8464 -- uninstall
+uninstall-disabled: #200 #805843 -- uninstall
+*/
+
+* {
+ color: #36393F;
+ border-color: #5CD3FF;
+ background-color: #C2C4C5;
+}
+*:disabled,
+*:editable:disabled {
+ color: #767778;
+ border-color: #767778;
+ background-color: #C2C4C5;
+}
+
+QLabel,
+QLabel:disabled {
+ border-width: 0px;
+ background-color: transparent;
+ padding: 0px;
+ selection-background-color: #71DA7E;
+}
+QLabel[infoLabel="1"] {
+ color: #4D5059;
+ font-style: italic;
+ font-weight: normal;
+}
+
+
+QMenu,
+QListView,
+QListView::item,
+QTreeView,
+QTreeView::item,
+QTableView,
+QTableView::item,
+QHeaderView::section,
+QTableView QTableCornerButton::section,
+QFrame[frameShape="6"],
+QLineEdit,
+QTextEdit,
+QTimeEdit,
+QDateEdit,
+QDateTimeEdit,
+QToolBox,
+QComboBox,
+QComboBox:editable,
+QComboBox QAbstractItemView,
+QSpinBox,
+QDoubleSpinBox,
+QProgressBar,
+QScrollBar {
+ border-width: 1px;
+ border-style: solid;
+ border-radius: 2px;
+ padding: 2px;
+}
+QHeaderView::section,
+QTableView QTableCornerButton::section,
+QLineEdit,
+QTextEdit,
+QTimeEdit,
+QDateEdit,
+QDateTimeEdit,
+QComboBox:editable,
+QComboBox QAbstractItemView,
+QSpinBox,
+QDoubleSpinBox,
+QProgressBar,
+QScrollBar {
+ border-color: #71DA7E;
+ background-color: #DADDDE;
+ selection-background-color: #71DA7E;
+}
+QLineEdit,
+QTextEdit,
+QTimeEdit,
+QDateEdit,
+QDateTimeEdit,
+QComboBox,
+QSpinBox,
+QDoubleSpinBox,
+QProgressBar,
+QPushButton {
+ height: 1.30em;
+}
+QToolButton {
+ height: 1.10em;
+}
+QFrame[frameShape="6"] {
+ border-radius: 4px;
+}
+QFrame[noBorder="1"],
+QListView[noBorder="1"],
+QScrollArea[noBorder="1"],
+QStackedWidget[noBorder="1"] {
+ border-color: transparent;
+}
+QComboBox {
+ background-color: #DADDDE;
+}
+QComboBox:disabled {
+ background-color: #A8AAAB;
+}
+QComboBox:!editable:hover {
+ background-color: #B2D3DE;
+}
+*::item:selected,
+QComboBox QAbstractItemView {
+ selection-background-color: #71DA7E;
+}
+*::drop-down,
+*::drop-down:editable,
+*::up-button,
+*::down-button {
+ subcontrol-origin: border;
+ border-width: 1px;
+ border-style: solid;
+ border-radius: 2px;
+ border-top-left-radius: 0px;
+ border-bottom-left-radius: 0px;
+}
+*::drop-down:disabled,
+*::drop-down:editable:disabled,
+*::up-button:disabled,
+*::down-button:disabled {
+ border-color: #767778;
+ background-color: transparent;
+}
+*::drop-down {
+ subcontrol-position: top right;
+ border-color: #5CD3FF;
+ border-left-color: #5CD3FF; /* #5CD3FF lighter */
+}
+*::drop-down:editable,
+*::up-button,
+*::down-button {
+ border-color: #71DA7E;
+ background-color: #A3DAAA;
+}
+*::drop-down,
+*::drop-down:editable {
+ width: 14px;
+ image: url(":/stylesheets/ChildOfMetropolis/drop-down.svg");
+}
+*::up-button,
+*::down-button {
+ width: 14px; /* 16 + 2*1px border-width = 15px padding + 3px parent border */
+}
+*::up-button {
+ subcontrol-position: top right; /* position at the top right corner */
+ border-bottom-width: 1;
+ image: url(":/stylesheets/ChildOfMetropolis/sort-up.svg");
+}
+*::down-button {
+ subcontrol-position: bottom right; /* position at bottom right corner */
+ border-top-width: 1;
+ image: url(":/stylesheets/ChildOfMetropolis/sort-down.svg");
+}
+QProgressBar {
+ text-align: center;
+}
+QProgressBar::chunk {
+ width: 2%;
+ margin: 0%;
+ background-color: #71DA7E;
+}
+QScrollBar {
+ border-radius: 4px;
+ padding: 1px;
+ background-color: #BCBEBF;
+}
+QScrollBar:vertical {
+ width: 11px;
+}
+QScrollBar:horizontal {
+ height: 11px;
+}
+QScrollBar::add-line:vertical,
+QScrollBar::sub-line:vertical,
+QScrollBar::add-line:horizontal,
+QScrollBar::sub-line:horizontal {
+ border: none;
+ height: 0px;
+ background: transparent;
+}
+QScrollBar::add-line:vertical {
+ subcontrol-position: top;
+ subcontrol-origin: margin;
+}
+QScrollBar::sub-line:vertical {
+ subcontrol-position: bottom;
+ subcontrol-origin: margin;
+}
+QScrollBar::add-line:horizontal {
+ subcontrol-position: right;
+ subcontrol-origin: margin;
+}
+QScrollBar::sub-line:horizontal {
+ subcontrol-position: left;
+ subcontrol-origin: margin;
+}
+QScrollBar::handle {
+ border-width: 1px;
+ border-style: solid;
+ border-color: #5CD3FF;
+ background-color: #DADDDE;
+ border-radius: 2px;
+ min-height: 30px;
+ min-width: 30px;
+}
+
+QHeaderView {
+ padding: 0px;
+}
+QHeaderView::section:horizontal {
+ padding: 0px;
+ margin-left: 0px;
+ margin-right: 1px;
+}
+QHeaderView::section:vertical {
+ padding: 0px;
+ margin-top: 0px;
+ margin-bottom: 1px;
+}
+QHeaderView::section:horizontal:first {
+ margin-left: 1px;
+}
+QHeaderView::section:vertical:first {
+ margin-top: 1px;
+}
+QListView,
+QTreeView,
+QTableView {
+ outline: 0;
+ gridline-color: #BCBEBF;
+ show-decoration-selected: 0;
+ selection-background-color: transparent;
+ background-color: #C2C4C5;
+ alternate-background-color: #BCBEBF;
+}
+
+QListView::item,
+QTreeView::item {
+ margin-right: 1px;
+}
+/* The first element is attaching to the QHeaderView */
+/*
+QTableView[currentColumn="0"]::item {
+ margin-left: 1px;
+}
+QTableView[currentRow="0"]::item {
+ margin-top: 1px;
+}
+*/
+QListView::item:hover,
+QTreeView::item:hover,
+QTableView::item:hover {
+ border-color: #5CD3FF;
+ background-color: #B2D3DE;
+}
+QListView::item:selected,
+QTreeView::item:selected,
+QTableView::item:selected {
+ border-color: #5CD3FF;
+ background-color: #71DA7E;
+}
+
+QPushButton,
+QToolButton {
+ background-color: #DADDDE;
+}
+QPushButton:disabled,
+QToolButton:disabled {
+ background-color: #A8AAAB;
+}
+QPushButton:hover,
+QToolButton:hover,
+QHeaderView::section:hover {
+ background-color: #B2D3DE;
+}
+QPushButton,
+QToolButton {
+ border-width: 1px;
+ border-style: solid;
+ border-radius: 2px;
+ padding: 2px;
+ padding-left: 6px;
+ padding-right: 6px;
+}
+QPushButton::menu-indicator {
+ subcontrol-position: right center;
+ subcontrol-origin: padding;
+ left: -2px;
+ border-style: none;
+}
+QPushButton#menu {
+ padding: 0px;
+ margin: 0px;
+ border-style: none;
+}
+QPushButton#menu_button {
+ border-width: 0px;
+ background-color: #A3DAAA;
+ width: 18px;
+ height: 18px;
+}
+QPushButton#menu_button:hover {
+ background-color: #DADDDE;
+}
+QPushButton[install="1"],
+QPushButton#install_button {
+ background-color: #F9A7FF;
+}
+QPushButton[install="1"]:hover,
+QPushButton#install_button:hover {
+ background-color: #BB7DBF;
+}
+QPushButton[install="1"]:disabled,
+QPushButton#install_button:disabled {
+ background-color: #7D5380;
+}
+QPushButton[uninstall="1"],
+QPushButton#uninstall_button {
+ background-color: #FFB085;
+}
+QPushButton[uninstall="1"]:hover,
+QPushButton#uninstall_button:hover {
+ background-color: #BF8464;
+}
+QPushButton[uninstall="1"]:disabled,
+QPushButton#uninstall_button:disabled {
+ background-color: #805843;
+}
+QPushButton#success{
+ background-color: lime;
+}
+QPushButton#installed_menu_button:hover {
+ background-color: green;
+}
+
+QGroupBox,
+QCheckBox,
+QRadioButton {
+ background-color: transparent;
+}
+QGroupBox::indicator,
+QCheckBox::indicator,
+QRadioButton::indicator,
+QListView::indicator,
+QTreeView::indicator,
+QTableView::indicator {
+ border-color: #71DA7E;
+ border-width: 1px;
+ border-style: solid;
+ background-color: #C2C4C5;
+}
+QCheckBox::indicator,
+QRadioButton::indicator,
+QListView::indicator,
+QTreeView::indicator,
+QTableView::indicator {
+ width: 11px;
+ height: 11px;
+}
+QGroupBox::indicator:disabled,
+QCheckBox::indicator:disabled,
+QRadioButton::indicator:disabled,
+QListView::indicator:disabled,
+QTreeView::indicator:disabled,
+QTableView::indicator:disabled {
+ border-color: #767778;
+}
+QRadioButton::indicator {
+ border-radius: 5%;
+}
+QGroupBox::indicator,
+QCheckBox::indicator,
+QListView::indicator,
+QTreeView::indicator,
+QTableView::indicator {
+ border-radius: 2px;
+}
+QGroupBox::indicator:checked,
+QCheckBox::indicator:checked,
+QListView::indicator:checked,
+QTreeView::indicator:checked,
+QTableView::indicator:checked {
+ border-radius: 2px;
+ image: url(":/stylesheets/ChildOfMetropolis/square.svg");
+}
+QGroupBox::indicator:indeterminate,
+QCheckBox::indicator:indeterminate,
+QListView::indicator:indeterminate,
+QTreeView::indicator:indeterminate,
+QTableView::indicator:indeterminate {
+ border-radius: 2px;
+ image: url(":/stylesheets/ChildOfMetropolis/half-square.svg");
+}
+QRadioButton::indicator:checked {
+ border-radius: 5%;
+ image: url(":/stylesheets/ChildOfMetropolis/circle.svg");
+}
+QGroupBox::indicator:checked:disabled,
+QCheckBox::indicator:checked:disabled,
+QListView::indicator:checked:disabled,
+QTreeView::indicator:checked:disabled,
+QTableView::indicator:checked:disabled {
+ image: url(":/stylesheets/ChildOfMetropolis/square-disabled.svg");
+}
+QGroupBox::indicator:indeterminate:disabled,
+QCheckBox::indicator:indeterminate:disabled,
+QListView::indicator:indeterminate:disabled,
+QTreeView::indicator:indeterminate:disabled,
+QTableView::indicator:indeterminate:disabled {
+ image: url(":/stylesheets/ChildOfMetropolis/half-square-disabled.svg");
+}
+QRadioButton::indicator:checked:disabled {
+ image: url(":/stylesheets/ChildOfMetropolis/circle-disabled.svg");
+}
+
+QGroupBox,
+QGroupBox#group,
+QGroupBox#settings_widget {
+ font-weight: bold;
+ margin-top: 0.5em;
+ /* margin-left: 0.5em; /* Offset to the left */
+ border-width: 1px;
+ border-style: solid;
+ border-radius: 4px;
+ padding-top: 1.2em;
+}
+QGroupBox#game_widget_icon {
+ margin: 2px;
+ border-width: 0px;
+ padding: 0px;
+}
+QToolBox::tab,
+QGroupBox::title {
+ subcontrol-origin: border;
+ subcontrol-position: top left; /* position at the top left */
+ border-width: 1px;
+ border-style: solid;
+ border-top-left-radius: 4px;
+ border-bottom-right-radius: 4px;
+ border-color: #5CD3FF;
+ padding: 1px;
+ /*
+ background: qlineargradient(
+ x1: -2, y1: 0,
+ x2: 1, y2: 1,
+ stop: 0 #5CD3FF,
+ stop: 1 #C2C4C5);
+ */
+ background-color: #B2D3DE;
+}
+QGroupBox::title:disabled {
+ border-color: #767778;
+ background-color: #A8AAAB;
+}
+
+QSizeGrip {
+ image: none;
+ width: 4px;
+ height: 4px;
+}
+
+#list_widget {
+ border-top-width: 2px;
+}
+
+#search_bar {
+ padding: 3px;
+ border-radius: 5px;
+ background-color: #DADDDE;
+}
+
+QTabWidget::pane {
+}
+QTabWidget::tab-bar {
+}
+QTabBar {
+ qproperty-drawBase: 0;
+}
+QTabBar::tab {
+ margin: 0px;
+ border-width: 1px;
+ border-style: solid;
+ border-color: transparent;
+ padding: 4px;
+}
+QTabBar::tab:top,
+QTabBar::tab:bottom {
+ padding-left: 12px;
+ padding-right: 12px;
+}
+QTabBar::tab:top:hover,
+QTabBar::tab:bottom:hover {
+ border-color: #5CD3FF;
+ border-left-color: transparent;
+ border-right-color: transparent;
+}
+QTabBar::tab:top {
+ border-top-width: 3px;
+ border-top-color: #A3DAAA;
+ border-bottom-color: #5CD3FF;
+ background: qlineargradient(
+ x1: 0, y1: -1,
+ x2: 0, y2: 1,
+ stop: 0 #A3DAAA,
+ stop: 1 #C2C4C5);
+}
+QTabBar::tab:bottom {
+ border-bottom-width: 3px;
+ border-top-color: #5CD3FF;
+ border-bottom-color: #A3DAAA;
+ background: qlineargradient(
+ x1: 0, y1: 2,
+ x2: 0, y2: 0,
+ stop: 0 #A3DAAA,
+ stop: 1 #C2C4C5);
+}
+QTabBar::tab:top:hover {
+ background: qlineargradient(
+ x1: 0, y1: -1,
+ x2: 0, y2: 1,
+ stop: 0 #5CD3FF,
+ stop: 1 #C2C4C5);
+}
+QTabBar::tab:bottom:hover {
+ background: qlineargradient(
+ x1: 0, y1: 2,
+ x2: 0, y2: 0,
+ stop: 0 #5CD3FF,
+ stop: 1 #C2C4C5);
+}
+QTabBar::tab:top:selected {
+ border-color: #5CD3FF;
+ border-bottom-color: transparent;
+ background: #C2C4C5;
+}
+QTabBar::tab:bottom:selected {
+ border-color: #5CD3FF;
+ border-top-color: transparent;
+ background: #C2C4C5;
+}
+QTabBar::tab:top:disabled {
+ border-bottom-color: #A3DAAA;
+}
+QTabBar::tab:bottom:disabled {
+ border-top-color: #A3DAAA;
+}
+QTabBar::tab:top:selected:disabled {
+ border-color: #A3DAAA;
+ border-bottom-color: transparent;
+}
+QTabBar::tab:bottom:selected:disabled {
+ border-color: #A3DAAA;
+ border-top-color: transparent;
+}
+QTabBar::tab:left,
+QTabBar::tab:right {
+ padding-top: 2px;
+ padding-bottom: 2px;
+}
+QTabBar::tab:left:hover,
+QTabBar::tab:right:hover {
+ border-color: #5CD3FF;
+ border-top-color: transparent;
+ border-bottom-color: transparent;
+}
+QTabBar::tab:left {
+ border-left-width: 3px;
+ border-left-color: #A3DAAA;
+ border-right-color: #5CD3FF;
+ background: qlineargradient(
+ x1: -1, y1: 0,
+ x2: 1, y2: 0,
+ stop: 0 #A3DAAA,
+ stop: 1 #C2C4C5);
+}
+QTabBar::tab:right {
+ border-right-width: 3px;
+ border-right-color: #A3DAAA;
+ border-left-color: #5CD3FF;
+ background: qlineargradient(
+ x1: 2, y1: 0,
+ x2: 0, y2: 0,
+ stop: 0 #A3DAAA,
+ stop: 1 #C2C4C5);
+}
+QTabBar::tab:left:hover {
+ background: qlineargradient(
+ x1: -1, y1: 0,
+ x2: 1, y2: 0,
+ stop: 0 #5CD3FF,
+ stop: 1 #C2C4C5);
+}
+QTabBar::tab:right:hover {
+ background: qlineargradient(
+ x1: 2, y1: 0,
+ x2: 0, y2: 0,
+ stop: 0 #5CD3FF,
+ stop: 1 #C2C4C5);
+}
+QTabBar::tab:left:selected {
+ border-color: #5CD3FF;
+ border-right-color: transparent;
+ background: #C2C4C5;
+}
+QTabBar::tab:right:selected {
+ border-color: #5CD3FF;
+ border-left-color: transparent;
+ background: #C2C4C5;
+}
+QTabBar::tab:left:disabled {
+ border-right-color: #A3DAAA;
+}
+QTabBar::tab:right:disabled {
+ border-left-color: #A3DAAA;
+}
+QTabBar::tab:left:selected:disabled {
+ border-color: #A3DAAA;
+ border-right-color: transparent;
+}
+QTabBar::tab:right:selected:disabled {
+ border-color: #A3DAAA;
+ border-left-color: transparent;
+}
+
+QTabBar#MainTabBar {
+ border-width: 1px;
+ border-style: solid;
+ border-color: transparent;
+ border-bottom-color: #5CD3FF;
+ /*
+ background: qlineargradient(
+ x1: 0, y1: -3,
+ x2: 0, y2: 1,
+ stop: 0 #A3DAAA,
+ stop: 1 #C2C4C5);
+ */
+}
+QTabBar#MainTabBar:disabled {
+ border-color: transparent;
+ border-bottom-color: #A3DAAA;
+}
+QTabBar#MainTabBar::tab {
+ margin-left: 3px;
+ margin-right: 3px;
+ border-top-color: transparent;
+ border-bottom-color: #5CD3FF;
+ padding: 5px;
+}/*
+QTabBar#MainTabBar::tab:top:first,
+QTabBar#MainTabBar::tab:bottom:first {
+ margin-left: 0px;
+ border-left: transparent;
+}
+QTabBar#MainTabBar::tab:top:last,
+QTabBar#MainTabBar::tab:bottom:last {
+ margin-right: 0px;
+ border-right: transparent;
+}*/
+QTabBar#MainTabBar::tab:top:hover {
+ border-top-color: #5CD3FF;
+}
+QTabBar#MainTabBar::tab:top:selected {
+ border-color: #5CD3FF;
+ border-bottom-color: #C2C4C5;
+}
+QTabBar#SideTabBar {
+ border-width: 1px;
+ border-style: solid;
+ border-color: transparent;
+ border-right-color: #5CD3FF;
+ /*
+ background: qlineargradient(
+ x1: -3, y1: 0,
+ x2: 1, y2: 0,
+ stop: 0 #A3DAAA,
+ stop: 1 #C2C4C5);
+ */
+}
+QTabBar#SideTabBar:disabled {
+ border-color: transparent;
+ border-right-color: #A3DAAA;
+}
+QTabBar#SideTabBar::tab {
+ margin-top: 3px;
+ margin-bottom: 3px;
+}/*
+QTabBar#SideTabBar::tab:left:first,
+QTabBar#SideTabBar::tab:right:first {
+ margin-top: 0px;
+ border-top: transparent;
+}
+QTabBar#SideTabBar::tab:left:last,
+QTabBar#SideTabBar::tab:right:last {
+ margin-bottom: 0px;
+ border-bottom: transparent;
+}*/
+QTabBar#SideTabBar::tab:disabled {
+ color: transparent;
+ border-color: transparent;
+ background-color: transparent;
+}
+
+QStatusBar {
+ border-width: 1px;
+ border-style: solid;
+ border-color: transparent;
+ border-top-color: #5CD3FF;
+ border-bottom-color: #A3DAAA;
+ background: qlineargradient(
+ x1: 0, y1: 3,
+ x2: 0, y2: 0,
+ stop: 0 #A3DAAA,
+ stop: 1 #C2C4C5);
+}
+
+QToolTip {
+ border-width: 1px;
+ border-style: solid;
+ border-color: #5CD3FF;
+ border-radius: 4px;
+ padding: 1px;
+ opacity: 200;
+}
+
+QBalloonTip {
+ color: #36393F;
+ background-color: #C2C4C5;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #5CD3FF;
+ border-radius: 4px;
+ padding: 1px;
+}
+
+/* Wrapper settings styling */
+QPushButton#WrapperWidgetButton {
+ border-color: #DADDDE;
+}
+QPushButton#WrapperWidgetButton:disabled {
+ border-color: #A8AAAB;
+}
+QScrollArea#WrapperSettingsScroll {
+ border-color: #71DA7E;
+ background-color: #BCBEBF;
+}
+QScrollBar#WrapperSettingsScrollBar {
+ background-color: #BCBEBF;
+}
+QLabel#WrapperSettingsLabel {
+ border-width: 1px;
+ border-style: solid;
+ border-radius: 2px;
+ padding: 2px;
+ color: #999;
+ border-color: #71DA7E;
+ background-color: #BCBEBF;
+}
diff --git a/rare/resources/stylesheets/RareStyle/__init__.py b/rare/resources/stylesheets/RareStyle/__init__.py
new file mode 100644
index 00000000..63d76ed0
Binary files /dev/null and b/rare/resources/stylesheets/RareStyle/__init__.py differ
diff --git a/rare/resources/stylesheets/RareStyle/stylesheet.qrc b/rare/resources/stylesheets/RareStyle/stylesheet.qrc
new file mode 100644
index 00000000..67b06908
--- /dev/null
+++ b/rare/resources/stylesheets/RareStyle/stylesheet.qrc
@@ -0,0 +1,14 @@
+
+
+ circle-disabled.svg
+ circle.svg
+ drop-down.svg
+ half-square-disabled.svg
+ half-square.svg
+ sort-down.svg
+ sort-up.svg
+ square-disabled.svg
+ square.svg
+ stylesheet.qss
+
+
diff --git a/rare/resources/stylesheets/RareStyle/stylesheet.qss b/rare/resources/stylesheets/RareStyle/stylesheet.qss
index 25a94baa..e04063c3 100644
--- a/rare/resources/stylesheets/RareStyle/stylesheet.qss
+++ b/rare/resources/stylesheets/RareStyle/stylesheet.qss
@@ -169,7 +169,7 @@ QComboBox QAbstractItemView {
*::drop-down,
*::drop-down:editable {
width: 14px;
- image: url(":/icons/drop-down.svg");
+ image: url(":/stylesheets/RareStyle/drop-down.svg");
}
*::up-button,
*::down-button {
@@ -178,12 +178,12 @@ QComboBox QAbstractItemView {
*::up-button {
subcontrol-position: top right; /* position at the top right corner */
border-bottom-width: 1;
- image: url(":/icons/sort-up.svg");
+ image: url(":/stylesheets/RareStyle/sort-up.svg");
}
*::down-button {
subcontrol-position: bottom right; /* position at bottom right corner */
border-top-width: 1;
- image: url(":/icons/sort-down.svg");
+ image: url(":/stylesheets/RareStyle/sort-down.svg");
}
QProgressBar {
text-align: center;
@@ -415,7 +415,7 @@ QListView::indicator:checked,
QTreeView::indicator:checked,
QTableView::indicator:checked {
border-radius: 2px;
- image: url(":/icons/square.svg");
+ image: url(":/stylesheets/RareStyle/square.svg");
}
QGroupBox::indicator:indeterminate,
QCheckBox::indicator:indeterminate,
@@ -423,28 +423,28 @@ QListView::indicator:indeterminate,
QTreeView::indicator:indeterminate,
QTableView::indicator:indeterminate {
border-radius: 2px;
- image: url(":/icons/half-square.svg");
+ image: url(":/stylesheets/RareStyle/half-square.svg");
}
QRadioButton::indicator:checked {
border-radius: 5%;
- image: url(":/icons/circle.svg");
+ image: url(":/stylesheets/RareStyle/circle.svg");
}
QGroupBox::indicator:checked:disabled,
QCheckBox::indicator:checked:disabled,
QListView::indicator:checked:disabled,
QTreeView::indicator:checked:disabled,
QTableView::indicator:checked:disabled {
- image: url(":/icons/square-disabled.svg");
+ image: url(":/stylesheets/RareStyle/square-disabled.svg");
}
QGroupBox::indicator:indeterminate:disabled,
QCheckBox::indicator:indeterminate:disabled,
QListView::indicator:indeterminate:disabled,
QTreeView::indicator:indeterminate:disabled,
QTableView::indicator:indeterminate:disabled {
- image: url(":/icons/half-square-disabled.svg");
+ image: url(":/stylesheets/RareStyle/half-square-disabled.svg");
}
QRadioButton::indicator:checked:disabled {
- image: url(":/icons/circle-disabled.svg");
+ image: url(":/stylesheets/RareStyle/circle-disabled.svg");
}
QGroupBox,
diff --git a/rare/resources/stylesheets/__init__.py b/rare/resources/stylesheets/__init__.py
new file mode 100644
index 00000000..b892cf92
--- /dev/null
+++ b/rare/resources/stylesheets/__init__.py
@@ -0,0 +1,3 @@
+import rare.resources.stylesheets.RareStyle
+# Incomplete
+# import rare.resources.stylesheets.ChildOfMetropolis
diff --git a/rare/utils/utils.py b/rare/utils/utils.py
index 6a9bcda9..65b0a47a 100644
--- a/rare/utils/utils.py
+++ b/rare/utils/utils.py
@@ -23,7 +23,7 @@ from PyQt5.QtCore import (
QDir,
)
from PyQt5.QtGui import QPalette, QColor, QPixmap, QImage
-from PyQt5.QtWidgets import QApplication, QStyleFactory
+from PyQt5.QtWidgets import qApp, QStyleFactory
from legendary.models.game import Game
from requests.exceptions import HTTPError
@@ -180,19 +180,16 @@ def load_color_scheme(path: str) -> QPalette:
def set_color_pallete(color_scheme: str):
if not color_scheme:
- QApplication.instance().setStyle(
- QStyleFactory.create(QApplication.instance().property("rareDefaultQtStyle"))
- )
- QApplication.instance().setStyleSheet("")
- QApplication.instance().setPalette(
- QApplication.instance().style().standardPalette()
- )
+ qApp.setStyle(QStyleFactory.create(qApp.property("rareDefaultQtStyle")))
+ qApp.setStyleSheet("")
+ qApp.setPalette(qApp.style().standardPalette())
return
- QApplication.instance().setStyle(QStyleFactory.create("Fusion"))
+ qApp.setStyle(QStyleFactory.create("Fusion"))
custom_palette = load_color_scheme(f":/schemes/{color_scheme}")
if custom_palette is not None:
- QApplication.instance().setPalette(custom_palette)
- qtawesome.set_defaults(color=custom_palette.color(QPalette.Text))
+ qApp.setPalette(custom_palette)
+ icon_color = qApp.palette().color(QPalette.Foreground).name()
+ qtawesome.set_defaults(color=icon_color)
def get_color_schemes() -> List[str]:
@@ -204,18 +201,17 @@ def get_color_schemes() -> List[str]:
def set_style_sheet(style_sheet: str):
if not style_sheet:
- QApplication.instance().setStyle(
- QStyleFactory.create(QApplication.instance().property("rareDefaultQtStyle"))
- )
- QApplication.instance().setStyleSheet("")
+ qApp.setStyle(QStyleFactory.create(qApp.property("rareDefaultQtStyle")))
+ qApp.setStyleSheet("")
return
- QApplication.instance().setStyle(QStyleFactory.create("Fusion"))
- file = QFile(f":/stylesheets/{style_sheet}")
+ qApp.setStyle(QStyleFactory.create("Fusion"))
+ file = QFile(f":/stylesheets/{style_sheet}/stylesheet.qss")
file.open(QFile.ReadOnly)
stylesheet = file.readAll().data().decode("utf-8")
- QApplication.instance().setStyleSheet(stylesheet)
- qtawesome.set_defaults(color="white")
+ qApp.setStyleSheet(stylesheet)
+ icon_color = qApp.palette().color(QPalette.Text).name()
+ qtawesome.set_defaults(color="#eeeeee")
def get_style_sheets() -> List[str]: