From: stack Date: Mon, 9 Jul 2012 00:16:13 +0000 (+0200) Subject: current profile icon X-Git-Url: https://v.licheni.net/stack/code/dboxswitch.git/commitdiff_plain/d12658f79e38f8a8b3c42cbaa97b76cfd63f25e7?ds=inline current profile icon --- diff --git a/current-profile.png b/current-profile.png new file mode 100644 index 0000000..bc316c1 Binary files /dev/null and b/current-profile.png differ diff --git a/gui.py b/gui.py index a54d423..7b7fd57 100755 --- a/gui.py +++ b/gui.py @@ -33,7 +33,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ import sys import os -from PyQt4 import QtGui +from PyQt4 import QtGui, QtCore from PyQt4.QtCore import SIGNAL from qmenutooltip import QMenuToolTip @@ -91,7 +91,7 @@ class Gui(QtGui.QDialog): #profile manager component self.addProfile = QtGui.QAction(" Add &Profile ", self, - triggered=self.addProfile, icon=QtGui.QIcon(appconf.icon)) + triggered=self.addProfile) def createTrayIcon(self): @@ -120,15 +120,18 @@ class Gui(QtGui.QDialog): if reason in (QtGui.QSystemTrayIcon.Trigger, QtGui.QSystemTrayIcon.DoubleClick): self.menuProfiles = QMenuToolTip() self.menuProfiles.setTitle("Profiles") + QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_DontShowIconsInMenus, False) #Get profiles from the ProfHandler embedded in the gui profiles = self.profileManager.getProfilesList() - for pr in profiles: - #pr is a profile path - receiver = self.activateProfileAction(pr) - pr = os.path.basename(pr) + for prpath in profiles: + pr = os.path.basename(prpath) + receiver = self.activateProfileAction(prpath) menuItem_Profile = self.menuProfiles.addAction(pr) + if self.profileManager.isCurrentProfile(prpath): + menuItem_Profile.setIcon(QtGui.QIcon(appconf.cpicon)) + #Using lambda function to pass additional arguments to the function, in this case the path of the profile self.connect(menuItem_Profile, SIGNAL('triggered()'), receiver) #set menu item ToolTip diff --git a/profhandler.py b/profhandler.py index 19a6b97..d0fbb17 100755 --- a/profhandler.py +++ b/profhandler.py @@ -111,7 +111,18 @@ class ProfHandler(): raise AppError('Profile Name not valid') print("Profile "+profileName+" created.") + def isCurrentProfile(self, ppath): + """ Returns true if the current profile path is currently activated """ + + pl = platform.system() + if pl in ('Linux','Darwin'): + if os.path.exists(self.getDropboxDirectory()): + return True if os.readlink(self.getDropboxDirectory()) == ppath else False + else: + return False + def isValidProfileName(self, pname): + if self.reg.match(pname) is not None: return True else: diff --git a/settings.py b/settings.py index b9fb468..38859e7 100644 --- a/settings.py +++ b/settings.py @@ -38,6 +38,7 @@ class Settings(): self.appname = "dboxswitch" self.appversion = "0.1" self.icon = "./icon.png" + self.cpicon = "./current-profile.png" global conf appconf = Settings()