Krita Source Code Documentation
Loading...
Searching...
No Matches
krita.sceditor.widget.EditorView Class Reference
+ Inheritance diagram for krita.sceditor.widget.EditorView:

Public Member Functions

 __init__ (self, parent=None, text=None, EditorHighlighterClass=PythonHighlighter, indenter=PythonCodeIndenter)
 
 after_return_pressed (self)
 
 autocomplete_pressed (self)
 
 backspace_pressed (self)
 
 backtab_pressed (self)
 
 closeEvent (self, event)
 
 dedent (self)
 
 goto (self, line_no)
 
 highline (self, cursor)
 
 indent (self)
 
 isModified (self)
 
 keyPressEvent (self, event)
 
 length (self)
 
 move_end_of_doc (self)
 
 move_end_of_row (self)
 
 move_start_of_doc (self)
 
 move_start_of_row (self)
 
 onCursorPositionChanged (self)
 
 paintEvent (self, event)
 
 paren_opened (self, key)
 
 resizeEvent (self, event)
 
 setDocument (self, document)
 
 setModified (self, flag)
 
 tab_pressed (self)
 

Public Attributes

 autocomplete
 
 calltip
 
 disable_shortcuts
 
 draw_line
 
 frame_style
 
 highlight_brush
 
 highlight_color
 
 highlight_line
 
 highlighter
 
 indenter
 
 last_block
 
 last_col
 
 last_row
 
 line
 
 line_pen
 
 onCursorPositionChanged
 
 print_width
 
 prj
 

Protected Member Functions

 _create_line (self)
 

Detailed Description

Definition at line 93 of file widget.py.

Constructor & Destructor Documentation

◆ __init__()

krita.sceditor.widget.EditorView.__init__ ( self,
parent = None,
text = None,
EditorHighlighterClass = PythonHighlighter,
indenter = PythonCodeIndenter )

Definition at line 95 of file widget.py.

97 indenter=PythonCodeIndenter):
98 QPlainTextEdit.__init__(self, parent)
99 self.setFrameStyle(QFrame.Shape.NoFrame)
100 self.setTabStopWidth(4)
101 self.setLineWrapMode(QPlainTextEdit.LineWrapMode.NoWrap)
102 font = QFont()
103 font.setFamily("lucidasanstypewriter")
104 font.setFixedPitch(True)
105 font.setPointSize(10)
106 self.setFont(font)
107 self.highlighter = EditorHighlighterClass(self)
108 if text:
109 self.setPlainText(text)
110 self.frame_style = self.frameStyle()
111 self.draw_line = True
112 self.print_width = self.fontMetrics().horizontalAdvance("x" * 78)
113 self.line_pen = QPen(QColor("lightgrey"))
114 self.last_row = self.last_col = -1
115 self.last_block = None
116 self.highlight_line = True
117 self.highlight_color = self.palette().highlight().color().light(175)
118 self.highlight_brush = QBrush(QColor(self.highlight_color))
119 self.cursorPositionChanged.connect(self.onCursorPositionChanged)
120 self.indenter = indenter(RopeEditorWrapper(self))
121 # True if you want to catch Emacs keys in actions
122 self.disable_shortcuts = False
123
124 self.prj = get_no_project()
125 self.prj.root = None
126 self.calltip = CallTip(self)
127 self.autocomplete = AutoComplete(self)
128
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))

References KisPipeBrushParasite.dim, KisSpinBoxUnitManager.dim, FlattenSpec.dim, xcfLayer.dim, and KisTextBrush.setFont().

Member Function Documentation

◆ _create_line()

krita.sceditor.widget.EditorView._create_line ( self)
protected

Definition at line 197 of file widget.py.

197 def _create_line(self):
198 x = self.print_width
199 self.line = QLine(x, 0, x, self.height())
200

References krita.sceditor.widget.EditorView.print_width.

◆ after_return_pressed()

krita.sceditor.widget.EditorView.after_return_pressed ( self)

Definition at line 254 of file widget.py.

254 def after_return_pressed(self):
255 self.indenter.entering_new_line(self.textCursor().blockNumber())
256

References KisPipeBrushParasite.dim, KisSpinBoxUnitManager.dim, FlattenSpec.dim, xcfLayer.dim, and krita.sceditor.widget.EditorView.indenter.

◆ autocomplete_pressed()

krita.sceditor.widget.EditorView.autocomplete_pressed ( self)

