PluginTimeTracker.py

branch
eric7
changeset 98
693e42176007
parent 94
a3d936304e51
child 104
2ae9ad969598
equal deleted inserted replaced
97:44ec4168b442 98:693e42176007
7 Module implementing the Time Tracker plugin. 7 Module implementing the Time Tracker plugin.
8 """ 8 """
9 9
10 import os 10 import os
11 11
12 from PyQt5.QtCore import QObject, QTranslator, QCoreApplication 12 from PyQt6.QtCore import QObject, QTranslator, QCoreApplication
13 13
14 from E5Gui.E5Application import e5App 14 from EricWidgets.EricApplication import ericApp
15 15
16 import Preferences 16 import Preferences
17 17
18 from TimeTracker.TimeTracker import TimeTracker 18 from TimeTracker.TimeTracker import TimeTracker
19 19
20 # Start-Of-Header 20 # Start-Of-Header
21 name = "Time Tracker Plugin" 21 name = "Time Tracker Plugin"
22 author = "Detlev Offenbach <detlev@die-offenbachs.de>" 22 author = "Detlev Offenbach <detlev@die-offenbachs.de>"
23 autoactivate = True 23 autoactivate = True
24 deactivateable = True 24 deactivateable = True
25 version = "4.0.0" 25 version = "1.0.0"
26 className = "TimeTrackerPlugin" 26 className = "TimeTrackerPlugin"
27 packageName = "TimeTracker" 27 packageName = "TimeTracker"
28 shortDescription = "Time Tracker to keep track of the project time." 28 shortDescription = "Time Tracker to keep track of the project time."
29 longDescription = ( 29 longDescription = (
30 """This plug-in implements a time tracker to keep track""" 30 """This plug-in implements a time tracker to keep track"""
43 def createTimeTrackerPage(configDlg): 43 def createTimeTrackerPage(configDlg):
44 """ 44 """
45 Module function to create the Time Tracker configuration page. 45 Module function to create the Time Tracker configuration page.
46 46
47 @param configDlg reference to the configuration dialog 47 @param configDlg reference to the configuration dialog
48 @type ConfigurationWidget
48 @return reference to the configuration page 49 @return reference to the configuration page
50 @rtype TimeTrackerPage
49 """ 51 """
50 global timeTrackerPluginObject 52 global timeTrackerPluginObject
51 from TimeTracker.ConfigurationPage.TimeTrackerPage import TimeTrackerPage 53 from TimeTracker.ConfigurationPage.TimeTrackerPage import TimeTrackerPage
52 return TimeTrackerPage(timeTrackerPluginObject) 54 return TimeTrackerPage(timeTrackerPluginObject)
53 55
55 def getConfigData(): 57 def getConfigData():
56 """ 58 """
57 Module function returning data as required by the configuration dialog. 59 Module function returning data as required by the configuration dialog.
58 60
59 @return dictionary containing the relevant data 61 @return dictionary containing the relevant data
60 """ 62 @rtype dict
61 try: 63 """
62 usesDarkPalette = e5App().usesDarkPalette() 64 usesDarkPalette = ericApp().usesDarkPalette()
63 except AttributeError:
64 # backward compatibility for eric6 < 20.04
65 from PyQt5.QtGui import QPalette
66 palette = e5App().palette()
67 lightness = palette.color(QPalette.Window).lightness()
68 usesDarkPalette = lightness <= 128
69 iconSuffix = "dark" if usesDarkPalette else "light" 65 iconSuffix = "dark" if usesDarkPalette else "light"
70 66
71 return { 67 return {
72 "timeTrackerPage": [ 68 "timeTrackerPage": [
73 QCoreApplication.translate("TimeTrackerPlugin", 69 QCoreApplication.translate("TimeTrackerPlugin",
93 89
94 def __init__(self, ui): 90 def __init__(self, ui):
95 """ 91 """
96 Constructor 92 Constructor
97 93
98 @param ui reference to the user interface object (UI.UserInterface) 94 @param ui reference to the user interface object
95 @type UserInterface
99 """ 96 """
100 QObject.__init__(self, ui) 97 QObject.__init__(self, ui)
101 self.__ui = ui 98 self.__ui = ui
102 self.__initialize() 99 self.__initialize()
103 100
114 """ 111 """
115 Private slot to (re)initialize the plugin. 112 Private slot to (re)initialize the plugin.
116 """ 113 """
117 self.__object = None 114 self.__object = None
118 115
119 self.__e5project = e5App().getObject("Project") 116 self.__ericProject = ericApp().getObject("Project")
120 117
121 def activate(self): 118 def activate(self):
122 """ 119 """
123 Public method to activate this plugin. 120 Public method to activate this plugin.
124 121
125 @return tuple of None and activation status (boolean) 122 @return tuple of None and activation status
123 @rtype bool
126 """ 124 """
127 global error 125 global error
128 error = "" # clear previous error 126 error = "" # clear previous error
129 127
130 global timeTrackerPluginObject 128 global timeTrackerPluginObject
131 timeTrackerPluginObject = self 129 timeTrackerPluginObject = self
132 130
133 try: 131 usesDarkPalette = ericApp().usesDarkPalette()
134 usesDarkPalette = e5App().usesDarkPalette()
135 except AttributeError:
136 # backward compatibility for eric6 < 20.04
137 from PyQt5.QtGui import QPalette
138 palette = e5App().palette()
139 lightness = palette.color(QPalette.Window).lightness()
140 usesDarkPalette = lightness <= 128
141 iconSuffix = "dark" if usesDarkPalette else "light" 132 iconSuffix = "dark" if usesDarkPalette else "light"
142 133
143 self.__object = TimeTracker(self, iconSuffix, self.__ui) 134 self.__object = TimeTracker(self, iconSuffix, self.__ui)
144 self.__object.activate() 135 self.__object.activate()
145 e5App().registerPluginObject("TimeTracker", self.__object) 136 ericApp().registerPluginObject("TimeTracker", self.__object)
146 137
147 if self.__e5project.isOpen(): 138 if self.__ericProject.isOpen():
148 self.__object.projectOpened() 139 self.__object.projectOpened()
149 140
150 self.__e5project.newProject.connect(self.__object.projectOpened) 141 self.__ericProject.newProject.connect(
151 self.__e5project.projectOpened.connect(self.__object.projectOpened) 142 self.__object.projectOpened)
152 self.__e5project.projectClosed.connect(self.__object.projectClosed) 143 self.__ericProject.projectOpened.connect(
144 self.__object.projectOpened)
145 self.__ericProject.projectClosed.connect(
146 self.__object.projectClosed)
153 147
154 return None, True 148 return None, True
155 149
156 def deactivate(self): 150 def deactivate(self):
157 """ 151 """
158 Public method to deactivate this plugin. 152 Public method to deactivate this plugin.
159 """ 153 """
160 e5App().unregisterPluginObject("TimeTracker") 154 ericApp().unregisterPluginObject("TimeTracker")
161 self.__object.deactivate() 155 self.__object.deactivate()
162 156
163 self.__e5project.newProject.disconnect(self.__object.projectOpened) 157 self.__ericProject.newProject.disconnect(
164 self.__e5project.projectOpened.disconnect(self.__object.projectOpened) 158 self.__object.projectOpened)
165 self.__e5project.projectClosed.disconnect(self.__object.projectClosed) 159 self.__ericProject.projectOpened.disconnect(
160 self.__object.projectOpened)
161 self.__ericProject.projectClosed.disconnect(
162 self.__object.projectClosed)
166 163
167 self.__object.projectClosed() 164 self.__object.projectClosed()
168 165
169 self.__initialize() 166 self.__initialize()
170 167
180 translation = "timetracker_{0}".format(loc) 177 translation = "timetracker_{0}".format(loc)
181 translator = QTranslator(None) 178 translator = QTranslator(None)
182 loaded = translator.load(translation, locale_dir) 179 loaded = translator.load(translation, locale_dir)
183 if loaded: 180 if loaded:
184 self.__translator = translator 181 self.__translator = translator
185 e5App().installTranslator(self.__translator) 182 ericApp().installTranslator(self.__translator)
186 else: 183 else:
187 print("Warning: translation file '{0}' could not be" 184 print("Warning: translation file '{0}' could not be"
188 " loaded.".format(translation)) 185 " loaded.".format(translation))
189 print("Using default.") 186 print("Using default.")
190 187
191 def getPreferences(self, key): 188 def getPreferences(self, key):
192 """ 189 """
193 Public method to retrieve the various settings. 190 Public method to retrieve the various settings.
194 191
195 @param key the key of the value to get 192 @param key key of the value to get
196 @return the requested setting 193 @type str
194 @return value of the requested setting
195 @rtype Any
197 """ 196 """
198 if key in ["MinimumDuration"]: 197 if key in ["MinimumDuration"]:
199 return int(Preferences.Prefs.settings.value( 198 return int(Preferences.Prefs.settings.value(
200 self.PreferencesKey + "/" + key, self.__defaults[key])) 199 self.PreferencesKey + "/" + key, self.__defaults[key]))
201 elif key in ["AutoSave", "AllowDuplicates"]: 200 elif key in ["AutoSave", "AllowDuplicates"]:
208 207
209 def setPreferences(self, key, value): 208 def setPreferences(self, key, value):
210 """ 209 """
211 Public method to store the various settings. 210 Public method to store the various settings.
212 211
213 @param key the key of the setting to be set (string) 212 @param key key of the setting to be set
214 @param value the value to be set 213 @type str
214 @param value value to be set
215 @type Any
215 """ 216 """
216 Preferences.Prefs.settings.setValue( 217 Preferences.Prefs.settings.setValue(
217 self.PreferencesKey + "/" + key, value) 218 self.PreferencesKey + "/" + key, value)
218 219
219 # 220 #

eric ide

mercurial