Added functionality to enable the code info actions only, if the currently selected provider supports the editor language.

Mon, 16 Oct 2017 20:18:04 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Mon, 16 Oct 2017 20:18:04 +0200
changeset 5911
0c7bcba51391
parent 5910
3f0255a8786a
child 5912
b6643d36dddd

Added functionality to enable the code info actions only, if the currently selected provider supports the editor language.

QScintilla/Editor.py file | annotate | diff | comparison | revisions
UI/CodeDocumentationViewer.py file | annotate | diff | comparison | revisions
ViewManager/ViewManager.py file | annotate | diff | comparison | revisions
diff -r 3f0255a8786a -r 0c7bcba51391 QScintilla/Editor.py
--- a/QScintilla/Editor.py	Mon Oct 16 19:40:47 2017 +0200
+++ b/QScintilla/Editor.py	Mon Oct 16 20:18:04 2017 +0200
@@ -5099,6 +5099,8 @@
         
         if not self.isResourcesFile:
             self.menuActs["calltip"].setEnabled(self.canProvideCallTipps())
+            self.menuActs["codeInfo"].setEnabled(
+                self.vm.isEditorInfoSupported(self.getLanguage()))
         
         from .SpellChecker import SpellChecker
         spellingAvailable = SpellChecker.isAvailable()
diff -r 3f0255a8786a -r 0c7bcba51391 UI/CodeDocumentationViewer.py
--- a/UI/CodeDocumentationViewer.py	Mon Oct 16 19:40:47 2017 +0200
+++ b/UI/CodeDocumentationViewer.py	Mon Oct 16 20:18:04 2017 +0200
@@ -76,7 +76,8 @@
         self.__selectedProvider = provider
     
     # TODO: document this hook in the plug-in document
-    def registerProvider(self, providerName, providerDisplay, provider):
+    def registerProvider(self, providerName, providerDisplay, provider,
+                         supported):
         """
         Public method register a source docu provider.
         
@@ -85,7 +86,10 @@
         @param providerDisplay visible name of the provider
         @type str
         @param provider function to be called to determine source docu
-        @type function
+        @type function(editor)
+        @param supported function to be called to determine, if a language is
+            supported
+        @type function(language)
         @exception KeyError raised if a provider with the given name was
             already registered
         """
@@ -93,7 +97,7 @@
             raise KeyError(
                 "Provider '{0}' already registered.".format(providerName))
         
-        self.__providers[providerName] = provider
+        self.__providers[providerName] = (provider, supported)
         self.providerComboBox.addItem(providerDisplay, providerName)
     
     # TODO: document this hook in the plug-in document
@@ -112,6 +116,23 @@
             index = self.providerComboBox.findData(providerName)
             self.providerComboBox.removeItem(index)
     
+    def isSupportedLanguage(self, language):
+        """
+        Public method to check, if the given language is supported by the
+        selected provider.
+        
+        @param language editor programming language to check
+        @type str
+        @return flag indicating the support status
+        @rtype bool
+        """
+        supported = False
+        
+        if self.__selectedProvider != self.__disabledProvider:
+            supported = self.__providers[self.__selectedProvider][1](language)
+        
+        return supported
+    
     def showInfo(self, editor):
         """
         Public method to request code documentation data from a provider.
@@ -128,7 +149,7 @@
         
         if self.__selectedProvider != self.__disabledProvider:
             self.contents.clear()
-            self.__providers[self.__selectedProvider](editor)
+            self.__providers[self.__selectedProvider][0](editor)
     
     # TODO: document this hook in the plug-in document
     def documentationReady(self, documentationInfo):
diff -r 3f0255a8786a -r 0c7bcba51391 ViewManager/ViewManager.py
--- a/ViewManager/ViewManager.py	Mon Oct 16 19:40:47 2017 +0200
+++ b/ViewManager/ViewManager.py	Mon Oct 16 20:18:04 2017 +0200
@@ -6602,6 +6602,7 @@
             self.autoCompleteAct.setEnabled(
                 editor.canProvideDynamicAutoCompletion())
             self.calltipsAct.setEnabled(editor.canProvideCallTipps())
+            self.codeInfoAct.setEnabled(self.__isEditorInfoSupportedEd(editor))
             
             if editor.isPyFile() or editor.isRubyFile():
                 self.gotoPreviousDefAct.setEnabled(True)
@@ -6816,6 +6817,31 @@
         """
         self.ui.documentationViewer().showInfo(editor)
     
+    def isEditorInfoSupported(self, language):
+        """
+        Public method to check, if a language is supported by the
+        documentation viewer.
+        
+        @param language editor programming language to check
+        @type str
+        @return flag indicating the support status
+        @rtype bool
+        """
+        return self.ui.documentationViewer().isSupportedLanguage(language)
+    
+    def __isEditorInfoSupportedEd(self, editor):
+        """
+        Public method to check, if a language is supported by the
+        documentation viewer.
+        
+        @param editor reference to the editor to check for
+        @type Editor
+        @return flag indicating the support status
+        @rtype bool
+        """
+        language = editor.getLanguage()
+        return self.isEditorInfoSupported(language)
+    
     ##################################################################
     ## Below are protected utility methods
     ##################################################################

eric ide

mercurial