Tasks/TaskViewer.py

changeset 960
64a6e66b4707
parent 945
8cd4d08fa9f6
child 961
c13b1d86db75
equal deleted inserted replaced
958:9f712690525e 960:64a6e66b4707
11 introductory text. This text is configurable. 11 introductory text. This text is configurable.
12 """ 12 """
13 13
14 import os 14 import os
15 import time 15 import time
16 import fnmatch
16 17
17 from PyQt4.QtCore import * 18 from PyQt4.QtCore import *
18 from PyQt4.QtGui import * 19 from PyQt4.QtGui import *
19 20
20 from E5Gui.E5Application import e5App 21 from E5Gui.E5Application import e5App
361 362
362 self.tasks = [] 363 self.tasks = []
363 self.copyTask = None 364 self.copyTask = None
364 self.projectOpen = False 365 self.projectOpen = False
365 self.project = project 366 self.project = project
367 self.projectTasksScanFilter = ""
366 368
367 self.taskFilter = TaskFilter() 369 self.taskFilter = TaskFilter()
368 self.taskFilter.setActive(False) 370 self.taskFilter.setActive(False)
371
372 self.__projectTasksMenu = QMenu(
373 self.trUtf8("P&roject Tasks"), self)
374 self.__projectTasksMenu.addAction(
375 self.trUtf8("&Regenerate project tasks"),
376 self.__regenerateProjectTasks)
377 self.__projectTasksMenu.addSeparator()
378 self.__projectTasksMenu.addAction(
379 self.trUtf8("&Configure scan options"),
380 self.__configureProjectTasksScanOptions)
369 381
370 self.__menu = QMenu(self) 382 self.__menu = QMenu(self)
371 self.__menu.addAction(self.trUtf8("&New Task..."), self.__newTask) 383 self.__menu.addAction(self.trUtf8("&New Task..."), self.__newTask)
372 self.__menu.addSeparator() 384 self.__menu.addSeparator()
373 self.regenerateProjectTasksItem = \ 385 self.projectTasksMenuItem = self.__menu.addMenu(self.__projectTasksMenu)
374 self.__menu.addAction(self.trUtf8("&Regenerate project tasks"),
375 self.__regenerateProjectTasks)
376 self.__menu.addSeparator() 386 self.__menu.addSeparator()
377 self.gotoItem = self.__menu.addAction(self.trUtf8("&Go To"), self.__goToTask) 387 self.gotoItem = self.__menu.addAction(self.trUtf8("&Go To"), self.__goToTask)
378 self.__menu.addSeparator() 388 self.__menu.addSeparator()
379 self.copyItem = self.__menu.addAction(self.trUtf8("&Copy"), self.__copyTask) 389 self.copyItem = self.__menu.addAction(self.trUtf8("&Copy"), self.__copyTask)
380 self.pasteItem = self.__menu.addAction(self.trUtf8("&Paste"), self.__pasteTask) 390 self.pasteItem = self.__menu.addAction(self.trUtf8("&Paste"), self.__pasteTask)
399 self.__menu.addAction(self.trUtf8("Configure..."), self.__configure) 409 self.__menu.addAction(self.trUtf8("Configure..."), self.__configure)
400 410
401 self.__backMenu = QMenu(self) 411 self.__backMenu = QMenu(self)
402 self.__backMenu.addAction(self.trUtf8("&New Task..."), self.__newTask) 412 self.__backMenu.addAction(self.trUtf8("&New Task..."), self.__newTask)
403 self.__backMenu.addSeparator() 413 self.__backMenu.addSeparator()
404 self.backRegenerateProjectTasksItem = \ 414 self.backProjectTasksMenuItem = self.__backMenu.addMenu(self.__projectTasksMenu)
405 self.__backMenu.addAction(self.trUtf8("&Regenerate project tasks"),
406 self.__regenerateProjectTasks)
407 self.__backMenu.addSeparator() 415 self.__backMenu.addSeparator()
408 self.backPasteItem = self.__backMenu.addAction(self.trUtf8("&Paste"), 416 self.backPasteItem = self.__backMenu.addAction(self.trUtf8("&Paste"),
409 self.__pasteTask) 417 self.__pasteTask)
410 self.__backMenu.addSeparator() 418 self.__backMenu.addSeparator()
411 self.__backMenu.addAction(self.trUtf8("Delete Completed &Tasks"), 419 self.__backMenu.addAction(self.trUtf8("Delete Completed &Tasks"),
479 @param coord the position of the mouse pointer (QPoint) 487 @param coord the position of the mouse pointer (QPoint)
480 """ 488 """
481 itm = self.itemAt(coord) 489 itm = self.itemAt(coord)
482 coord = self.mapToGlobal(coord) 490 coord = self.mapToGlobal(coord)
483 if itm is None: 491 if itm is None:
484 self.backRegenerateProjectTasksItem.setEnabled(self.projectOpen) 492 self.backProjectTasksMenuItem.setEnabled(self.projectOpen)
485 if self.copyTask: 493 if self.copyTask:
486 self.backPasteItem.setEnabled(True) 494 self.backPasteItem.setEnabled(True)
487 else: 495 else:
488 self.backPasteItem.setEnabled(False) 496 self.backPasteItem.setEnabled(False)
489 self.__backMenu.popup(coord) 497 self.__backMenu.popup(coord)
490 else: 498 else:
491 self.regenerateProjectTasksItem.setEnabled(self.projectOpen) 499 self.projectTasksMenuItem.setEnabled(self.projectOpen)
492 if itm.getFilename(): 500 if itm.getFilename():
493 self.gotoItem.setEnabled(True) 501 self.gotoItem.setEnabled(True)
494 self.deleteItem.setEnabled(True) 502 self.deleteItem.setEnabled(True)
495 self.markCompletedItem.setEnabled(False) 503 self.markCompletedItem.setEnabled(False)
496 self.copyItem.setEnabled(False) 504 self.copyItem.setEnabled(False)
738 dlg = TaskFilterConfigDialog(self.taskFilter) 746 dlg = TaskFilterConfigDialog(self.taskFilter)
739 if dlg.exec_() == QDialog.Accepted: 747 if dlg.exec_() == QDialog.Accepted:
740 dlg.configureTaskFilter(self.taskFilter) 748 dlg.configureTaskFilter(self.taskFilter)
741 self.__refreshDisplay() 749 self.__refreshDisplay()
742 750
751 def __configureProjectTasksScanOptions(self):
752 """
753 Private slot to configure scan options for project tasks.
754 """
755 filter, ok = QInputDialog.getText(
756 self,
757 self.trUtf8("Scan Filter Patterns"),
758 self.trUtf8("Enter filename patterns of files"
759 " to be excluded separated by a comma:"),
760 QLineEdit.Normal,
761 self.projectTasksScanFilter)
762 if ok:
763 self.projectTasksScanFilter = filter
764
743 def __regenerateProjectTasks(self): 765 def __regenerateProjectTasks(self):
744 """ 766 """
745 Private slot to handle the "Regenerated project tasks" context menu entry. 767 Private slot to handle the "Regenerated project tasks" context menu entry.
746 """ 768 """
747 todoMarkers = Preferences.getTasks("TasksMarkers").split() 769 todoMarkers = Preferences.getTasks("TasksMarkers").split()
748 bugfixMarkers = Preferences.getTasks("TasksMarkersBugfix").split() 770 bugfixMarkers = Preferences.getTasks("TasksMarkersBugfix").split()
749 files = self.project.pdata["SOURCES"] 771 files = self.project.pdata["SOURCES"]
772
773 # apply file filter
774 filterList = [f.strip() for f in self.projectTasksScanFilter.split(",")
775 if f.strip()]
776 if filterList:
777 for filter in filterList:
778 files = [f for f in files if not fnmatch.fnmatch(f, filter)]
750 779
751 # remove all project tasks 780 # remove all project tasks
752 self.clearProjectTasks() 781 self.clearProjectTasks()
753 782
754 # now process them 783 # now process them

eric ide

mercurial