Mon, 16 Oct 2017 20:18:04 +0200
Added functionality to enable the code info actions only, if the currently selected provider supports the editor language.
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 ##################################################################