From 340a521f2f69056e12419d7fd3930afdc391ac63 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Fri, 14 Nov 2008 15:25:01 +0900 Subject: [PATCH] add deck name to tray icons, change tooltip behaviour, coding style --- ankiqt/ui/tray.py | 119 ++++++++++++++++++++++++---------------------- 1 file changed, 63 insertions(+), 56 deletions(-) diff --git a/ankiqt/ui/tray.py b/ankiqt/ui/tray.py index 46ddf8942..ebd1c0493 100644 --- a/ankiqt/ui/tray.py +++ b/ankiqt/ui/tray.py @@ -4,70 +4,77 @@ from PyQt4 import QtGui, QtCore Qt = QtCore.Qt -class AnkiTrayIcon( QtCore.QObject ): - """ - Enable minimize to tray - """ +class AnkiTrayIcon(QtCore.QObject): + """ + Enable minimize to tray + """ - def __init__( self, mw ): - QtCore.QObject.__init__( self, mw ) - self.mw = mw - self.anki_visible = True - if (QtGui.QSystemTrayIcon.isSystemTrayAvailable() and + def __init__(self, mw): + QtCore.QObject.__init__(self, mw) + self.mw = mw + self.anki_visible = True + if (QtGui.QSystemTrayIcon.isSystemTrayAvailable() and mw.config['showTrayIcon']): - self.ti = QtGui.QSystemTrayIcon( mw ) - if self.ti: - self.mw.addHook("quit", self.onQuit) - self.ti.setIcon( QtGui.QIcon(":/icons/anki.png") ) - self.ti.setToolTip( "Anki" ) + self.ti = QtGui.QSystemTrayIcon(mw) + if self.ti: + self.mw.addHook("quit", self.onQuit) + self.ti.setIcon(QtGui.QIcon(":/icons/anki.png")) + self.ti.setToolTip("Anki") + # hook signls, and Anki state changes + mw.addView(self) + mw.connect(self.ti, QtCore.SIGNAL("activated(QSystemTrayIcon::ActivationReason)"),lambda i: self.activated(i)) + mw.connect(self.ti, QtCore.SIGNAL("messageClicked()"), lambda : self.messageClicked()) + self.ti.show() - # hook signls, and Anki state changes - mw.addView( self ) - mw.connect(self.ti, QtCore.SIGNAL("activated(QSystemTrayIcon::ActivationReason)"), lambda i: self.activated(i)) - mw.connect(self.ti, QtCore.SIGNAL("messageClicked()"), lambda : self.messageClicked()) - self.ti.show() + def showMain(self): + self.mw.showNormal() + self.mw.activateWindow() + self.mw.raise_() + self.anki_visible = True + self.updateTooltip() - def showMain( self ): - self.mw.showNormal() - self.mw.activateWindow() - self.mw.raise_() - self.anki_visible = True + def hideMain(self): + self.mw.hide() + self.anki_visible = False + self.updateTooltip() - def hideMain( self ): - self.mw.hide() - self.anki_visible = False + def activated(self, reason): + if self.anki_visible: + self.hideMain() + else: + self.showMain() - def activated( self, reason ): - if self.anki_visible: - self.hideMain() - else: - self.showMain() + def messageClicked(self): + if not self.anki_visible: + self.showMain() - def messageClicked( self ): - if not self.anki_visible: - self.showMain() + def setToolTip(self, message): + self.ti.setToolTip(message) - def setToolTip( self, message ): - self.ti.setToolTip( message ) + def showMessage(self, message): + if self.ti.supportsMessages(): + self.ti.showMessage("Anki", message) - def showMessage( self, message ): - if self.ti.supportsMessages(): - self.ti.showMessage( "Anki", message ) + def setState(self, state): + self.state = state + self.updateTooltip() - def setState( self, state ): - if state == "showQuestion": - if not self.anki_visible: - self.showMessage( "A new card is available for review, click this message to display Anki" ) - self.setToolTip( "Anki - displaying question" ) - elif state == "showAnswer": - self.setToolTip( "Anki - displaying answer" ) - elif state == "noDeck": - self.setToolTip( "Anki - no deck" ) - elif state == "deckFinished": - if self.mw and self.mw.deck: - self.setToolTip( "Anki - next card in " + self.mw.deck.earliestTimeStr() ) - else: - self.setToolTip( "Anki" ) + def updateTooltip(self): + state = self.state + if self.mw.deck: + name = self.mw.deck.name() + else: + name = "Anki" + msg = name + ":
" + if state == "deckFinished": + msg += _("Today's reviews are finished
") + elif self.mw.deck: + msg += _("Cards are waiting
") + if self.anki_visible: + msg += _("Click to hide Anki") + else: + msg += _("Click to show Anki") + self.setToolTip(msg) - def onQuit(self): - self.ti.deleteLater() + def onQuit(self): + self.ti.deleteLater()