src/eric7/MicroPython/MicroPythonReplWidget.py

Sun, 16 Mar 2025 12:53:12 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 16 Mar 2025 12:53:12 +0100
branch
eric7
changeset 11170
6d6199d668fb
parent 11148
15e30f0c76a8
permissions
-rw-r--r--

Added the Adafruit Feather nRF52840 to the list of known NRF52 boards and changed the list of known CircuitPython boards to be more explicit with respect to Adafruit boards (i.e. VID 0x239A).

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
11090
f5f5f5803935 Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11055
diff changeset
3 # Copyright (c) 2023 - 2025 Detlev Offenbach <detlev@die-offenbachs.de>
10011
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:
11124
f475e4e210d2 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
404 msg = b"\x1b[\x33\x7e"
10011
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
405 elif key == Qt.Key.Key_Up:
11124
f475e4e210d2 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
406 msg = b"\x1b[A"
10011
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
407 elif key == Qt.Key.Key_Down:
11124
f475e4e210d2 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
408 msg = b"\x1b[B"
10011
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
409 elif key == Qt.Key.Key_Right:
11124
f475e4e210d2 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
410 msg = b"\x1b[C"
10011
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
411 elif key == Qt.Key.Key_Left:
11124
f475e4e210d2 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
412 msg = b"\x1b[D"
10011
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
413 elif key == Qt.Key.Key_Home:
11124
f475e4e210d2 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
414 msg = b"\x1b[H"
10011
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
415 elif key == Qt.Key.Key_End:
11124
f475e4e210d2 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
416 msg = b"\x1b[F"
10011
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 self.__setCharFormat(None, tc)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
482
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
483 # add received data to the buffered one
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
484 data = self.__replBuffer + data
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
485
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
486 index = 0
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
487 while index < len(data):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
488 if data[index] == 8: # \b
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
489 tc.movePosition(QTextCursor.MoveOperation.Left)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
490 self.setTextCursor(tc)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
491 elif data[index] in (4, 13): # EOT, \r
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
492 pass
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
493 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
494 # VT100 cursor command detected: <Esc>[
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
495 index += 2 # move index to after the [
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
496 match = self.__vt100Re.search(
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
497 data[index:].decode("utf-8", errors="replace")
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
498 )
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
499 if match:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
500 # move to last position in control sequence
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
501 # ++ will be done at end of loop
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
502 index += match.end() - 1
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
503
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
504 action = match.group("action")
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
505 if action in "ABCD":
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
506 if match.group("count") == "":
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
507 count = 1
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
508 else:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
509 count = int(match.group("count"))
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
510
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
511 if action == "A": # up
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
512 tc.movePosition(QTextCursor.MoveOperation.Up, n=count)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
513 self.setTextCursor(tc)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
514 elif action == "B": # down
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
515 tc.movePosition(QTextCursor.MoveOperation.Down, n=count)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
516 self.setTextCursor(tc)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
517 elif action == "C": # right
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
518 tc.movePosition(QTextCursor.MoveOperation.Right, n=count)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
519 self.setTextCursor(tc)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
520 elif action == "D": # left
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
521 tc.movePosition(QTextCursor.MoveOperation.Left, n=count)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
522 self.setTextCursor(tc)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
523 elif action == "K": # delete things
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
524 if match.group("count") in ("", "0"):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
525 # delete to end of line
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
526 tc.movePosition(
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
527 QTextCursor.MoveOperation.EndOfLine,
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
528 mode=QTextCursor.MoveMode.KeepAnchor,
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
529 )
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
530 tc.removeSelectedText()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
531 self.setTextCursor(tc)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
532 elif match.group("count") == "1":
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
533 # delete to beginning of line
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
534 tc.movePosition(
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
535 QTextCursor.MoveOperation.StartOfLine,
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
536 mode=QTextCursor.MoveMode.KeepAnchor,
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
537 )
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
538 tc.removeSelectedText()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
539 self.setTextCursor(tc)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
540 elif match.group("count") == "2":
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
541 # delete whole line
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
542 tc.movePosition(QTextCursor.MoveOperation.EndOfLine)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
543 tc.movePosition(
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
544 QTextCursor.MoveOperation.StartOfLine,
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
545 mode=QTextCursor.MoveMode.KeepAnchor,
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
546 )
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
547 tc.removeSelectedText()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
548 self.setTextCursor(tc)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
549 elif action == "m":
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
550 self.__setCharFormat(match.group(0)[:-1].split(";"), tc)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
551 elif (
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
552 len(data) > index + 1
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
553 and data[index] == 27
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
554 and data[index + 1 : index + 4] == b"]0;"
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
555 ):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
556 if b"\x1b\\" in data[index + 4 :]:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
557 # 'set window title' command detected: <Esc>]0;...<Esc>\
11148
15e30f0c76a8 Adjusted the code to the modified issue codes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11124
diff changeset
558 # __IGNORE_WARNING_M-891__
10011
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
559 titleData = data[index + 4 :].split(b"\x1b\\")[0]
10012
d649d500a9a1 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10011
diff changeset
560 title = titleData.decode("utf-8")
10011
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
561 index += len(titleData) + 5 # one more is done at the end
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
562 self.osdInfo.emit(title)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
563 else:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
564 # data is incomplete; buffer and stop processing
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
565 self.__replBuffer = data[index:]
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
566 return
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
567 else:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
568 tc.deleteChar()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
569 self.setTextCursor(tc)
10234
6b6fe61bba38 MicroPython interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10030
diff changeset
570 # unicode handling
6b6fe61bba38 MicroPython interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10030
diff changeset
571 if data[index] & 0b11110000 == 0b11110000:
6b6fe61bba38 MicroPython interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10030
diff changeset
572 length = 4
6b6fe61bba38 MicroPython interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10030
diff changeset
573 elif data[index] & 0b11100000 == 0b11100000:
6b6fe61bba38 MicroPython interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10030
diff changeset
574 length = 3
6b6fe61bba38 MicroPython interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10030
diff changeset
575 elif data[index] & 0b11000000 == 0b11000000:
6b6fe61bba38 MicroPython interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10030
diff changeset
576 length = 2
6b6fe61bba38 MicroPython interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10030
diff changeset
577 else:
6b6fe61bba38 MicroPython interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10030
diff changeset
578 length = 1
11055
e68bcb2b5ec1 Improved the CircuitPython device class and fixed som issues in the MPy REPL and main widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
579 try:
e68bcb2b5ec1 Improved the CircuitPython device class and fixed som issues in the MPy REPL and main widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
580 txt = data[index : index + length].decode("utf8")
e68bcb2b5ec1 Improved the CircuitPython device class and fixed som issues in the MPy REPL and main widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
581 except UnicodeDecodeError:
e68bcb2b5ec1 Improved the CircuitPython device class and fixed som issues in the MPy REPL and main widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
582 txt = data[index : index + length].decode("iso8859-1")
10234
6b6fe61bba38 MicroPython interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10030
diff changeset
583 index += length - 1 # one more is done at the end
6b6fe61bba38 MicroPython interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10030
diff changeset
584 self.insertPlainText(txt)
10011
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
585
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
586 index += 1
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
587
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
588 self.ensureCursorVisible()
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
589 self.__replBuffer = b""
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
590
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
591 def __setCharFormat(self, formatCodes, textCursor):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
592 """
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
593 Private method setting the current text format of the REPL pane based
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
594 on the passed ANSI codes.
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
595
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
596 Following codes are used:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
597 <ul>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
598 <li>0: Reset</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
599 <li>1: Bold font (weight 75)</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
600 <li>2: Light font (weight 25)</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
601 <li>3: Italic font</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
602 <li>4: Underlined font</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
603 <li>9: Strikeout font</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
604 <li>21: Bold off (weight 50)</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
605 <li>22: Light off (weight 50)</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
606 <li>23: Italic off</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
607 <li>24: Underline off</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
608 <li>29: Strikeout off</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
609 <li>30: foreground Black</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
610 <li>31: foreground Dark Red</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
611 <li>32: foreground Dark Green</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
612 <li>33: foreground Dark Yellow</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
613 <li>34: foreground Dark Blue</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
614 <li>35: foreground Dark Magenta</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
615 <li>36: foreground Dark Cyan</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
616 <li>37: foreground Light Gray</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
617 <li>39: reset foreground to default</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
618 <li>40: background Black</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
619 <li>41: background Dark Red</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
620 <li>42: background Dark Green</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
621 <li>43: background Dark Yellow</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
622 <li>44: background Dark Blue</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
623 <li>45: background Dark Magenta</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
624 <li>46: background Dark Cyan</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
625 <li>47: background Light Gray</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
626 <li>49: reset background to default</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
627 <li>53: Overlined font</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
628 <li>55: Overline off</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
629 <li>90: bright foreground Dark Gray</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
630 <li>91: bright foreground Red</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
631 <li>92: bright foreground Green</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
632 <li>93: bright foreground Yellow</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
633 <li>94: bright foreground Blue</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
634 <li>95: bright foreground Magenta</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
635 <li>96: bright foreground Cyan</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
636 <li>97: bright foreground White</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
637 <li>100: bright background Dark Gray</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
638 <li>101: bright background Red</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
639 <li>102: bright background Green</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
640 <li>103: bright background Yellow</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
641 <li>104: bright background Blue</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
642 <li>105: bright background Magenta</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
643 <li>106: bright background Cyan</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
644 <li>107: bright background White</li>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
645 </ul>
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
646
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
647 @param formatCodes list of format codes
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
648 @type list of str
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
649 @param textCursor reference to the text cursor
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
650 @type QTextCursor
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 not formatCodes:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
653 # empty format codes list is treated as a reset
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
654 formatCodes = ["0"]
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
655
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
656 charFormat = textCursor.charFormat()
10030
512d8ecbfdab Fixed an issue in the MicroPythonReplEdit widget causing a wrong font being used.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10012
diff changeset
657 charFormat.setFontFamilies([self.__font.family()])
512d8ecbfdab Fixed an issue in the MicroPythonReplEdit widget causing a wrong font being used.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10012
diff changeset
658 charFormat.setFontPointSize(self.__font.pointSize())
512d8ecbfdab Fixed an issue in the MicroPythonReplEdit widget causing a wrong font being used.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10012
diff changeset
659
10011
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
660 for formatCode in formatCodes:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
661 try:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
662 formatCode = int(formatCode)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
663 except ValueError:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
664 # ignore non digit values
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
665 continue
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
666
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
667 if formatCode == 0:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
668 charFormat.setFontWeight(50)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
669 charFormat.setFontItalic(False)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
670 charFormat.setFontUnderline(False)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
671 charFormat.setFontStrikeOut(False)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
672 charFormat.setFontOverline(False)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
673 charFormat.setForeground(self.DefaultForeground)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
674 charFormat.setBackground(self.DefaultBackground)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
675 elif formatCode == 1:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
676 charFormat.setFontWeight(75)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
677 elif formatCode == 2:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
678 charFormat.setFontWeight(25)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
679 elif formatCode == 3:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
680 charFormat.setFontItalic(True)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
681 elif formatCode == 4:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
682 charFormat.setFontUnderline(True)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
683 elif formatCode == 9:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
684 charFormat.setFontStrikeOut(True)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
685 elif formatCode in (21, 22):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
686 charFormat.setFontWeight(50)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
687 elif formatCode == 23:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
688 charFormat.setFontItalic(False)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
689 elif formatCode == 24:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
690 charFormat.setFontUnderline(False)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
691 elif formatCode == 29:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
692 charFormat.setFontStrikeOut(False)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
693 elif formatCode == 53:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
694 charFormat.setFontOverline(True)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
695 elif formatCode == 55:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
696 charFormat.setFontOverline(False)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
697 elif formatCode in (30, 31, 32, 33, 34, 35, 36, 37):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
698 charFormat.setForeground(
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
699 AnsiColorSchemes[self.__colorScheme][formatCode - 30]
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
700 )
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
701 elif formatCode in (40, 41, 42, 43, 44, 45, 46, 47):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
702 charFormat.setBackground(
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
703 AnsiColorSchemes[self.__colorScheme][formatCode - 40]
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
704 )
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
705 elif formatCode in (90, 91, 92, 93, 94, 95, 96, 97):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
706 charFormat.setForeground(
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
707 AnsiColorSchemes[self.__colorScheme][formatCode - 80]
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
708 )
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
709 elif formatCode in (100, 101, 102, 103, 104, 105, 106, 107):
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
710 charFormat.setBackground(
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
711 AnsiColorSchemes[self.__colorScheme][formatCode - 90]
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
712 )
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
713 elif formatCode == 39:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
714 charFormat.setForeground(self.DefaultForeground)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
715 elif formatCode == 49:
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
716 charFormat.setBackground(self.DefaultBackground)
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
717
26a7d607b8f6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
718 textCursor.setCharFormat(charFormat)

eric ide

mercurial