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", |
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 # |