-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcodeexportdialog.h
More file actions
88 lines (70 loc) · 2.19 KB
/
Copy pathcodeexportdialog.h
File metadata and controls
88 lines (70 loc) · 2.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#pragma once
#include <QDialog>
#include <QVector>
#include <QSyntaxHighlighter>
#include <QRegularExpression>
class Interpreter;
namespace Ui {
class CodeExportDialog;
}
class CodeHighlighter : public QSyntaxHighlighter {
Q_OBJECT
public:
CodeHighlighter(QTextDocument *parent = nullptr);
protected:
void highlightBlock(const QString &text) override;
private:
struct HighlightingRule {
QRegularExpression pattern;
QTextCharFormat format;
};
enum BlockState {
NormalState = -1,
InComment = 1,
InRawString = 2
};
void applyBasicHighlightingRules(const QString &text);
void handleRawStrings(const QString &text, int previousState);
void handleMultiLineComments(const QString &text, int previousState);
QVector<HighlightingRule> highlightingRules;
QTextCharFormat multiLineCommentFormat;
QRegularExpression commentStartExpression;
QRegularExpression commentEndExpression;
QTextCharFormat multiLineRawFormat;
QTextCharFormat rawContentFormat;
QRegularExpression rawStartExpression;
class RawStringUserData : public QTextBlockUserData {
public:
RawStringUserData(const QString& delim) : delimiter(delim) {}
QString delimiter;
};
};
class CodeExportDialog : public QDialog
{
Q_OBJECT
Q_DISABLE_COPY(CodeExportDialog)
public:
enum Mode { ExportMode, ImportMode };
Q_ENUM(Mode)
enum CodeMode { ContinuousCodeMode, PaddedCodeMode, PaddedVerticalCodeMode };
Q_ENUM(CodeMode)
enum ButtonName { BtnCopyPaste, BtnSaveLoad, BtnExitImport, BtnCopyPasteNotify, BtnImportNotify, WindowTitle };
explicit CodeExportDialog(Interpreter& interpreter, Mode mode, QWidget *parent = nullptr, CodeMode codemode = PaddedCodeMode);
~CodeExportDialog();
Mode mode() const { return m_mode; }
public:
void setMode(Mode mode);
void setCodeMode(CodeMode codemode);
private slots:
void onCopyPasteClicked();
void onSaveLoadClicked();
void onExitImportClicked();
private:
QString getUIElementName(ButtonName name);
private:
Ui::CodeExportDialog *ui;
Interpreter &interpreter;
Mode m_mode;
CodeMode m_codeMode;
CodeHighlighter *highlighter;
};