TimeTracker/TimeTracker.py

Sat, 06 Jan 2024 13:06:58 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 06 Jan 2024 13:06:58 +0100
branch
eric7
changeset 116
e8b0641eba15
parent 115
859d59103f9f
child 120
9ccde4517fca
permissions
-rw-r--r--

Adapted code to eric 24.2 and newer.

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
114
f58b64382e67 Updated copyright for 2024.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 113
diff changeset
3 # Copyright (c) 2012 - 2024 Detlev Offenbach <detlev@die-offenbachs.de>
1
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
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
10 import json
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 import os
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12
111
e0bf42d8474e Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 109
diff changeset
13 from PyQt6.QtCore import QObject, Qt
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
14 from PyQt6.QtGui import QKeySequence
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
109
3d6e8bb07779 Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 108
diff changeset
16 try:
3d6e8bb07779 Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 108
diff changeset
17 from eric7.EricGui import EricPixmapCache
3d6e8bb07779 Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 108
diff changeset
18 except ImportError:
3d6e8bb07779 Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 108
diff changeset
19 from UI import PixmapCache as EricPixmapCache
111
e0bf42d8474e Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 109
diff changeset
20
109
3d6e8bb07779 Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 108
diff changeset
21 from eric7.EricGui.EricAction import EricAction
3d6e8bb07779 Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 108
diff changeset
22 from eric7.EricWidgets import EricMessageBox
3d6e8bb07779 Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 108
diff changeset
23 from eric7.EricWidgets.EricApplication import ericApp
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24
116
e8b0641eba15 Adapted code to eric 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 115
diff changeset
25 try:
e8b0641eba15 Adapted code to eric 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 115
diff changeset
26 from eric7.UI.UserInterface import UserInterfaceSide
e8b0641eba15 Adapted code to eric 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 115
diff changeset
27
e8b0641eba15 Adapted code to eric 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 115
diff changeset
28 _Side = UserInterfaceSide.Bottom
e8b0641eba15 Adapted code to eric 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 115
diff changeset
29 except ImportError:
e8b0641eba15 Adapted code to eric 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 115
diff changeset
30 # backward compatibility for eric < 24.2
e8b0641eba15 Adapted code to eric 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 115
diff changeset
31 from eric7.UI.UserInterface import UserInterface
e8b0641eba15 Adapted code to eric 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 115
diff changeset
32
e8b0641eba15 Adapted code to eric 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 115
diff changeset
33 _Side = UserInterface.BottomSide
e8b0641eba15 Adapted code to eric 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 115
diff changeset
34
1
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 class TimeTracker(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 Class implementing the time tracker object.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 """
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
40
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
41 FileName = "TimeTracker.ttj"
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
42
85
246e51cc11ae Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 84
diff changeset
43 def __init__(self, plugin, iconSuffix, parent=None):
1
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 Constructor
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
46
85
246e51cc11ae Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 84
diff changeset
47 @param plugin reference to the plugin object
246e51cc11ae Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 84
diff changeset
48 @type TimeTrackerPlugin
246e51cc11ae Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 84
diff changeset
49 @param iconSuffix suffix for the icons
246e51cc11ae Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 84
diff changeset
50 @type str
246e51cc11ae Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 84
diff changeset
51 @param parent parent
246e51cc11ae Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 84
diff changeset
52 @type QObject
1
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 QObject.__init__(self, parent)
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
55
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 self.__plugin = plugin
85
246e51cc11ae Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 84
diff changeset
57 self.__iconSuffix = iconSuffix
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 self.__ui = parent
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
59
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
60 self.__ericProject = ericApp().getObject("Project")
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
61
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 def __initialize(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 """
51
d0afa82c3deb Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
64 Private slot to initialize some member variables.
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 """
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
66 self.__projectPath = ""
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
67 self.__trackerFilePath = ""
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 self.__projectOpen = False
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
69
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
70 self.__entries = {} # key: entry ID, value tracker entry
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 self.__currentEntry = None
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
72
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
73 self.__widget.clear()
12
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
74 self.__widget.setEnabled(False)
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
75
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
76 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
77 """
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 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
79 """
33
a8706d6bd932 Modified the code to do lazy import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
80 from .TimeTrackerWidget import TimeTrackerWidget
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
81
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
82 self.__widget = TimeTrackerWidget(self)
106
6deb942739dc Updated version info to indicate relation to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
83 iconName = (
6deb942739dc Updated version info to indicate relation to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
84 "sbTimeTracker96"
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
85 if self.__ui.getLayoutType() == "Sidebars"
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
86 else "clock-{0}".format(self.__iconSuffix)
106
6deb942739dc Updated version info to indicate relation to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
87 )
42
37049a04b8fa Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
88 self.__ui.addSideWidget(
116
e8b0641eba15 Adapted code to eric 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 115
diff changeset
89 _Side,
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
90 self.__widget,
109
3d6e8bb07779 Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 108
diff changeset
91 EricPixmapCache.getIcon(os.path.join("TimeTracker", "icons", iconName)),
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
92 self.tr("Time Tracker"),
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
93 )
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
94
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
95 self.__activateAct = EricAction(
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
96 self.tr("Time Tracker"),
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
97 self.tr("T&ime Tracker"),
51
d0afa82c3deb Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
98 QKeySequence(self.tr("Alt+Shift+I")),
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
99 0,
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
100 self,
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
101 "time_tracker_activate",
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
102 )
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
103 self.__activateAct.setStatusTip(
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
104 self.tr("Switch the input focus to the Time Tracker window.")
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
105 )
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
106 self.__activateAct.setWhatsThis(
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
107 self.tr(
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
108 """<b>Activate Time Tracker</b>"""
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
109 """<p>This switches the input focus to the Time Tracker"""
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
110 """ window.</p>"""
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
111 )
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
112 )
51
d0afa82c3deb Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
113 self.__activateAct.triggered.connect(self.__activateWidget)
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
114
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
115 self.__ui.addEricActions([self.__activateAct], "ui")
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
116 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
117 menu.addAction(self.__activateAct)
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
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 self.__initialize()
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
120
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
121 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
122 """
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
123 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
124 """
28b7956c9608 Fixed a few bugs and added actions to activate the time tracker window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
125 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
126 menu.removeAction(self.__activateAct)
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
127 self.__ui.removeEricActions([self.__activateAct], "ui")
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
128 self.__ui.removeSideWidget(self.__widget)
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
129
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 def projectOpened(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 Public slot to handle the projectOpened signal.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 if self.__projectOpen:
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 self.projectClosed()
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
136
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 self.__projectOpen = True
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
138 self.__projectPath = self.__ericProject.getProjectPath()
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 self.__trackerFilePath = os.path.join(
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
140 self.__ericProject.getProjectManagementDir(), TimeTracker.FileName
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
141 )
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
142
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 self.__readTrackerEntries()
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
144 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
145 self.__widget.setEnabled(True)
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
146
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
147 self.startTrackerEntry()
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
148
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 def projectClosed(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 Public slot to handle the projectClosed signal.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 """
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
153 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
154 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
155 self.saveTrackerEntries()
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 self.__initialize()
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
157
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 def __readTrackerEntries(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 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
161 """
115
859d59103f9f Corrected some code style issues and converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
162 from .TimeTrackEntry import TimeTrackEntry
859d59103f9f Corrected some code style issues and converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
163
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 if os.path.exists(self.__trackerFilePath):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 try:
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
166 with open(self.__trackerFilePath, "r") as f:
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
167 jsonString = f.read()
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
168 entriesDataList = json.loads(jsonString)
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
169 except (OSError, json.JSONDecodeError) as err:
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
170 EricMessageBox.critical(
42
37049a04b8fa Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
171 self.__ui,
51
d0afa82c3deb Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
172 self.tr("Read Time Tracker File"),
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
173 self.tr(
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
174 """<p>The time tracker file <b>{0}</b> could"""
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
175 """ not be read.</p><p>Reason: {1}</p>"""
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
176 ).format(self.__trackerFilePath, str(err)),
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
177 )
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 return
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
179
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 invalidCount = 0
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
181 for data in entriesDataList:
106
6deb942739dc Updated version info to indicate relation to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
182 entry = TimeTrackEntry(self.__plugin)
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
183 eid = entry.fromDict(data)
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
184 if eid > -1:
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
185 self.__entries[eid] = entry
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 else:
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 invalidCount += 1
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
188
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 if invalidCount:
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
190 EricMessageBox.information(
42
37049a04b8fa Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
191 self.__ui,
51
d0afa82c3deb Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
192 self.tr("Read Time Tracker File"),
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
193 self.tr(
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
194 """<p>The time tracker file <b>{0}</b>"""
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
195 """ contained %n invalid entries. These"""
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
196 """ have been discarded.</p>""",
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
197 "",
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
198 invalidCount,
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
199 ).format(self.__trackerFilePath),
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
200 )
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
201
69
021ac1e44e32 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 68
diff changeset
202 def saveTrackerEntries(self, filePath="", ids=None):
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 """
5
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
204 Public slot to save the tracker entries to a file.
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
205
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
206 @param filePath path and name of the file to write the entries to
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
207 @type str
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
208 @param ids list of entry IDs to be written
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
209 @type list of int
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 """
6
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
211 if not filePath:
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
212 filePath = self.__trackerFilePath
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
213 entriesDataList = (
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
214 [self.__entries[eid].toDict() for eid in ids if eid in self.__entries]
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
215 if ids
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
216 else [e.toDict() for e in self.__entries.values()]
94
a3d936304e51 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
217 )
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 try:
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
219 jsonString = json.dumps(entriesDataList, indent=2)
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
220 with open(filePath, "w") as f:
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
221 f.write(jsonString)
115
859d59103f9f Corrected some code style issues and converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
222 except (OSError, TypeError) as err:
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
223 EricMessageBox.critical(
42
37049a04b8fa Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
224 self.__ui,
51
d0afa82c3deb Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
225 self.tr("Save Time Tracker File"),
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
226 self.tr(
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
227 """<p>The time tracker file <b>{0}</b> could"""
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
228 """ not be saved.</p><p>Reason: {1}</p>"""
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
229 ).format(self.__trackerFilePath, str(err)),
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
230 )
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
231
9
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
232 def importTrackerEntries(self, fname):
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
233 """
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
234 Public slot to import tracker entries from a file.
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
235
115
859d59103f9f Corrected some code style issues and converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
236 @param fname name of the file to import
859d59103f9f Corrected some code style issues and converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
237 @type str
9
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
238 """
115
859d59103f9f Corrected some code style issues and converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
239 from .TimeTrackEntry import TimeTrackEntry
859d59103f9f Corrected some code style issues and converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
240
9
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
241 try:
89
e38b60832145 Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 87
diff changeset
242 with open(fname, "r", encoding="utf-8") as f:
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
243 jsonString = f.read()
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
244 entriesDataList = json.loads(jsonString)
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
245 except (OSError, json.JSONDecodeError) as err:
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
246 EricMessageBox.critical(
42
37049a04b8fa Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
247 self.__ui,
51
d0afa82c3deb Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
248 self.tr("Import Time Tracker File"),
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
249 self.tr(
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
250 """<p>The time tracker file <b>{0}</b> could"""
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
251 """ not be read.</p><p>Reason: {1}</p>"""
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
252 ).format(fname, str(err)),
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
253 )
9
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
254 return
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
255
9
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
256 invalidCount = 0
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
257 duplicateCount = 0
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
258 entries = []
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
259
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
260 for data in entriesDataList:
9
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
261 entry = TimeTrackEntry(self.__plugin)
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
262 eid = entry.fromDict(data)
9
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
263 if eid > -1:
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
264 entries.append(entry)
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
265 else:
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
266 invalidCount += 1
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
267
9
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
268 if not self.__plugin.getPreferences("AllowDuplicates"):
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
269 startDateTimes = [e.getStartDateTime() for e in self.__entries.values()]
9
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
270 for entry in entries[:]:
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
271 if entry.getStartDateTime() in startDateTimes:
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
272 entries.remove(entry)
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
273 duplicateCount += 1
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
274
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
275 start = max(self.__entries.keys()) + 1 if len(self.__entries.keys()) else 0
94
a3d936304e51 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
276 for nextID, entry in enumerate(entries, start=start):
9
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
277 entry.setID(nextID)
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
278 self.__entries[nextID] = entry
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
279
11
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
280 if self.__plugin.getPreferences("AutoSave"):
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
281 self.saveTrackerEntries()
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
282
9
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
283 if invalidCount != 0 or duplicateCount != 0:
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
284 if invalidCount != 0 and duplicateCount != 0:
42
37049a04b8fa Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
285 msg = self.tr(
37049a04b8fa Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
286 """<p>The time tracker file <b>{0}</b> contained"""
9
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
287 """ %n invalid entries.""",
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
288 "",
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
289 invalidCount,
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
290 ).format(fname)
42
37049a04b8fa Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
291 msg += " " + self.tr(
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
292 """ %n duplicate entries were detected.""", "", duplicateCount
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
293 )
9
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
294 elif duplicateCount != 0:
42
37049a04b8fa Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
295 msg = self.tr(
37049a04b8fa Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
296 """<p>The time tracker file <b>{0}</b> contained"""
9
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
297 """ %n duplicate entries.""",
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
298 "",
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
299 duplicateCount,
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
300 ).format(fname)
9
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
301 elif invalidCount != 0:
42
37049a04b8fa Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
302 msg = self.tr(
37049a04b8fa Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
303 """<p>The time tracker file <b>{0}</b> contained"""
9
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
304 """ %n invalid entries.""",
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
305 "",
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
306 invalidCount,
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
307 ).format(fname)
42
37049a04b8fa Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
308 msg += " " + self.tr(
37049a04b8fa Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
309 """ %n entries have been ignored.</p>""",
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
310 "",
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
311 invalidCount + duplicateCount,
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
312 )
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
313 EricMessageBox.information(
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
314 self.__ui, self.tr("Import Time Tracker File"), msg
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
315 )
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
316
10
64acf4452ac0 Completed the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
317 self.__widget.clear()
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
318 self.__widget.showTrackerEntries(sorted(self.__entries.values(), reverse=True))
10
64acf4452ac0 Completed the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
319 self.__widget.setCurrentEntry(self.__currentEntry)
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
320
15
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
321 def addTrackerEntry(self, startDateTime, duration, task, comment):
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
322 """
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
323 Public method to add a new tracker entry based on the given data.
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
324
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
325 @param startDateTime start date and time
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
326 @type QDateTime
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
327 @param duration duration in minutes
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
328 @type int
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
329 @param task task description
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
330 @type str
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
331 @param comment comment
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
332 @type str
15
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
333 """
115
859d59103f9f Corrected some code style issues and converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
334 from .TimeTrackEntry import TimeTrackEntry
859d59103f9f Corrected some code style issues and converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 114
diff changeset
335
15
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
336 if not self.__plugin.getPreferences("AllowDuplicates"):
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
337 startDateTimes = [
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
338 entry.getStartDateTime() for entry in self.__entries.values()
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
339 ]
15
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
340 if startDateTime in startDateTimes:
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
341 return
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
342
15
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
343 if duration < self.__plugin.getPreferences("MinimumDuration"):
42
37049a04b8fa Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
344 return
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
345
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
346 nextID = max(self.__entries.keys()) + 1 if len(self.__entries.keys()) else 0
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
347
15
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
348 entry = TimeTrackEntry(self.__plugin)
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
349 entry.setID(nextID)
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
350 entry.setStartDateTime(startDateTime)
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
351 entry.setDuration(duration)
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
352 entry.setTask(task)
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
353 entry.setComment(comment)
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
354 self.__entries[nextID] = entry
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
355
15
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
356 self.__widget.clear()
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
357 self.__widget.showTrackerEntries(sorted(self.__entries.values(), reverse=True))
15
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
358 self.__widget.setCurrentEntry(self.__currentEntry)
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
359
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
360 def pauseTrackerEntry(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
361 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
362 Public method to pause the current tracker entry.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
363 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
364 self.__currentEntry.pause()
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
365
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
366 def continueTrackerEntry(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
367 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
368 Public method to continue the current tracker entry.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
369 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
370 self.__currentEntry.continue_()
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
371
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
372 def stopTrackerEntry(self):
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
373 """
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
374 Public method to stop the current tracker entry.
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
375
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
376 @return tuple of the ID assigned to the stopped tracker entry and
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
377 the duration
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
378 @rtype tuple of (int, int)
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
379 """
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
380 duration = 0
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
381 nextID = -1
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
382 if self.__currentEntry is not None:
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
383 self.__currentEntry.stop()
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
384 if self.__currentEntry.isValid():
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
385 nextID = (
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
386 max(self.__entries.keys()) + 1 if len(self.__entries.keys()) else 0
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
387 )
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
388 self.__currentEntry.setID(nextID)
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
389 self.__entries[nextID] = self.__currentEntry
8
17d90f9425fc Made some behavior dependent of configuration parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
390 if self.__plugin.getPreferences("AutoSave"):
17d90f9425fc Made some behavior dependent of configuration parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
391 self.saveTrackerEntries()
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
392 duration = self.__currentEntry.getDuration()
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
393 self.__currentEntry = None
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
394
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
395 return nextID, duration
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
396
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
397 def startTrackerEntry(self):
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
398 """
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
399 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
400 """
33
a8706d6bd932 Modified the code to do lazy import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
401 from .TimeTrackEntry import TimeTrackEntry
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
402
8
17d90f9425fc Made some behavior dependent of configuration parameters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
403 self.__currentEntry = TimeTrackEntry(self.__plugin)
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
404 self.__currentEntry.start()
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
405 self.__widget.setCurrentEntry(self.__currentEntry)
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
406
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
407 def getCurrentEntry(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
408 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
409 Public method to get a reference to the current tracker entry.
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
410
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
411 @return reference to the current entry
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
412 @rtype TimeTrackEntry
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
413 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
414 return self.__currentEntry
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
415
12
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
416 def getEntry(self, eid):
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
417 """
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
418 Public method to get a tracker entry given its ID.
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
419
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
420 @param eid ID of the tracker entry
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
421 @type int
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
422 @return entry for the given ID or None
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
423 @rtype TimeTrackEntry
12
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 if eid in self.__entries:
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
426 return self.__entries[eid]
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
427 else:
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
428 return None
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
429
5
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
430 def deleteTrackerEntry(self, eid):
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
431 """
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
432 Public method to delete a tracker entry given its ID.
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
433
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
434 @param eid ID of the tracker entry
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
435 @type int
5
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
436 """
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
437 if eid in self.__entries:
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
438 del self.__entries[eid]
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
439
11
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
440 def removeDuplicateTrackerEntries(self):
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
441 """
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
442 Public slot to remove duplicate time tracker entries.
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
443
11
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
444 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
445 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
446 """
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
447 entries = {}
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
448 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
449 dt = entry.getStartDateTime()
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
450 if dt in entries:
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
451 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
452 entries[dt] = entry
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
453 else:
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
454 entries[dt] = entry
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
455
11
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
456 self.__entries = {}
94
a3d936304e51 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
457 for nextID, entry in enumerate(sorted(entries.values())):
11
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
458 entry.setID(nextID)
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
459 self.__entries[nextID] = entry
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
460
11
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
461 if self.__plugin.getPreferences("AutoSave"):
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
462 self.saveTrackerEntries()
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
463
11
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
464 self.__widget.clear()
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
465 self.__widget.showTrackerEntries(sorted(self.__entries.values(), reverse=True))
11
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
466 self.__widget.setCurrentEntry(self.__currentEntry)
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
467
11
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
468 def mergeDuplicateTrackerEntries(self):
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
469 """
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
470 Public slot to merge duplicate time tracker entries.
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
471
42
37049a04b8fa Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
472 If entries with the identical start date and time are found, the
37049a04b8fa Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
473 durations of these entries are added.
11
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
474 """
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
475 entries = {}
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
476 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
477 dt = entry.getStartDateTime()
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
478 if dt in entries:
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
479 entries[dt].addDuration(entry.getDuration())
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
480 else:
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
481 entries[dt] = entry
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
482
11
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
483 self.__entries = {}
94
a3d936304e51 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
484 for nextID, entry in enumerate(sorted(entries.values())):
11
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
485 entry.setID(nextID)
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
486 self.__entries[nextID] = entry
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
487
11
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
488 if self.__plugin.getPreferences("AutoSave"):
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
489 self.saveTrackerEntries()
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
490
11
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
491 self.__widget.clear()
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
492 self.__widget.showTrackerEntries(sorted(self.__entries.values(), reverse=True))
11
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
493 self.__widget.setCurrentEntry(self.__currentEntry)
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
494
12
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
495 def entryChanged(self):
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
496 """
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
497 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
498 """
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
499 if self.__plugin.getPreferences("AutoSave"):
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
500 self.saveTrackerEntries()
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
501
15
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
502 def getPreferences(self, key):
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
503 """
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
504 Public method to retrieve the various settings.
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
505
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
506 @param key key of the value to get
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
507 @type str
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
508 @return value of the requested setting
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
509 @rtype Any
15
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
510 """
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
511 return self.__plugin.getPreferences(key)
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
512
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
513 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
514 """
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
515 Private slot to handle the activation of the time tracker widget.
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
516 """
93
7ffe7ae4947d Removed support for outdated eric6 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
517 uiLayoutType = self.__ui.getLayoutType()
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
518
75
d88d2d4943de TimeTRacker: fixed an issue switching to the time tracker via the keyboard shortcut.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 73
diff changeset
519 if uiLayoutType == "Toolboxes":
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
520 self.__ui.hToolboxDock.show()
77
ade3656b8ad3 TimeTracker: fixed another issue switching to the time tracker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 75
diff changeset
521 self.__ui.hToolbox.setCurrentWidget(self.__widget)
75
d88d2d4943de TimeTRacker: fixed an issue switching to the time tracker via the keyboard shortcut.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 73
diff changeset
522 elif uiLayoutType == "Sidebars":
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
523 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
524 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
525 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
526 self.__widget.show()
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
527 self.__widget.setFocus(Qt.FocusReason.ActiveWindowFocusReason)

eric ide

mercurial