--- a/QScintilla/EditorButtonsWidget.py Sat Jan 07 19:00:58 2017 +0100 +++ b/QScintilla/EditorButtonsWidget.py Sat Jan 07 19:35:40 2017 +0100 @@ -45,6 +45,7 @@ self.__editor.languageChanged.connect(self.__updateButtonStates) self.__editor.editorSaved.connect(self.__updateButtonStates) self.__editor.editorRenamed.connect(self.__updateButtonStates) + self.__editor.selectionChanged.connect(self.__editorSelectionChanged) self.__createButtons() @@ -74,6 +75,10 @@ button.setMenu(self.__headerMenu) self.__addSeparator() self.__addButton("code", "formatTextInlineCode.png") + self.__addButton("codeBlock", "formatTextCodeBlock.png") + self.__addSeparator() + self.__addButton("hyperlink", "formatTextHyperlink.png") + self.__addButton("line", "formatTextHorizontalLine.png") self.__headerMenu.triggered.connect(self.__headerMenuTriggered) @@ -138,6 +143,10 @@ act.setData("header{0}".format(level)) self.__buttons["code"].setEnabled(self.__provider.hasCode()) + self.__buttons["codeBlock"].setEnabled( + self.__provider.hasCodeBlock()) + + self.__editorSelectionChanged() # TODO: make this configurable self.setVisible(self.__provider.kind() != "none") @@ -163,6 +172,12 @@ pass elif format == "code": self.__provider.code(self.__editor) + elif format == "codeBlock": + self.__provider.codeBlock(self.__editor) + elif format == "hyperlink": + self.__provider.hyperlink(self.__editor) + elif format == "line": + self.__provider.line(self.__editor) def __headerMenuTriggered(self, act): """ @@ -173,3 +188,14 @@ """ format = act.data() self.__formatClicked(format) + + def __editorSelectionChanged(self): + """ + Private slot to handle a change of the editor's selection. + """ + hasSelection = self.__editor.hasSelectedText() + if self.__provider: + self.__buttons["hyperlink"].setEnabled( + self.__provider.hasHyperlink() and not hasSelection) + self.__buttons["line"].setEnabled( + self.__provider.hasLine() and not hasSelection)