QScintilla/EditorButtonsWidget.py

changeset 5404
6b19ad5470a3
parent 5402
ce21a78a5fcf
child 5407
f833f89571b8
--- 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)

eric ide

mercurial