QScintilla/EditorButtonsWidget.py

changeset 5407
f833f89571b8
parent 5404
6b19ad5470a3
child 5411
a163fbbf2bea
equal deleted inserted replaced
5406:8d09a23a8fdd 5407:f833f89571b8
33 @type QWidget 33 @type QWidget
34 """ 34 """
35 super(EditorButtonsWidget, self).__init__(parent) 35 super(EditorButtonsWidget, self).__init__(parent)
36 36
37 margin = 2 37 margin = 2
38 spacing = 3
38 self.__layout = QVBoxLayout(self) 39 self.__layout = QVBoxLayout(self)
39 self.__layout.setContentsMargins(margin, margin, margin, margin) 40 self.__layout.setContentsMargins(margin, margin, margin, margin)
40 self.__layout.setSpacing(2) 41 self.__layout.setSpacing(spacing)
41 42
42 self.__provider = None 43 self.__provider = None
43 44
44 self.__editor = editor 45 self.__editor = editor
45 self.__editor.languageChanged.connect(self.__updateButtonStates) 46 self.__editor.languageChanged.connect(self.__updateButtonStates)
61 """ 62 """
62 self.__buttons = {} 63 self.__buttons = {}
63 self.__separators = [] 64 self.__separators = []
64 self.__headerMenu = QMenu() 65 self.__headerMenu = QMenu()
65 66
66 self.__addButton("bold", "formatTextBold.png") 67 self.__addButton("bold", "formatTextBold.png",
67 self.__addButton("italic", "formatTextItalic.png") 68 self.tr("Bold"))
68 self.__addButton("strikethrough", "formatTextStrikethrough.png") 69 self.__addButton("italic", "formatTextItalic.png",
69 self.__addSeparator() 70 self.tr("Italic"))
70 self.__addButton("header1", "formatTextHeader1.png") 71 self.__addButton("strikethrough", "formatTextStrikethrough.png",
71 self.__addButton("header2", "formatTextHeader2.png") 72 self.tr("Strike Through"))
72 self.__addButton("header3", "formatTextHeader3.png") 73 self.__addSeparator()
73 button = self.__addButton("header", "formatTextHeader.png") 74 self.__addButton("header1", "formatTextHeader1.png",
75 self.tr("Header 1"))
76 self.__addButton("header2", "formatTextHeader2.png",
77 self.tr("Header 2"))
78 self.__addButton("header3", "formatTextHeader3.png",
79 self.tr("Header 3"))
80 button = self.__addButton("header", "formatTextHeader.png",
81 self.tr("Header"))
74 button.setPopupMode(QToolButton.InstantPopup) 82 button.setPopupMode(QToolButton.InstantPopup)
75 button.setMenu(self.__headerMenu) 83 button.setMenu(self.__headerMenu)
76 self.__addSeparator() 84 self.__addSeparator()
77 self.__addButton("code", "formatTextInlineCode.png") 85 self.__addButton("code", "formatTextInlineCode.png",
78 self.__addButton("codeBlock", "formatTextCodeBlock.png") 86 self.tr("Inline Code"))
79 self.__addSeparator() 87 self.__addButton("codeBlock", "formatTextCodeBlock.png",
80 self.__addButton("hyperlink", "formatTextHyperlink.png") 88 self.tr("Code Block"))
81 self.__addButton("line", "formatTextHorizontalLine.png") 89 self.__addButton("quote", "formatTextQuote.png",
90 self.tr("Quote"))
91 self.__addSeparator()
92 self.__addButton("hyperlink", "formatTextHyperlink.png",
93 self.tr("Add Hyperlink"))
94 self.__addButton("line", "formatTextHorizontalLine.png",
95 self.tr("Add Horizontal Line"))
96 self.__addButton("image", "formatTextImage.png",
97 self.tr("Add Image"))
98 self.__addSeparator()
99 self.__addButton("bulletedList", "formatTextBulletedList.png",
100 self.tr("Add Bulleted List"))
101 self.__addButton("numberedList", "formatTextNumberedList.png",
102 self.tr("Add Numbered List"))
82 103
83 self.__headerMenu.triggered.connect(self.__headerMenuTriggered) 104 self.__headerMenu.triggered.connect(self.__headerMenuTriggered)
84 105
85 def __addButton(self, format, iconName): 106 def __addButton(self, format, iconName, toolTip):
86 """ 107 """
87 Private method to add a format button. 108 Private method to add a format button.
88 109
89 @param format unique name of the format 110 @param format unique name of the format
90 @type str 111 @type str
91 @param iconName name of the icon for the button 112 @param iconName name of the icon for the button
113 @type str
114 @param toolTip text for the tool tip
92 @type str 115 @type str
93 @return generated button 116 @return generated button
94 @rtype QToolButton 117 @rtype QToolButton
95 """ 118 """
96 button = QToolButton(self) 119 button = QToolButton(self)
97 button.setIcon(UI.PixmapCache.getIcon(iconName)) 120 button.setIcon(UI.PixmapCache.getIcon(iconName))
121 button.setToolTip(toolTip)
98 button.clicked.connect(lambda: self.__formatClicked(format)) 122 button.clicked.connect(lambda: self.__formatClicked(format))
99 self.__layout.addWidget(button) 123 self.__layout.addWidget(button)
100 self.__buttons[format] = button 124 self.__buttons[format] = button
101 125
102 return button 126 return button
172 pass 196 pass
173 elif format == "code": 197 elif format == "code":
174 self.__provider.code(self.__editor) 198 self.__provider.code(self.__editor)
175 elif format == "codeBlock": 199 elif format == "codeBlock":
176 self.__provider.codeBlock(self.__editor) 200 self.__provider.codeBlock(self.__editor)
201 elif format == "quote":
202 self.__provider.quote(self.__editor)
177 elif format == "hyperlink": 203 elif format == "hyperlink":
178 self.__provider.hyperlink(self.__editor) 204 self.__provider.hyperlink(self.__editor)
179 elif format == "line": 205 elif format == "line":
180 self.__provider.line(self.__editor) 206 self.__provider.line(self.__editor)
207 elif format == "image":
208 self.__provider.image(self.__editor)
181 209
182 def __headerMenuTriggered(self, act): 210 def __headerMenuTriggered(self, act):
183 """ 211 """
184 Private method handling the selection of a header menu entry. 212 Private method handling the selection of a header menu entry.
185 213
193 """ 221 """
194 Private slot to handle a change of the editor's selection. 222 Private slot to handle a change of the editor's selection.
195 """ 223 """
196 hasSelection = self.__editor.hasSelectedText() 224 hasSelection = self.__editor.hasSelectedText()
197 if self.__provider: 225 if self.__provider:
226 self.__buttons["quote"].setEnabled(
227 self.__provider.hasQuote() and (
228 self.__provider.kind() == "html" or hasSelection))
198 self.__buttons["hyperlink"].setEnabled( 229 self.__buttons["hyperlink"].setEnabled(
199 self.__provider.hasHyperlink() and not hasSelection) 230 self.__provider.hasHyperlink() and not hasSelection)
200 self.__buttons["line"].setEnabled( 231 self.__buttons["line"].setEnabled(
201 self.__provider.hasLine() and not hasSelection) 232 self.__provider.hasLine() and not hasSelection)
233 self.__buttons["image"].setEnabled(
234 self.__provider.hasImage() and not hasSelection)

eric ide

mercurial