diff options
Diffstat (limited to 'examples/widgets/richtext/syntaxhighlighter/syntaxhighlighter.py')
-rw-r--r-- | examples/widgets/richtext/syntaxhighlighter/syntaxhighlighter.py | 43 |
1 files changed, 18 insertions, 25 deletions
diff --git a/examples/widgets/richtext/syntaxhighlighter/syntaxhighlighter.py b/examples/widgets/richtext/syntaxhighlighter/syntaxhighlighter.py index f57ba4851..97373773e 100644 --- a/examples/widgets/richtext/syntaxhighlighter/syntaxhighlighter.py +++ b/examples/widgets/richtext/syntaxhighlighter/syntaxhighlighter.py @@ -2,7 +2,7 @@ ############################################################################ ## ## Copyright (C) 2013 Riverbank Computing Limited. -## Copyright (C) 2020 The Qt Company Ltd. +## Copyright (C) 2021 The Qt Company Ltd. ## Contact: http://www.qt.io/licensing/ ## ## This file is part of the Qt for Python examples of the Qt Toolkit. @@ -42,16 +42,16 @@ """PySide6 port of the widgets/richtext/syntaxhighlighter example from Qt v5.x""" +import os +from pathlib import Path import sys import re from PySide6.QtCore import (QFile, Qt, QTextStream) -from PySide6.QtGui import (QColor, QFont, QKeySequence, QSyntaxHighlighter, - QTextCharFormat) +from PySide6.QtGui import (QColor, QFont, QFontDatabase, QKeySequence, + QSyntaxHighlighter, QTextCharFormat) from PySide6.QtWidgets import (QApplication, QFileDialog, QMainWindow, QPlainTextEdit) -import syntaxhighlighter_rc - class MainWindow(QMainWindow): def __init__(self, parent=None): @@ -73,7 +73,7 @@ class MainWindow(QMainWindow): if not file_name: file_name, _ = QFileDialog.getOpenFileName(self, self.tr("Open File"), "", - "qmake Files (*.pro *.prf *.pri)") + "Python Files (*.py)") if file_name: in_file = QFile(file_name) @@ -82,30 +82,23 @@ class MainWindow(QMainWindow): self._editor.setPlainText(stream.readAll()) def setup_editor(self): - variable_format = QTextCharFormat() - variable_format.setFontWeight(QFont.Bold) - variable_format.setForeground(Qt.blue) - self._highlighter.add_mapping("\\b[A-Z_]+\\b", variable_format) - - single_line_comment_format = QTextCharFormat() - single_line_comment_format.setBackground(QColor("#77ff77")) - self._highlighter.add_mapping("#[^\n]*", single_line_comment_format) - - quotation_format = QTextCharFormat() - quotation_format.setBackground(Qt.cyan) - quotation_format.setForeground(Qt.blue) - self._highlighter.add_mapping("\".*\"", quotation_format) + class_format = QTextCharFormat() + class_format.setFontWeight(QFont.Bold) + class_format.setForeground(Qt.blue) + pattern = r'^\s*class\s+\w+\(.*$' + self._highlighter.add_mapping(pattern, class_format) function_format = QTextCharFormat() function_format.setFontItalic(True) function_format.setForeground(Qt.blue) - self._highlighter.add_mapping("\\b[a-z0-9_]+\\(.*\\)", function_format) + pattern = r'^\s*def\s+\w+\s*\(.*\)\s*:\s*$' + self._highlighter.add_mapping(pattern, function_format) - font = QFont() - font.setFamily("Courier") - font.setFixedPitch(True) - font.setPointSize(10) + comment_format = QTextCharFormat() + comment_format.setBackground(QColor("#77ff77")) + self._highlighter.add_mapping(r'^\s*#.*$', comment_format) + font = QFontDatabase.systemFont(QFontDatabase.FixedFont) self._editor = QPlainTextEdit() self._editor.setFont(font) self._highlighter.setDocument(self._editor.document()) @@ -150,5 +143,5 @@ if __name__ == '__main__': window = MainWindow() window.resize(640, 512) window.show() - window.open_file(":/examples/example") + window.open_file(os.fspath(Path(__file__).resolve())) sys.exit(app.exec_()) |