26 import UI.PixmapCache |
26 import UI.PixmapCache |
27 |
27 |
28 import Preferences |
28 import Preferences |
29 import Utilities |
29 import Utilities |
30 |
30 |
|
31 |
31 class Task(QTreeWidgetItem): |
32 class Task(QTreeWidgetItem): |
32 """ |
33 """ |
33 Class implementing the task data structure. |
34 Class implementing the task data structure. |
34 """ |
35 """ |
35 def __init__(self, description, priority = 1, filename = "", lineno = 0, |
36 def __init__(self, description, priority=1, filename="", lineno=0, |
36 completed = False, _time = 0, isProjectTask = False, |
37 completed=False, _time=0, isProjectTask=False, |
37 isBugfixTask = False, project = None, longtext = ""): |
38 isBugfixTask=False, project=None, longtext=""): |
38 """ |
39 """ |
39 Constructor |
40 Constructor |
40 |
41 |
41 @param parent parent widget of the task (QWidget) |
42 @param parent parent widget of the task (QWidget) |
42 @param description descriptive text of the task (string) |
43 @param description descriptive text of the task (string) |
345 |
348 |
346 self.setRootIsDecorated(False) |
349 self.setRootIsDecorated(False) |
347 self.setItemsExpandable(False) |
350 self.setItemsExpandable(False) |
348 self.setSortingEnabled(True) |
351 self.setSortingEnabled(True) |
349 |
352 |
350 self.__headerItem = QTreeWidgetItem(["", "", self.trUtf8("Summary"), |
353 self.__headerItem = QTreeWidgetItem(["", "", self.trUtf8("Summary"), |
351 self.trUtf8("Filename"), self.trUtf8("Line"), ""]) |
354 self.trUtf8("Filename"), self.trUtf8("Line"), ""]) |
352 self.__headerItem.setIcon(0, UI.PixmapCache.getIcon("taskCompleted.png")) |
355 self.__headerItem.setIcon(0, UI.PixmapCache.getIcon("taskCompleted.png")) |
353 self.__headerItem.setIcon(1, UI.PixmapCache.getIcon("taskPriority.png")) |
356 self.__headerItem.setIcon(1, UI.PixmapCache.getIcon("taskPriority.png")) |
354 self.setHeaderItem(self.__headerItem) |
357 self.setHeaderItem(self.__headerItem) |
355 |
358 |
382 self.__menu.addAction(self.trUtf8("Delete Completed &Tasks"), |
385 self.__menu.addAction(self.trUtf8("Delete Completed &Tasks"), |
383 self.__deleteCompleted) |
386 self.__deleteCompleted) |
384 self.__menu.addSeparator() |
387 self.__menu.addSeparator() |
385 self.__menu.addAction(self.trUtf8("P&roperties..."), self.__editTaskProperties) |
388 self.__menu.addAction(self.trUtf8("P&roperties..."), self.__editTaskProperties) |
386 self.__menu.addSeparator() |
389 self.__menu.addSeparator() |
387 self.__menuFilteredAct = self.__menu.addAction(self.trUtf8("&Filtered display")) |
390 self.__menuFilteredAct = self.__menu.addAction(self.trUtf8("&Filtered display")) |
388 self.__menuFilteredAct.setCheckable(True) |
391 self.__menuFilteredAct.setCheckable(True) |
389 self.__menuFilteredAct.setChecked(False) |
392 self.__menuFilteredAct.setChecked(False) |
390 self.__menuFilteredAct.triggered[bool].connect(self.__activateFilter) |
393 self.__menuFilteredAct.triggered[bool].connect(self.__activateFilter) |
391 self.__menu.addAction(self.trUtf8("Filter c&onfiguration..."), |
394 self.__menu.addAction(self.trUtf8("Filter c&onfiguration..."), |
392 self.__configureFilter) |
395 self.__configureFilter) |
393 self.__menu.addSeparator() |
396 self.__menu.addSeparator() |
394 self.__menu.addAction(self.trUtf8("Resi&ze columns"), self.__resizeColumns) |
397 self.__menu.addAction(self.trUtf8("Resi&ze columns"), self.__resizeColumns) |
395 self.__menu.addSeparator() |
398 self.__menu.addSeparator() |
396 self.__menu.addAction(self.trUtf8("Configure..."), self.__configure) |
399 self.__menu.addAction(self.trUtf8("Configure..."), self.__configure) |
400 self.__backMenu.addSeparator() |
403 self.__backMenu.addSeparator() |
401 self.backRegenerateProjectTasksItem = \ |
404 self.backRegenerateProjectTasksItem = \ |
402 self.__backMenu.addAction(self.trUtf8("&Regenerate project tasks"), |
405 self.__backMenu.addAction(self.trUtf8("&Regenerate project tasks"), |
403 self.__regenerateProjectTasks) |
406 self.__regenerateProjectTasks) |
404 self.__backMenu.addSeparator() |
407 self.__backMenu.addSeparator() |
405 self.backPasteItem = self.__backMenu.addAction(self.trUtf8("&Paste"), |
408 self.backPasteItem = self.__backMenu.addAction(self.trUtf8("&Paste"), |
406 self.__pasteTask) |
409 self.__pasteTask) |
407 self.__backMenu.addSeparator() |
410 self.__backMenu.addSeparator() |
408 self.__backMenu.addAction(self.trUtf8("Delete Completed &Tasks"), |
411 self.__backMenu.addAction(self.trUtf8("Delete Completed &Tasks"), |
409 self.__deleteCompleted) |
412 self.__deleteCompleted) |
410 self.__backMenu.addSeparator() |
413 self.__backMenu.addSeparator() |
411 self.__backMenuFilteredAct = \ |
414 self.__backMenuFilteredAct = \ |
412 self.__backMenu.addAction(self.trUtf8("&Filtered display")) |
415 self.__backMenu.addAction(self.trUtf8("&Filtered display")) |
413 self.__backMenuFilteredAct.setCheckable(True) |
416 self.__backMenuFilteredAct.setCheckable(True) |
414 self.__backMenuFilteredAct.setChecked(False) |
417 self.__backMenuFilteredAct.setChecked(False) |
415 self.__backMenuFilteredAct.triggered[bool].connect(self.__activateFilter) |
418 self.__backMenuFilteredAct.triggered[bool].connect(self.__activateFilter) |
416 self.__backMenu.addAction(self.trUtf8("Filter c&onfiguration..."), |
419 self.__backMenu.addAction(self.trUtf8("Filter c&onfiguration..."), |
417 self.__configureFilter) |
420 self.__configureFilter) |
418 self.__backMenu.addSeparator() |
421 self.__backMenu.addSeparator() |
419 self.__backMenu.addAction(self.trUtf8("Resi&ze columns"), self.__resizeColumns) |
422 self.__backMenu.addAction(self.trUtf8("Resi&ze columns"), self.__resizeColumns) |
420 self.__backMenu.addSeparator() |
423 self.__backMenu.addSeparator() |
421 self.__backMenu.addAction(self.trUtf8("Configure..."), self.__configure) |
424 self.__backMenu.addAction(self.trUtf8("Configure..."), self.__configure) |
501 else: |
504 else: |
502 self.pasteItem.setEnabled(False) |
505 self.pasteItem.setEnabled(False) |
503 |
506 |
504 self.__menu.popup(coord) |
507 self.__menu.popup(coord) |
505 |
508 |
506 def setProjectOpen(self, o = False): |
509 def setProjectOpen(self, o=False): |
507 """ |
510 """ |
508 Public slot to set the project status. |
511 Public slot to set the project status. |
509 |
512 |
510 @param o flag indicating the project status |
513 @param o flag indicating the project status |
511 """ |
514 """ |
512 self.projectOpen = o |
515 self.projectOpen = o |
513 |
516 |
514 def addTask(self, description, priority = 1, filename = "", lineno = 0, |
517 def addTask(self, description, priority=1, filename="", lineno=0, |
515 completed = False, _time = 0, isProjectTask = False, |
518 completed=False, _time=0, isProjectTask=False, |
516 isBugfixTask = False, longtext = ""): |
519 isBugfixTask=False, longtext=""): |
517 """ |
520 """ |
518 Public slot to add a task. |
521 Public slot to add a task. |
519 |
522 |
520 @param description descriptive text of the task (string) |
523 @param description descriptive text of the task (string) |
521 @param priority priority of the task (0=high, 1=normal, 2=low) |
524 @param priority priority of the task (0=high, 1=normal, 2=low) |
522 @param filename filename containing the task (string) |
525 @param filename filename containing the task (string) |
523 @param lineno line number containing the task (integer) |
526 @param lineno line number containing the task (integer) |
524 @param completed flag indicating completion status (boolean) |
527 @param completed flag indicating completion status (boolean) |
525 @param _time creation time of the task (float, if 0 use current time) |
528 @param _time creation time of the task (float, if 0 use current time) |
526 @param isProjectTask flag indicating a task related to the current |
529 @param isProjectTask flag indicating a task related to the current |
527 project (boolean) |
530 project (boolean) |
528 @param isBugfixTask flag indicating a bugfix task (boolean) |
531 @param isBugfixTask flag indicating a bugfix task (boolean) |
529 @param longtext explanatory text of the task (string) |
532 @param longtext explanatory text of the task (string) |
530 """ |
533 """ |
531 task = Task(description, priority, filename, lineno, completed, |
534 task = Task(description, priority, filename, lineno, completed, |
532 _time, isProjectTask, isBugfixTask, |
535 _time, isProjectTask, isBugfixTask, |
533 self.project, longtext) |
536 self.project, longtext) |
534 self.tasks.append(task) |
537 self.tasks.append(task) |
535 if self.taskFilter.showTask(task): |
538 if self.taskFilter.showTask(task): |
536 self.addTopLevelItem(task) |
539 self.addTopLevelItem(task) |
537 self.__resort() |
540 self.__resort() |
538 self.__resizeColumns() |
541 self.__resizeColumns() |
539 |
542 |
540 def addFileTask(self, description, filename, lineno, isBugfixTask = False, |
543 def addFileTask(self, description, filename, lineno, isBugfixTask=False, |
541 longtext = ""): |
544 longtext=""): |
542 """ |
545 """ |
543 Public slot to add a file related task. |
546 Public slot to add a file related task. |
544 |
547 |
545 @param description descriptive text of the task (string) |
548 @param description descriptive text of the task (string) |
546 @param filename filename containing the task (string) |
549 @param filename filename containing the task (string) |
547 @param lineno line number containing the task (integer) |
550 @param lineno line number containing the task (integer) |
548 @param isBugfixTask flag indicating a bugfix task (boolean) |
551 @param isBugfixTask flag indicating a bugfix task (boolean) |
549 @param longtext explanatory text of the task (string) |
552 @param longtext explanatory text of the task (string) |
550 """ |
553 """ |
551 self.addTask(description, filename = filename, lineno = lineno, |
554 self.addTask(description, filename=filename, lineno=lineno, |
552 isProjectTask = \ |
555 isProjectTask=( |
553 self.project and self.project.isProjectSource(filename), |
556 self.project and self.project.isProjectSource(filename)), |
554 isBugfixTask = isBugfixTask, longtext = longtext) |
557 isBugfixTask=isBugfixTask, longtext=longtext) |
555 |
558 |
556 def getProjectTasks(self): |
559 def getProjectTasks(self): |
557 """ |
560 """ |
558 Public method to retrieve all project related tasks. |
561 Public method to retrieve all project related tasks. |
559 |
562 |