From 773efc687012b44b28fe9dd0cd37f168bf285133 Mon Sep 17 00:00:00 2001 From: Kilian Valkhof Date: Wed, 21 Apr 2010 13:28:52 +0200 Subject: [PATCH] implement a system tray with basic functionality --- src/trimage/trimage.py | 39 +++++++++++++++++++++++++++++++++++++++ src/trimage/ui.py | 4 +++- 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/src/trimage/trimage.py b/src/trimage/trimage.py index 814de4c..a84e270 100644 --- a/src/trimage/trimage.py +++ b/src/trimage/trimage.py @@ -28,6 +28,8 @@ class StartQT4(QMainWindow): self.ui = Ui_trimage() self.ui.setupUi(self) + self.systemtray = Systray(self) + self.showapp = True self.verbose = True self.imagelist = [] @@ -420,6 +422,43 @@ class Worker(QThread): else: print >> sys.stderr, u"[error] %s could not be compressed" % image.fullpath + +class Systray(QWidget): + def __init__(self, parent): + QWidget.__init__(self) + self.parent = parent + self.createActions() + self.createTrayIcon() + self.trayIcon.show() + + def createActions(self): + self.quitAction = QAction(self.tr("&Quit"), self) + QObject.connect(self.quitAction, SIGNAL("triggered()"), + qApp, SLOT("quit()")) + + self.addFiles = QAction(self.tr("&Add and compress"), self) + icon = QIcon() + icon.addPixmap(QPixmap(self.parent.ui.get_image(("pixmaps/list-add.png"))), QIcon.Normal, QIcon.Off) + self.addFiles.setIcon(icon) + QObject.connect(self.addFiles, SIGNAL("triggered()"), self.parent.file_dialog) + + self.recompress = QAction(self.tr("&Recompress"), self) + icon2 = QIcon() + icon2.addPixmap(QPixmap(self.parent.ui.get_image(("pixmaps/view-refresh.png"))), QIcon.Normal, QIcon.Off) + self.recompress.setIcon(icon2) + QObject.connect(self.addFiles, SIGNAL("triggered()"), self.parent.recompress_files) + + def createTrayIcon(self): + self.trayIconMenu = QMenu(self) + self.trayIconMenu.addAction(self.addFiles) + self.trayIconMenu.addAction(self.recompress) + self.trayIconMenu.addAction(self.quitAction) + + self.trayIcon = QSystemTrayIcon(self) + self.trayIcon.setContextMenu(self.trayIconMenu) + self.trayIcon.setIcon(QIcon(self.parent.ui.get_image("pixmaps/trimage-icon.png"))) + + if __name__ == "__main__": app = QApplication(sys.argv) myapp = StartQT4() diff --git a/src/trimage/ui.py b/src/trimage/ui.py index 86caee8..47937da 100644 --- a/src/trimage/ui.py +++ b/src/trimage/ui.py @@ -36,7 +36,9 @@ class Ui_trimage(object): """ Setup the entire UI """ trimage.setObjectName("trimage") trimage.resize(600, 170) - trimage.setWindowIcon(QIcon(self.get_image("pixmaps/trimage-icon.png"))) + + trimageIcon = QIcon(self.get_image("pixmaps/trimage-icon.png")) + trimage.setWindowIcon(trimageIcon) self.centralwidget = QWidget(trimage) self.centralwidget.setObjectName("centralwidget")