Definition at line 243 of file widget.py.

243 def autocomplete_pressed(self):
244 try:
245 items = code_assist(self.prj,
246 unicode(self.toPlainText()),
247 self.textCursor().position())
248 except Exception as e:
249 items = []
250 if items:
251 self.autocomplete.setItems(items)
252 self.autocomplete.show()
253

References krita.sceditor.widget.EditorView.autocomplete, KisPipeBrushParasite.dim, KisSpinBoxUnitManager.dim, FlattenSpec.dim, xcfLayer.dim, krita.sceditor.widget.EditorView.prj, and krita.sceditor.widget.EditorWidget.toPlainText().

◆ backspace_pressed()

krita.sceditor.widget.EditorView.backspace_pressed ( self)

Definition at line 235 of file widget.py.

235 def backspace_pressed(self):
236 cursor = self.textCursor()
237 text = unicode(cursor.block().text())
238 col = cursor.columnNumber()
239 if col > 0 and text[:col].strip() == "":
240 self.indenter.deindent(self.textCursor().blockNumber())
241 return True
242

References KisPipeBrushParasite.dim, KisSpinBoxUnitManager.dim, FlattenSpec.dim, xcfLayer.dim, and krita.sceditor.widget.EditorView.indenter.

◆ backtab_pressed()

krita.sceditor.widget.EditorView.backtab_pressed ( self)

Definition at line 231 of file widget.py.

231 def backtab_pressed(self):
232 self.dedent()
233 return True
234

References krita.sceditor.widget.EditorView.dedent(), and scripter.ui_scripter.editor.pythoneditor.CodeEditor.dedent().

◆ closeEvent()

krita.sceditor.widget.EditorView.closeEvent ( self,
event )

Definition at line 129 of file widget.py.

129 def closeEvent(self, event):
130 self.calltip.close()
131 self.autocomplete.close()
132

References krita.sceditor.widget.EditorView.autocomplete, and krita.sceditor.widget.EditorView.calltip.

◆ dedent()

krita.sceditor.widget.EditorView.dedent ( self)

Definition at line 228 of file widget.py.

228 def dedent(self):
229 self.indenter.deindent(self.textCursor().blockNumber())
230

References KisPipeBrushParasite.dim, KisSpinBoxUnitManager.dim, FlattenSpec.dim, xcfLayer.dim, and krita.sceditor.widget.EditorView.indenter.

◆ goto()

krita.sceditor.widget.EditorView.goto ( self,
line_no )

Definition at line 142 of file widget.py.

142 def goto(self, line_no):
143 cursor = self.textCursor()
144 block = cursor.block()
145 row = cursor.blockNumber()
146 while row > line_no:
147 block = block.previous()
148 row -= 1
149 while row < line_no:
150 block = block.next()
151 row += 1
152 cursor = QTextCursor(block)
153 self.setTextCursor(cursor)
154

References KisPipeBrushParasite.dim, KisSpinBoxUnitManager.dim, FlattenSpec.dim, and xcfLayer.dim.

◆ highline()

krita.sceditor.widget.EditorView.highline ( self,
cursor )

Definition at line 183 of file widget.py.

183 def highline(self, cursor):
184 self.viewport().update()
185

References KisPipeBrushParasite.dim, KisSpinBoxUnitManager.dim, FlattenSpec.dim, and xcfLayer.dim.

◆ indent()

krita.sceditor.widget.EditorView.indent ( self)

Definition at line 222 of file widget.py.

222 def indent(self):
223 self.indenter.correct_indentation(self.textCursor().blockNumber())
224

References KisPipeBrushParasite.dim, KisSpinBoxUnitManager.dim, FlattenSpec.dim, xcfLayer.dim, and krita.sceditor.widget.EditorView.indenter.

◆ isModified()

◆ keyPressEvent()

krita.sceditor.widget.EditorView.keyPressEvent ( self,
event )

Definition at line 257 of file widget.py.

