PluginTimeTracker.py

branch
eric7
changeset 108
702f47d3f794
parent 106
6deb942739dc
child 109
3d6e8bb07779
equal deleted inserted replaced
107:09f25e6d99ee 108:702f47d3f794
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

eric ide

mercurial