|
44 | 44 | : QSyntaxHighlighter(parent) |
45 | 45 | { |
46 | 46 | //setting up text formats |
47 | | - keywordFormat.setForeground(Qt::blue); |
48 | | - keywordFormat.setFontWeight(QFont::Bold); |
| 47 | + names << "keywords" << "registers" << "numbers" << "memory" << |
| 48 | + "labels" << "comments" << "system" << "iomacro" << |
| 49 | + "quotation"; |
| 50 | + defaultColors << QColor(Qt::blue) << QColor(153, 0, 204) << //according to colorNames |
| 51 | + QColor(255, 122, 0) << QColor(0, 128, 255) << |
| 52 | + QColor(128, 0, 0) << QColor(Qt::darkGreen) << |
| 53 | + QColor(Qt::darkCyan) << QColor(Qt::blue) << |
| 54 | + QColor(128, 128, 128); |
49 | 55 |
|
50 | | - registerFormat.setForeground(QColor(153, 0, 204)); |
51 | | - |
52 | | - labelWithDotFormat.setForeground(Qt::black); |
53 | | - |
54 | | - labelFormat.setForeground(QColor(128, 0, 0)); |
55 | | - |
56 | | - commentFormat.setForeground(Qt::darkGreen); |
57 | | - |
58 | | - quotationFormat.setForeground(QColor(128, 128, 128)); |
59 | | - |
60 | | - memoryFormat.setForeground(QColor(0, 128, 255)); |
61 | | - |
62 | | - systemFormat.setForeground(Qt::darkCyan); |
63 | | - |
64 | | - numberFormat.setForeground(QColor(255, 122, 0)); |
65 | | - |
66 | | - iomacrosFormat.setForeground(Qt::blue); |
| 56 | + formats << &keywordFormat << ®isterFormat << &numberFormat << &memoryFormat << |
| 57 | + &labelFormat << &commentFormat << &systemFormat << &iomacrosFormat << |
| 58 | + "ationFormat; |
67 | 59 |
|
| 60 | + QSettings settings("SASM Project", "SASM"); |
| 61 | + for (int i = 0; i < formats.size(); i++) { |
| 62 | + formats[i]->setForeground(settings.value(names[i] + "color", defaultColors[i]).value<QColor>()); |
| 63 | + formats[i]->setBackground(settings.value(names[i] + "colorbg", QPalette().color(QPalette::Base)).value<QColor>()); |
| 64 | + if (settings.value(names[i] + "bold", (i == 0) ? true : false).toBool()) |
| 65 | + formats[i]->setFontWeight(QFont::Bold); |
| 66 | + formats[i]->setFontItalic(settings.value(names[i] + "italic", false).toBool()); |
| 67 | + } |
| 68 | + labelWithDotFormat = this->format(0); |
68 | 69 |
|
69 | 70 | //setting up regular expressions |
70 | 71 | HighlightingRule rule; |
|
207 | 208 | highlightingRules.append(rule); |
208 | 209 |
|
209 | 210 | //labels |
210 | | - rule.pattern = QRegExp("\\..+"); |
211 | | - rule.format = labelWithDotFormat; |
212 | | - highlightingRules.append(rule); |
213 | | - |
214 | 211 | rule.pattern = QRegExp("\\S+:"); |
215 | 212 | rule.format = labelFormat; |
216 | 213 | highlightingRules.append(rule); |
217 | 214 |
|
218 | | - //quotations |
219 | | - rule.pattern = QRegExp("\".*\""); |
220 | | - rule.format = quotationFormat; |
221 | | - highlightingRules.append(rule); |
222 | | - |
223 | | - rule.pattern = QRegExp("'.*'"); |
224 | | - highlightingRules.append(rule); |
225 | | - |
226 | 215 | //numbers |
227 | 216 | rule.format = numberFormat; |
228 | 217 | rule.pattern = QRegExp("\\b\\d+[bod]?\\b"); |
|
251 | 240 | highlightingRules.append(rule); |
252 | 241 | } |
253 | 242 |
|
| 243 | + //.labels and numbers with point |
| 244 | + rule.pattern = QRegExp("\\..+"); |
| 245 | + rule.format = labelWithDotFormat; |
| 246 | + highlightingRules.append(rule); |
| 247 | + rule.pattern = QRegExp("\\b\\d+\\.\\d+\\b"); |
| 248 | + rule.format = numberFormat; |
| 249 | + highlightingRules.append(rule); |
| 250 | + |
254 | 251 | //system instructions and preprocessor commands |
255 | 252 | rule.format = systemFormat; |
256 | 253 | QStringList systemPatterns; |
|
268 | 265 | highlightingRules.append(rule); |
269 | 266 | } |
270 | 267 |
|
| 268 | + //quotations |
| 269 | + rule.pattern = QRegExp("\".*\""); |
| 270 | + rule.format = quotationFormat; |
| 271 | + highlightingRules.append(rule); |
| 272 | + |
| 273 | + rule.pattern = QRegExp("'.*'"); |
| 274 | + highlightingRules.append(rule); |
| 275 | + |
271 | 276 | //comments |
272 | 277 | rule.pattern = QRegExp(";[^\n]*"); |
273 | 278 | rule.format = commentFormat; |
|
0 commit comments