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
treatmentexpressionedit.h
Go to the documentation of this file.
1
19#ifndef OPENSWMMVIS_UI_TREATMENTEXPRESSIONEDIT_H
20#define OPENSWMMVIS_UI_TREATMENTEXPRESSIONEDIT_H
21
22#include <QPalette>
23#include <QStringList>
24#include <QStyledItemDelegate>
25#include <QSyntaxHighlighter>
26#include <QTextCharFormat>
27#include <QTextEdit>
28
29class QCompleter;
30
31namespace openswmmvis::ui {
32
34class TreatmentSyntaxHighlighter : public QSyntaxHighlighter
35{
36 Q_OBJECT
37
38public:
39 explicit TreatmentSyntaxHighlighter(QTextDocument *doc);
40
41 static QStringList variableNames();
42 static QStringList functionNames();
43 static QStringList allKeywords();
44
45 void setPalette(const QPalette &palette);
46
47protected:
48 void highlightBlock(const QString &text) override;
49
50private:
51 void rebuildFormats_();
52
53 QPalette m_palette;
54 QTextCharFormat m_fmtVariable;
55 QTextCharFormat m_fmtFunction;
56 QTextCharFormat m_fmtOperator;
57 QTextCharFormat m_fmtNumber;
58 QTextCharFormat m_fmtUnknown;
59};
60
64class TreatmentExpressionEdit : public QTextEdit
65{
66 Q_OBJECT
67
68public:
69 explicit TreatmentExpressionEdit(void *engineHandle,
70 QWidget *parent = nullptr);
71
72 [[nodiscard]] QString expression() const { return toPlainText(); }
73 void setExpression(const QString &text);
74
76 void validateNow();
77
78signals:
82 void validationChanged(bool ok, const QString &msg, int col);
84
85protected:
86 void keyPressEvent(QKeyEvent *e) override;
87 void focusInEvent(QFocusEvent *e) override;
88
89private:
90 void showCompleter_(const QString &prefix);
91 void insertCompletion_(const QString &completion);
92 [[nodiscard]] QString textUnderCursor_() const;
93
94 void *m_engine = nullptr;
95 TreatmentSyntaxHighlighter *m_highlighter = nullptr;
96 QCompleter *m_completer = nullptr;
97 class QTimer *m_debounce = nullptr;
98};
99
103class TreatmentExpressionDelegate : public QStyledItemDelegate
104{
105 Q_OBJECT
106
107public:
108 explicit TreatmentExpressionDelegate(void *engineHandle,
109 QObject *parent = nullptr);
110
111 QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option,
112 const QModelIndex &index) const override;
113 void setEditorData(QWidget *editor, const QModelIndex &index) const override;
114 void setModelData(QWidget *editor, QAbstractItemModel *model,
115 const QModelIndex &index) const override;
116
117signals:
118 void validationChanged(bool ok, const QString &msg, int col) const;
119
120private:
121 void *m_engine = nullptr;
122};
123
124} // namespace openswmmvis::ui
125
126#endif // OPENSWMMVIS_UI_TREATMENTEXPRESSIONEDIT_H
Definition treatmentexpressionedit.h:104
void setEditorData(QWidget *editor, const QModelIndex &index) const override
Definition treatmentexpressionedit.cpp:335
void validationChanged(bool ok, const QString &msg, int col) const
QWidget * createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override
Definition treatmentexpressionedit.cpp:319
void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override
Definition treatmentexpressionedit.cpp:345
Definition treatmentexpressionedit.h:65
void validateNow()
Definition treatmentexpressionedit.cpp:211
void focusInEvent(QFocusEvent *e) override
Definition treatmentexpressionedit.cpp:257
void keyPressEvent(QKeyEvent *e) override
Definition treatmentexpressionedit.cpp:263
void setExpression(const QString &text)
Definition treatmentexpressionedit.cpp:205
void validationChanged(bool ok, const QString &msg, int col)
void editingFinished()
Enter/Return pressed (single-line commit)
QString expression() const
Definition treatmentexpressionedit.h:72
Palette-driven highlighter for one treatment expression line.
Definition treatmentexpressionedit.h:35
static QStringList allKeywords()
variables + functions
Definition treatmentexpressionedit.cpp:43
void setPalette(const QPalette &palette)
Definition treatmentexpressionedit.cpp:54
void highlightBlock(const QString &text) override
Definition treatmentexpressionedit.cpp:94
static QStringList variableNames()
C R DT HRT Q V D AREA.
Definition treatmentexpressionedit.cpp:27
static QStringList functionNames()
exp log ln sqrt min max abs sgn step
Definition treatmentexpressionedit.cpp:34
int e
Definition inpmeshreader.cpp:41
bool ok
Definition inpmeshwriter.cpp:575
int index
Position in m_quadRegions / m_quadReports.
Definition meshgenerator.cpp:153
Definition openswmmvislayer.h:43
QVector< int > parent
union-find
Definition pslgminsize.cpp:176
QString text
Definition queryparser.cpp:35