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
transecteditordialog.h
Go to the documentation of this file.
1
37#ifndef OPENSWMMVIS_UI_DIALOGS_TRANSECTEDITORDIALOG_H
38#define OPENSWMMVIS_UI_DIALOGS_TRANSECTEDITORDIALOG_H
39
40#include <QDialog>
41#include <QPointer>
42
43class QDoubleSpinBox;
44class QLabel;
45class QLineEdit;
46class QListView;
47class QPushButton;
48class QSplitter;
49class QAction;
50class QStatusBar;
51class QTableView;
52class QTextEdit;
53class QToolBar;
54class QTreeView;
55class QUndoStack;
56
57class SWMMModelLayer;
58
59namespace openswmmvis::transect {
60class TransectProvider;
61class TransectRegistry;
62}
63
64namespace openswmmvis::ui {
65
66class TransectListModel;
67class TransectStationTableModel;
68class TransectChartView;
69
70class TransectEditorDialog : public QDialog
71{
72 Q_OBJECT
73public:
74 enum class Mode { Edit, CreateNew };
75 Q_ENUM(Mode)
76
78 SWMMModelLayer *layer,
79 QUndoStack *undoStack,
80 QWidget *parent = nullptr);
82
85 SWMMModelLayer *layer,
86 QUndoStack *undoStack,
87 QWidget *parent = nullptr);
88
96 static QString pickTransect(
98 SWMMModelLayer *layer,
99 QUndoStack *undoStack,
100 const QString &initialName,
101 QWidget *parent = nullptr);
102
103 void openForTransect(const QString &name);
104
105 Mode mode() const noexcept { return m_mode; }
107
108 // ── Test hooks ──────────────────────────────────────────────────────────
109
110 QListView *listView() const noexcept { return m_listView; }
111 QTableView *stationTable() const noexcept { return m_table; }
112 TransectChartView *chartView() const noexcept { return m_chartView; }
113 QTreeView *propertyTree() const noexcept { return m_propertyTree; }
114 TransectListModel *listModel() const noexcept { return m_listModel; }
115 TransectStationTableModel *tableModel() const noexcept { return m_tableModel; }
116 QLineEdit *nameEdit() const noexcept { return m_nameEdit; }
117 QTextEdit *commentsEdit() const noexcept { return m_commentsEdit; }
118
120 void invokeNew();
121
124
125 bool renameCurrent(const QString &newName);
126
127private slots:
128 void onListSelectionChanged_();
129 void onAddTransectClicked_();
130 void onDeleteTransectClicked_();
131 void onAddRowClicked_();
132 void onDeleteRowsClicked_();
133 void onNameEdited_();
134 void onCommentsEdited_();
135 void onProviderAdded_(openswmmvis::transect::TransectProvider *p);
136 void onProviderRemoved_(openswmmvis::transect::TransectProvider *p);
137 void onProviderRenamed_(openswmmvis::transect::TransectProvider *p,
138 const QString &prev, const QString &now);
139 void onMutationRejected_(const QString &reason);
140 void onChartContextMenu_(const QPoint &globalPos);
141 void onZoomToExtentClicked_();
142 void onZoomInClicked_();
143 void onZoomOutClicked_();
144 void onPanToggled_(bool on);
145 void onEditPointsToggled_(bool on);
146 void onInsertVertexToggled_(bool on);
147 void onDeleteVertexToggled_(bool on);
148 void onChartPropertiesClicked_();
149 void onCopyDataClicked_();
150 void onExportChartClicked_();
151 void onChartHandleClicked_(int index, Qt::KeyboardModifiers mods);
152 void onChartInsertRequested_(double station, double elevation);
153 void onChartDeleteRequested_(int index);
154 void onTableSelectionChanged_();
155
156private:
157 void buildUi_();
158 void buildToolbar_();
159 void bindProvider_(openswmmvis::transect::TransectProvider *p);
160 void selectProviderInList_(openswmmvis::transect::TransectProvider *p);
161 void refreshPropertyBag_();
162 void rebuildPropertyTree_();
163 void updateStatusBar_();
164 QString suggestUniqueName_() const;
165
166 QPointer<openswmmvis::transect::TransectRegistry> m_registry;
167 QPointer<SWMMModelLayer> m_layer;
168 QUndoStack *m_undoStack = nullptr;
169 QPointer<openswmmvis::transect::TransectProvider> m_current;
170 Mode m_mode = Mode::Edit;
171
172 // Layout
173 QSplitter *m_splitter = nullptr;
174
175 // Left pane.
176 QListView *m_listView = nullptr;
177 TransectListModel *m_listModel = nullptr;
178 QPushButton *m_addBtn = nullptr;
179 QPushButton *m_delBtn = nullptr;
180
181 // Middle pane.
182 QLineEdit *m_nameEdit = nullptr;
183 QTextEdit *m_commentsEdit = nullptr;
184 QTreeView *m_propertyTree = nullptr;
185 QObject *m_propertyBag = nullptr;
186 QTableView *m_table = nullptr;
187 TransectStationTableModel *m_tableModel = nullptr;
188 QPushButton *m_addRowBtn = nullptr;
189 QPushButton *m_delRowBtn = nullptr;
190
191 // Right pane.
192 QToolBar *m_toolBar = nullptr;
193 QAction *m_panAction = nullptr;
194 QAction *m_editAction = nullptr;
195 QAction *m_insertVertexAction = nullptr;
196 QAction *m_deleteVertexAction = nullptr;
197 TransectChartView *m_chartView = nullptr;
198 QStatusBar *m_status = nullptr;
199 QLabel *m_countLabel = nullptr;
200
201 bool m_suppressPropertyRefresh = false;
202 bool m_suppressTableSelectionSync = false;
203 bool m_suppressChartSelectionSync = false;
204};
205
206} // namespace openswmmvis::ui
207
208#endif // OPENSWMMVIS_UI_DIALOGS_TRANSECTEDITORDIALOG_H
Renders the SWMM network elements (nodes, links, subcatchments, rain gages) for one OpenSWMMEngine mo...
Definition swmmmodellayer.h:133
Definition transectprovider.h:42
Definition transectregistry.h:25
Definition transectchartview.h:53
Definition transecteditordialog.h:71
QTextEdit * commentsEdit() const noexcept
Definition transecteditordialog.h:117
void openForTransect(const QString &name)
Definition transecteditordialog.cpp:113
TransectListModel * listModel() const noexcept
Definition transecteditordialog.h:114
static TransectEditorDialog * createNew(openswmmvis::transect::TransectRegistry *registry, SWMMModelLayer *layer, QUndoStack *undoStack, QWidget *parent=nullptr)
Definition transecteditordialog.cpp:101
static QString pickTransect(openswmmvis::transect::TransectRegistry *registry, SWMMModelLayer *layer, QUndoStack *undoStack, const QString &initialName, QWidget *parent=nullptr)
Modal pick / create / edit entry point — mirrors TimeseriesEditorDialog::pickTimeseries....
Definition transecteditordialog.cpp:128
openswmmvis::transect::TransectProvider * currentProvider() const noexcept
Definition transecteditordialog.cpp:123
void invokeNew()
Reveal the create-card (mirrors the "+ New" button).
Definition transecteditordialog.cpp:640
QTableView * stationTable() const noexcept
Definition transecteditordialog.h:111
TransectStationTableModel * tableModel() const noexcept
Definition transecteditordialog.h:115
void deleteCurrentSilently()
Bypass the confirm dialog.
Definition transecteditordialog.cpp:671
Mode mode() const noexcept
Definition transecteditordialog.h:105
TransectChartView * chartView() const noexcept
Definition transecteditordialog.h:112
QListView * listView() const noexcept
Definition transecteditordialog.h:110
QLineEdit * nameEdit() const noexcept
Definition transecteditordialog.h:116
QTreeView * propertyTree() const noexcept
Definition transecteditordialog.h:113
bool renameCurrent(const QString &newName)
Definition transecteditordialog.cpp:620
Mode
Definition transecteditordialog.h:74
Definition transectlistmodel.h:27
Definition transectstationtablemodel.h:24
ArrowPlacement p
Definition linesymbollayer.cpp:27
int index
Position in m_quadRegions / m_quadReports.
Definition meshgenerator.cpp:153
Definition transectprovider.h:33
Definition openswmmvislayer.h:43
QVector< int > parent
union-find
Definition pslgminsize.cpp:176
QString name
Definition sectionmodelbuilders.cpp:474