QScintilla/EditorButtonsWidget.py

changeset 5402
ce21a78a5fcf
parent 5398
1f4509cf8f35
child 5404
6b19ad5470a3
--- a/QScintilla/EditorButtonsWidget.py	Fri Jan 06 18:28:14 2017 +0100
+++ b/QScintilla/EditorButtonsWidget.py	Fri Jan 06 20:00:52 2017 +0100
@@ -11,7 +11,7 @@
 from __future__ import unicode_literals
 
 from PyQt5.QtCore import pyqtSlot
-from PyQt5.QtWidgets import QWidget, QVBoxLayout, QToolButton, QFrame
+from PyQt5.QtWidgets import QWidget, QVBoxLayout, QToolButton, QFrame, QMenu
 
 import UI.PixmapCache
 
@@ -60,6 +60,7 @@
         """
         self.__buttons = {}
         self.__separators = []
+        self.__headerMenu = QMenu()
         
         self.__addButton("bold", "formatTextBold.png")
         self.__addButton("italic", "formatTextItalic.png")
@@ -70,6 +71,11 @@
         self.__addButton("header3", "formatTextHeader3.png")
         button = self.__addButton("header", "formatTextHeader.png")
         button.setPopupMode(QToolButton.InstantPopup)
+        button.setMenu(self.__headerMenu)
+        self.__addSeparator()
+        self.__addButton("code", "formatTextInlineCode.png")
+        
+        self.__headerMenu.triggered.connect(self.__headerMenuTriggered)
     
     def __addButton(self, format, iconName):
         """
@@ -119,12 +125,22 @@
             self.__buttons["italic"].setEnabled(self.__provider.hasItalic())
             self.__buttons["strikethrough"].setEnabled(
                 self.__provider.hasStrikethrough())
+            
             headerLevels = self.__provider.headerLevels()
             self.__buttons["header1"].setEnabled(headerLevels >= 1)
             self.__buttons["header2"].setEnabled(headerLevels >= 2)
             self.__buttons["header3"].setEnabled(headerLevels >= 3)
             self.__buttons["header"].setEnabled(headerLevels > 3)
-            # TODO: create header button menu
+            self.__headerMenu.clear()
+            for level in range(1, headerLevels + 1):
+                act = self.__headerMenu.addAction(
+                    self.tr("Level {0}").format(level))
+                act.setData("header{0}".format(level))
+            
+            self.__buttons["code"].setEnabled(self.__provider.hasCode())
+            
+            # TODO: make this configurable
+            self.setVisible(self.__provider.kind() != "none")
     
     def __formatClicked(self, format):
         """
@@ -144,5 +160,16 @@
                 level = int(format[-1])
                 self.__provider.header(self.__editor, level)
             except ValueError:
-                # TODO: implement this
                 pass
+        elif format == "code":
+            self.__provider.code(self.__editor)
+    
+    def __headerMenuTriggered(self, act):
+        """
+        Private method handling the selection of a header menu entry.
+        
+        @param act action of the headers menu that was triggered
+        @type QAction
+        """
+        format = act.data()
+        self.__formatClicked(format)

eric ide

mercurial