TimeTracker/TimeTracker.py

Sat, 20 Oct 2012 12:49:34 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 20 Oct 2012 12:49:34 +0200
changeset 5
6633e2836f8f
parent 4
c67abfea9955
child 6
be12cde5813f
permissions
-rw-r--r--

Implemented some more of the TimeTrackerWidget.

1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
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:
diff changeset
4 #
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the time tracker object.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import os
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
12 from PyQt4.QtCore import QObject
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 from E5Gui.E5Application import e5App
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 from E5Gui import E5MessageBox
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 from .TimeTrackEntry import TimeTrackEntry
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
18 from .TimeTrackerWidget import TimeTrackerWidget
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
19
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
20 import UI.PixmapCache
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 class TimeTracker(QObject):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 Class implementing the time tracker object.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 FileName = "TimeTracker.txt"
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 def __init__(self, plugin, parent=None):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 Constructor
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 @param plugin reference to the plugin object
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 @param parent parent (QObject)
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 QObject.__init__(self, parent)
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 self.__plugin = plugin
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 self.__ui = parent
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 self.__e5project = e5App().getObject("Project")
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
43 self.__widget = TimeTrackerWidget(self)
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
44 self.__ui.addSideWidget(self.__ui.BottomSide, self.__widget,
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
45 UI.PixmapCache.getIcon(os.path.join("TimeTracker", "icons", "clock.png")),
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
46 self.tr("Time Tracker"))
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
47
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 self.__initialize()
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 def __initialize(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 Public slot to initialize some member variables.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 self.__projectPath = ''
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 self.__trackerFilePath = ''
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 self.__projectOpen = False
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
58 self.__entries = {} # key: entry ID, value tracker entry
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 self.__currentEntry = None
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
60
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
61 self.__widget.clear()
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 def projectOpened(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 Public slot to handle the projectOpened signal.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 if self.__projectOpen:
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 self.projectClosed()
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 self.__projectOpen = True
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 self.__projectPath = self.__e5project.getProjectPath()
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 self.__trackerFilePath = os.path.join(
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 self.__e5project.getProjectManagementDir(),
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 TimeTracker.FileName)
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 self.__readTrackerEntries()
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
77 self.__widget.showTrackerEntries(sorted(self.__entries.values(), reverse=True))
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
79 self.startTrackerEntry()
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 def projectClosed(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 Public slot to handle the projectClosed signal.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 """
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
85 self.stopTrackerEntry()
5
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
86 self.saveTrackerEntries()
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 self.__initialize()
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 def __readTrackerEntries(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 Private slot to read the time tracker entries from a file.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 if os.path.exists(self.__trackerFilePath):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 try:
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 f = open(self.__trackerFilePath, "r", encoding="utf-8")
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 data = f.read()
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 f.close()
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 except (IOError, OSError) as err:
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 E5MessageBox.critical(self.__ui,
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 self.trUtf8("Read Time Tracker File"),
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 self.trUtf8("""<p>The time tracker file <b>{0}</b> could not be"""
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 """ read.</p><p>Reason: {1}</p>""").format(
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 self.__trackerFilePath, str(err)))
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 return
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 invalidCount = 0
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 for line in data.splitlines():
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 entry = TimeTrackEntry()
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
109 eid = entry.fromString(line.strip())
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
110 if eid > -1:
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
111 self.__entries[eid] = entry
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 else:
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 invalidCount += 1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 if invalidCount:
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 E5MessageBox.information(self.__ui,
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 self.trUtf8("Read Time Tracker File"),
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 self.trUtf8("""<p>The time tracker file <b>{0}</b> contained"""
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 """ %n invalid entries. These have been discarded.""",
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 "", invalidCount).format(self.__trackerFilePath))
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121
5
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
122 def saveTrackerEntries(self):
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 """
5
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
124 Public slot to save the tracker entries to a file.
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 try:
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 f = open(self.__trackerFilePath, "w", encoding="utf-8")
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
128 for entry in self.__entries.values():
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 if entry.isValid():
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 f.write(entry.toString() + "\n")
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 f.close()
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 except (IOError, OSError) as err:
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 E5MessageBox.critical(self.__ui,
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 self.trUtf8("Save Time Tracker File"),
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 self.trUtf8("""<p>The time tracker file <b>{0}</b> could not be"""
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 """ saved.</p><p>Reason: {1}</p>""").format(
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 self.__trackerFilePath, str(err)))
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 def pauseTrackerEntry(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 Public method to pause the current tracker entry.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 self.__currentEntry.pause()
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 def continueTrackerEntry(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 Public method to continue the current tracker entry.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 self.__currentEntry.continue_()
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
151 def stopTrackerEntry(self):
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
152 """
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
153 Public method to stop the current tracker entry.
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
154
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
155 @return tuple of the ID assigned to the stopped tracker entry and
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
156 the duration (integer, integer)
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
157 """
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
158 duration = 0
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
159 nextID = -1
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
160 if self.__currentEntry is not None:
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
161 self.__currentEntry.stop()
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
162 if self.__currentEntry.isValid():
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
163 if len(self.__entries.keys()):
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
164 nextID = max(self.__entries.keys()) + 1
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
165 else:
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
166 nextID = 0
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
167 self.__currentEntry.setID(nextID)
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
168 self.__entries[nextID] = self.__currentEntry
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
169 duration = self.__currentEntry.getDuration()
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
170 self.__currentEntry = None
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
171
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
172 return nextID, duration
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
173
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
174 def startTrackerEntry(self):
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
175 """
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
176 Public method to start a new tracker entry.
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
177 """
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
178 self.__currentEntry = TimeTrackEntry()
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
179 self.__currentEntry.start()
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
180 self.__widget.setCurrentEntry(self.__currentEntry)
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
181
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 def getCurrentEntry(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 Public method to get a reference to the current tracker entry.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 return self.__currentEntry
5
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
187
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
188 def deleteTrackerEntry(self, eid):
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
189 """
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
190 Public method to delete a tracker entry given its ID.
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
191
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
192 @param eid ID of the tracker entry (integer)
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
193 """
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
194 if eid in self.__entries:
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
195 del self.__entries[eid]

eric ide

mercurial