SWMMVis  6.0.0-alpha.4
Qt6/C++ GIS-based graphical user interface for the SWMMVis engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
gwfexpressionedit.h
Go to the documentation of this file.
1
17#ifndef OPENSWMMVIS_UI_GWFEXPRESSIONEDIT_H
18#define OPENSWMMVIS_UI_GWFEXPRESSIONEDIT_H
19
20#include <QPalette>
21#include <QSet>
22#include <QStringList>
23#include <QSyntaxHighlighter>
24#include <QTextCharFormat>
25#include <QTextEdit>
26
27class QCompleter;
28
29namespace openswmmvis::ui {
30
32class GwfSyntaxHighlighter : public QSyntaxHighlighter
33{
34 Q_OBJECT
35
36public:
39 GwfSyntaxHighlighter(QTextDocument *doc, const QStringList &variables,
40 const QStringList &functions);
41
42 void setPalette(const QPalette &palette);
43
44protected:
45 void highlightBlock(const QString &text) override;
46
47private:
48 void rebuildFormats_();
49
50 QSet<QString> m_vars;
51 QSet<QString> m_funcs;
52 QPalette m_palette;
53 QTextCharFormat m_fmtVariable;
54 QTextCharFormat m_fmtFunction;
55 QTextCharFormat m_fmtOperator;
56 QTextCharFormat m_fmtNumber;
57 QTextCharFormat m_fmtUnknown;
58};
59
63class GwfExpressionEdit : public QTextEdit
64{
65 Q_OBJECT
66
67public:
68 explicit GwfExpressionEdit(void *engineHandle, QWidget *parent = nullptr);
69
70 [[nodiscard]] QString expression() const { return toPlainText(); }
71 void setExpression(const QString &text);
72
74 void validateNow();
75
77 [[nodiscard]] bool isValid() const { return m_valid; }
78
82 [[nodiscard]] QStringList variableNames() const { return m_varNames; }
83 [[nodiscard]] QStringList variableDescriptions() const { return m_varDescs; }
84 [[nodiscard]] QStringList functionNames() const { return m_funcNames; }
85
87 void insertAtCursor(const QString &text);
88
89signals:
93 void validationChanged(bool ok, const QString &msg, int col);
95
96protected:
97 void keyPressEvent(QKeyEvent *e) override;
98 void focusInEvent(QFocusEvent *e) override;
99
100private:
101 void loadVocabulary_();
102 void showCompleter_(const QString &prefix);
103 void insertCompletion_(const QString &completion);
104 [[nodiscard]] QString textUnderCursor_() const;
105
106 void *m_engine = nullptr;
107 GwfSyntaxHighlighter *m_highlighter = nullptr;
108 QCompleter *m_completer = nullptr;
109 class QTimer *m_debounce = nullptr;
110 bool m_valid = true;
111 QStringList m_varNames;
112 QStringList m_varDescs;
113 QStringList m_funcNames;
114};
115
116} // namespace openswmmvis::ui
117
118#endif // OPENSWMMVIS_UI_GWFEXPRESSIONEDIT_H
Definition gwfexpressionedit.h:64
void focusInEvent(QFocusEvent *e) override
Definition gwfexpressionedit.cpp:306
void editingFinished()
Enter/Return pressed (single-line commit)
QString expression() const
Definition gwfexpressionedit.h:70
void insertAtCursor(const QString &text)
Definition gwfexpressionedit.cpp:273
void keyPressEvent(QKeyEvent *e) override
Definition gwfexpressionedit.cpp:312
QStringList variableNames() const
Definition gwfexpressionedit.h:82
bool isValid() const
Definition gwfexpressionedit.h:77
void setExpression(const QString &text)
Definition gwfexpressionedit.cpp:248
void validateNow()
Definition gwfexpressionedit.cpp:254
QStringList variableDescriptions() const
Definition gwfexpressionedit.h:83
QStringList functionNames() const
Definition gwfexpressionedit.h:84
void validationChanged(bool ok, const QString &msg, int col)
Palette-driven highlighter for one [GWF] expression line.
Definition gwfexpressionedit.h:33
void highlightBlock(const QString &text) override
Definition gwfexpressionedit.cpp:102
void setPalette(const QPalette &palette)
Definition gwfexpressionedit.cpp:62
int e
Definition inpmeshreader.cpp:41
bool ok
Definition inpmeshwriter.cpp:575
Definition openswmmvislayer.h:43
QVector< int > parent
union-find
Definition pslgminsize.cpp:176
QString text
Definition queryparser.cpp:35