257 def keyPressEvent(self, event):
258 if self.autocomplete.active:
259 if self.autocomplete.keyPressEvent(event):
260 return
261 elif self.calltip.active:
262 if self.calltip.keyPressEvent(event):
263 return
264
265 m = event.modifiers()
266 k = event.key()
267 t = event.text()
268 # Disable some shortcuts
269 if self.disable_shortcuts and \
270 m & Qt.KeyboardModifier.ControlModifier and k in [Qt.Key.Key_A, Qt.Key.Key_R,
271 Qt.Key.Key_C, Qt.Key.Key_K,
272 Qt.Key.Key_X, Qt.Key.Key_V,
273 Qt.Key.Key_Y, Qt.Key.Key_Z]:
274 new_ev = QKeyEvent(event.type(), k, m, t)
275 event.ignore()
276 QCoreApplication.postEvent(self.parent(), new_ev)
277 return
278 elif k == Qt.Key.Key_Tab:
279 if self.tab_pressed():
280 return
281 elif k == Qt.Key.Key_Backtab:
282 if self.backtab_pressed():
283 return
284 elif k == Qt.Key.Key_Backspace:
285 if self.backspace_pressed():
286 return
287 elif k == Qt.Key.Key_Period or \
288 (k == Qt.Key.Key_Space and event.modifiers() == Qt.KeyboardModifier.ControlModifier):
289 QPlainTextEdit.keyPressEvent(self, event)
290 self.autocomplete_pressed()
291 return
292 elif k in [Qt.Key.Key_ParenLeft, Qt.Key.Key_BraceLeft, Qt.Key.Key_BracketLeft]:
293 QPlainTextEdit.keyPressEvent(self, event)
294 self.paren_opened(k)
295 return
296 QPlainTextEdit.keyPressEvent(self, event)
297 if k == Qt.Key.Key_Return or k == Qt.Key.Key_Enter:
298 self.after_return_pressed()
299

References krita.sceditor.widget.EditorView.after_return_pressed(), krita.sceditor.widget.EditorView.autocomplete, krita.sceditor.widget.EditorView.autocomplete_pressed(), krita.sceditor.widget.EditorView.backspace_pressed(), krita.sceditor.widget.EditorView.backtab_pressed(), krita.sceditor.widget.EditorView.calltip, krita.sceditor.widget.EditorView.disable_shortcuts, krita.sceditor.widget.EditorView.keyPressEvent(), krita.sceditor.widget.EditorView.paren_opened(), KoPathPoint.parent(), KoRTree< KoShape * >::Node.parent(), KoRTree< T >::Node.parent(), KoShape.parent(), KUndo2Model.parent(), KoShape::Private.parent, KoToolProxyPrivate.parent, KoFontGlyphModel.parent(), KisForestDetail::RootNodeImpl< Node< T > >< FontFamilyNode >.parent, KisForestDetail::RootNodeImpl< Base >.parent, KisForestDetail::RootNodeImpl< Node< T > >.parent, KisForestDetail::RootNodeImpl< Node< T > >< KoSvgTextContentElement >.parent, KisForestDetail::RootNodeImpl< Node< T > >< T >.parent, KisLayerUtils::RemoveNodeHelper::ReplacementNode.parent, KisMementoItem.parent(), KisNode.parent(), KisPaintDevice::Private.parent, StoryboardChild.parent(), KisProjectionLeaf.parent(), KisNodeDummy.parent(), KisForestDetail::ChildIterator< T, is_const >.parent, KisNode.parent, KisFiltersModel.parent(), KisNodeModel.parent(), KoZoomAction.parent, KoFileDialog.parent, KDEPrivate::ToolBarHandler::Private.parent, KisKXMLGUI::ContainerNode.parent, EnhancedPathParameter.parent(), FontStyleModel.parent(), KisAnimCurvesChannelsModel.parent(), KisUndoModel.parent(), FontAxesModel.parent(), StoryboardModel.parent(), OpenTypeFeatureModel.parent(), mikro.PyQtClass.parent(), ExrLayerInfoBase.parent, KDcrawIface::RExpanderBox.parent, channels2layers.channels2layers.ChannelsToLayers.parent, filtermanager.components.filtermanagertreeitem.FilterManagerTreeItem.parent(), scripter.ui_scripter.actions.closeaction.closeaction.CloseAction.parent(), scripter.ui_scripter.actions.debugaction.debugaction.DebugAction.parent(), scripter.ui_scripter.actions.newaction.newaction.NewAction.parent(), scripter.ui_scripter.actions.openaction.openaction.OpenAction.parent(), scripter.ui_scripter.actions.reloadaction.reloadaction.ReloadAction.parent(), scripter.ui_scripter.actions.runaction.runaction.RunAction.parent(), scripter.ui_scripter.actions.saveaction.saveaction.SaveAction.parent(), scripter.ui_scripter.actions.saveasaction.saveasaction.SaveAsAction.parent(), scripter.ui_scripter.actions.settingsaction.settingsaction.SettingsAction.parent(), filtermanager.components.filtermanagertreemodel.FilterManagerTreeModel.parent(), plugin_importer.plugin_importer_extension.PluginImporterExtension.parent, DefaultToolTextPropertiesInterface.parent, SvgTextCursorPropertyInterface::Private.parent, TagFilterProxyModelQmlWrapper::Private.parent, and krita.sceditor.widget.EditorView.tab_pressed().

