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) |