diff -r 33c98cea84f0 -r faac36ec9d76 ViewManager/ViewManager.py --- a/ViewManager/ViewManager.py Sat Apr 06 16:33:49 2019 +0200 +++ b/ViewManager/ViewManager.py Sun Apr 07 19:55:21 2019 +0200 @@ -114,6 +114,8 @@ @signal syntaxerrorToggled(Editor) emitted when a syntax error is toggled @signal previewStateChanged(bool) emitted to signal a change in the preview state + @signal astViewerStateChanged(bool) emitted to signal a change in the + AST viewer state @signal editorLanguageChanged(Editor) emitted to signal a change of an editor's language @signal editorTextChanged(Editor) emitted to signal a change of an @@ -139,6 +141,7 @@ bookmarkToggled = pyqtSignal(Editor) syntaxerrorToggled = pyqtSignal(Editor) previewStateChanged = pyqtSignal(bool) + astViewerStateChanged = pyqtSignal(bool) editorLanguageChanged = pyqtSignal(Editor) editorTextChanged = pyqtSignal(Editor) editorLineChanged = pyqtSignal(str, int) @@ -3745,6 +3748,23 @@ self.previewAct.toggled[bool].connect(self.__previewEditor) self.viewActions.append(self.previewAct) + self.astViewerAct = E5Action( + QCoreApplication.translate('ViewManager', 'Python AST Viewer'), + UI.PixmapCache.getIcon("astTree"), + QCoreApplication.translate('ViewManager', 'Python AST Viewer'), + 0, 0, self, 'vm_python_ast_viewer', True) + self.astViewerAct.setStatusTip(QCoreApplication.translate( + 'ViewManager', 'Show the AST for the current Python file')) + self.astViewerAct.setWhatsThis(QCoreApplication.translate( + 'ViewManager', + """<b>Python AST Viewer</b>""" + """<p>This opens the a tree view of the AST of the current""" + """ Python source file.</p>""" + )) + self.astViewerAct.setChecked(False) + self.astViewerAct.toggled[bool].connect(self.__astViewer) + self.viewActions.append(self.astViewerAct) + self.viewActGrp.setEnabled(False) self.viewFoldActGrp.setEnabled(False) self.unhighlightAct.setEnabled(False) @@ -3754,6 +3774,7 @@ self.nextSplitAct.setEnabled(False) self.prevSplitAct.setEnabled(False) self.previewAct.setEnabled(True) + self.astViewerAct.setEnabled(False) self.newDocumentViewAct.setEnabled(False) self.newDocumentSplitViewAct.setEnabled(False) @@ -3774,6 +3795,7 @@ menu.addActions(self.viewFoldActGrp.actions()) menu.addSeparator() menu.addAction(self.previewAct) + menu.addAction(self.astViewerAct) menu.addSeparator() menu.addAction(self.unhighlightAct) menu.addSeparator() @@ -3806,6 +3828,7 @@ tb.addActions(self.viewActGrp.actions()) tb.addSeparator() tb.addAction(self.previewAct) + tb.addAction(self.astViewerAct) tb.addSeparator() tb.addAction(self.newDocumentViewAct) if self.canSplit(): @@ -6148,6 +6171,14 @@ Preferences.setUI("ShowFilePreview", checked) self.previewStateChanged.emit(checked) + def __astViewer(self, checked): + """ + Private slot to handle a change of the AST Viewer selection state. + + @param checked state of the action (boolean) + """ + self.astViewerStateChanged.emit(checked) + ################################################################## ## Below are the action methods for the macro menu ################################################################## @@ -6616,6 +6647,7 @@ self.splitViewAct.setEnabled(False) self.splitOrientationAct.setEnabled(False) self.previewAct.setEnabled(True) + self.astViewerAct.setEnabled(False) self.macroActGrp.setEnabled(False) self.bookmarkActGrp.setEnabled(False) self.__enableSpellingActions() @@ -6634,6 +6666,9 @@ self.__searchWidget.hide() self.__replaceWidget.hide() + # hide the AST Viewer via its action + self.astViewerAct.setChecked(False) + def __editorOpened(self): """ Private slot to handle the editorOpened signal. @@ -6658,6 +6693,7 @@ self.macroActGrp.setEnabled(True) self.bookmarkActGrp.setEnabled(True) self.__enableSpellingActions() + self.astViewerAct.setEnabled(True) # activate the autosave timer if not self.autosaveTimer.isActive() and \