-
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathexample.py
More file actions
81 lines (60 loc) · 2.17 KB
/
example.py
File metadata and controls
81 lines (60 loc) · 2.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import sys
from pathlib import Path
import pygments
from qtpy.QtWidgets import (
QApplication,
QComboBox,
QHBoxLayout,
QMainWindow,
QVBoxLayout,
QWidget,
QSpinBox,
)
from syntaxedit.core import SyntaxEdit
app = QApplication(sys.argv)
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
contents = Path(__file__).read_text()
self.editor = SyntaxEdit(contents, syntax="Python")
self.editor.textChanged.connect(self.editor_changed)
style_language = QHBoxLayout()
style_language.setContentsMargins(0, 0, 0, 0)
self.lexers = QComboBox()
self.lexers.setEditable(False)
self.lexers.addItems([i[0] for i in pygments.lexers.get_all_lexers()])
self.lexers.setCurrentText(self.editor.syntax())
self.lexers.currentIndexChanged.connect(self.language_changed)
self.styles = QComboBox()
self.styles.setEditable(False)
self.styles.addItems(pygments.styles.get_all_styles())
self.styles.setCurrentText(self.editor.theme())
self.styles.currentIndexChanged.connect(self.style_changed)
self.size = QSpinBox()
self.size.setMinimum(10)
self.size.setMaximum(30)
self.size.setValue(self.editor.editorFontSize())
self.size.valueChanged.connect(self.editor.setEditorFontSize)
style_language.addWidget(self.lexers)
style_language.addWidget(self.styles)
style_language.addWidget(self.size)
style_languagewidget = QWidget()
style_languagewidget.setLayout(style_language)
layout = QVBoxLayout()
layout.addWidget(self.editor)
layout.addWidget(style_languagewidget)
widget = QWidget()
widget.setLayout(layout)
self.setCentralWidget(widget)
def language_changed(self):
self.editor.setSyntax(self.lexers.currentText())
print("Language changed")
def style_changed(self):
self.editor.setTheme(self.styles.currentText())
print("Style changed")
def editor_changed(self):
print("editor changed")
print(self.editor.toPlainText())
window = MainWindow()
window.show()
app.exec()