80 |
80 |
81 self.__projectTasksMenu = QMenu( |
81 self.__projectTasksMenu = QMenu( |
82 self.tr("P&roject Tasks"), self) |
82 self.tr("P&roject Tasks"), self) |
83 self.__projectTasksMenu.addAction( |
83 self.__projectTasksMenu.addAction( |
84 self.tr("&Regenerate project tasks"), |
84 self.tr("&Regenerate project tasks"), |
85 self.__regenerateProjectTasks) |
85 self.regenerateProjectTasks) |
86 self.__projectTasksMenu.addSeparator() |
86 self.__projectTasksMenu.addSeparator() |
87 self.__projectTasksMenu.addAction( |
87 self.__projectTasksMenu.addAction( |
88 self.tr("&Configure scan options"), |
88 self.tr("&Configure scan options"), |
89 self.__configureProjectTasksScanOptions) |
89 self.__configureProjectTasksScanOptions) |
90 |
90 |
661 QLineEdit.Normal, |
661 QLineEdit.Normal, |
662 self.projectTasksScanFilter) |
662 self.projectTasksScanFilter) |
663 if ok: |
663 if ok: |
664 self.projectTasksScanFilter = filter |
664 self.projectTasksScanFilter = filter |
665 |
665 |
666 def __regenerateProjectTasks(self): |
666 def regenerateProjectTasks(self, quiet=False): |
667 """ |
667 """ |
668 Private slot to handle the "Regenerated project tasks" context menu |
668 Public slot to regenerate project related tasks. |
669 entry. |
669 |
|
670 @param quiet flag indicating quiet operation |
|
671 @type bool |
670 """ |
672 """ |
671 markers = { |
673 markers = { |
672 Task.TypeWarning: |
674 Task.TypeWarning: |
673 Preferences.getTasks("TasksWarningMarkers").split(), |
675 Preferences.getTasks("TasksWarningMarkers").split(), |
674 Task.TypeNote: Preferences.getTasks("TasksNoteMarkers").split(), |
676 Task.TypeNote: Preferences.getTasks("TasksNoteMarkers").split(), |
686 |
688 |
687 # remove all project tasks |
689 # remove all project tasks |
688 self.clearProjectTasks(fileOnly=True) |
690 self.clearProjectTasks(fileOnly=True) |
689 |
691 |
690 # now process them |
692 # now process them |
691 progress = E5ProgressDialog( |
693 if not quiet: |
692 self.tr("Extracting project tasks..."), |
694 progress = E5ProgressDialog( |
693 self.tr("Abort"), 0, len(files), self.tr("%v/%m Files")) |
695 self.tr("Extracting project tasks..."), |
694 progress.setMinimumDuration(0) |
696 self.tr("Abort"), 0, len(files), self.tr("%v/%m Files")) |
695 progress.setWindowTitle(self.tr("Tasks")) |
697 progress.setMinimumDuration(0) |
|
698 progress.setWindowTitle(self.tr("Tasks")) |
696 count = 0 |
699 count = 0 |
697 |
700 |
698 for file in files: |
701 for file in files: |
699 progress.setLabelText( |
702 if not quiet: |
700 self.tr("Extracting project tasks...\n{0}").format(file)) |
703 progress.setLabelText( |
701 progress.setValue(count) |
704 self.tr("Extracting project tasks...\n{0}").format(file)) |
702 QApplication.processEvents() |
705 progress.setValue(count) |
703 if progress.wasCanceled(): |
706 QApplication.processEvents() |
704 break |
707 if progress.wasCanceled(): |
|
708 break |
705 |
709 |
706 fn = os.path.join(self.project.ppath, file) |
710 fn = os.path.join(self.project.ppath, file) |
707 # read the file and split it into textlines |
711 # read the file and split it into textlines |
708 try: |
712 try: |
709 text, encoding = Utilities.readEncodedFile(fn) |
713 text, encoding = Utilities.readEncodedFile(fn) |
710 lines = text.splitlines() |
714 lines = text.splitlines() |
711 except (UnicodeError, IOError): |
715 except (UnicodeError, IOError): |
712 count += 1 |
716 count += 1 |
713 progress.setValue(count) |
717 if not quiet: |
|
718 progress.setValue(count) |
714 continue |
719 continue |
715 |
720 |
716 # now search tasks and record them |
721 # now search tasks and record them |
717 lineIndex = 0 |
722 lineIndex = 0 |
718 for line in lines: |
723 for line in lines: |