TimeTracker/TimeTrackerWidget.py

Sat, 23 Dec 2023 15:48:55 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 23 Dec 2023 15:48:55 +0100
branch
eric7
changeset 114
f58b64382e67
parent 113
a9002f9b14d5
child 115
859d59103f9f
permissions
-rw-r--r--

Updated copyright for 2024.

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 widget.
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
9
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
10 import os
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
11
111
e0bf42d8474e Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 109
diff changeset
12 from PyQt6.QtCore import QDate, QFileInfo, QPoint, Qt, QTime, pyqtSlot
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
13 from PyQt6.QtGui import QCursor
111
e0bf42d8474e Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 109
diff changeset
14 from PyQt6.QtWidgets import QDialog, QMenu, QTreeWidgetItem, QWidget
e0bf42d8474e Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 109
diff changeset
15
e0bf42d8474e Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 109
diff changeset
16 from eric7 import Preferences
e0bf42d8474e Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 109
diff changeset
17 from eric7.EricWidgets import EricFileDialog, EricMessageBox
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
111
e0bf42d8474e Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 109
diff changeset
19 try:
e0bf42d8474e Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 109
diff changeset
20 from eric7.SystemUtilities.FileSystemUtilities import toNativeSeparators
e0bf42d8474e Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 109
diff changeset
21 except ImportError:
e0bf42d8474e Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 109
diff changeset
22 # imports for eric < 23.1
e0bf42d8474e Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 109
diff changeset
23 from eric7.Utilities import toNativeSeparators
e0bf42d8474e Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 109
diff changeset
24 try:
e0bf42d8474e Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 109
diff changeset
25 from eric7.SystemUtilities.OSUtilities import getHomeDir
e0bf42d8474e Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 109
diff changeset
26 except ImportError:
e0bf42d8474e Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 109
diff changeset
27 # imports for eric < 23.1
e0bf42d8474e Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 109
diff changeset
28 from eric7.Utilities import getHomeDir
5
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
29
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 from .Ui_TimeTrackerWidget import Ui_TimeTrackerWidget
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31
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 class TimeTrackerWidget(QWidget, Ui_TimeTrackerWidget):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 Class implementing the time tracker widget.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 """
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
37
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
38 DurationColumn = 1
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
39 TaskColumn = 2
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
40 CommentColumn = 3
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
41
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 def __init__(self, tracker, parent=None):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 Constructor
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
45
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
46 @param tracker reference to the time tracker
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
47 @type TimeTracker
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
48 @param parent reference to the parent widget
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
49 @type QWidget
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 """
94
a3d936304e51 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 92
diff changeset
51 super().__init__(parent)
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 self.setupUi(self)
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
53
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 self.__tracker = tracker
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
55
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 @pyqtSlot(str)
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
57 def on_taskCombo_editTextChanged(self, txt):
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
58 """
42
37049a04b8fa Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
59 Private slot handling changes of the task description of the current
37049a04b8fa Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
60 entry.
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
61
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
62 @param txt new task description
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
63 @type str
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 """
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
65 itm = self.entriesList.topLevelItem(0)
39
82593471100f Fixed an issue occurring spuriously when uninstalling the plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
66 if itm:
82593471100f Fixed an issue occurring spuriously when uninstalling the plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
67 itm.setText(self.TaskColumn, txt)
82593471100f Fixed an issue occurring spuriously when uninstalling the plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
68 self.entriesList.resizeColumnToContents(self.TaskColumn)
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
69
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
70 entry = self.__tracker.getCurrentEntry()
39
82593471100f Fixed an issue occurring spuriously when uninstalling the plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
71 if entry:
82593471100f Fixed an issue occurring spuriously when uninstalling the plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
72 entry.setTask(txt)
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
73
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 @pyqtSlot(str)
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
75 def on_commentCombo_editTextChanged(self, txt):
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
76 """
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
77 Private slot handling changes of the comment of the current entry.
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
78
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
79 @param txt new comment
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
80 @type str
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 """
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
82 itm = self.entriesList.topLevelItem(0)
39
82593471100f Fixed an issue occurring spuriously when uninstalling the plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
83 if itm:
82593471100f Fixed an issue occurring spuriously when uninstalling the plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
84 itm.setText(self.CommentColumn, txt)
82593471100f Fixed an issue occurring spuriously when uninstalling the plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
85 self.entriesList.resizeColumnToContents(self.CommentColumn)
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
86
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
87 entry = self.__tracker.getCurrentEntry()
39
82593471100f Fixed an issue occurring spuriously when uninstalling the plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
88 if entry:
82593471100f Fixed an issue occurring spuriously when uninstalling the plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
89 entry.setComment(txt)
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
90
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 @pyqtSlot(bool)
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 def on_pauseButton_toggled(self, checked):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 """
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
94 Private slot to pause the current timing.
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
95
42
37049a04b8fa Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
96 @param checked flag indicating the checked status of the button
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
97 @type bool
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 """
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
99 if checked:
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
100 self.__tracker.pauseTrackerEntry()
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
101
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
102 entry = self.__tracker.getCurrentEntry()
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
103 duration = entry.getDuration()
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
104
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
105 itm = self.entriesList.topLevelItem(0)
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
106 itm.setText(self.DurationColumn, self.tr("{0} min").format(duration))
13
402a0962c225 Corrected the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
107 self.entriesList.resizeColumnToContents(self.DurationColumn)
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
108
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
109 self.durationSpinBox.setValue(duration)
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
110 else:
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
111 self.__tracker.continueTrackerEntry()
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
112
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 @pyqtSlot()
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 def on_newButton_clicked(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 """
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
116 Private slot to end the current timer and start a new one.
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 """
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
118 # stop the current tracker
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
119 eid, duration = self.__tracker.stopTrackerEntry()
6
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
120 if eid > -1:
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
121 itm = self.entriesList.topLevelItem(0)
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
122 itm.setText(self.DurationColumn, self.tr("{0} min").format(duration))
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
123 itm.setData(0, Qt.ItemDataRole.UserRole, eid)
6
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
124 else:
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
125 itm = self.entriesList.takeTopLevelItem(0)
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
126 del itm
13
402a0962c225 Corrected the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
127 self.__resizeColumns()
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
128
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
129 # start a new one
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
130 self.__tracker.startTrackerEntry()
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
131
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 @pyqtSlot(QPoint)
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 def on_entriesList_customContextMenuRequested(self, pos):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 Private slot to create the context menu and show it.
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
136
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
137 @param pos position the menu should be shown at
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
138 @type QPoint
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 menu = QMenu()
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
141
51
d0afa82c3deb Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
142 act = menu.addAction(self.tr("Edit"), self.__editEntry)
d0afa82c3deb Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
143 act.setEnabled(
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
144 len(self.entriesList.selectedItems()) == 1
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
145 and self.entriesList.selectedItems()[0].data(0, Qt.ItemDataRole.UserRole)
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
146 > -1
51
d0afa82c3deb Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
147 )
12
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
148 menu.addAction(self.tr("Add"), self.__addEntry)
51
d0afa82c3deb Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
149 act = menu.addAction(self.tr("Delete"), self.__deleteSelectedEntries)
d0afa82c3deb Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
150 act.setEnabled(
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
151 (
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
152 len(self.entriesList.selectedItems()) == 1
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
153 and self.entriesList.selectedItems()[0].data(
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
154 0, Qt.ItemDataRole.UserRole
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
155 )
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
156 > -1
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
157 )
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
158 or len(self.entriesList.selectedItems()) > 1
51
d0afa82c3deb Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
159 )
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 menu.addSeparator()
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 menu.addAction(self.tr("Save"), self.__saveEntries)
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 menu.addSeparator()
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 menu.addAction(self.tr("Import"), self.__importEntries)
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
164 act = menu.addAction(self.tr("Export Selected"), self.__exportSelectedEntries)
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
165 act.setEnabled(len(self.entriesList.selectedItems()) > 0)
6
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
166 menu.addAction(self.tr("Export All"), self.__exportEntries)
11
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
167 menu.addSeparator()
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
168 menu.addAction(self.tr("Remove duplicates"), self.__removeDuplicates)
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
169 menu.addAction(self.tr("Merge duplicates"), self.__mergeDuplicates)
89
e38b60832145 Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 87
diff changeset
170 menu.exec(QCursor.pos())
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
171
12
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
172 def __addEntry(self):
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
173 """
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
174 Private slot to manually add an entry.
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
175 """
33
a8706d6bd932 Modified the code to do lazy import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
176 from .TimeTrackerEntryDialog import TimeTrackerEntryDialog
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
177
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
178 tasks = [
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
179 self.taskCombo.itemText(index) for index in range(self.taskCombo.count())
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
180 ]
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
181 comments = [
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
182 self.commentCombo.itemText(index)
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
183 for index in range(self.commentCombo.count())
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
184 ]
15
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
185 dlg = TimeTrackerEntryDialog(self.__tracker, None, tasks, comments)
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
186 if dlg.exec() == QDialog.DialogCode.Accepted:
15
645506ab3376 Implemented the 'add entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
187 self.__tracker.addTrackerEntry(*dlg.getData())
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
188
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 def __editEntry(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 Private slot to edit the selected tracker entry.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 """
13
402a0962c225 Corrected the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
193 itm = self.entriesList.selectedItems()[0]
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
194 eid = itm.data(0, Qt.ItemDataRole.UserRole)
12
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
195 if eid > -1:
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
196 # the current entry is edited via the elements of this widget
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
197 entry = self.__tracker.getEntry(eid)
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
198 if entry is not None:
33
a8706d6bd932 Modified the code to do lazy import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
199 from .TimeTrackerEntryDialog import TimeTrackerEntryDialog
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
200
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
201 tasks = [
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
202 self.taskCombo.itemText(index)
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
203 for index in range(self.taskCombo.count())
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
204 ]
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
205 comments = [
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
206 self.commentCombo.itemText(index)
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
207 for index in range(self.commentCombo.count())
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
208 ]
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
209 dlg = TimeTrackerEntryDialog(self.__tracker, entry, tasks, comments)
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
210 if dlg.exec() == QDialog.DialogCode.Accepted:
14
25f7323b308d Corrected the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
211 start, duration, task, comment = dlg.getData()
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
212
14
25f7323b308d Corrected the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
213 entry.setStartDateTime(start)
25f7323b308d Corrected the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
214 entry.setDuration(duration)
25f7323b308d Corrected the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
215 entry.setTask(task)
25f7323b308d Corrected the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
216 entry.setComment(comment)
25f7323b308d Corrected the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
217 self.__tracker.entryChanged()
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
218
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
219 data = entry.getEntryData()
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
220 itm.setText(
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
221 0,
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
222 self.tr("{0}, {1}", "date, time").format(
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
223 data["start_date"], data["start_time"]
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
224 ),
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
225 )
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
226 itm.setText(1, self.tr("{0} min").format(data["duration"]))
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
227 itm.setText(2, data["task"])
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
228 itm.setText(3, data["comment"])
14
25f7323b308d Corrected the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
229 self.__resizeColumns()
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
230
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231 def __deleteSelectedEntries(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 Private slot to delete the selected tracker entries.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 """
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
235 res = EricMessageBox.yesNo(
42
37049a04b8fa Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
236 self,
51
d0afa82c3deb Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
237 self.tr("Delete Selected Entries"),
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
238 self.tr("""Do you really want to delete the selected""" """ entries?"""),
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
239 )
5
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
240 if res:
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
241 for item in self.entriesList.selectedItems():
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
242 eid = item.data(0, Qt.ItemDataRole.UserRole)
5
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
243 if eid > -1:
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
244 # the current entry must not be deleted
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
245 self.entriesList.takeTopLevelItem(
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
246 self.entriesList.indexOfTopLevelItem(item)
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
247 )
5
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
248 self.__tracker.deleteTrackerEntry(eid)
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
249 del item
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
250
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
251 def __saveEntries(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
253 Private slot to save the tracker entries.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
254 """
5
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
255 self.__tracker.saveTrackerEntries()
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
256
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257 def __importEntries(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
259 Private slot to import tracker entries.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
260 """
111
e0bf42d8474e Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 109
diff changeset
261 path = Preferences.getMultiProject("Workspace") or getHomeDir()
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
262 fname = EricFileDialog.getOpenFileName(
9
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
263 None,
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
264 self.tr("Import Time Tracker Entries"),
9
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
265 path,
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
266 self.tr("Time Tracker Files (*.ttj);;All Files (*)"),
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
267 )
9
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
268 if fname:
111
e0bf42d8474e Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 109
diff changeset
269 fname = toNativeSeparators(fname)
9
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
270 if not os.path.exists(fname):
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
271 EricMessageBox.critical(
42
37049a04b8fa Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
272 self,
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
273 self.tr("Import Time Tracker Entries"),
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
274 self.tr("<p>The file <b>{0}</b> does not exist.</p>").format(fname),
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
275 )
9
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
276 return
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
277
9
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
278 self.__tracker.importTrackerEntries(fname)
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
279
69
021ac1e44e32 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 68
diff changeset
280 def __exportEntries(self, ids=None):
6
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
281 """
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
282 Private method to export all or selected entries.
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
283
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
284 @param ids list of IDs to export or all if empty
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
285 @type list of int
6
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
286 """
111
e0bf42d8474e Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 109
diff changeset
287 path = Preferences.getMultiProject("Workspace") or getHomeDir()
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
288 fname, selectedFilter = EricFileDialog.getSaveFileNameAndFilter(
6
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
289 self,
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
290 self.tr("Export Time Tracker Entries"),
6
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
291 path,
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
292 self.tr("Time Tracker Files (*.ttj);;All Files (*)"),
6
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
293 None,
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
294 EricFileDialog.Options(EricFileDialog.DontConfirmOverwrite),
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
295 )
6
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
296 if fname:
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
297 ext = QFileInfo(fname).suffix()
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
298 if not ext:
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
299 ex = selectedFilter.split("(*")[1].split(")")[0]
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
300 if ex:
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
301 fname += ex
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
302 if QFileInfo(fname).exists():
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
303 res = EricMessageBox.yesNo(
42
37049a04b8fa Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
304 self,
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
305 self.tr("Export Time Tracker Entries"),
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
306 self.tr(
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
307 "<p>The file <b>{0}</b> already exists." " Overwrite it?</p>"
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
308 ).format(fname),
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
309 icon=EricMessageBox.Warning,
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
310 )
6
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
311 if not res:
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
312 return
111
e0bf42d8474e Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 109
diff changeset
313 fname = toNativeSeparators(fname)
6
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
314 self.__tracker.saveTrackerEntries(filePath=fname, ids=ids)
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
315
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
316 def __exportSelectedEntries(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
317 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
318 Private slot to export the selected tracker entries.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
319 """
6
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
320 ids = []
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
321 for itm in self.entriesList.selectedItems():
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
322 eid = itm.data(0, Qt.ItemDataRole.UserRole)
6
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
323 if eid > -1:
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
324 ids.append(eid)
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
325
6
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
326 if ids:
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
327 self.__exportEntries(ids=ids)
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
328
11
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
329 def __removeDuplicates(self):
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
330 """
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
331 Private slot to remove duplicate entries.
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
332 """
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
333 res = EricMessageBox.yesNo(
42
37049a04b8fa Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
334 self,
51
d0afa82c3deb Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
335 self.tr("Remove Duplicate Tracker Entries"),
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
336 self.tr(
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
337 """Are you sure you want to remove duplicate"""
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
338 """ tracker entries? Only the one with the longest"""
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
339 """ duration will be kept."""
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
340 ),
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
341 )
11
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
342 if res:
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
343 self.__tracker.removeDuplicateTrackerEntries()
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
344
11
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
345 def __mergeDuplicates(self):
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
346 """
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
347 Private slot to merge duplicate entries.
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
348 """
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
349 res = EricMessageBox.yesNo(
42
37049a04b8fa Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
350 self,
51
d0afa82c3deb Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
351 self.tr("Merge Duplicate Tracker Entries"),
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
352 self.tr(
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
353 """Are you sure you want to merge duplicate"""
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
354 """ tracker entries? The durations of duplicate"""
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
355 """ ones will be added."""
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
356 ),
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
357 )
11
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
358 if res:
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
359 self.__tracker.mergeDuplicateTrackerEntries()
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
360
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
361 def __insertEntry(self, entry, index=-1):
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
362 """
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
363 Private method to insert a tracker entry into the list.
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
364
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
365 @param entry reference to the tracker entry
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
366 @type TimeTrackEntry
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
367 @param index index the entry is to be inserted; -1 for at the end
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
368 @type int
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
369 """
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
370 data = entry.getEntryData()
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
371 itm = QTreeWidgetItem(
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
372 [
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
373 self.tr("{0}, {1}", "date, time").format(
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
374 data["start_date"], data["start_time"]
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
375 ),
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
376 self.tr("{0} min").format(data["duration"]),
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
377 data["task"],
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
378 data["comment"],
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
379 ]
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
380 )
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
381 itm.setTextAlignment(1, Qt.AlignmentFlag.AlignRight)
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
382 itm.setData(0, Qt.ItemDataRole.UserRole, data["id"])
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
383 if index == -1:
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
384 self.entriesList.addTopLevelItem(itm)
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
385 else:
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
386 self.entriesList.insertTopLevelItem(index, itm)
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
387
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
388 def __resizeColumns(self):
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
389 """
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
390 Private slot to resize the columns of the entries list.
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
391 """
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
392 for column in range(self.entriesList.columnCount()):
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
393 self.entriesList.resizeColumnToContents(column)
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
394
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
395 def showTrackerEntries(self, entries):
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
396 """
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
397 Public method to show the tracker entries of the current project.
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
398
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
399 @param entries list of tracker entries
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
400 @type list of TimeTrackEntry
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
401 """
12
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
402 self.taskCombo.addItem("")
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
403 self.commentCombo.addItem("")
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
404
12
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
405 tasks = []
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
406 comments = []
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
407
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
408 for entry in entries:
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
409 self.__insertEntry(entry)
12
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
410 task = entry.getTask()
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
411 if task and task not in tasks:
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
412 tasks.append(task)
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
413 comment = entry.getComment()
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
414 if comment and comment not in comments:
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
415 comments.append(comment)
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
416
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
417 self.__resizeColumns()
12
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
418 if tasks:
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
419 self.taskCombo.addItems(sorted(tasks))
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
420 if comments:
6c91abc72022 Implemented the 'edit entry' action.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
421 self.commentCombo.addItems(sorted(comments))
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
422
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
423 def setCurrentEntry(self, entry):
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
424 """
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
425 Public method to set the current entry.
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
426
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
427 @param entry current entry
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
428 @type TimeTrackEntry
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
429 """
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
430 self.__insertEntry(entry, 0)
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
431 self.__resizeColumns()
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
432
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
433 data = entry.getEntryData()
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
434 self.startDateTimeEdit.setDateTime(entry.getStartDateTime())
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
435 self.durationSpinBox.setValue(data["duration"])
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
436 self.taskCombo.setEditText(data["task"])
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
437 self.commentCombo.setEditText(data["comment"])
108
702f47d3f794 Reformatted the source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 105
diff changeset
438
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
439 def clear(self):
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
440 """
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
441 Public method to clear all the data.
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
442 """
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
443 self.entriesList.clear()
98
693e42176007 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
444 self.startDateTimeEdit.setDate(QDate(2020, 1, 1))
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
445 self.startDateTimeEdit.setTime(QTime(0, 0, 0))
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
446 self.durationSpinBox.setValue(0)
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
447 self.taskCombo.clear()
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
448 self.commentCombo.clear()

eric ide

mercurial