TimeTracker/TimeTracker.py

Sat, 03 Nov 2012 16:53:13 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 03 Nov 2012 16:53:13 +0100
changeset 21
28b7956c9608
parent 15
645506ab3376
child 31
db0afa672b75
permissions
-rw-r--r--

Fixed a few bugs and added actions to activate the time tracker window.

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
21
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
12 from PyQt4.QtCore import Qt, QObject
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
13 from PyQt4.QtGui import QKeySequence
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 from E5Gui.E5Application import e5App
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 from E5Gui import E5MessageBox
21
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
17 from E5Gui.E5Action import E5Action
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 from .TimeTrackEntry import TimeTrackEntry
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
20 from .TimeTrackerWidget import TimeTrackerWidget
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
21
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
22 import UI.PixmapCache
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23
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 TimeTracker(QObject):
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 Class implementing the time tracker object.
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 FileName = "TimeTracker.txt"
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 def __init__(self, plugin, parent=None):
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 Constructor
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34
8
17d90f9425fc Made some behavior dependent of configuration parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
35 @param plugin reference to the plugin object (TimeTrackerPlugin)
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 @param parent parent (QObject)
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 QObject.__init__(self, parent)
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 self.__plugin = plugin
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 self.__ui = parent
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 self.__e5project = e5App().getObject("Project")
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 def __initialize(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 Public slot to initialize some member variables.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 self.__projectPath = ''
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 self.__trackerFilePath = ''
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 self.__projectOpen = False
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
53 self.__entries = {} # key: entry ID, value tracker entry
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 self.__currentEntry = None
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
55
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
56 self.__widget.clear()
12
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
57 self.__widget.setEnabled(False)
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58
21
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
59 def activate(self):
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
60 """
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
61 Public method to activate the time tracker.
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
62 """
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
63 self.__widget = TimeTrackerWidget(self)
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
64 self.__ui.addSideWidget(self.__ui.BottomSide, self.__widget,
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
65 UI.PixmapCache.getIcon(os.path.join("TimeTracker", "icons", "clock.png")),
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
66 self.tr("Time Tracker"))
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
67
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
68 self.__activateAct = E5Action(self.trUtf8('Time Tracker'),
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
69 self.trUtf8('T&ime Tracker'),
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
70 QKeySequence(self.trUtf8("Alt+Shift+I")),
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
71 0, self,
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
72 'time_tracker_activate')
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
73 self.__activateAct.setStatusTip(self.trUtf8(
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
74 "Switch the input focus to the Time Tracker window."))
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
75 self.__activateAct.setWhatsThis(self.trUtf8(
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
76 """<b>Activate Time Tracker</b>"""
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
77 """<p>This switches the input focus to the Time Tracker window.</p>"""
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
78 ))
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
79 self.__activateAct.triggered[()].connect(self.__activateWidget)
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
80
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
81 self.__ui.addE5Actions([self.__activateAct], 'ui')
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
82 menu = self.__ui.getMenu("subwindow")
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
83 menu.addAction(self.__activateAct)
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
84
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
85 self.__initialize()
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
86
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
87 def deactivate(self):
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
88 """
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
89 Public method to deactivate the time tracker.
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
90 """
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
91 menu = self.__ui.getMenu("subwindow")
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
92 menu.removeAction(self.__activateAct)
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
93 self.__ui.removeE5Actions([self.__activateAct], 'ui')
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
94 self.__ui.removeSideWidget(self.__widget)
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
95
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 def projectOpened(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 Public slot to handle the projectOpened signal.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 if self.__projectOpen:
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 self.projectClosed()
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 self.__projectOpen = True
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 self.__projectPath = self.__e5project.getProjectPath()
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 self.__trackerFilePath = os.path.join(
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 self.__e5project.getProjectManagementDir(),
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 TimeTracker.FileName)
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 self.__readTrackerEntries()
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
110 self.__widget.showTrackerEntries(sorted(self.__entries.values(), reverse=True))
12
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
111 self.__widget.setEnabled(True)
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
113 self.startTrackerEntry()
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 def projectClosed(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 Public slot to handle the projectClosed signal.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 """
21
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
119 if self.__projectOpen:
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
120 self.stopTrackerEntry()
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
121 self.saveTrackerEntries()
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 self.__initialize()
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 def __readTrackerEntries(self):
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 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
127 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 if os.path.exists(self.__trackerFilePath):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 try:
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 f = open(self.__trackerFilePath, "r", encoding="utf-8")
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 data = f.read()
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 f.close()
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 except (IOError, OSError) as err:
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 E5MessageBox.critical(self.__ui,
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 self.trUtf8("Read Time Tracker File"),
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 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
137 """ read.</p><p>Reason: {1}</p>""").format(
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 self.__trackerFilePath, str(err)))
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 return
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 invalidCount = 0
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 for line in data.splitlines():
8
17d90f9425fc Made some behavior dependent of configuration parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
143 entry = TimeTrackEntry(self.__plugin)
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
144 eid = entry.fromString(line.strip())
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
145 if eid > -1:
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
146 self.__entries[eid] = entry
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 else:
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 invalidCount += 1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 if invalidCount:
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 E5MessageBox.information(self.__ui,
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 self.trUtf8("Read Time Tracker File"),
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 self.trUtf8("""<p>The time tracker file <b>{0}</b> contained"""
15
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
154 """ %n invalid entries. These have been discarded.</p>""",
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 "", invalidCount).format(self.__trackerFilePath))
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156
6
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
157 def saveTrackerEntries(self, filePath="", ids=[]):
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 """
5
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
159 Public slot to save the tracker entries to a file.
6
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
160
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
161 @keyparam filePath path and name of the file to write the entries to (string)
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
162 @keyparam ids list of entry IDs to be written (list of integer)
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 """
6
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
164 if not filePath:
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
165 filePath = self.__trackerFilePath
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
166 if ids:
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
167 entriesList = [self.__entries[eid] for eid in ids if eid in self.__entries]
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
168 else:
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
169 entriesList = self.__entries.values()
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 try:
6
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
171 f = open(filePath, "w", encoding="utf-8")
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
172 for entry in entriesList:
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 if entry.isValid():
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 f.write(entry.toString() + "\n")
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 f.close()
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 except (IOError, OSError) as err:
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 E5MessageBox.critical(self.__ui,
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 self.trUtf8("Save Time Tracker File"),
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 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
180 """ saved.</p><p>Reason: {1}</p>""").format(
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 self.__trackerFilePath, str(err)))
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182
9
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
183 def importTrackerEntries(self, fname):
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
184 """
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
185 Public slot to import tracker entries from a file.
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
186
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
187 @param fname name of the file to import (string)
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
188 """
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
189 try:
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
190 f = open(fname, "r", encoding="utf-8")
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
191 data = f.read()
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
192 f.close()
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
193 except (IOError, OSError) as err:
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
194 E5MessageBox.critical(self.__ui,
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
195 self.trUtf8("Import Time Tracker File"),
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
196 self.trUtf8("""<p>The time tracker file <b>{0}</b> could not be"""
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
197 """ read.</p><p>Reason: {1}</p>""").format(
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
198 fname, str(err)))
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
199 return
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
200
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
201 invalidCount = 0
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
202 duplicateCount = 0
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
203 entries = []
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
204 for line in data.splitlines():
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
205 entry = TimeTrackEntry(self.__plugin)
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
206 eid = entry.fromString(line.strip())
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
207 if eid > -1:
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
208 entries.append(entry)
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
209 else:
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
210 invalidCount += 1
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
211
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
212 if not self.__plugin.getPreferences("AllowDuplicates"):
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
213 startDateTimes = [
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
214 entry.getStartDateTime() for entry in self.__entries.values()]
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
215 for entry in entries[:]:
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
216 if entry.getStartDateTime() in startDateTimes:
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
217 entries.remove(entry)
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
218 duplicateCount += 1
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
219
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
220 if len(self.__entries.keys()):
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
221 nextID = max(self.__entries.keys()) + 1
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
222 else:
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
223 nextID = 0
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
224 for entry in entries:
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
225 entry.setID(nextID)
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
226 self.__entries[nextID] = entry
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
227 nextID += 1
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
228
11
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
229 if self.__plugin.getPreferences("AutoSave"):
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
230 self.saveTrackerEntries()
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
231
9
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
232 if invalidCount != 0 or duplicateCount != 0:
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
233 if invalidCount != 0 and duplicateCount != 0:
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
234 msg = self.tr("""<p>The time tracker file <b>{0}</b> contained"""
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
235 """ %n invalid entries.""",
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
236 "", invalidCount).format(fname)
15
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
237 msg += " " + self.tr(""" %n duplicate entries were detected.""",
9
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
238 "", duplicateCount)
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
239 elif duplicateCount != 0:
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
240 msg = self.tr("""<p>The time tracker file <b>{0}</b> contained"""
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
241 """ %n duplicate entries.""",
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
242 "", duplicateCount).format(fname)
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
243 elif invalidCount != 0:
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
244 msg = self.tr("""<p>The time tracker file <b>{0}</b> contained"""
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
245 """ %n invalid entries.""",
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
246 "", invalidCount).format(fname)
15
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
247 msg += " " + self.tr(""" %n entries have been ignored.</p>""",
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
248 "", invalidCount + duplicateCount)
9
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
249 E5MessageBox.information(self.__ui,
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
250 self.trUtf8("Import Time Tracker File"),
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
251 msg)
10
64acf4452ac0 Completed the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
252
64acf4452ac0 Completed the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
253 self.__widget.clear()
64acf4452ac0 Completed the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
254 self.__widget.showTrackerEntries(sorted(self.__entries.values(), reverse=True))
64acf4452ac0 Completed the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
255 self.__widget.setCurrentEntry(self.__currentEntry)
9
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
256
15
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
257 def addTrackerEntry(self, startDateTime, duration, task, comment):
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
258 """
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
259 Public method to add a new tracker entry based on the given data.
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
260
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
261 @param startDateTime start date and time (QDateTime)
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
262 @param duration duration in minutes (integer)
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
263 @param task task description (string)
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
264 @param comment comment (string)
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
265 """
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
266 if not self.__plugin.getPreferences("AllowDuplicates"):
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
267 startDateTimes = [
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
268 entry.getStartDateTime() for entry in self.__entries.values()]
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
269 if startDateTime in startDateTimes:
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
270 return
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
271
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
272 if duration < self.__plugin.getPreferences("MinimumDuration"):
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
273 return
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
274
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
275 if len(self.__entries.keys()):
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
276 nextID = max(self.__entries.keys()) + 1
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
277 else:
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
278 nextID = 0
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
279
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
280 entry = TimeTrackEntry(self.__plugin)
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
281 entry.setID(nextID)
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
282 entry.setStartDateTime(startDateTime)
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
283 entry.setDuration(duration)
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
284 entry.setTask(task)
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
285 entry.setComment(comment)
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
286 self.__entries[nextID] = entry
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
287
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
288 self.__widget.clear()
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
289 self.__widget.showTrackerEntries(sorted(self.__entries.values(), reverse=True))
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
290 self.__widget.setCurrentEntry(self.__currentEntry)
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
291
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
292 def pauseTrackerEntry(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
293 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
294 Public method to pause the current tracker entry.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
295 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
296 self.__currentEntry.pause()
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
297
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
298 def continueTrackerEntry(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
299 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
300 Public method to continue the current tracker entry.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
301 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
302 self.__currentEntry.continue_()
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
303
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
304 def stopTrackerEntry(self):
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
305 """
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
306 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
307
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
308 @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
309 the duration (integer, integer)
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
310 """
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
311 duration = 0
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
312 nextID = -1
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
313 if self.__currentEntry is not None:
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
314 self.__currentEntry.stop()
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
315 if self.__currentEntry.isValid():
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
316 if len(self.__entries.keys()):
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
317 nextID = max(self.__entries.keys()) + 1
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
318 else:
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
319 nextID = 0
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
320 self.__currentEntry.setID(nextID)
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
321 self.__entries[nextID] = self.__currentEntry
8
17d90f9425fc Made some behavior dependent of configuration parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
322 if self.__plugin.getPreferences("AutoSave"):
17d90f9425fc Made some behavior dependent of configuration parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
323 self.saveTrackerEntries()
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
324 duration = self.__currentEntry.getDuration()
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
325 self.__currentEntry = None
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
326
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
327 return nextID, duration
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
328
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
329 def startTrackerEntry(self):
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
330 """
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
331 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
332 """
8
17d90f9425fc Made some behavior dependent of configuration parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
333 self.__currentEntry = TimeTrackEntry(self.__plugin)
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
334 self.__currentEntry.start()
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
335 self.__widget.setCurrentEntry(self.__currentEntry)
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
336
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
337 def getCurrentEntry(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
338 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
339 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
340 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
341 return self.__currentEntry
5
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
342
12
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
343 def getEntry(self, eid):
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
344 """
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
345 Public method to get a tracker entry given its ID.
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
346
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
347 @param eid ID of the tracker entry (integer)
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
348 @return entry for the given ID (TimeTrackEntry) or None
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
349 """
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
350 if eid in self.__entries:
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
351 return self.__entries[eid]
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
352 else:
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
353 return None
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
354
5
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
355 def deleteTrackerEntry(self, eid):
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
356 """
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
357 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
358
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
359 @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
360 """
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
361 if eid in self.__entries:
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
362 del self.__entries[eid]
11
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
363
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
364 def removeDuplicateTrackerEntries(self):
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
365 """
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
366 Public slot to remove duplicate time tracker entries.
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
367
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
368 If entries with the identical start date and time are found, the one
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
369 with the longest duration is kept.
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
370 """
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
371 entries = {}
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
372 for entry in self.__entries.values():
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
373 dt = entry.getStartDateTime()
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
374 if dt in entries:
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
375 if entry.getDuration() > entries[dt].getDuration():
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
376 entries[dt] = entry
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
377 else:
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
378 entries[dt] = entry
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
379
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
380 self.__entries = {}
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
381 nextID = 0
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
382 for entry in sorted(entries.values()):
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
383 entry.setID(nextID)
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
384 self.__entries[nextID] = entry
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
385 nextID += 1
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
386
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
387 if self.__plugin.getPreferences("AutoSave"):
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
388 self.saveTrackerEntries()
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
389
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
390 self.__widget.clear()
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
391 self.__widget.showTrackerEntries(sorted(self.__entries.values(), reverse=True))
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
392 self.__widget.setCurrentEntry(self.__currentEntry)
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
393
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
394 def mergeDuplicateTrackerEntries(self):
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
395 """
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
396 Public slot to merge duplicate time tracker entries.
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
397
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
398 If entries with the identical start date and time are found, the durations
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
399 of these entries are added.
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
400 """
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
401 entries = {}
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
402 for entry in self.__entries.values():
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
403 dt = entry.getStartDateTime()
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
404 if dt in entries:
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
405 entries[dt].addDuration(entry.getDuration())
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
406 else:
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
407 entries[dt] = entry
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
408
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
409 self.__entries = {}
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
410 nextID = 0
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
411 for entry in sorted(entries.values()):
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
412 entry.setID(nextID)
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
413 self.__entries[nextID] = entry
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
414 nextID += 1
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
415
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
416 if self.__plugin.getPreferences("AutoSave"):
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
417 self.saveTrackerEntries()
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
418
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
419 self.__widget.clear()
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
420 self.__widget.showTrackerEntries(sorted(self.__entries.values(), reverse=True))
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
421 self.__widget.setCurrentEntry(self.__currentEntry)
12
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
422
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
423 def entryChanged(self):
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
424 """
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
425 Public method to indicate an external change to any of the entries.
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
426 """
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
427 if self.__plugin.getPreferences("AutoSave"):
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
428 self.saveTrackerEntries()
15
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
429
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
430 def getPreferences(self, key):
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
431 """
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
432 Public method to retrieve the various settings.
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
433
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
434 @param key the key of the value to get
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
435 @return the requested setting
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
436 """
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
437 return self.__plugin.getPreferences(key)
21
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
438
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
439 def __activateWidget(self):
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
440 """
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
441 Private slot to handle the activation of the project browser.
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
442 """
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
443 if self.__ui.layout == "Toolboxes":
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
444 self.__ui.hToolboxDock.show()
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
445 self.__ui.hToolboxDock.setCurrentWidget(self.__widget)
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
446 elif self.__ui.layout == "Sidebars":
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
447 self.__ui.bottomSidebar.show()
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
448 self.__ui.bottomSidebar.setCurrentWidget(self.__widget)
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
449 else:
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
450 self.__widget.show()
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
451 self.__widget.setFocus(Qt.ActiveWindowFocusReason)

eric ide

mercurial