def keyPressEvent(self, event):
key = event.key()
if key == Qt.Key_Return:
cursor = self.textCursor()
indentLvl = self.findLineIndentLevel()
if self.openBlockDelimiter is not None:
cursor.movePosition(QTextCursor.PreviousCharacter,
QTextCursor.KeepAnchor)
if cursor.selectedText() == self.openBlockDelimiter:
indentLvl += 1
super(BaseCodeEditor, self).keyPressEvent(event)
newLineSpace = "".join(self._indent for _ in range(indentLvl))
cursor = self.textCursor()
cursor.insertText(newLineSpace)
elif key in (Qt.Key_Backspace, Qt.Key_Backtab):
cursor = self.textCursor()
if key == Qt.Key_Backtab and cursor.hasSelection():
self.performLinewiseIndent(cursor, False)
else:
cursor.movePosition(QTextCursor.PreviousCharacter,
QTextCursor.KeepAnchor,
len(self._indent))
if cursor.selectedText() == self._indent:
cursor.removeSelectedText()
else:
super(BaseCodeEditor, self).keyPressEvent(event)
elif key == Qt.Key_Tab:
cursor = self.textCursor()
if cursor.hasSelection():
self.performLinewiseIndent(cursor)
else:
cursor.insertText(self._indent)
else:
super(BaseCodeEditor, self).keyPressEvent(event)
# --------------
# Other builtins
# --------------
评论列表
文章目录