36 # End-Of-Header |
36 # End-Of-Header |
37 |
37 |
38 error = "" |
38 error = "" |
39 |
39 |
40 timeTrackerPluginObject = None |
40 timeTrackerPluginObject = None |
41 |
41 |
42 |
42 |
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 @type ConfigurationWidget |
49 @return reference to the configuration page |
49 @return reference to the configuration page |
50 @rtype TimeTrackerPage |
50 @rtype TimeTrackerPage |
51 """ |
51 """ |
52 global timeTrackerPluginObject |
52 global timeTrackerPluginObject |
53 from TimeTracker.ConfigurationPage.TimeTrackerPage import TimeTrackerPage |
53 from TimeTracker.ConfigurationPage.TimeTrackerPage import TimeTrackerPage |
|
54 |
54 return TimeTrackerPage(timeTrackerPluginObject) |
55 return TimeTrackerPage(timeTrackerPluginObject) |
55 |
56 |
56 |
57 |
57 def getConfigData(): |
58 def getConfigData(): |
58 """ |
59 """ |
59 Module function returning data as required by the configuration dialog. |
60 Module function returning data as required by the configuration dialog. |
60 |
61 |
61 @return dictionary containing the relevant data |
62 @return dictionary containing the relevant data |
62 @rtype dict |
63 @rtype dict |
63 """ |
64 """ |
64 usesDarkPalette = ericApp().usesDarkPalette() |
65 usesDarkPalette = ericApp().usesDarkPalette() |
65 iconSuffix = "dark" if usesDarkPalette else "light" |
66 iconSuffix = "dark" if usesDarkPalette else "light" |
66 |
67 |
67 return { |
68 return { |
68 "timeTrackerPage": [ |
69 "timeTrackerPage": [ |
69 QCoreApplication.translate("TimeTrackerPlugin", |
70 QCoreApplication.translate("TimeTrackerPlugin", "Time Tracker"), |
70 "Time Tracker"), |
71 os.path.join("TimeTracker", "icons", "clock-{0}".format(iconSuffix)), |
71 os.path.join("TimeTracker", "icons", |
72 createTimeTrackerPage, |
72 "clock-{0}".format(iconSuffix)), |
73 None, |
73 createTimeTrackerPage, None, None], |
74 None, |
|
75 ], |
74 } |
76 } |
75 |
77 |
76 |
78 |
77 def prepareUninstall(): |
79 def prepareUninstall(): |
78 """ |
80 """ |
83 |
85 |
84 class TimeTrackerPlugin(QObject): |
86 class TimeTrackerPlugin(QObject): |
85 """ |
87 """ |
86 Class implementing the Eric assistant plugin. |
88 Class implementing the Eric assistant plugin. |
87 """ |
89 """ |
|
90 |
88 PreferencesKey = "TimeTracker" |
91 PreferencesKey = "TimeTracker" |
89 |
92 |
90 def __init__(self, ui): |
93 def __init__(self, ui): |
91 """ |
94 """ |
92 Constructor |
95 Constructor |
93 |
96 |
94 @param ui reference to the user interface object |
97 @param ui reference to the user interface object |
95 @type UserInterface |
98 @type UserInterface |
96 """ |
99 """ |
97 QObject.__init__(self, ui) |
100 QObject.__init__(self, ui) |
98 self.__ui = ui |
101 self.__ui = ui |
99 self.__initialize() |
102 self.__initialize() |
100 |
103 |
101 self.__defaults = { |
104 self.__defaults = { |
102 "MinimumDuration": 2, |
105 "MinimumDuration": 2, |
103 "AutoSave": False, |
106 "AutoSave": False, |
104 "AllowDuplicates": False, |
107 "AllowDuplicates": False, |
105 } |
108 } |
106 |
109 |
107 self.__translator = None |
110 self.__translator = None |
108 self.__loadTranslator() |
111 self.__loadTranslator() |
109 |
112 |
110 def __initialize(self): |
113 def __initialize(self): |
111 """ |
114 """ |
112 Private slot to (re)initialize the plugin. |
115 Private slot to (re)initialize the plugin. |
113 """ |
116 """ |
114 self.__object = None |
117 self.__object = None |
115 |
118 |
116 self.__ericProject = ericApp().getObject("Project") |
119 self.__ericProject = ericApp().getObject("Project") |
117 |
120 |
118 def activate(self): |
121 def activate(self): |
119 """ |
122 """ |
120 Public method to activate this plugin. |
123 Public method to activate this plugin. |
121 |
124 |
122 @return tuple of None and activation status |
125 @return tuple of None and activation status |
123 @rtype bool |
126 @rtype bool |
124 """ |
127 """ |
125 global error |
128 global error |
126 error = "" # clear previous error |
129 error = "" # clear previous error |
127 |
130 |
128 global timeTrackerPluginObject |
131 global timeTrackerPluginObject |
129 timeTrackerPluginObject = self |
132 timeTrackerPluginObject = self |
130 |
133 |
131 usesDarkPalette = ericApp().usesDarkPalette() |
134 usesDarkPalette = ericApp().usesDarkPalette() |
132 iconSuffix = "dark" if usesDarkPalette else "light" |
135 iconSuffix = "dark" if usesDarkPalette else "light" |
133 |
136 |
134 self.__object = TimeTracker(self, iconSuffix, self.__ui) |
137 self.__object = TimeTracker(self, iconSuffix, self.__ui) |
135 self.__object.activate() |
138 self.__object.activate() |
136 ericApp().registerPluginObject("TimeTracker", self.__object) |
139 ericApp().registerPluginObject("TimeTracker", self.__object) |
137 |
140 |
138 if self.__ericProject.isOpen(): |
141 if self.__ericProject.isOpen(): |
139 self.__object.projectOpened() |
142 self.__object.projectOpened() |
140 |
143 |
141 self.__ericProject.newProject.connect( |
144 self.__ericProject.newProject.connect(self.__object.projectOpened) |
142 self.__object.projectOpened) |
145 self.__ericProject.projectOpened.connect(self.__object.projectOpened) |
143 self.__ericProject.projectOpened.connect( |
146 self.__ericProject.projectClosed.connect(self.__object.projectClosed) |
144 self.__object.projectOpened) |
147 |
145 self.__ericProject.projectClosed.connect( |
|
146 self.__object.projectClosed) |
|
147 |
|
148 return None, True |
148 return None, True |
149 |
149 |
150 def deactivate(self): |
150 def deactivate(self): |
151 """ |
151 """ |
152 Public method to deactivate this plugin. |
152 Public method to deactivate this plugin. |
153 """ |
153 """ |
154 ericApp().unregisterPluginObject("TimeTracker") |
154 ericApp().unregisterPluginObject("TimeTracker") |
155 self.__object.deactivate() |
155 self.__object.deactivate() |
156 |
156 |
157 self.__ericProject.newProject.disconnect( |
157 self.__ericProject.newProject.disconnect(self.__object.projectOpened) |
158 self.__object.projectOpened) |
158 self.__ericProject.projectOpened.disconnect(self.__object.projectOpened) |
159 self.__ericProject.projectOpened.disconnect( |
159 self.__ericProject.projectClosed.disconnect(self.__object.projectClosed) |
160 self.__object.projectOpened) |
160 |
161 self.__ericProject.projectClosed.disconnect( |
|
162 self.__object.projectClosed) |
|
163 |
|
164 self.__object.projectClosed() |
161 self.__object.projectClosed() |
165 |
162 |
166 self.__initialize() |
163 self.__initialize() |
167 |
164 |
168 def __loadTranslator(self): |
165 def __loadTranslator(self): |
169 """ |
166 """ |
170 Private method to load the translation file. |
167 Private method to load the translation file. |
171 """ |
168 """ |
172 if self.__ui is not None: |
169 if self.__ui is not None: |
173 loc = self.__ui.getLocale() |
170 loc = self.__ui.getLocale() |
174 if loc and loc != "C": |
171 if loc and loc != "C": |
175 locale_dir = os.path.join( |
172 locale_dir = os.path.join( |
176 os.path.dirname(__file__), "TimeTracker", "i18n") |
173 os.path.dirname(__file__), "TimeTracker", "i18n" |
|
174 ) |
177 translation = "timetracker_{0}".format(loc) |
175 translation = "timetracker_{0}".format(loc) |
178 translator = QTranslator(None) |
176 translator = QTranslator(None) |
179 loaded = translator.load(translation, locale_dir) |
177 loaded = translator.load(translation, locale_dir) |
180 if loaded: |
178 if loaded: |
181 self.__translator = translator |
179 self.__translator = translator |
182 ericApp().installTranslator(self.__translator) |
180 ericApp().installTranslator(self.__translator) |
183 else: |
181 else: |
184 print("Warning: translation file '{0}' could not be" |
182 print( |
185 " loaded.".format(translation)) |
183 "Warning: translation file '{0}' could not be" |
|
184 " loaded.".format(translation) |
|
185 ) |
186 print("Using default.") |
186 print("Using default.") |
187 |
187 |
188 def getPreferences(self, key): |
188 def getPreferences(self, key): |
189 """ |
189 """ |
190 Public method to retrieve the various settings. |
190 Public method to retrieve the various settings. |
191 |
191 |
192 @param key key of the value to get |
192 @param key key of the value to get |
193 @type str |
193 @type str |
194 @return value of the requested setting |
194 @return value of the requested setting |
195 @rtype Any |
195 @rtype Any |
196 """ |
196 """ |
197 if key in ["MinimumDuration"]: |
197 if key in ["MinimumDuration"]: |
198 return int(Preferences.Prefs.settings.value( |
198 return int( |
199 self.PreferencesKey + "/" + key, self.__defaults[key])) |
199 Preferences.Prefs.settings.value( |
|
200 self.PreferencesKey + "/" + key, self.__defaults[key] |
|
201 ) |
|
202 ) |
200 elif key in ["AutoSave", "AllowDuplicates"]: |
203 elif key in ["AutoSave", "AllowDuplicates"]: |
201 return Preferences.toBool( |
204 return Preferences.toBool( |
202 Preferences.Prefs.settings.value( |
205 Preferences.Prefs.settings.value( |
203 self.PreferencesKey + "/" + key, self.__defaults[key])) |
206 self.PreferencesKey + "/" + key, self.__defaults[key] |
|
207 ) |
|
208 ) |
204 else: |
209 else: |
205 return Preferences.Prefs.settings.value( |
210 return Preferences.Prefs.settings.value( |
206 self.PreferencesKey + "/" + key, self.__defaults[key]) |
211 self.PreferencesKey + "/" + key, self.__defaults[key] |
207 |
212 ) |
|
213 |
208 def setPreferences(self, key, value): |
214 def setPreferences(self, key, value): |
209 """ |
215 """ |
210 Public method to store the various settings. |
216 Public method to store the various settings. |
211 |
217 |
212 @param key key of the setting to be set |
218 @param key key of the setting to be set |
213 @type str |
219 @type str |
214 @param value value to be set |
220 @param value value to be set |
215 @type Any |
221 @type Any |
216 """ |
222 """ |
217 Preferences.Prefs.settings.setValue( |
223 Preferences.Prefs.settings.setValue(self.PreferencesKey + "/" + key, value) |
218 self.PreferencesKey + "/" + key, value) |
224 |
219 |
225 |
220 # |
226 # |
221 # eflag: noqa = M801 |
227 # eflag: noqa = M801 |