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
streeteditordialog.h
Go to the documentation of this file.
1
31#ifndef OPENSWMMVIS_UI_DIALOGS_STREETEDITORDIALOG_H
32#define OPENSWMMVIS_UI_DIALOGS_STREETEDITORDIALOG_H
33
34#include <QDialog>
35#include <QPointer>
36#include <QWidget>
37
38class QDoubleSpinBox;
39class QLabel;
40class QLineEdit;
41class QListView;
42class QPushButton;
43class QRadioButton;
44class QSplitter;
45
46class SWMMModelLayer;
47
48namespace openswmmvis::street {
49class StreetProvider;
50class StreetRegistry;
51}
52
53namespace openswmmvis::ui {
54
55class StreetListModel;
56
60class StreetSectionPreview : public QWidget
61{
62public:
63 explicit StreetSectionPreview(QWidget *parent = nullptr);
65
66protected:
67 void paintEvent(QPaintEvent *event) override;
68
69private:
70 QPointer<openswmmvis::street::StreetProvider> m_provider;
71};
72
73class StreetEditorDialog : public QDialog
74{
75 Q_OBJECT
76public:
77 enum class Mode { Edit, CreateNew };
78 Q_ENUM(Mode)
79
81 SWMMModelLayer *layer,
82 QWidget *parent = nullptr);
84
87 SWMMModelLayer *layer,
88 QWidget *parent = nullptr);
89
95 static QString pickStreet(
97 SWMMModelLayer *layer,
98 const QString &initialName,
99 QWidget *parent = nullptr);
100
101 Mode mode() const noexcept { return m_mode; }
103
104 // ── Test hooks ──────────────────────────────────────────────────────────
105 QListView *listView() const noexcept { return m_listView; }
106 StreetListModel *listModel() const noexcept { return m_listModel; }
107 QLineEdit *nameEdit() const noexcept { return m_nameEdit; }
108
109 void invokeNew();
111 bool renameCurrent(const QString &newName);
112
113private slots:
114 void onListSelectionChanged_();
115 void onAddStreetClicked_();
116 void onDeleteStreetClicked_();
117 void onNameEdited_();
118 void onFieldEdited_();
119 void onSidesToggled_();
120 void onProviderAdded_(openswmmvis::street::StreetProvider *p);
121 void onProviderRenamed_(openswmmvis::street::StreetProvider *p,
122 const QString &prev, const QString &now);
123
124private:
125 void buildUi_();
126 void bindProvider_(openswmmvis::street::StreetProvider *p);
127 void selectProviderInList_(openswmmvis::street::StreetProvider *p);
128 QString suggestUniqueName_() const;
129
130 QPointer<openswmmvis::street::StreetRegistry> m_registry;
131 QPointer<SWMMModelLayer> m_layer;
132 QPointer<openswmmvis::street::StreetProvider> m_current;
133 Mode m_mode = Mode::Edit;
134
135 QSplitter *m_splitter = nullptr;
136
137 // Left pane.
138 QListView *m_listView = nullptr;
139 StreetListModel *m_listModel = nullptr;
140 QPushButton *m_addBtn = nullptr;
141 QPushButton *m_delBtn = nullptr;
142
143 // Middle pane (field form).
144 QLineEdit *m_nameEdit = nullptr;
145 QDoubleSpinBox *m_crownWidthSpin = nullptr;
146 QDoubleSpinBox *m_curbHeightSpin = nullptr;
147 QDoubleSpinBox *m_crossSlopeSpin = nullptr;
148 QDoubleSpinBox *m_roadRoughSpin = nullptr;
149 QDoubleSpinBox *m_gutterDepSpin = nullptr;
150 QDoubleSpinBox *m_gutterWidthSpin = nullptr;
151 QRadioButton *m_oneSidedRadio = nullptr;
152 QRadioButton *m_twoSidedRadio = nullptr;
153 QDoubleSpinBox *m_backWidthSpin = nullptr;
154 QDoubleSpinBox *m_backSlopeSpin = nullptr;
155 QDoubleSpinBox *m_backRoughSpin = nullptr;
156
157 // Right pane.
158 StreetSectionPreview *m_preview = nullptr;
159
160 bool m_suppressFieldSync = false;
161};
162
163} // namespace openswmmvis::ui
164
165#endif // OPENSWMMVIS_UI_DIALOGS_STREETEDITORDIALOG_H
Renders the SWMM network elements (nodes, links, subcatchments, rain gages) for one OpenSWMMEngine mo...
Definition swmmmodellayer.h:133
Definition streetprovider.h:30
Definition streetregistry.h:25
Definition streeteditordialog.h:74
QLineEdit * nameEdit() const noexcept
Definition streeteditordialog.h:107
static QString pickStreet(openswmmvis::street::StreetRegistry *registry, SWMMModelLayer *layer, const QString &initialName, QWidget *parent=nullptr)
Modal pick / create / edit entry point — mirrors TransectEditorDialog::pickTransect....
Definition streeteditordialog.cpp:482
void deleteCurrentSilently()
Definition streeteditordialog.cpp:396
openswmmvis::street::StreetProvider * currentProvider() const noexcept
Definition streeteditordialog.cpp:188
Mode mode() const noexcept
Definition streeteditordialog.h:101
Mode
Definition streeteditordialog.h:77
static StreetEditorDialog * createNew(openswmmvis::street::StreetRegistry *registry, SWMMModelLayer *layer, QWidget *parent=nullptr)
Definition streeteditordialog.cpp:471
bool renameCurrent(const QString &newName)
Definition streeteditordialog.cpp:420
void invokeNew()
Definition streeteditordialog.cpp:462
StreetListModel * listModel() const noexcept
Definition streeteditordialog.h:106
QListView * listView() const noexcept
Definition streeteditordialog.h:105
Definition streetlistmodel.h:27
Lightweight schematic preview of a street cross-section. Draws the road crown, curb,...
Definition streeteditordialog.h:61
void paintEvent(QPaintEvent *event) override
Definition streeteditordialog.cpp:61
void setProvider(openswmmvis::street::StreetProvider *p)
Definition streeteditordialog.cpp:50
ArrowPlacement p
Definition linesymbollayer.cpp:27
Definition streetprovider.h:27
Definition openswmmvislayer.h:43
QVector< int > parent
union-find
Definition pslgminsize.cpp:176