PluginTimeTracker.py

Fri, 19 Oct 2012 13:06:56 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 19 Oct 2012 13:06:56 +0200
changeset 1
a0beac325e5a
parent 0
944024997123
child 7
6c769e2cc920
permissions
-rw-r--r--

Added a few source files.

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

eric ide

mercurial