◆ length()

◆ move_end_of_doc()

krita.sceditor.widget.EditorView.move_end_of_doc ( self)

Definition at line 160 of file widget.py.

160 def move_end_of_doc(self):
161 cursor = self.textCursor()
162 block = cursor.block()
163 while block.isValid():
164 last_block = block
165 block = block.next()
166 cursor.setPosition(last_block.position())
167 cursor.movePosition(
168 QTextCursor.MoveOperation.EndOfBlock, QTextCursor.MoveMode.MoveAnchor)
169 self.setTextCursor(cursor)
170

References KisPipeBrushParasite.dim, KisSpinBoxUnitManager.dim, FlattenSpec.dim, and xcfLayer.dim.

◆ move_end_of_row()

krita.sceditor.widget.EditorView.move_end_of_row ( self)

Definition at line 177 of file widget.py.

177 def move_end_of_row(self):
178 cursor = self.textCursor()
179 cursor.movePosition(
180 QTextCursor.MoveOperation.EndOfBlock, QTextCursor.MoveMode.MoveAnchor)
181 self.setTextCursor(cursor)
182

References KisPipeBrushParasite.dim, KisSpinBoxUnitManager.dim, FlattenSpec.dim, and xcfLayer.dim.

◆ move_start_of_doc()

krita.sceditor.widget.EditorView.move_start_of_doc ( self)

Definition at line 155 of file widget.py.

155 def move_start_of_doc(self):
156 cursor = self.textCursor()
157 cursor.setPosition(0)
158 self.setTextCursor(cursor)
159

References KisPipeBrushParasite.dim, KisSpinBoxUnitManager.dim, FlattenSpec.dim, and xcfLayer.dim.

◆ move_start_of_row()

krita.sceditor.widget.EditorView.move_start_of_row ( self)

Definition at line 171 of file widget.py.

171 def move_start_of_row(self):
172 cursor = self.textCursor()
173 cursor.movePosition(
174 QTextCursor.MoveOperation.StartOfBlock, QTextCursor.MoveMode.MoveAnchor)
175 self.setTextCursor(cursor)
176

References KisPipeBrushParasite.dim, KisSpinBoxUnitManager.dim, FlattenSpec.dim, and xcfLayer.dim.

◆ onCursorPositionChanged()

krita.sceditor.widget.EditorView.onCursorPositionChanged ( self)

Definition at line 186 of file widget.py.

186 def onCursorPositionChanged(self):
187 cursor = self.textCursor()
188 row, col = cursor.blockNumber(), cursor.columnNumber()
189 if self.last_row != row:
190 self.last_row = row
191 if self.highlight_line:
192 self.highline(cursor)
193 if col != self.last_col:
194 self.last_col = col
195 self.cursorPositionChanged.emit(row, col)
196

References KisPipeBrushParasite.dim, KisSpinBoxUnitManager.dim, FlattenSpec.dim, xcfLayer.dim, krita.sceditor.widget.EditorView.highlight_line, krita.sceditor.widget.EditorView.highline(), krita.sceditor.widget.EditorView.last_col, and krita.sceditor.widget.EditorView.last_row.

◆ paintEvent()

krita.sceditor.widget.EditorView.paintEvent ( self,
event )

Definition at line 205 of file widget.py.

205 def paintEvent(self, event):
206 painter = QPainter(self.viewport())
207 if self.highlight_line:
208 r = self.cursorRect()
209 r.setX(0)
210 r.setWidth(self.viewport().width())
211 painter.fillRect(r, self.highlight_brush)
212 if self.draw_line:
213 painter.setPen(self.line_pen)
214 painter.drawLine(self.line)
215 painter.end()
216 QPlainTextEdit.paintEvent(self, event)
217

