4 # |
4 # |
5 |
5 |
6 """ |
6 """ |
7 Module implementing the time tracker widget. |
7 Module implementing the time tracker widget. |
8 """ |
8 """ |
9 |
|
10 from __future__ import unicode_literals |
|
11 |
9 |
12 import os |
10 import os |
13 |
11 |
14 from PyQt5.QtCore import pyqtSlot, QPoint, Qt, QDate, QTime, QFileInfo |
12 from PyQt5.QtCore import pyqtSlot, QPoint, Qt, QDate, QTime, QFileInfo |
15 from PyQt5.QtGui import QCursor |
13 from PyQt5.QtGui import QCursor |
142 ) |
140 ) |
143 menu.addSeparator() |
141 menu.addSeparator() |
144 menu.addAction(self.tr("Save"), self.__saveEntries) |
142 menu.addAction(self.tr("Save"), self.__saveEntries) |
145 menu.addSeparator() |
143 menu.addSeparator() |
146 menu.addAction(self.tr("Import"), self.__importEntries) |
144 menu.addAction(self.tr("Import"), self.__importEntries) |
147 menu.addAction(self.tr("Export Selected"), |
145 act = menu.addAction(self.tr("Export Selected"), |
148 self.__exportSelectedEntries)\ |
146 self.__exportSelectedEntries) |
149 .setEnabled(len(self.entriesList.selectedItems()) != 0) |
147 act.setEnabled(len(self.entriesList.selectedItems()) != 0) |
150 menu.addAction(self.tr("Export All"), self.__exportEntries) |
148 menu.addAction(self.tr("Export All"), self.__exportEntries) |
151 menu.addSeparator() |
149 menu.addSeparator() |
152 menu.addAction(self.tr("Remove duplicates"), self.__removeDuplicates) |
150 menu.addAction(self.tr("Remove duplicates"), self.__removeDuplicates) |
153 menu.addAction(self.tr("Merge duplicates"), self.__mergeDuplicates) |
151 menu.addAction(self.tr("Merge duplicates"), self.__mergeDuplicates) |
154 menu.exec_(QCursor.pos()) |
152 menu.exec_(QCursor.pos()) |
196 entry.setDuration(duration) |
194 entry.setDuration(duration) |
197 entry.setTask(task) |
195 entry.setTask(task) |
198 entry.setComment(comment) |
196 entry.setComment(comment) |
199 self.__tracker.entryChanged() |
197 self.__tracker.entryChanged() |
200 |
198 |
201 date, time, duration, task, comment = \ |
199 (date, time, duration, task, |
202 entry.getEntryData()[1:-1] |
200 comment) = entry.getEntryData()[1:-1] |
203 itm.setText(0, self.tr("{0}, {1}", "date, time") |
201 itm.setText(0, self.tr("{0}, {1}", "date, time") |
204 .format(date, time)) |
202 .format(date, time)) |
205 itm.setText(1, self.tr("{0} min").format(duration)) |
203 itm.setText(1, self.tr("{0} min").format(duration)) |
206 itm.setText(2, task) |
204 itm.setText(2, task) |
207 itm.setText(3, comment) |
205 itm.setText(3, comment) |
234 |
232 |
235 def __importEntries(self): |
233 def __importEntries(self): |
236 """ |
234 """ |
237 Private slot to import tracker entries. |
235 Private slot to import tracker entries. |
238 """ |
236 """ |
239 path = Preferences.getMultiProject("Workspace") or \ |
237 path = ( |
|
238 Preferences.getMultiProject("Workspace") or |
240 Utilities.getHomeDir() |
239 Utilities.getHomeDir() |
|
240 ) |
241 fname = E5FileDialog.getOpenFileName( |
241 fname = E5FileDialog.getOpenFileName( |
242 None, |
242 None, |
243 self.tr("Import Tracker Entries"), |
243 self.tr("Import Tracker Entries"), |
244 path, |
244 path, |
245 self.tr("Text Files (*.txt);;All Files (*)")) |
245 self.tr("Text Files (*.txt);;All Files (*)")) |
259 """ |
259 """ |
260 Private method to export all or selected entries. |
260 Private method to export all or selected entries. |
261 |
261 |
262 @keyparam ids list of IDs to export or all if empty (list of integer) |
262 @keyparam ids list of IDs to export or all if empty (list of integer) |
263 """ |
263 """ |
264 path = Preferences.getMultiProject("Workspace") or \ |
264 path = ( |
|
265 Preferences.getMultiProject("Workspace") or |
265 Utilities.getHomeDir() |
266 Utilities.getHomeDir() |
|
267 ) |
266 fname, selectedFilter = E5FileDialog.getSaveFileNameAndFilter( |
268 fname, selectedFilter = E5FileDialog.getSaveFileNameAndFilter( |
267 self, |
269 self, |
268 self.tr("Export Tracker Entries"), |
270 self.tr("Export Tracker Entries"), |
269 path, |
271 path, |
270 self.tr("Text Files (*.txt);;All Files (*)"), |
272 self.tr("Text Files (*.txt);;All Files (*)"), |