class Gui(QtGui.QDialog):
def __init__(self, prManager):
+ """ Gui init, an QApplication is created and stored here, also a main window and a trayIcon
+ are created.
+ Default actions are builded and profile manager stored from argument (instance of ProfHandler """
+
self.app = QtGui.QApplication(sys.argv)
#check if system tray is avaiable on the system
self.profileManager = prManager
def main(self):
+ """ Like Gtk application this main executes the app, thi is somewhat writed for
+ compatibility in porting the app """
+
sys.exit(self.app.exec_())
def closeEvent(self, event):
+ """ Handle application closing """
+
if self.trayIcon.isVisible():
self.hide()
event.ignore()
def createActions(self):
+ """ Create actions for the various components """
+
self.manageprofiles = QtGui.QAction("Manage &Profiles", self,
triggered=self.hide)
self.quitAction = QtGui.QAction("&Quit", self,
def createTrayIcon(self):
+ """ Builds a new tray icon with a context menu and an action for the profile manager menu """
+
#context menu build, right click
self.trayIconMenu = QtGui.QMenu(self)
self.trayIconMenu.addAction(self.manageprofiles)
self.trayIconMenu.addSeparator()
self.trayIconMenu.addAction(self.quitAction)
+ #create the tray with an incon
self.trayIcon = QtGui.QSystemTrayIcon(QtGui.QIcon(appconf.icon), self.app)
+ #attach a context menu for the right click to the tray
self.trayIcon.setContextMenu(self.trayIconMenu)
- #baloon on hover
+ #baloon on hover for the tray
self.trayIcon.setToolTip(appconf.appname+" "+appconf.appversion+"\nRight Click to manage profiles.")
- #left click profiles show
+ #left click profiles show for the tray
self.trayIcon.activated.connect(self.showTrayProfiles)
def showTrayProfiles(self,reason):
+ """ Pops up a system tray profile Manager with a list of activable profiles and an
+ action to add a new One """
+
if reason in (QtGui.QSystemTrayIcon.Trigger, QtGui.QSystemTrayIcon.DoubleClick):
- print "Catched left click"
self.menuProfiles = QtGui.QMenu()
self.menuProfiles.setTitle("Profiles")
+ #Get profiles from the ProfHandler embedded in the gui
profiles = self.profileManager.getProfilesList()
for pr in profiles:
self.menuProfiles.popup(QtGui.QCursor.pos())
def addProfile(self):
+ """ Gui frontend to add a new Profile, it requests the user a profile name
+ through a QInputDialog and creates a new profile with the help of the ProfHandler embedded in the Gui """
+
self.setWindowTitle("Add New Profile - Dboxswitch - dropbox profile switcher")
self.resize(300, 100)
text, ok = QtGui.QInputDialog.getText(self, 'Input Dialog',
'Enter profile name:')
-
if ok:
try:
self.profileManager.addProfile(unicode(text))
self.showError(str(e))
def showError(self, err):
- """ Display an error message """
+ """ Display an error message through a QErrorMessage """
+
self.setWindowTitle("Error - Dboxswitch - dropbox profile switcher")
self.resize(200, 100)
err = QtGui.QErrorMessage.showMessage(QtGui.QErrorMessage.qtHandler(), "Error: "+err)
-
-
-