use QCoreApplication.instance instead of passing the instance through several objects

This commit is contained in:
dries.k
2023-05-30 20:53:25 +02:00
parent a7f5534c6b
commit 4eceae5a40
6 changed files with 14 additions and 24 deletions

View File

@@ -72,7 +72,7 @@ class MainApplication(QtWidgets.QApplication):
self.messages_model = MessagesModel() self.messages_model = MessagesModel()
self.application_model = ApplicationModel() self.application_model = ApplicationModel()
self.main_window = MainWindow(self, self.application_model, self.messages_model) self.main_window = MainWindow(self.application_model, self.messages_model)
self.main_window.show() # The initial .show() is necessary to get the correct sizes when adding MessageWigets self.main_window.show() # The initial .show() is necessary to get the correct sizes when adding MessageWigets
QtCore.QTimer.singleShot(0, self.main_window.hide) QtCore.QTimer.singleShot(0, self.main_window.hide)
@@ -309,7 +309,7 @@ class MainApplication(QtWidgets.QApplication):
message_widget.set_icons() message_widget.set_icons()
def settings_callback(self): def settings_callback(self):
settings_dialog = SettingsDialog(self) settings_dialog = SettingsDialog()
settings_dialog.quit_requested.connect(self.quit) settings_dialog.quit_requested.connect(self.quit)
settings_dialog.theme_change_requested.connect(self.theme_change_requested_callback) settings_dialog.theme_change_requested.connect(self.theme_change_requested_callback)
accepted = settings_dialog.exec() accepted = settings_dialog.exec()

View File