References KisPipeBrushParasite.dim, KisSpinBoxUnitManager.dim, FlattenSpec.dim, xcfLayer.dim, krita.sceditor.widget.EditorView.draw_line, krita.sceditor.widget.EditorView.highlight_brush, krita.sceditor.widget.EditorView.highlight_line, psd_layer_type_tool.line, krita.sceditor.widget.EditorView.line, KDcrawIface::RLabelExpander.line, colorspace.uicolorspace.UIColorSpace.line, documenttools.uidocumenttools.UIDocumentTools.line, exportlayers.uiexportlayers.UIExportLayers.line, filtermanager.uifiltermanager.UIFilterManager.line, and krita.sceditor.widget.EditorView.line_pen.

◆ paren_opened()

krita.sceditor.widget.EditorView.paren_opened ( self,
key )

Definition at line 300 of file widget.py.

300 def paren_opened(self, key):
301 close_char = {
302 Qt.Key.Key_ParenLeft: ")",
303 Qt.Key.Key_BraceLeft: " }",
304 Qt.Key.Key_BracketLeft: "]"
305 }
306 cursor = self.textCursor()
307 cursor.insertText(close_char[key])
308 cursor.setPosition(cursor.position() - 1)
309 self.setTextCursor(cursor)
310
311

References KisPipeBrushParasite.dim, KisSpinBoxUnitManager.dim, FlattenSpec.dim, and xcfLayer.dim.

◆ resizeEvent()

krita.sceditor.widget.EditorView.resizeEvent ( self,
event )

Definition at line 201 of file widget.py.

201 def resizeEvent(self, event):
202 self._create_line()
203 QPlainTextEdit.resizeEvent(self, event)
204

References krita.sceditor.widget.EditorView._create_line().

◆ setDocument()

krita.sceditor.widget.EditorView.setDocument ( self,
document )

Definition at line 218 of file widget.py.

218 def setDocument(self, document):
219 QPlainTextEdit.setDocument(self, document)
220 self.highlighter.setDocument(document)
221

References krita.sceditor.console.PythonConsole.highlighter, krita.sceditor.console.QtQmlConsole.highlighter, krita.sceditor.widget.EditorView.highlighter, krita.sceditor.widget.QtQmlEditorWidget.highlighter, and krita.sceditor.widget.EditorView.setDocument().

◆ setModified()

◆ tab_pressed()

krita.sceditor.widget.EditorView.tab_pressed ( self)

Member Data Documentation

◆ autocomplete

krita.sceditor.widget.EditorView.autocomplete

Definition at line 127 of file widget.py.

◆ calltip

krita.sceditor.widget.EditorView.calltip

Definition at line 126 of file widget.py.

◆ disable_shortcuts

krita.sceditor.widget.EditorView.disable_shortcuts

Definition at line 122 of file widget.py.

◆ draw_line

krita.sceditor.widget.EditorView.draw_line

Definition at line 111 of file widget.py.

◆ frame_style

krita.sceditor.widget.EditorView.frame_style

Definition at line 110 of file widget.py.

◆ highlight_brush

krita.sceditor.widget.EditorView.highlight_brush

Definition at line 118 of file widget.py.

◆ highlight_color

krita.sceditor.widget.EditorView.highlight_color

Definition at line 117 of file widget.py.

◆ highlight_line

krita.sceditor.widget.EditorView.highlight_line

Definition at line 116 of file widget.py.

◆ highlighter

krita.sceditor.widget.EditorView.highlighter

Definition at line 107 of file widget.py.

◆ indenter

krita.sceditor.widget.EditorView.indenter

Definition at line 120 of file widget.py.

◆ last_block

krita.sceditor.widget.EditorView.last_block

Definition at line 115 of file widget.py.

◆ last_col

krita.sceditor.widget.EditorView.last_col

Definition at line 194 of file widget.py.

◆ last_row

krita.sceditor.widget.EditorView.last_row

Definition at line 114 of file widget.py.

◆ line

krita.sceditor.widget.EditorView.line

Definition at line 199 of file widget.py.

◆ line_pen

krita.sceditor.widget.EditorView.line_pen

Definition at line 113 of file widget.py.

◆ onCursorPositionChanged

krita.sceditor.widget.EditorView.onCursorPositionChanged

Definition at line 119 of file widget.py.

◆ print_width

krita.sceditor.widget.EditorView.print_width

Definition at line 112 of file widget.py.

◆ prj

krita.sceditor.widget.EditorView.prj

Definition at line 124 of file widget.py.


The documentation for this class was generated from the following file: