177 self.syntaxerrors = {} # key: marker handle |
177 self.syntaxerrors = {} # key: marker handle |
178 # value: error message, error index |
178 # value: error message, error index |
179 self.warnings = {} # key: marker handle |
179 self.warnings = {} # key: marker handle |
180 # value: list of warning messages |
180 # value: list of warning messages |
181 self.notcoveredMarkers = [] # just a list of marker handles |
181 self.notcoveredMarkers = [] # just a list of marker handles |
|
182 self.showingNotcoveredMarkers = False |
182 |
183 |
183 self.condHistory = [] |
184 self.condHistory = [] |
184 self.lexer_ = None |
185 self.lexer_ = None |
185 self.__lexerReset = False |
186 self.__lexerReset = False |
186 self.completer = None |
187 self.completer = None |
326 self.setDocument(editor.document()) |
327 self.setDocument(editor.document()) |
327 self.breaks = editor.breaks |
328 self.breaks = editor.breaks |
328 self.bookmarks = editor.bookmarks |
329 self.bookmarks = editor.bookmarks |
329 self.syntaxerrors = editor.syntaxerrors |
330 self.syntaxerrors = editor.syntaxerrors |
330 self.notcoveredMarkers = editor.notcoveredMarkers |
331 self.notcoveredMarkers = editor.notcoveredMarkers |
|
332 self.showingNotcoveredMarkers = editor.showingNotcoveredMarkers |
331 self.isResourcesFile = editor.isResourcesFile |
333 self.isResourcesFile = editor.isResourcesFile |
332 self.lastModified = editor.lastModified |
334 self.lastModified = editor.lastModified |
333 |
335 |
334 self.addClone(editor) |
336 self.addClone(editor) |
335 editor.addClone(self) |
337 editor.addClone(self) |
391 self.__checkEncoding() |
393 self.__checkEncoding() |
392 else: |
394 else: |
393 # it's a clone |
395 # it's a clone |
394 self.__languageChanged(editor.apiLanguage, propagate=False) |
396 self.__languageChanged(editor.apiLanguage, propagate=False) |
395 self.__encodingChanged(editor.encoding, propagate=False) |
397 self.__encodingChanged(editor.encoding, propagate=False) |
396 |
|
397 self.__coverageMarkersShown = False # flag remembering the current status of the |
|
398 # code coverage markers |
|
399 |
398 |
400 self.setAcceptDrops(True) |
399 self.setAcceptDrops(True) |
401 |
400 |
402 # breakpoint handling |
401 # breakpoint handling |
403 self.breakpointModel = self.dbs.getBreakPointModel() |
402 self.breakpointModel = self.dbs.getBreakPointModel() |
4511 coEnable = False |
4510 coEnable = False |
4512 |
4511 |
4513 self.profileMenuAct.setEnabled(prEnable) |
4512 self.profileMenuAct.setEnabled(prEnable) |
4514 self.coverageMenuAct.setEnabled(coEnable) |
4513 self.coverageMenuAct.setEnabled(coEnable) |
4515 self.coverageShowAnnotationMenuAct.setEnabled( |
4514 self.coverageShowAnnotationMenuAct.setEnabled( |
4516 coEnable and not self.__coverageMarkersShown) |
4515 coEnable and len(self.notcoveredMarkers) == 0) |
4517 self.coverageHideAnnotationMenuAct.setEnabled( |
4516 self.coverageHideAnnotationMenuAct.setEnabled( |
4518 self.__coverageMarkersShown) |
4517 len(self.notcoveredMarkers) > 0) |
4519 |
4518 |
4520 self.showMenu.emit("Show", self.menuShow, self) |
4519 self.showMenu.emit("Show", self.menuShow, self) |
4521 |
4520 |
4522 def __showContextMenuGraphics(self): |
4521 def __showContextMenuGraphics(self): |
4523 """ |
4522 """ |
4895 if fn: |
4894 if fn: |
4896 self.codecoverage = PyCoverageDialog() |
4895 self.codecoverage = PyCoverageDialog() |
4897 self.codecoverage.show() |
4896 self.codecoverage.show() |
4898 self.codecoverage.start(fn, self.fileName) |
4897 self.codecoverage.start(fn, self.fileName) |
4899 |
4898 |
4900 def codeCoverageShowAnnotations(self): |
4899 def refreshCoverageAnnotations(self): |
|
4900 """ |
|
4901 Public method to refresh the code coverage annotations. |
|
4902 """ |
|
4903 if self.showingNotcoveredMarkers: |
|
4904 self.codeCoverageShowAnnotations(silent=True) |
|
4905 |
|
4906 def codeCoverageShowAnnotations(self, silent=False): |
4901 """ |
4907 """ |
4902 Public method to handle the show code coverage annotations context menu action. |
4908 Public method to handle the show code coverage annotations context menu action. |
4903 """ |
4909 |
|
4910 @param silent flag indicating to not show any dialog (boolean) |
|
4911 """ |
|
4912 self.__codeCoverageHideAnnotations() |
|
4913 |
4904 fn = self.__getCodeCoverageFile() |
4914 fn = self.__getCodeCoverageFile() |
4905 if fn: |
4915 if fn: |
4906 cover = coverage(data_file=fn) |
4916 cover = coverage(data_file=fn) |
4907 cover.use_cache(True) |
4917 cover.use_cache(True) |
4908 cover.load() |
4918 cover.load() |
4910 if missing: |
4920 if missing: |
4911 for line in missing: |
4921 for line in missing: |
4912 handle = self.markerAdd(line - 1, self.notcovered) |
4922 handle = self.markerAdd(line - 1, self.notcovered) |
4913 self.notcoveredMarkers.append(handle) |
4923 self.notcoveredMarkers.append(handle) |
4914 self.coverageMarkersShown.emit(True) |
4924 self.coverageMarkersShown.emit(True) |
4915 self.__coverageMarkersShown = True |
|
4916 else: |
4925 else: |
4917 E5MessageBox.information(self, |
4926 if not silent: |
|
4927 E5MessageBox.information(self, |
|
4928 self.trUtf8("Show Code Coverage Annotations"), |
|
4929 self.trUtf8("""All lines have been covered.""")) |
|
4930 self.showingNotcoveredMarkers = True |
|
4931 else: |
|
4932 if not silent: |
|
4933 E5MessageBox.warning(self, |
4918 self.trUtf8("Show Code Coverage Annotations"), |
4934 self.trUtf8("Show Code Coverage Annotations"), |
4919 self.trUtf8("""All lines have been covered.""")) |
4935 self.trUtf8("""There is no coverage file available.""")) |
4920 else: |
|
4921 E5MessageBox.warning(self, |
|
4922 self.trUtf8("Show Code Coverage Annotations"), |
|
4923 self.trUtf8("""There is no coverage file available.""")) |
|
4924 |
4936 |
4925 def __codeCoverageHideAnnotations(self): |
4937 def __codeCoverageHideAnnotations(self): |
4926 """ |
4938 """ |
4927 Private method to handle the hide code coverage annotations context menu action. |
4939 Private method to handle the hide code coverage annotations context menu action. |
4928 """ |
4940 """ |
4929 for handle in self.notcoveredMarkers: |
4941 for handle in self.notcoveredMarkers: |
4930 self.markerDeleteHandle(handle) |
4942 self.markerDeleteHandle(handle) |
4931 self.notcoveredMarkers = [] |
4943 self.notcoveredMarkers = [] |
4932 self.coverageMarkersShown.emit(False) |
4944 self.coverageMarkersShown.emit(False) |
4933 self.__coverageMarkersShown = False |
4945 self.showingNotcoveredMarkers = False |
4934 |
4946 |
4935 def hasCoverageMarkers(self): |
4947 def hasCoverageMarkers(self): |
4936 """ |
4948 """ |
4937 Public method to test, if there are coverage markers. |
4949 Public method to test, if there are coverage markers. |
4938 """ |
4950 """ |