QScintilla/EditorButtonsWidget.py

changeset 5404
6b19ad5470a3
parent 5402
ce21a78a5fcf
child 5407
f833f89571b8
equal deleted inserted replaced
5403:d6b43ecf2488 5404:6b19ad5470a3
43 43
44 self.__editor = editor 44 self.__editor = editor
45 self.__editor.languageChanged.connect(self.__updateButtonStates) 45 self.__editor.languageChanged.connect(self.__updateButtonStates)
46 self.__editor.editorSaved.connect(self.__updateButtonStates) 46 self.__editor.editorSaved.connect(self.__updateButtonStates)
47 self.__editor.editorRenamed.connect(self.__updateButtonStates) 47 self.__editor.editorRenamed.connect(self.__updateButtonStates)
48 self.__editor.selectionChanged.connect(self.__editorSelectionChanged)
48 49
49 self.__createButtons() 50 self.__createButtons()
50 51
51 self.__layout.addStretch() 52 self.__layout.addStretch()
52 self.setMaximumWidth( 53 self.setMaximumWidth(
72 button = self.__addButton("header", "formatTextHeader.png") 73 button = self.__addButton("header", "formatTextHeader.png")
73 button.setPopupMode(QToolButton.InstantPopup) 74 button.setPopupMode(QToolButton.InstantPopup)
74 button.setMenu(self.__headerMenu) 75 button.setMenu(self.__headerMenu)
75 self.__addSeparator() 76 self.__addSeparator()
76 self.__addButton("code", "formatTextInlineCode.png") 77 self.__addButton("code", "formatTextInlineCode.png")
78 self.__addButton("codeBlock", "formatTextCodeBlock.png")
79 self.__addSeparator()
80 self.__addButton("hyperlink", "formatTextHyperlink.png")
81 self.__addButton("line", "formatTextHorizontalLine.png")
77 82
78 self.__headerMenu.triggered.connect(self.__headerMenuTriggered) 83 self.__headerMenu.triggered.connect(self.__headerMenuTriggered)
79 84
80 def __addButton(self, format, iconName): 85 def __addButton(self, format, iconName):
81 """ 86 """
136 act = self.__headerMenu.addAction( 141 act = self.__headerMenu.addAction(
137 self.tr("Level {0}").format(level)) 142 self.tr("Level {0}").format(level))
138 act.setData("header{0}".format(level)) 143 act.setData("header{0}".format(level))
139 144
140 self.__buttons["code"].setEnabled(self.__provider.hasCode()) 145 self.__buttons["code"].setEnabled(self.__provider.hasCode())
146 self.__buttons["codeBlock"].setEnabled(
147 self.__provider.hasCodeBlock())
148
149 self.__editorSelectionChanged()
141 150
142 # TODO: make this configurable 151 # TODO: make this configurable
143 self.setVisible(self.__provider.kind() != "none") 152 self.setVisible(self.__provider.kind() != "none")
144 153
145 def __formatClicked(self, format): 154 def __formatClicked(self, format):
161 self.__provider.header(self.__editor, level) 170 self.__provider.header(self.__editor, level)
162 except ValueError: 171 except ValueError:
163 pass 172 pass
164 elif format == "code": 173 elif format == "code":
165 self.__provider.code(self.__editor) 174 self.__provider.code(self.__editor)
175 elif format == "codeBlock":
176 self.__provider.codeBlock(self.__editor)
177 elif format == "hyperlink":
178 self.__provider.hyperlink(self.__editor)
179 elif format == "line":
180 self.__provider.line(self.__editor)
166 181
167 def __headerMenuTriggered(self, act): 182 def __headerMenuTriggered(self, act):
168 """ 183 """
169 Private method handling the selection of a header menu entry. 184 Private method handling the selection of a header menu entry.
170 185
171 @param act action of the headers menu that was triggered 186 @param act action of the headers menu that was triggered
172 @type QAction 187 @type QAction
173 """ 188 """
174 format = act.data() 189 format = act.data()
175 self.__formatClicked(format) 190 self.__formatClicked(format)
191
192 def __editorSelectionChanged(self):
193 """
194 Private slot to handle a change of the editor's selection.
195 """
196 hasSelection = self.__editor.hasSelectedText()
197 if self.__provider:
198 self.__buttons["hyperlink"].setEnabled(
199 self.__provider.hasHyperlink() and not hasSelection)
200 self.__buttons["line"].setEnabled(
201 self.__provider.hasLine() and not hasSelection)

eric ide

mercurial