|
1 # -*- coding: utf-8 -*- |
|
2 |
|
3 # Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de> |
|
4 # |
|
5 |
|
6 """ |
|
7 Module implementing functions to work with ANSI escape sequences for colors. |
|
8 """ |
|
9 |
|
10 from PyQt5.QtGui import QColor, QBrush |
|
11 |
|
12 # ANSI Colors (see https://en.wikipedia.org/wiki/ANSI_escape_code) |
|
13 _AnsiColorSchemes = { |
|
14 "Windows 7": { |
|
15 0: QBrush(QColor(0, 0, 0)), |
|
16 1: QBrush(QColor(128, 0, 0)), |
|
17 2: QBrush(QColor(0, 128, 0)), |
|
18 3: QBrush(QColor(128, 128, 0)), |
|
19 4: QBrush(QColor(0, 0, 128)), |
|
20 5: QBrush(QColor(128, 0, 128)), |
|
21 6: QBrush(QColor(0, 128, 128)), |
|
22 7: QBrush(QColor(192, 192, 192)), |
|
23 10: QBrush(QColor(128, 128, 128)), |
|
24 11: QBrush(QColor(255, 0, 0)), |
|
25 12: QBrush(QColor(0, 255, 0)), |
|
26 13: QBrush(QColor(255, 255, 0)), |
|
27 14: QBrush(QColor(0, 0, 255)), |
|
28 15: QBrush(QColor(255, 0, 255)), |
|
29 16: QBrush(QColor(0, 255, 255)), |
|
30 17: QBrush(QColor(255, 255, 255)), |
|
31 }, |
|
32 "Windows 10": { |
|
33 0: QBrush(QColor(12, 12, 12)), |
|
34 1: QBrush(QColor(197, 15, 31)), |
|
35 2: QBrush(QColor(19, 161, 14)), |
|
36 3: QBrush(QColor(193, 156, 0)), |
|
37 4: QBrush(QColor(0, 55, 218)), |
|
38 5: QBrush(QColor(136, 23, 152)), |
|
39 6: QBrush(QColor(58, 150, 221)), |
|
40 7: QBrush(QColor(204, 204, 204)), |
|
41 10: QBrush(QColor(118, 118, 118)), |
|
42 11: QBrush(QColor(231, 72, 86)), |
|
43 12: QBrush(QColor(22, 198, 12)), |
|
44 13: QBrush(QColor(249, 241, 165)), |
|
45 14: QBrush(QColor(59, 12, 255)), |
|
46 15: QBrush(QColor(180, 0, 158)), |
|
47 16: QBrush(QColor(97, 214, 214)), |
|
48 17: QBrush(QColor(242, 242, 242)), |
|
49 }, |
|
50 "PuTTY": { |
|
51 0: QBrush(QColor(0, 0, 0)), |
|
52 1: QBrush(QColor(187, 0, 0)), |
|
53 2: QBrush(QColor(0, 187, 0)), |
|
54 3: QBrush(QColor(187, 187, 0)), |
|
55 4: QBrush(QColor(0, 0, 187)), |
|
56 5: QBrush(QColor(187, 0, 187)), |
|
57 6: QBrush(QColor(0, 187, 187)), |
|
58 7: QBrush(QColor(187, 187, 187)), |
|
59 10: QBrush(QColor(85, 85, 85)), |
|
60 11: QBrush(QColor(255, 85, 85)), |
|
61 12: QBrush(QColor(85, 255, 85)), |
|
62 13: QBrush(QColor(255, 255, 85)), |
|
63 14: QBrush(QColor(85, 85, 255)), |
|
64 15: QBrush(QColor(255, 85, 255)), |
|
65 16: QBrush(QColor(85, 255, 255)), |
|
66 17: QBrush(QColor(255, 255, 255)), |
|
67 }, |
|
68 "xterm": { |
|
69 0: QBrush(QColor(0, 0, 0)), |
|
70 1: QBrush(QColor(205, 0, 0)), |
|
71 2: QBrush(QColor(0, 205, 0)), |
|
72 3: QBrush(QColor(205, 205, 0)), |
|
73 4: QBrush(QColor(0, 0, 238)), |
|
74 5: QBrush(QColor(205, 0, 205)), |
|
75 6: QBrush(QColor(0, 205, 205)), |
|
76 7: QBrush(QColor(229, 229, 229)), |
|
77 10: QBrush(QColor(127, 127, 127)), |
|
78 11: QBrush(QColor(255, 0, 0)), |
|
79 12: QBrush(QColor(0, 255, 0)), |
|
80 13: QBrush(QColor(255, 255, 0)), |
|
81 14: QBrush(QColor(0, 0, 255)), |
|
82 15: QBrush(QColor(255, 0, 255)), |
|
83 16: QBrush(QColor(0, 255, 255)), |
|
84 17: QBrush(QColor(255, 255, 255)), |
|
85 }, |
|
86 "Ubuntu": { |
|
87 0: QBrush(QColor(1, 1, 1)), |
|
88 1: QBrush(QColor(222, 56, 43)), |
|
89 2: QBrush(QColor(57, 181, 74)), |
|
90 3: QBrush(QColor(255, 199, 6)), |
|
91 4: QBrush(QColor(0, 11, 184)), |
|
92 5: QBrush(QColor(118, 38, 113)), |
|
93 6: QBrush(QColor(44, 181, 233)), |
|
94 7: QBrush(QColor(204, 204, 204)), |
|
95 10: QBrush(QColor(128, 128, 128)), |
|
96 11: QBrush(QColor(255, 0, 0)), |
|
97 12: QBrush(QColor(0, 255, 0)), |
|
98 13: QBrush(QColor(255, 255, 0)), |
|
99 14: QBrush(QColor(0, 0, 255)), |
|
100 15: QBrush(QColor(255, 0, 255)), |
|
101 16: QBrush(QColor(0, 255, 255)), |
|
102 17: QBrush(QColor(255, 255, 255)), |
|
103 }, |
|
104 "Ubuntu (dark)": { |
|
105 0: QBrush(QColor(96, 96, 96)), |
|
106 1: QBrush(QColor(235, 58, 45)), |
|
107 2: QBrush(QColor(57, 181, 74)), |
|
108 3: QBrush(QColor(255, 199, 29)), |
|
109 4: QBrush(QColor(25, 56, 230)), |
|
110 5: QBrush(QColor(200, 64, 193)), |
|
111 6: QBrush(QColor(48, 200, 255)), |
|
112 7: QBrush(QColor(204, 204, 204)), |
|
113 10: QBrush(QColor(128, 128, 128)), |
|
114 11: QBrush(QColor(255, 0, 0)), |
|
115 12: QBrush(QColor(0, 255, 0)), |
|
116 13: QBrush(QColor(255, 255, 0)), |
|
117 14: QBrush(QColor(0, 0, 255)), |
|
118 15: QBrush(QColor(255, 0, 255)), |
|
119 16: QBrush(QColor(0, 255, 255)), |
|
120 17: QBrush(QColor(255, 255, 255)), |
|
121 }, |
|
122 "Breeze (dark)": { |
|
123 0: QBrush(QColor(35, 38, 39)), |
|
124 1: QBrush(QColor(237, 21, 21)), |
|
125 2: QBrush(QColor(17, 209, 22)), |
|
126 3: QBrush(QColor(246, 116, 0)), |
|
127 4: QBrush(QColor(29, 153, 243)), |
|
128 5: QBrush(QColor(155, 89, 182)), |
|
129 6: QBrush(QColor(26, 188, 156)), |
|
130 7: QBrush(QColor(252, 252, 252)), |
|
131 10: QBrush(QColor(127, 140, 141)), |
|
132 11: QBrush(QColor(192, 57, 43)), |
|
133 12: QBrush(QColor(28, 220, 154)), |
|
134 13: QBrush(QColor(253, 188, 75)), |
|
135 14: QBrush(QColor(61, 174, 233)), |
|
136 15: QBrush(QColor(142, 68, 173)), |
|
137 16: QBrush(QColor(22, 160, 133)), |
|
138 17: QBrush(QColor(255, 255, 255)), |
|
139 }, |
|
140 } |
|
141 |
|
142 |
|
143 def getAvailableColorSchemes(): |
|
144 """ |
|
145 Function to get a list of available color schemes. |
|
146 |
|
147 @return list containing the names of the supported color schemes |
|
148 @rtype list of str |
|
149 """ |
|
150 return list(_AnsiColorSchemes.keys()) |
|
151 |
|
152 |
|
153 def getColor(scheme, color): |
|
154 """ |
|
155 Function to get the brush for a given scheme and color. |
|
156 |
|
157 @paran scheme name of the color scheme |
|
158 @type str |
|
159 @param color ANSI color code |
|
160 @type int |
|
161 """ |
|
162 try: |
|
163 return _AnsiColorSchemes[scheme][color] |
|
164 except KeyError: |
|
165 return QBrush() |