def __init__(self, parent=None, **kwargs): super().__init__(parent, **kwargs) self.setDocumentLayout(QPlainTextDocumentLayout(self)) self.__currentCharFormat = QTextCharFormat() if 'defaultFont' not in kwargs: defaultFont = QFontDatabase.systemFont(QFontDatabase.FixedFont) self.setDefaultFont(defaultFont) self.__streams = []
def documentForScript(self, script=0): if not isinstance(script, Script): script = self.libraryList[script] if script not in self._cachedDocuments: doc = QTextDocument(self) doc.setDocumentLayout(QPlainTextDocumentLayout(doc)) doc.setPlainText(script.script) doc.setDefaultFont(QFont(self.defaultFont)) doc.highlighter = PythonSyntaxHighlighter(doc) doc.modificationChanged[bool].connect(self.onModificationChanged) doc.setModified(False) self._cachedDocuments[script] = doc return self._cachedDocuments[script]
def clone(self, parent=None) -> 'TerminalTextDocument': """Create a new TerminalTextDocument that is a copy of this document.""" clone = type(self)() clone.setParent(parent) clone.setDocumentLayout(QPlainTextDocumentLayout(clone)) cursor = QTextCursor(clone) cursor.insertFragment(QTextDocumentFragment(self)) clone.rootFrame().setFrameFormat(self.rootFrame().frameFormat()) clone.setDefaultStyleSheet(self.defaultStyleSheet()) clone.setDefaultFont(self.defaultFont()) clone.setDefaultTextOption(self.defaultTextOption()) clone.setCurrentCharFormat(self.currentCharFormat()) for s, w in self.__streams: clone.connectStream(s, w.charformat if w is not None else None) return clone