Tasks/TaskViewer.py

changeset 1653
fed1920ff53b
parent 1640
1699d46026cd
child 1819
cfcfd617216a
equal deleted inserted replaced
1652:4719bf3fe8d8 1653:fed1920ff53b
27 27
28 import UI.PixmapCache 28 import UI.PixmapCache
29 29
30 import Preferences 30 import Preferences
31 import Utilities 31 import Utilities
32
33 from Utilities.AutoSaver import AutoSaver
32 34
33 35
34 class Task(QTreeWidgetItem): 36 class Task(QTreeWidgetItem):
35 """ 37 """
36 Class implementing the task data structure. 38 Class implementing the task data structure.
384 self.project = project 386 self.project = project
385 self.projectTasksScanFilter = "" 387 self.projectTasksScanFilter = ""
386 388
387 self.taskFilter = TaskFilter() 389 self.taskFilter = TaskFilter()
388 self.taskFilter.setActive(False) 390 self.taskFilter.setActive(False)
391
392 self.__projectTasksSaveTimer = AutoSaver(self, self.saveProjectTasks)
389 393
390 self.__projectTasksMenu = QMenu( 394 self.__projectTasksMenu = QMenu(
391 self.trUtf8("P&roject Tasks"), self) 395 self.trUtf8("P&roject Tasks"), self)
392 self.__projectTasksMenu.addAction( 396 self.__projectTasksMenu.addAction(
393 self.trUtf8("&Regenerate project tasks"), 397 self.trUtf8("&Regenerate project tasks"),
563 self.tasks.append(task) 567 self.tasks.append(task)
564 if self.taskFilter.showTask(task): 568 if self.taskFilter.showTask(task):
565 self.addTopLevelItem(task) 569 self.addTopLevelItem(task)
566 self.__resort() 570 self.__resort()
567 self.__resizeColumns() 571 self.__resizeColumns()
572
573 if isProjectTask:
574 self.__projectTasksSaveTimer.changeOccurred()
568 575
569 def addFileTask(self, description, filename, lineno, isBugfixTask=False, 576 def addFileTask(self, description, filename, lineno, isBugfixTask=False,
570 longtext=""): 577 longtext=""):
571 """ 578 """
572 Public slot to add a file related task. 579 Public slot to add a file related task.
639 if self.copyTask == task: 646 if self.copyTask == task:
640 self.copyTask = None 647 self.copyTask = None
641 index = self.indexOfTopLevelItem(task) 648 index = self.indexOfTopLevelItem(task)
642 self.takeTopLevelItem(index) 649 self.takeTopLevelItem(index)
643 self.tasks.remove(task) 650 self.tasks.remove(task)
651 if task.isProjectTask:
652 self.__projectTasksSaveTimer.changeOccurred()
644 del task 653 del task
645 654
646 def __editTaskProperties(self): 655 def __editTaskProperties(self):
647 """ 656 """
648 Private slot to handle the "Properties" context menu entry 657 Private slot to handle the "Properties" context menu entry
657 task.setDescription(data[0]) 666 task.setDescription(data[0])
658 task.setPriority(data[1]) 667 task.setPriority(data[1])
659 task.setCompleted(data[2]) 668 task.setCompleted(data[2])
660 task.setProjectTask(data[3]) 669 task.setProjectTask(data[3])
661 task.setLongText(data[4]) 670 task.setLongText(data[4])
671 self.__projectTasksSaveTimer.changeOccurred()
662 672
663 def __newTask(self): 673 def __newTask(self):
664 """ 674 """
665 Private slot to handle the "New Task" context menu entry. 675 Private slot to handle the "New Task" context menu entry.
666 """ 676 """
686 if self.copyTask == task: 696 if self.copyTask == task:
687 self.copyTask = None 697 self.copyTask = None
688 index = self.indexOfTopLevelItem(task) 698 index = self.indexOfTopLevelItem(task)
689 self.takeTopLevelItem(index) 699 self.takeTopLevelItem(index)
690 self.tasks.remove(task) 700 self.tasks.remove(task)
701 if task.isProjectTask:
702 self.__projectTasksSaveTimer.changeOccurred()
691 del task 703 del task
692 ci = self.currentItem() 704 ci = self.currentItem()
693 if ci: 705 if ci:
694 ind = self.indexFromItem(ci, self.currentColumn()) 706 ind = self.indexFromItem(ci, self.currentColumn())
695 self.scrollTo(ind, QAbstractItemView.PositionAtCenter) 707 self.scrollTo(ind, QAbstractItemView.PositionAtCenter)
720 if self.copyTask == task: 732 if self.copyTask == task:
721 self.copyTask = None 733 self.copyTask = None
722 index = self.indexOfTopLevelItem(task) 734 index = self.indexOfTopLevelItem(task)
723 self.takeTopLevelItem(index) 735 self.takeTopLevelItem(index)
724 self.tasks.remove(task) 736 self.tasks.remove(task)
737 if task.isProjectTask:
738 self.__projectTasksSaveTimer.changeOccurred()
725 del task 739 del task
726 ci = self.currentItem() 740 ci = self.currentItem()
727 if ci: 741 if ci:
728 ind = self.indexFromItem(ci, self.currentColumn()) 742 ind = self.indexFromItem(ci, self.currentColumn())
729 self.scrollTo(ind, QAbstractItemView.PositionAtCenter) 743 self.scrollTo(ind, QAbstractItemView.PositionAtCenter)
862 def __configure(self): 876 def __configure(self):
863 """ 877 """
864 Private method to open the configuration dialog. 878 Private method to open the configuration dialog.
865 """ 879 """
866 e5App().getObject("UserInterface").showPreferences("tasksPage") 880 e5App().getObject("UserInterface").showPreferences("tasksPage")
881
882 def saveProjectTasks(self):
883 """
884 Public method to write the project tasks.
885 """
886 if self.projectOpen and Preferences.getTasks("TasksProjectAutoSave"):
887 self.project.writeTasks()

eric ide

mercurial