PluginTimeTracker.py

changeset 1
a0beac325e5a
parent 0
944024997123
child 7
6c769e2cc920
equal deleted inserted replaced
0:944024997123 1:a0beac325e5a
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2012 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing the Time Tracker plugin.
8 """
9
10 import os
11
12 from PyQt4.QtCore import QObject, QTranslator
13
14 from E5Gui.E5Application import e5App
15
16 from TimeTracker.TimeTracker import TimeTracker
17
18 # Start-Of-Header
19 name = "Time Tracker Plugin"
20 author = "Detlev Offenbach <detlev@die-offenbachs.de>"
21 autoactivate = True
22 deactivateable = True
23 version = "0.1.0"
24 className = "TimeTrackerPlugin"
25 packageName = "TimeTracker"
26 shortDescription = "Time Tracker to keep track of the project time."
27 longDescription = """This plugin implements a time tracker to keep track""" \
28 """ of the time used for a project. The time can be subdivided into tasks."""
29 needsRestart = False
30 pyqtApi = 2
31 # End-Of-Header
32
33 error = ""
34
35
36 class TimeTrackerPlugin(QObject):
37 """
38 Class implementing the Eric assistant plugin.
39 """
40 def __init__(self, ui):
41 """
42 Constructor
43
44 @param ui reference to the user interface object (UI.UserInterface)
45 """
46 QObject.__init__(self, ui)
47 self.__ui = ui
48 self.__initialize()
49
50 self.__translator = None
51 self.__loadTranslator()
52
53 self.__e5project = e5App().getObject("Project")
54
55 def __initialize(self):
56 """
57 Private slot to (re)initialize the plugin.
58 """
59 self.__object = None
60
61 def __checkVersions(self):
62 """
63 Private function to check that the eric5 version is ok.
64
65 @return flag indicating version is ok (boolean)
66 """
67 global error
68
69 if self.__ui.versionIsNewer('5.2.99', '20121012'):
70 error = ""
71 else:
72 error = self.trUtf8("eric5 version is too old, {0}, {1} or newer needed.")\
73 .format("5.3.0", "20121012")
74 return False
75
76 return True
77
78 def activate(self):
79 """
80 Public method to activate this plugin.
81
82 @return tuple of None and activation status (boolean)
83 """
84 global error
85 error = "" # clear previous error
86
87 if not self.__checkVersions():
88 return None, False
89
90 self.__object = TimeTracker(self, self.__ui)
91 ## self.__object.initActions()
92 e5App().registerPluginObject("TimeTracker", self.__object)
93
94 if self.__e5project.isOpen():
95 self.__object.projectOpened()
96
97 self.__e5project.newProject.connect(self.__object.projectOpened)
98 self.__e5project.projectOpened.connect(self.__object.projectOpened)
99 self.__e5project.projectClosed.connect(self.__object.projectClosed)
100
101 return None, True
102
103 def deactivate(self):
104 """
105 Public method to deactivate this plugin.
106 """
107 e5App().unregisterPluginObject("TimeTracker")
108
109 self.__e5project.newProject.disconnect(self.__object.projectOpened)
110 self.__e5project.projectOpened.disconnect(self.__object.projectOpened)
111 self.__e5project.projectClosed.disconnect(self.__object.projectClosed)
112
113 self.__object.projectClosed()
114
115 self.__initialize()
116
117 def __loadTranslator(self):
118 """
119 Private method to load the translation file.
120 """
121 if self.__ui is not None:
122 loc = self.__ui.getLocale()
123 if loc and loc != "C":
124 locale_dir = \
125 os.path.join(os.path.dirname(__file__), "TimeTracker", "i18n")
126 translation = "timetracker_{0}".format(loc)
127 translator = QTranslator(None)
128 loaded = translator.load(translation, locale_dir)
129 if loaded:
130 self.__translator = translator
131 e5App().installTranslator(self.__translator)
132 else:
133 print("Warning: translation file '{0}' could not be loaded."\
134 .format(translation))
135 print("Using default.")

eric ide

mercurial