eric6/UI/PythonAstViewer.py

changeset 7707
6abcf4275d0e
parent 7705
90a9aefd4253
child 7771
787a6b3f8c9f
--- a/eric6/UI/PythonAstViewer.py	Sun Sep 20 18:32:43 2020 +0200
+++ b/eric6/UI/PythonAstViewer.py	Mon Sep 21 19:03:35 2020 +0200
@@ -115,6 +115,16 @@
             QTimer.singleShot(0, self.__selectItemForEditorSelection)
             QTimer.singleShot(0, self.__grabFocus)
     
+    def __editorLanguageChanged(self, editor):
+        """
+        Private slot to handle a change of the editor language.
+        
+        @param editor reference to the editor which changed language
+        @type Editor
+        """
+        if editor is self.__editor:
+            QTimer.singleShot(0, self.__loadDIS)
+    
     def __lastEditorClosed(self):
         """
         Private slot to handle the last editor closed signal of the view
@@ -132,6 +142,8 @@
             self.__vm.editorChangedEd.connect(self.__editorChanged)
             self.__vm.editorSavedEd.connect(self.__editorSaved)
             self.__vm.editorDoubleClickedEd.connect(self.__editorDoubleClicked)
+            self.__vm.editorLanguageChanged.connect(
+                self.__editorLanguageChanged)
             self.__vmConnected = True
     
     def hide(self):
@@ -148,6 +160,8 @@
             self.__vm.editorSavedEd.disconnect(self.__editorSaved)
             self.__vm.editorDoubleClickedEd.disconnect(
                 self.__editorDoubleClicked)
+            self.__vm.editorLanguageChanged.disconnect(
+                self.__editorLanguageChanged)
             self.__vmConnected = False
     
     def shutdown(self):
@@ -164,7 +178,7 @@
         @type bool
         """
         editor = self.__vm.activeWindow()
-        if on and editor and editor.isPyFile():
+        if on:
             if editor is not self.__editor:
                 self.__editor = editor
             self.show()
@@ -193,20 +207,26 @@
         editor and visualize it.
         """
         if not self.__editor:
+            self.__createErrorItem(self.tr(
+                "No editor has been opened."
+            ))
             return
         
         self.__astWidget.clear()
         self.__editor.clearAllHighlights()
         
-        if not self.__editor.isPyFile():
+        source = self.__editor.text()
+        if not source.strip():
+            # empty editor or white space only
             self.__createErrorItem(self.tr(
-                "The current editor text does not contain Python source."
+                "The current editor does not contain any source code."
             ))
             return
         
-        source = self.__editor.text()
-        if not source.strip():
-            # empty editor or white space only
+        if not self.__editor.isPyFile():
+            self.__createErrorItem(self.tr(
+                "The current editor does not contain Python source code."
+            ))
             return
         
         QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))

eric ide

mercurial