src/eric7/MicroPython/MicroPythonReplWidget.py

Thu, 04 May 2023 11:22:11 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Thu, 04 May 2023 11:22:11 +0200
branch
mpy_network
changeset 10011
26a7d607b8f6
child 10012
d649d500a9a1
permissions
-rw-r--r--

MicroPython
- Refactored the code by extracting the REPL widget into a separate module.

10011
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 # Copyright (c) 2023 Detlev Offenbach <detlev@die-offenbachs.de>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the MicroPython REPL widget.
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import re
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 from PyQt6.QtCore import QPoint, Qt, pyqtSignal, pyqtSlot
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 from PyQt6.QtGui import (
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 QBrush,
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 QClipboard,
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 QColor,
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 QGuiApplication,
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 QKeySequence,
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 QTextCursor,
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 )
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 from PyQt6.QtWidgets import (
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 QHBoxLayout,
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 QLabel,
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 QMenu,
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 QSizePolicy,
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 QTextEdit,
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 QVBoxLayout,
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 QWidget,
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 )
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 from eric7 import Preferences
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 from eric7.EricGui import EricPixmapCache
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 from eric7.EricWidgets.EricZoomWidget import EricZoomWidget
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 from eric7.SystemUtilities import OSUtilities
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 AnsiColorSchemes = {
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 "Windows 7": {
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 0: QBrush(QColor(0, 0, 0)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 1: QBrush(QColor(128, 0, 0)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 2: QBrush(QColor(0, 128, 0)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 3: QBrush(QColor(128, 128, 0)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 4: QBrush(QColor(0, 0, 128)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 5: QBrush(QColor(128, 0, 128)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 6: QBrush(QColor(0, 128, 128)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 7: QBrush(QColor(192, 192, 192)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 10: QBrush(QColor(128, 128, 128)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 11: QBrush(QColor(255, 0, 0)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 12: QBrush(QColor(0, 255, 0)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 13: QBrush(QColor(255, 255, 0)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 14: QBrush(QColor(0, 0, 255)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 15: QBrush(QColor(255, 0, 255)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 16: QBrush(QColor(0, 255, 255)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 17: QBrush(QColor(255, 255, 255)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 },
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 "Windows 10": {
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 0: QBrush(QColor(12, 12, 12)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 1: QBrush(QColor(197, 15, 31)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 2: QBrush(QColor(19, 161, 14)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 3: QBrush(QColor(193, 156, 0)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 4: QBrush(QColor(0, 55, 218)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 5: QBrush(QColor(136, 23, 152)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 6: QBrush(QColor(58, 150, 221)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 7: QBrush(QColor(204, 204, 204)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 10: QBrush(QColor(118, 118, 118)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 11: QBrush(QColor(231, 72, 86)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 12: QBrush(QColor(22, 198, 12)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 13: QBrush(QColor(249, 241, 165)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 14: QBrush(QColor(59, 12, 255)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 15: QBrush(QColor(180, 0, 158)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 16: QBrush(QColor(97, 214, 214)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 17: QBrush(QColor(242, 242, 242)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 },
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 "PuTTY": {
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 0: QBrush(QColor(0, 0, 0)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 1: QBrush(QColor(187, 0, 0)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 2: QBrush(QColor(0, 187, 0)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 3: QBrush(QColor(187, 187, 0)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 4: QBrush(QColor(0, 0, 187)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 5: QBrush(QColor(187, 0, 187)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 6: QBrush(QColor(0, 187, 187)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 7: QBrush(QColor(187, 187, 187)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 10: QBrush(QColor(85, 85, 85)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 11: QBrush(QColor(255, 85, 85)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 12: QBrush(QColor(85, 255, 85)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 13: QBrush(QColor(255, 255, 85)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 14: QBrush(QColor(85, 85, 255)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 15: QBrush(QColor(255, 85, 255)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 16: QBrush(QColor(85, 255, 255)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 17: QBrush(QColor(255, 255, 255)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 },
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 "xterm": {
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 0: QBrush(QColor(0, 0, 0)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 1: QBrush(QColor(205, 0, 0)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 2: QBrush(QColor(0, 205, 0)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 3: QBrush(QColor(205, 205, 0)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 4: QBrush(QColor(0, 0, 238)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 5: QBrush(QColor(205, 0, 205)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 6: QBrush(QColor(0, 205, 205)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 7: QBrush(QColor(229, 229, 229)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 10: QBrush(QColor(127, 127, 127)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 11: QBrush(QColor(255, 0, 0)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 12: QBrush(QColor(0, 255, 0)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 13: QBrush(QColor(255, 255, 0)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 14: QBrush(QColor(0, 0, 255)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 15: QBrush(QColor(255, 0, 255)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 16: QBrush(QColor(0, 255, 255)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 17: QBrush(QColor(255, 255, 255)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 },
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 "Ubuntu": {
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 0: QBrush(QColor(1, 1, 1)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 1: QBrush(QColor(222, 56, 43)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 2: QBrush(QColor(57, 181, 74)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 3: QBrush(QColor(255, 199, 6)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 4: QBrush(QColor(0, 11, 184)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 5: QBrush(QColor(118, 38, 113)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 6: QBrush(QColor(44, 181, 233)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 7: QBrush(QColor(204, 204, 204)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 10: QBrush(QColor(128, 128, 128)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 11: QBrush(QColor(255, 0, 0)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 12: QBrush(QColor(0, 255, 0)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 13: QBrush(QColor(255, 255, 0)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 14: QBrush(QColor(0, 0, 255)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 15: QBrush(QColor(255, 0, 255)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 16: QBrush(QColor(0, 255, 255)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 17: QBrush(QColor(255, 255, 255)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 },
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 "Ubuntu (dark)": {
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 0: QBrush(QColor(96, 96, 96)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 1: QBrush(QColor(235, 58, 45)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 2: QBrush(QColor(57, 181, 74)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 3: QBrush(QColor(255, 199, 29)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 4: QBrush(QColor(25, 56, 230)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 5: QBrush(QColor(200, 64, 193)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 6: QBrush(QColor(48, 200, 255)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 7: QBrush(QColor(204, 204, 204)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 10: QBrush(QColor(128, 128, 128)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 11: QBrush(QColor(255, 0, 0)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 12: QBrush(QColor(0, 255, 0)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 13: QBrush(QColor(255, 255, 0)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 14: QBrush(QColor(0, 0, 255)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 15: QBrush(QColor(255, 0, 255)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 16: QBrush(QColor(0, 255, 255)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 17: QBrush(QColor(255, 255, 255)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 },
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 "Breeze (dark)": {
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 0: QBrush(QColor(35, 38, 39)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 1: QBrush(QColor(237, 21, 21)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 2: QBrush(QColor(17, 209, 22)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 3: QBrush(QColor(246, 116, 0)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 4: QBrush(QColor(29, 153, 243)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 5: QBrush(QColor(155, 89, 182)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 6: QBrush(QColor(26, 188, 156)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 7: QBrush(QColor(252, 252, 252)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 10: QBrush(QColor(127, 140, 141)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 11: QBrush(QColor(192, 57, 43)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 12: QBrush(QColor(28, 220, 154)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 13: QBrush(QColor(253, 188, 75)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 14: QBrush(QColor(61, 174, 233)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 15: QBrush(QColor(142, 68, 173)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 16: QBrush(QColor(22, 160, 133)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 17: QBrush(QColor(255, 255, 255)),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 },
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 }
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 class MicroPythonReplWidget(QWidget):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 Class implementing the MicroPython REPL widget.
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 ZoomMin = -10
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 ZoomMax = 20
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 def __init__(self, parent=None):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 Constructor
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 @param parent reference to the parent widget (defaults to None)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 @type QWidget (optional)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 super().__init__(parent=parent)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 self.__layout = QVBoxLayout(self)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 self.__layout.setContentsMargins(0, 0, 0, 0)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 self.__zoomLayout = QHBoxLayout()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 self.__osdLabel = QLabel()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 self.__osdLabel.setSizePolicy(
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Preferred
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 )
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 self.__zoomLayout.addWidget(self.__osdLabel)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 self.__zoomWidget = EricZoomWidget(
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 EricPixmapCache.getPixmap("zoomOut"),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 EricPixmapCache.getPixmap("zoomIn"),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 EricPixmapCache.getPixmap("zoomReset"),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 self,
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 )
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 self.__zoomWidget.setMinimum(self.ZoomMin)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 self.__zoomWidget.setMaximum(self.ZoomMax)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 self.__zoomLayout.addWidget(self.__zoomWidget)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 self.__layout.addLayout(self.__zoomLayout)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 self.__replEdit = MicroPythonReplEdit(self)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 self.__layout.addWidget(self.__replEdit)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 self.setLayout(self.__layout)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 self.__zoomWidget.valueChanged.connect(self.__replEdit.doZoom)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 self.__replEdit.osdInfo.connect(self.setOSDInfo)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 @pyqtSlot(str)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213 def setOSDInfo(self, infoStr):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 Public slot to set the OSD information.
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 @param infoStr string to be shown
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 @type str
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 self.__osdLabel.setText(infoStr)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 @pyqtSlot()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
223 def clearOSD(self):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225 Public slot to clear the OSD info.
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227 self.__osdLabel.clear()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 def replEdit(self):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231 Public method to get a reference to the REPL edit.
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 @return reference to the REPL edit
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 @rtype MicroPythonReplEdit
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 return self.__replEdit
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239 class MicroPythonReplEdit(QTextEdit):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241 Class implementing the REPL edit pane.
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
243 @signal osdInfo(str) emitted when some OSD data was received from the device
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246 osdInfo = pyqtSignal(str)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 def __init__(self, parent=None):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250 Constructor
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
251
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252 @param parent reference to the parent widget (defaults to None)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
253 @type QWidget (optional)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
254 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
255 super().__init__(parent=parent)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
256
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257 self.setAcceptRichText(False)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 self.setUndoRedoEnabled(False)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
259 self.setLineWrapMode(QTextEdit.LineWrapMode.NoWrap)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
260 self.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
261
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
262 self.__currentZoom = 0
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
263
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
264 self.__replBuffer = b""
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
265
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
266 self.__vt100Re = re.compile(
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
267 r"(?P<count>\d*)(?P<color>(?:;?\d*)*)(?P<action>[ABCDKm])"
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
268 )
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
269
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
270 self.customContextMenuRequested.connect(self.__showContextMenu)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
271
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
272 charFormat = self.currentCharFormat()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
273 self.DefaultForeground = charFormat.foreground()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
274 self.DefaultBackground = charFormat.background()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
275
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
276 self.__interface = None
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
277
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
278 def setInterface(self, deviceInterface):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
279 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
280 Public method to set the reference to the device interface object.
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
281
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
282 @param deviceInterface reference to the device interface object
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
283 @type MicroPythonDeviceInterface
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
284 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
285 self.__interface = deviceInterface
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
286
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
287 @pyqtSlot(int)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
288 def doZoom(self, value):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
289 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
290 Public slot to zoom in or out.
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
291
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
292 @param value zoom value
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
293 @type int
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
294 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
295 if value < self.__currentZoom:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
296 self.zoomOut(self.__currentZoom - value)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
297 elif value > self.__currentZoom:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
298 self.zoomIn(value - self.__currentZoom)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
299 self.__currentZoom = value
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
300
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
301 @pyqtSlot(QPoint)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
302 def __showContextMenu(self, pos):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
303 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
304 Private slot to show the REPL context menu.
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
305
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
306 @param pos position to show the menu at
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
307 @type QPoint
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
308 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
309 connected = bool(self.__interface) and self.__interface.isConnected()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
310
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
311 if OSUtilities.isMacPlatform():
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
312 copyKeys = QKeySequence("Ctrl+C")
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
313 pasteKeys = QKeySequence("Ctrl+V")
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
314 selectAllKeys = QKeySequence("Ctrl+A")
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
315 else:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
316 copyKeys = QKeySequence("Ctrl+Shift+C")
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
317 pasteKeys = QKeySequence("Ctrl+Shift+V")
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
318 selectAllKeys = QKeySequence("Ctrl+Shift+A")
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
319
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
320 menu = QMenu(self)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
321 menu.addAction(
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
322 EricPixmapCache.getIcon("editDelete"), self.tr("Clear"), self.__clear
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
323 ).setEnabled(bool(self.toPlainText()))
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
324 menu.addSeparator()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
325 menu.addAction(
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
326 EricPixmapCache.getIcon("editCopy"),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
327 self.tr("Copy"),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
328 copyKeys,
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
329 self.copy,
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
330 ).setEnabled(self.textCursor().hasSelection())
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
331 menu.addAction(
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
332 EricPixmapCache.getIcon("editPaste"),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
333 self.tr("Paste"),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
334 pasteKeys,
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
335 self.__paste,
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
336 ).setEnabled(self.canPaste() and connected)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
337 menu.addSeparator()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
338 menu.addAction(
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
339 EricPixmapCache.getIcon("editSelectAll"),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
340 self.tr("Select All"),
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
341 selectAllKeys,
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
342 self.selectAll,
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
343 ).setEnabled(bool(self.toPlainText()))
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
344
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
345 menu.exec(self.mapToGlobal(pos))
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
346
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
347 @pyqtSlot()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
348 def handlePreferencesChanged(self):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
349 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
350 Public slot to handle a change in preferences.
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
351 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
352 self.__colorScheme = Preferences.getMicroPython("ColorScheme")
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
353
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
354 self.__font = Preferences.getEditorOtherFonts("MonospacedFont")
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
355 self.setFontFamily(self.__font.family())
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
356 self.setFontPointSize(self.__font.pointSize())
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
357
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
358 if Preferences.getMicroPython("ReplLineWrap"):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
359 self.setLineWrapMode(QTextEdit.LineWrapMode.WidgetWidth)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
360 else:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
361 self.setLineWrapMode(QTextEdit.LineWrapMode.NoWrap)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
362
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
363 @pyqtSlot()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
364 def __clear(self):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
365 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
366 Private slot to clear the REPL pane.
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
367 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
368 self.clear()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
369 if bool(self.__interface) and self.__interface.isConnected():
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
370 self.__interface.write(b"\r")
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
371
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
372 @pyqtSlot()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
373 def __paste(self, mode=QClipboard.Mode.Clipboard):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
374 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
375 Private slot to perform a paste operation.
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
376
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
377 @param mode paste mode (defaults to QClipboard.Mode.Clipboard)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
378 @type QClipboard.Mode (optional)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
379 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
380 # add support for paste by mouse middle button
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
381 clipboard = QGuiApplication.clipboard()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
382 if clipboard:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
383 pasteText = clipboard.text(mode=mode)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
384 if pasteText:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
385 pasteText = pasteText.replace("\n\r", "\r")
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
386 pasteText = pasteText.replace("\n", "\r")
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
387 if bool(self.__interface) and self.__interface.isConnected():
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
388 self.__interface.write(b"\x05")
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
389 self.__interface.write(pasteText.encode("utf-8"))
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
390 self.__interface.write(b"\x04")
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
391
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
392 def keyPressEvent(self, evt):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
393 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
394 Protected method to handle key press events.
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
395
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
396 @param evt reference to the key press event
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
397 @type QKeyEvent
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
398 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
399 key = evt.key()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
400 msg = bytes(evt.text(), "utf8")
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
401 if key == Qt.Key.Key_Backspace:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
402 msg = b"\b"
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
403 elif key == Qt.Key.Key_Delete:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
404 msg = b"\x1B[\x33\x7E"
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
405 elif key == Qt.Key.Key_Up:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
406 msg = b"\x1B[A"
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
407 elif key == Qt.Key.Key_Down:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
408 msg = b"\x1B[B"
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
409 elif key == Qt.Key.Key_Right:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
410 msg = b"\x1B[C"
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
411 elif key == Qt.Key.Key_Left:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
412 msg = b"\x1B[D"
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
413 elif key == Qt.Key.Key_Home:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
414 msg = b"\x1B[H"
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
415 elif key == Qt.Key.Key_End:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
416 msg = b"\x1B[F"
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
417 elif (
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
418 OSUtilities.isMacPlatform()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
419 and evt.modifiers() == Qt.KeyboardModifier.MetaModifier
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
420 ) or (
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
421 not OSUtilities.isMacPlatform()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
422 and evt.modifiers() == Qt.KeyboardModifier.ControlModifier
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
423 ):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
424 if Qt.Key.Key_A <= key <= Qt.Key.Key_Z:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
425 # devices treat an input of \x01 as Ctrl+A, etc.
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
426 msg = bytes([1 + key - Qt.Key.Key_A])
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
427 elif evt.modifiers() == (
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
428 Qt.KeyboardModifier.ControlModifier | Qt.KeyboardModifier.ShiftModifier
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
429 ) or (
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
430 OSUtilities.isMacPlatform()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
431 and evt.modifiers() == Qt.KeyboardModifier.ControlModifier
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
432 ):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
433 if key == Qt.Key.Key_C:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
434 self.copy()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
435 msg = b""
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
436 elif key == Qt.Key.Key_V:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
437 self.__paste()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
438 msg = b""
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
439 elif key == Qt.Key.Key_A:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
440 self.selectAll()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
441 msg = b""
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
442 elif key in (Qt.Key.Key_Return, Qt.Key.Key_Enter):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
443 tc = self.textCursor()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
444 tc.movePosition(QTextCursor.MoveOperation.EndOfLine)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
445 self.setTextCursor(tc)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
446 if bool(self.__interface) and self.__interface.isConnected():
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
447 self.__interface.write(msg)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
448
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
449 evt.accept()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
450
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
451 def mouseReleaseEvent(self, evt):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
452 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
453 Protected method to handle mouse release events.
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
454
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
455 @param evt reference to the event object
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
456 @type QMouseEvent
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
457 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
458 if evt.button() == Qt.MouseButton.MiddleButton:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
459 self.__paste(mode=QClipboard.Mode.Selection)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
460 msg = b""
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
461 if bool(self.__interface) and self.__interface.isConnected():
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
462 self.__interface.write(msg)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
463 evt.accept()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
464 else:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
465 super().mouseReleaseEvent(evt)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
466
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
467 @pyqtSlot(bytes)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
468 def processData(self, data):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
469 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
470 Public slot to process the data received from the device.
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
471
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
472 @param data data received from the device
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
473 @type bytes
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
474 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
475 tc = self.textCursor()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
476 # the text cursor must be on the last line
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
477 while tc.movePosition(QTextCursor.MoveOperation.Down):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
478 pass
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
479
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
480 # reset the font
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
481 charFormat = tc.charFormat()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
482 self.__setCharFormat(None, tc)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
483 tc.setCharFormat(charFormat)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
484
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
485 # add received data to the buffered one
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
486 data = self.__replBuffer + data
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
487
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
488 index = 0
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
489 while index < len(data):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
490 if data[index] == 8: # \b
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
491 tc.movePosition(QTextCursor.MoveOperation.Left)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
492 self.setTextCursor(tc)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
493 elif data[index] in (4, 13): # EOT, \r
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
494 pass
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
495 elif len(data) > index + 1 and data[index] == 27 and data[index + 1] == 91:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
496 # VT100 cursor command detected: <Esc>[
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
497 index += 2 # move index to after the [
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
498 match = self.__vt100Re.search(
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
499 data[index:].decode("utf-8", errors="replace")
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
500 )
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
501 if match:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
502 # move to last position in control sequence
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
503 # ++ will be done at end of loop
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
504 index += match.end() - 1
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
505
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
506 action = match.group("action")
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
507 if action in "ABCD":
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
508 if match.group("count") == "":
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
509 count = 1
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
510 else:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
511 count = int(match.group("count"))
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
512
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
513 if action == "A": # up
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
514 tc.movePosition(QTextCursor.MoveOperation.Up, n=count)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
515 self.setTextCursor(tc)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
516 elif action == "B": # down
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
517 tc.movePosition(QTextCursor.MoveOperation.Down, n=count)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
518 self.setTextCursor(tc)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
519 elif action == "C": # right
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
520 tc.movePosition(QTextCursor.MoveOperation.Right, n=count)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
521 self.setTextCursor(tc)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
522 elif action == "D": # left
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
523 tc.movePosition(QTextCursor.MoveOperation.Left, n=count)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
524 self.setTextCursor(tc)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
525 elif action == "K": # delete things
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
526 if match.group("count") in ("", "0"):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
527 # delete to end of line
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
528 tc.movePosition(
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
529 QTextCursor.MoveOperation.EndOfLine,
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
530 mode=QTextCursor.MoveMode.KeepAnchor,
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
531 )
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
532 tc.removeSelectedText()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
533 self.setTextCursor(tc)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
534 elif match.group("count") == "1":
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
535 # delete to beginning of line
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
536 tc.movePosition(
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
537 QTextCursor.MoveOperation.StartOfLine,
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
538 mode=QTextCursor.MoveMode.KeepAnchor,
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
539 )
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
540 tc.removeSelectedText()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
541 self.setTextCursor(tc)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
542 elif match.group("count") == "2":
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
543 # delete whole line
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
544 tc.movePosition(QTextCursor.MoveOperation.EndOfLine)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
545 tc.movePosition(
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
546 QTextCursor.MoveOperation.StartOfLine,
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
547 mode=QTextCursor.MoveMode.KeepAnchor,
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
548 )
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
549 tc.removeSelectedText()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
550 self.setTextCursor(tc)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
551 elif action == "m":
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
552 self.__setCharFormat(match.group(0)[:-1].split(";"), tc)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
553 elif (
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
554 len(data) > index + 1
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
555 and data[index] == 27
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
556 and data[index + 1 : index + 4] == b"]0;"
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
557 ):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
558 if b"\x1b\\" in data[index + 4 :]:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
559 # 'set window title' command detected: <Esc>]0;...<Esc>\
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
560 # __IGNORE_WARNING_M891__
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
561 titleData = data[index + 4 :].split(b"\x1b\\")[0]
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
562 title = titleData.decode()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
563 index += len(titleData) + 5 # one more is done at the end
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
564 self.osdInfo.emit(title)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
565 else:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
566 # data is incomplete; buffer and stop processing
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
567 self.__replBuffer = data[index:]
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
568 return
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
569 else:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
570 tc.deleteChar()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
571 self.setTextCursor(tc)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
572 self.insertPlainText(chr(data[index]))
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
573
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
574 index += 1
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
575
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
576 self.ensureCursorVisible()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
577 self.__replBuffer = b""
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
578
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
579 def __setCharFormat(self, formatCodes, textCursor):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
580 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
581 Private method setting the current text format of the REPL pane based
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
582 on the passed ANSI codes.
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
583
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
584 Following codes are used:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
585 <ul>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
586 <li>0: Reset</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
587 <li>1: Bold font (weight 75)</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
588 <li>2: Light font (weight 25)</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
589 <li>3: Italic font</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
590 <li>4: Underlined font</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
591 <li>9: Strikeout font</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
592 <li>21: Bold off (weight 50)</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
593 <li>22: Light off (weight 50)</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
594 <li>23: Italic off</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
595 <li>24: Underline off</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
596 <li>29: Strikeout off</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
597 <li>30: foreground Black</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
598 <li>31: foreground Dark Red</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
599 <li>32: foreground Dark Green</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
600 <li>33: foreground Dark Yellow</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
601 <li>34: foreground Dark Blue</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
602 <li>35: foreground Dark Magenta</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
603 <li>36: foreground Dark Cyan</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
604 <li>37: foreground Light Gray</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
605 <li>39: reset foreground to default</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
606 <li>40: background Black</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
607 <li>41: background Dark Red</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
608 <li>42: background Dark Green</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
609 <li>43: background Dark Yellow</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
610 <li>44: background Dark Blue</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
611 <li>45: background Dark Magenta</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
612 <li>46: background Dark Cyan</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
613 <li>47: background Light Gray</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
614 <li>49: reset background to default</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
615 <li>53: Overlined font</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
616 <li>55: Overline off</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
617 <li>90: bright foreground Dark Gray</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
618 <li>91: bright foreground Red</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
619 <li>92: bright foreground Green</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
620 <li>93: bright foreground Yellow</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
621 <li>94: bright foreground Blue</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
622 <li>95: bright foreground Magenta</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
623 <li>96: bright foreground Cyan</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
624 <li>97: bright foreground White</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
625 <li>100: bright background Dark Gray</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
626 <li>101: bright background Red</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
627 <li>102: bright background Green</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
628 <li>103: bright background Yellow</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
629 <li>104: bright background Blue</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
630 <li>105: bright background Magenta</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
631 <li>106: bright background Cyan</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
632 <li>107: bright background White</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
633 </ul>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
634
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
635 @param formatCodes list of format codes
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
636 @type list of str
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
637 @param textCursor reference to the text cursor
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
638 @type QTextCursor
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
639 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
640 if not formatCodes:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
641 # empty format codes list is treated as a reset
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
642 formatCodes = ["0"]
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
643
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
644 charFormat = textCursor.charFormat()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
645 for formatCode in formatCodes:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
646 try:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
647 formatCode = int(formatCode)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
648 except ValueError:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
649 # ignore non digit values
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
650 continue
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
651
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
652 if formatCode == 0:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
653 charFormat.setFontWeight(50)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
654 charFormat.setFontItalic(False)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
655 charFormat.setFontUnderline(False)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
656 charFormat.setFontStrikeOut(False)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
657 charFormat.setFontOverline(False)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
658 charFormat.setForeground(self.DefaultForeground)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
659 charFormat.setBackground(self.DefaultBackground)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
660 elif formatCode == 1:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
661 charFormat.setFontWeight(75)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
662 elif formatCode == 2:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
663 charFormat.setFontWeight(25)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
664 elif formatCode == 3:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
665 charFormat.setFontItalic(True)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
666 elif formatCode == 4:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
667 charFormat.setFontUnderline(True)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
668 elif formatCode == 9:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
669 charFormat.setFontStrikeOut(True)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
670 elif formatCode in (21, 22):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
671 charFormat.setFontWeight(50)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
672 elif formatCode == 23:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
673 charFormat.setFontItalic(False)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
674 elif formatCode == 24:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
675 charFormat.setFontUnderline(False)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
676 elif formatCode == 29:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
677 charFormat.setFontStrikeOut(False)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
678 elif formatCode == 53:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
679 charFormat.setFontOverline(True)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
680 elif formatCode == 55:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
681 charFormat.setFontOverline(False)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
682 elif formatCode in (30, 31, 32, 33, 34, 35, 36, 37):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
683 charFormat.setForeground(
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
684 AnsiColorSchemes[self.__colorScheme][formatCode - 30]
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
685 )
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
686 elif formatCode in (40, 41, 42, 43, 44, 45, 46, 47):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
687 charFormat.setBackground(
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
688 AnsiColorSchemes[self.__colorScheme][formatCode - 40]
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
689 )
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
690 elif formatCode in (90, 91, 92, 93, 94, 95, 96, 97):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
691 charFormat.setForeground(
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
692 AnsiColorSchemes[self.__colorScheme][formatCode - 80]
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
693 )
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
694 elif formatCode in (100, 101, 102, 103, 104, 105, 106, 107):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
695 charFormat.setBackground(
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
696 AnsiColorSchemes[self.__colorScheme][formatCode - 90]
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
697 )
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
698 elif formatCode == 39:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
699 charFormat.setForeground(self.DefaultForeground)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
700 elif formatCode == 49:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
701 charFormat.setBackground(self.DefaultBackground)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
702
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
703 textCursor.setCharFormat(charFormat)

eric ide

mercurial