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
labelexpressiondialog.h
Go to the documentation of this file.
1
21#ifndef OPENSWMMVIS_UI_DIALOGS_LABELEXPRESSIONDIALOG_H
22#define OPENSWMMVIS_UI_DIALOGS_LABELEXPRESSIONDIALOG_H
23
25
26#include <QDialog>
27#include <QString>
28#include <QVariantMap>
29#include <QVector>
30
31class QDialogButtonBox;
32class QLabel;
33class QPlainTextEdit;
34class QTreeWidget;
35
36namespace openswmmvis::ui {
37
38class LabelExpressionDialog : public QDialog
39{
40 Q_OBJECT
41
42public:
49 const QVector<OpenSWMM::Render::AttributeField> &fields,
50 const QString &initial,
51 QWidget *parent = nullptr);
52
54 [[nodiscard]] QString expression() const;
55
62 void setSampleFeature(const QString &name, const QVariantMap &attrs);
63
64 // ── Pure logic, exposed for testing ────────────────────────────────
65
69 [[nodiscard]] static QString resolve(const QString &expr,
70 const QString &name,
71 const QVariantMap &attrs);
72
75 [[nodiscard]] static QStringList unknownTokens(
76 const QString &expr,
77 const QVector<OpenSWMM::Render::AttributeField> &fields);
78
79private:
80 void insertToken(const QString &token);
81 void refreshPreview();
82
83 QVector<OpenSWMM::Render::AttributeField> m_fields;
84 QString m_sampleName;
85 QVariantMap m_sampleAttrs;
86
87 QPlainTextEdit *m_edit = nullptr;
88 QTreeWidget *m_fieldTree = nullptr;
89 QLabel *m_preview = nullptr;
90 QLabel *m_status = nullptr;
91 QDialogButtonBox *m_buttons = nullptr;
92};
93
94} // namespace openswmmvis::ui
95
96#endif // OPENSWMMVIS_UI_DIALOGS_LABELEXPRESSIONDIALOG_H
Definition labelexpressiondialog.h:39
void setSampleFeature(const QString &name, const QVariantMap &attrs)
Sample values used by the preview, keyed by attribute name.
Definition labelexpressiondialog.cpp:178
static QString resolve(const QString &expr, const QString &name, const QVariantMap &attrs)
Definition labelexpressiondialog.cpp:192
QString expression() const
Definition labelexpressiondialog.cpp:173
static QStringList unknownTokens(const QString &expr, const QVector< OpenSWMM::Render::AttributeField > &fields)
Definition labelexpressiondialog.cpp:217
const char * token
Definition diagramspec.cpp:20
Layer-side seam for "what attributes can I theme by?" — Slice DM.1.
Definition openswmmvislayer.h:43
QVector< int > parent
union-find
Definition pslgminsize.cpp:176
QString name
Definition sectionmodelbuilders.cpp:474