def __init__(self, *args): QPlainTextEdit.__init__(self, *args) # toPlainText() takes a lot of time on long texts, therefore it is cached self._cachedText = None self._eol = self._DEFAULT_EOL self._indenter = Indenter(self) self.lineLengthEdge = None self.lineLengthEdgeColor = Qt.red self._atomicModificationDepth = 0 self.drawIncorrectIndentation = True self.drawAnyWhitespace = False self._rectangularSelection = RectangularSelection(self) """Sometimes color themes will be supported. Now black on white is hardcoded in the highlighters. Hardcode same palette for not highlighted text """ palette = self.palette() palette.setColor(QPalette.Base, QColor('#ffffff')) palette.setColor(QPalette.Text, QColor('#000000')) self.setPalette(palette) self._highlighter = None self._bracketHighlighter = BracketHighlighter() self._lines = Lines(self) self.completionThreshold = self._DEFAULT_COMPLETION_THRESHOLD self.completionEnabled = self._DEFAULT_COMPLETION_ENABLED self._completer = Completer(self) self._initActions() self._lineNumberArea = qutepart.sideareas.LineNumberArea(self) self._countCache = (-1, -1) self._markArea = qutepart.sideareas.MarkArea(self) self._bookmarks = qutepart.bookmarks.Bookmarks(self, self._markArea) self._userExtraSelections = [ ] # we draw bracket highlighting, current line and extra selections by user self._userExtraSelectionFormat = QTextCharFormat() self._userExtraSelectionFormat.setBackground(QBrush(QColor('#ffee00'))) self._lintMarks = {} self.blockCountChanged.connect(self._updateLineNumberAreaWidth) self.updateRequest.connect(self._updateSideAreas) self.cursorPositionChanged.connect(self._updateExtraSelections) self.textChanged.connect(self._dropUserExtraSelections) self.textChanged.connect(self._resetCachedText) self.textChanged.connect(self._clearLintMarks) fontFamilies = {'Windows': 'Courier New', 'Darwin': 'Menlo'} fontFamily = fontFamilies.get(platform.system(), 'Monospace') self.setFont(QFont(fontFamily)) self._updateLineNumberAreaWidth(0) self._updateExtraSelections()