@@ -45,7 +45,7 @@ def set_theme(app: QtWidgets.QApplication, theme: str = "automatic"):
app.setStyleSheet(stylesheet) app.setStyleSheet(stylesheet)
def get_theme_file(app: QtWidgets.QApplication, file: str, theme: str | None = None) -> str: def get_theme_file(file: str, theme: str | None = None) -> str:
theme = settings.value("theme", type=str) if not theme else theme theme = settings.value("theme", type=str) if not theme else theme
if not is_valid_theme(theme): if not is_valid_theme(theme):
@@ -53,6 +53,7 @@ def get_theme_file(app: QtWidgets.QApplication, file: str, theme: str | None = N
theme = "automatic" theme = "automatic"
if theme in ("automatic", "default"): if theme in ("automatic", "default"):
app = QtCore.QCoreApplication.instance()
theme = "dark purple" if is_dark_mode(app) else "light purple" theme = "dark purple" if is_dark_mode(app) else "light purple"
return get_abs_path(f"gotify_tray/gui/themes/{theme.replace(' ', '_')}/{file}") return get_abs_path(f"gotify_tray/gui/themes/{theme.replace(' ', '_')}/{file}")

View File

@@ -27,10 +27,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
hidden = QtCore.pyqtSignal() hidden = QtCore.pyqtSignal()
activated = QtCore.pyqtSignal() activated = QtCore.pyqtSignal()
def __init__( def __init__(self, application_model: ApplicationModel, messages_model: MessagesModel):
self, app: QtWidgets.QApplication,
application_model: ApplicationModel, messages_model: MessagesModel
):
super(MainWindow, self).__init__() super(MainWindow, self).__init__()
self.setupUi(self) self.setupUi(self)
@@ -38,8 +35,6 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
self.setWindowTitle(__title__) self.setWindowTitle(__title__)
self.app = app
self.application_model = application_model self.application_model = application_model
self.messages_model = messages_model self.messages_model = messages_model
@@ -52,7 +47,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
# Do not collapse the message list # Do not collapse the message list
self.splitter.setCollapsible(1, False) self.splitter.setCollapsible(1, False)
self.status_widget = StatusWidget(app) self.status_widget = StatusWidget()
self.horizontalLayout.insertWidget(0, self.status_widget) self.horizontalLayout.insertWidget(0, self.status_widget)
self.set_icons() self.set_icons()
@@ -75,8 +70,8 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def set_icons(self): def set_icons(self):
# Set button icons # Set button icons
self.pb_refresh.setIcon(QtGui.QIcon(get_theme_file(self.app, "refresh.svg"))) self.pb_refresh.setIcon(QtGui.QIcon(get_theme_file("refresh.svg")))
self.pb_delete_all.setIcon(QtGui.QIcon(get_theme_file(self.app, "trashcan.svg"))) self.pb_delete_all.setIcon(QtGui.QIcon(get_theme_file("trashcan.svg")))
# Resize the labels and icons # Resize the labels and icons
size = settings.value("MainWindow/label/size", type=int) size = settings.value("MainWindow/label/size", type=int)
@@ -115,7 +110,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
application_item = self.application_model.itemFromId(message.appid) application_item = self.application_model.itemFromId(message.appid)
message_widget = MessageWidget(self.app, self.listView_messages, message_item, icon=application_item.icon()) message_widget = MessageWidget(self.listView_messages, message_item, icon=application_item.icon())
message_widget.deletion_requested.connect(self.delete_message.emit) message_widget.deletion_requested.connect(self.delete_message.emit)
message_widget.image_popup.connect(self.image_popup.emit) message_widget.image_popup.connect(self.image_popup.emit)

View File

@@ -20,13 +20,11 @@ class MessageWidget(QtWidgets.QWidget, Ui_Form):
def __init__( def __init__(
self, self,
app: QtWidgets.QApplication,
parent: QtWidgets.QWidget, parent: QtWidgets.QWidget,
message_item: MessagesModelItem, message_item: MessagesModelItem,
icon: QtGui.QIcon | None = None, icon: QtGui.QIcon | None = None,
): ):
super(MessageWidget, self).__init__(parent) super(MessageWidget, self).__init__(parent)
self.app = app
self._parent = parent self._parent = parent
self.setupUi(self) self.setupUi(self)
self.setAutoFillBackground(True) self.setAutoFillBackground(True)
@@ -102,7 +100,7 @@ class MessageWidget(QtWidgets.QWidget, Ui_Form):
self.label_message.setFont(font_content) self.label_message.setFont(font_content)
def set_icons(self): def set_icons(self):
self.pb_delete.setIcon(QtGui.QIcon(get_theme_file(self.app, "trashcan.svg"))) self.pb_delete.setIcon(QtGui.QIcon(get_theme_file("trashcan.svg")))
self.pb_delete.setIconSize(QtCore.QSize(24, 24)) self.pb_delete.setIconSize(QtCore.QSize(24, 24))
def set_message_image(self, filename: str): def set_message_image(self, filename: str):

View File

@@ -27,13 +27,11 @@ class SettingsDialog(QtWidgets.QDialog, Ui_Dialog):
quit_requested = QtCore.pyqtSignal() quit_requested = QtCore.pyqtSignal()
theme_change_requested = QtCore.pyqtSignal(str) theme_change_requested = QtCore.pyqtSignal(str)
def __init__(self, app: QtWidgets.QApplication): def __init__(self):
super(SettingsDialog, self).__init__() super(SettingsDialog, self).__init__()
self.setupUi(self) self.setupUi(self)
self.setWindowTitle("Settings") self.setWindowTitle("Settings")
self.app = app
self.settings_changed = False self.settings_changed = False
self.changes_applied = False self.changes_applied = False
self.server_changed = False self.server_changed = False
@@ -91,7 +89,6 @@ class SettingsDialog(QtWidgets.QDialog, Ui_Dialog):
def add_message_widget(self): def add_message_widget(self):
self.message_widget = MessageWidget( self.message_widget = MessageWidget(
self.app,
self, self,
MessagesModelItem( MessagesModelItem(
GotifyMessageModel( GotifyMessageModel(

View File

@@ -8,9 +8,8 @@ settings = Settings("gotify-tray")
class StatusWidget(QtWidgets.QLabel): class StatusWidget(QtWidgets.QLabel):
def __init__(self, app: QtWidgets.QApplication): def __init__(self):
super(StatusWidget, self).__init__() super(StatusWidget, self).__init__()
self.app = app
self.setFixedSize(QtCore.QSize(20, 20)) self.setFixedSize(QtCore.QSize(20, 20))
self.setScaledContents(True) self.setScaledContents(True)
self.set_connecting() self.set_connecting()
@@ -18,7 +17,7 @@ class StatusWidget(QtWidgets.QLabel):
def set_status(self, image: str): def set_status(self, image: str):
self.image = image self.image = image
self.setPixmap(QtGui.QPixmap(get_theme_file(self.app, image))) self.setPixmap(QtGui.QPixmap(get_theme_file(image)))
def set_active(self): def set_active(self):
self.setToolTip("Listening for new messages") self.setToolTip("Listening for new messages")