7 Module implementing the time tracker widget. |
7 Module implementing the time tracker widget. |
8 """ |
8 """ |
9 |
9 |
10 import os |
10 import os |
11 |
11 |
12 from PyQt6.QtCore import pyqtSlot, QPoint, Qt, QDate, QTime, QFileInfo |
12 from PyQt6.QtCore import QDate, QFileInfo, QPoint, Qt, QTime, pyqtSlot |
13 from PyQt6.QtGui import QCursor |
13 from PyQt6.QtGui import QCursor |
14 from PyQt6.QtWidgets import QWidget, QMenu, QTreeWidgetItem, QDialog |
14 from PyQt6.QtWidgets import QDialog, QMenu, QTreeWidgetItem, QWidget |
15 |
15 |
16 from eric7 import Preferences, Utilities |
16 from eric7 import Preferences |
17 from eric7.EricWidgets import EricMessageBox, EricFileDialog |
17 from eric7.EricWidgets import EricFileDialog, EricMessageBox |
|
18 |
|
19 try: |
|
20 from eric7.SystemUtilities.FileSystemUtilities import toNativeSeparators |
|
21 except ImportError: |
|
22 # imports for eric < 23.1 |
|
23 from eric7.Utilities import toNativeSeparators |
|
24 try: |
|
25 from eric7.SystemUtilities.OSUtilities import getHomeDir |
|
26 except ImportError: |
|
27 # imports for eric < 23.1 |
|
28 from eric7.Utilities import getHomeDir |
18 |
29 |
19 from .Ui_TimeTrackerWidget import Ui_TimeTrackerWidget |
30 from .Ui_TimeTrackerWidget import Ui_TimeTrackerWidget |
20 |
31 |
21 |
32 |
22 class TimeTrackerWidget(QWidget, Ui_TimeTrackerWidget): |
33 class TimeTrackerWidget(QWidget, Ui_TimeTrackerWidget): |
245 |
256 |
246 def __importEntries(self): |
257 def __importEntries(self): |
247 """ |
258 """ |
248 Private slot to import tracker entries. |
259 Private slot to import tracker entries. |
249 """ |
260 """ |
250 path = Preferences.getMultiProject("Workspace") or Utilities.getHomeDir() |
261 path = Preferences.getMultiProject("Workspace") or getHomeDir() |
251 fname = EricFileDialog.getOpenFileName( |
262 fname = EricFileDialog.getOpenFileName( |
252 None, |
263 None, |
253 self.tr("Import Time Tracker Entries"), |
264 self.tr("Import Time Tracker Entries"), |
254 path, |
265 path, |
255 self.tr("Time Tracker Files (*.ttj);;All Files (*)"), |
266 self.tr("Time Tracker Files (*.ttj);;All Files (*)"), |
256 ) |
267 ) |
257 if fname: |
268 if fname: |
258 fname = Utilities.toNativeSeparators(fname) |
269 fname = toNativeSeparators(fname) |
259 if not os.path.exists(fname): |
270 if not os.path.exists(fname): |
260 EricMessageBox.critical( |
271 EricMessageBox.critical( |
261 self, |
272 self, |
262 self.tr("Import Time Tracker Entries"), |
273 self.tr("Import Time Tracker Entries"), |
263 self.tr("<p>The file <b>{0}</b> does not exist.</p>").format(fname), |
274 self.tr("<p>The file <b>{0}</b> does not exist.</p>").format(fname), |
271 Private method to export all or selected entries. |
282 Private method to export all or selected entries. |
272 |
283 |
273 @param ids list of IDs to export or all if empty |
284 @param ids list of IDs to export or all if empty |
274 @type list of int |
285 @type list of int |
275 """ |
286 """ |
276 path = Preferences.getMultiProject("Workspace") or Utilities.getHomeDir() |
287 path = Preferences.getMultiProject("Workspace") or getHomeDir() |
277 fname, selectedFilter = EricFileDialog.getSaveFileNameAndFilter( |
288 fname, selectedFilter = EricFileDialog.getSaveFileNameAndFilter( |
278 self, |
289 self, |
279 self.tr("Export Time Tracker Entries"), |
290 self.tr("Export Time Tracker Entries"), |
280 path, |
291 path, |
281 self.tr("Time Tracker Files (*.ttj);;All Files (*)"), |
292 self.tr("Time Tracker Files (*.ttj);;All Files (*)"), |
297 ).format(fname), |
308 ).format(fname), |
298 icon=EricMessageBox.Warning, |
309 icon=EricMessageBox.Warning, |
299 ) |
310 ) |
300 if not res: |
311 if not res: |
301 return |
312 return |
302 fname = Utilities.toNativeSeparators(fname) |
313 fname = toNativeSeparators(fname) |
303 self.__tracker.saveTrackerEntries(filePath=fname, ids=ids) |
314 self.__tracker.saveTrackerEntries(filePath=fname, ids=ids) |
304 |
315 |
305 def __exportSelectedEntries(self): |
316 def __exportSelectedEntries(self): |
306 """ |
317 """ |
307 Private slot to export the selected tracker entries. |
318 Private slot to export the selected tracker entries. |