Add basic dark & light theme (#18)
This commit is contained in:
@@ -10,7 +10,7 @@ from . import MessageWidget
|
||||
|
||||
from gotify_tray.__version__ import __title__
|
||||
from gotify_tray.database import Settings
|
||||
from gotify_tray.utils import get_abs_path
|
||||
from gotify_tray.gui.themes import get_theme_file
|
||||
|
||||
|
||||
settings = Settings("gotify-tray")
|
||||
@@ -44,30 +44,10 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
|
||||
|
||||
# Do not collapse the message list
|
||||
self.splitter.setCollapsible(1, False)
|
||||
|
||||
self.status_widget = StatusWidget()
|
||||
self.horizontalLayout.insertWidget(0, self.status_widget)
|
||||
|
||||
# Set button icons
|
||||
self.pb_refresh.setIcon(
|
||||
QtGui.QIcon(get_abs_path(f"gotify_tray/gui/images/refresh.svg"))
|
||||
)
|
||||
self.pb_delete_all.setIcon(
|
||||
QtGui.QIcon(get_abs_path(f"gotify_tray/gui/images/trashcan.svg"))
|
||||
)
|
||||
|
||||
# Resize the labels and icons
|
||||
size = settings.value("MainWindow/label/size", type=int)
|
||||
self.status_widget.setFixedSize(QtCore.QSize(size, size))
|
||||
|
||||
size = settings.value("MainWindow/button/size", type=int)
|
||||
self.pb_refresh.setFixedSize(QtCore.QSize(size, size))
|
||||
self.pb_delete_all.setFixedSize(QtCore.QSize(size, size))
|
||||
self.pb_refresh.setIconSize(QtCore.QSize(int(0.7 * size), int(0.7 * size)))
|
||||
self.pb_delete_all.setIconSize(QtCore.QSize(int(0.9 * size), int(0.9 * size)))
|
||||
|
||||
size = settings.value("MainWindow/application/icon/size", type=int)
|
||||
self.listView_applications.setIconSize(QtCore.QSize(size, size))
|
||||
self.set_icons()
|
||||
|
||||
font_title = QtGui.QFont()
|
||||
if s := settings.value("MainWindow/font/application", type=str):
|
||||
@@ -85,6 +65,24 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
|
||||
|
||||
self.link_callbacks()
|
||||
|
||||
def set_icons(self):
|
||||
# Set button icons
|
||||
self.pb_refresh.setIcon(QtGui.QIcon(get_theme_file("refresh.svg")))
|
||||
self.pb_delete_all.setIcon(QtGui.QIcon(get_theme_file("trashcan.svg")))
|
||||
|
||||
# Resize the labels and icons
|
||||
size = settings.value("MainWindow/label/size", type=int)
|
||||
self.status_widget.setFixedSize(QtCore.QSize(size, size))
|
||||
|
||||
size = settings.value("MainWindow/button/size", type=int)
|
||||
self.pb_refresh.setFixedSize(QtCore.QSize(size, size))
|
||||
self.pb_delete_all.setFixedSize(QtCore.QSize(size, size))
|
||||
self.pb_refresh.setIconSize(QtCore.QSize(int(0.7 * size), int(0.7 * size)))
|
||||
self.pb_delete_all.setIconSize(QtCore.QSize(int(0.9 * size), int(0.9 * size)))
|
||||
|
||||
size = settings.value("MainWindow/application/icon/size", type=int)
|
||||
self.listView_applications.setIconSize(QtCore.QSize(size, size))
|
||||
|
||||
def set_active(self):
|
||||
self.status_widget.set_active()
|
||||
|
||||
|
||||
@@ -5,7 +5,8 @@ from PyQt6 import QtCore, QtGui, QtWidgets
|
||||
from ..models.MessagesModel import MessageItemDataRole, MessagesModelItem
|
||||
from ..designs.widget_message import Ui_Form
|
||||
from gotify_tray.database import Settings
|
||||
from gotify_tray.utils import convert_links, get_abs_path
|
||||
from gotify_tray.utils import convert_links
|
||||
from gotify_tray.gui.themes import get_theme_file
|
||||
|
||||
|
||||
settings = Settings("gotify-tray")
|
||||
@@ -60,9 +61,7 @@ class MessageWidget(QtWidgets.QWidget, Ui_Form):
|
||||
size_hint = self.message_item.sizeHint()
|
||||
self.message_item.setSizeHint(QtCore.QSize(size_hint.width(), self.height()))
|
||||
|
||||
self.pb_delete.setIcon(
|
||||
QtGui.QIcon(get_abs_path("gotify_tray/gui/images/trashcan.svg"))
|
||||
)
|
||||
self.pb_delete.setIcon(QtGui.QIcon(get_theme_file("trashcan.svg")))
|
||||
self.pb_delete.setIconSize(QtCore.QSize(24, 24))
|
||||
|
||||
self.link_callbacks()
|
||||
@@ -92,7 +91,7 @@ class MessageWidget(QtWidgets.QWidget, Ui_Form):
|
||||
def link_hovered_callback(self, link: str):
|
||||
if not settings.value("ImagePopup/enabled", type=bool):
|
||||
return
|
||||
|
||||
|
||||
qurl = QtCore.QUrl(link)
|
||||
_, ext = os.path.splitext(qurl.fileName())
|
||||
if ext in settings.value("ImagePopup/extensions", type=list):
|
||||
|
||||
@@ -8,6 +8,7 @@ from gotify_tray.gui.models import MessagesModelItem
|
||||
from . import MessageWidget
|
||||
from gotify_tray.utils import get_icon, verify_server, open_file
|
||||
from gotify_tray.tasks import ExportSettingsTask, ImportSettingsTask
|
||||
from gotify_tray.gui.themes import get_themes
|
||||
from PyQt6 import QtCore, QtGui, QtWidgets
|
||||
|
||||
from ..designs.widget_settings import Ui_Dialog
|
||||
@@ -19,6 +20,7 @@ settings = Settings("gotify-tray")
|
||||
|
||||
class SettingsDialog(QtWidgets.QDialog, Ui_Dialog):
|
||||
quit_requested = QtCore.pyqtSignal()
|
||||
theme_change_requested = QtCore.pyqtSignal(str)
|
||||
|
||||
def __init__(self):
|
||||
super(SettingsDialog, self).__init__()
|
||||
@@ -60,6 +62,10 @@ class SettingsDialog(QtWidgets.QDialog, Ui_Dialog):
|
||||
settings.value("tray/notifications/click", type=bool)
|
||||
)
|
||||
|
||||
# Theme
|
||||
self.combo_theme.addItems(get_themes())
|
||||
self.combo_theme.setCurrentText(settings.value("theme", type=str))
|
||||
|
||||
# Logging
|
||||
self.combo_logging.addItems(
|
||||
[
|
||||
@@ -163,6 +169,9 @@ class SettingsDialog(QtWidgets.QDialog, Ui_Dialog):
|
||||
self.cb_notify.stateChanged.connect(self.settings_changed_callback)
|
||||
self.cb_notification_click.stateChanged.connect(self.settings_changed_callback)
|
||||
|
||||
# Theme
|
||||
self.combo_theme.currentTextChanged.connect(self.settings_changed_callback)
|
||||
|
||||
# Server info
|
||||
self.pb_change_server_info.clicked.connect(self.change_server_info_callback)
|
||||
|
||||
@@ -200,6 +209,13 @@ class SettingsDialog(QtWidgets.QDialog, Ui_Dialog):
|
||||
"tray/notifications/click", self.cb_notification_click.isChecked()
|
||||
)
|
||||
|
||||
# Theme
|
||||
current_theme = settings.value("theme", type=str)
|
||||
selected_theme = self.combo_theme.currentText()
|
||||
if current_theme != selected_theme:
|
||||
settings.setValue("theme", selected_theme)
|
||||
self.theme_change_requested.emit(selected_theme)
|
||||
|
||||
# Logging
|
||||
selected_level = self.combo_logging.currentText()
|
||||
settings.setValue("logging/level", selected_level)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
from PyQt6 import QtCore, QtGui, QtWidgets
|
||||
|
||||
from gotify_tray.database import Settings
|
||||
from gotify_tray.utils import get_abs_path
|
||||
from gotify_tray.gui.themes import get_theme_file
|
||||
|
||||
|
||||
settings = Settings("gotify-tray")
|
||||
@@ -15,7 +15,7 @@ class StatusWidget(QtWidgets.QLabel):
|
||||
self.set_connecting()
|
||||
|
||||
def set_status(self, image: str):
|
||||
self.setPixmap(QtGui.QPixmap(get_abs_path(f"gotify_tray/gui/images/{image}")))
|
||||
self.setPixmap(QtGui.QPixmap(get_theme_file(image)))
|
||||
|
||||
def set_active(self):
|
||||
self.setToolTip("Listening for new messages")
|
||||
|
||||
Reference in New Issue
Block a user