154 static constexpr int DefaultMaxUndoCount = 50;
206 QUndoCommand *
parent =
nullptr);
208 void undo()
override;
209 void redo()
override;
214 bool mergeWith(
const QUndoCommand *other)
override;
215 int id()
const override {
return 1; }
230 const QString &newAuthCode,
232 QUndoCommand *
parent =
nullptr);
234 void undo()
override;
235 void redo()
override;
238 QString m_oldAuthCode;
239 QString m_newAuthCode;
240 bool m_firstRedo =
true;
251 QUndoCommand *
parent =
nullptr);
253 void undo()
override;
254 void redo()
override;
269 QUndoCommand *
parent =
nullptr);
271 void undo()
override;
272 void redo()
override;
287 QUndoCommand *
parent =
nullptr);
289 void undo()
override;
290 void redo()
override;
310 void undo()
override;
311 void redo()
override;
351 double oldX,
double oldY,
352 double newX,
double newY,
353 QVector<LengthRec> lengthRecs,
355 QUndoCommand *
parent =
nullptr);
357 void undo()
override;
358 void redo()
override;
360 int id()
const override {
return 10; }
361 bool mergeWith(
const QUndoCommand *other)
override;
370 QVector<LengthRec> m_lengthRecs;
388 double oldX,
double oldY,
389 double newX,
double newY,
391 QUndoCommand *
parent =
nullptr);
393 void undo()
override;
394 void redo()
override;
396 int id()
const override {
return 14; }
397 bool mergeWith(
const QUndoCommand *other)
override;
422 QVector<QPointF> oldInterior,
423 QVector<QPointF> newInterior,
426 bool autoLengthApplied,
428 QUndoCommand *
parent =
nullptr);
430 void undo()
override;
431 void redo()
override;
433 int id()
const override {
return 11; }
438 QVector<QPointF> m_oldInterior;
439 QVector<QPointF> m_newInterior;
440 double m_oldLen = 0.0;
441 double m_newLen = 0.0;
442 bool m_autoLengthApplied =
false;
458 QUndoCommand *
parent =
nullptr);
460 void undo()
override;
461 void redo()
override;
463 int id()
const override {
return 13; }
479 QVector<QPointF> oldVertices,
480 QVector<QPointF> newVertices,
485 QUndoCommand *
parent =
nullptr);
487 void undo()
override;
488 void redo()
override;
490 int id()
const override {
return 12; }
495 QVector<QPointF> m_old;
496 QVector<QPointF> m_new;
497 double m_oldArea = 0.0;
498 double m_newArea = 0.0;
499 bool m_applyArea=
false;
530 double invertElev = 0.0,
531 QUndoCommand *
parent =
nullptr);
533 void undo()
override;
534 void redo()
override;
536 int id()
const override {
return 12; }
544 double m_invertElev = 0.0;
545 bool m_present =
false;
568 QVector<QPointF> interiorVertices,
570 double offsetUp = 0.0,
571 double offsetDn = 0.0,
572 QUndoCommand *
parent =
nullptr);
574 void undo()
override;
575 void redo()
override;
576 int id()
const override {
return 13; }
584 QVector<QPointF> m_interiorVertices;
585 double m_offsetUp = 0.0;
586 double m_offsetDn = 0.0;
587 bool m_present =
false;
602 QUndoCommand *
parent =
nullptr);
604 void undo()
override;
605 void redo()
override;
606 int id()
const override {
return 14; }
611 double m_x = 0, m_y = 0;
612 bool m_present =
false;
624 QVector<QPointF> polygon,
626 QUndoCommand *
parent =
nullptr);
628 void undo()
override;
629 void redo()
override;
630 int id()
const override {
return 15; }
635 QVector<QPointF> m_polygon;
636 bool m_present =
false;
637 int m_subcatchIdx = -1;
658 QStringList subcatchNames,
659 QStringList newGages,
660 QStringList oldGages,
663 QUndoCommand *
parent =
nullptr);
665 void undo()
override;
666 void redo()
override;
667 int id()
const override {
return 47; }
671 void apply(
const QStringList &gages);
674 QStringList m_subcatchNames;
675 QStringList m_newGages;
676 QStringList m_oldGages;
705 const QString &gageName,
713 QUndoCommand *
parent =
nullptr);
715 void undo()
override;
716 void redo()
override;
717 int id()
const override {
return 48; }
720 void apply(
const Config &c);
752 QUndoCommand *
parent =
nullptr)
753 : QUndoCommand(
text,
parent), m_layer(layer) {}
758 QUndoCommand::redo();
764 QUndoCommand::undo();
768 QPointer<SWMMModelLayer> m_layer;
787 QUndoCommand *
parent =
nullptr);
794 void undo()
override;
795 void redo()
override;
796 int id()
const override {
return 16; }
799 void snapshotNode(
const QString &
name);
800 void snapshotLink(
const QString &
name);
801 void snapshotGage(
const QString &
name);
802 void snapshotSubcatch(
const QString &
name);
806 void restoreSubcatch();
810 bool m_engineAppliedByBatch =
false;
812 QVector<LinkSnapshot> m_cascadeLinks;
839 void redo()
override;
842 QPointer<SWMMModelLayer> m_layer;
843 QStringList m_nodeNames, m_linkNames, m_subcatchNames, m_gageNames;
871 QUndoCommand *
parent =
nullptr);
873 void undo()
override;
874 void redo()
override;
875 int id()
const override {
return 17; }
881 void snapshotCurve();
void restoreCurve();
882 void snapshotTimeSeries();
void restoreTimeSeries();
883 void snapshotTransect();
void restoreTransect();
887 bool m_captured =
false;
890 int m_curveType = -1;
891 QVector<QPointF> m_curvePoints;
894 QString m_tsUnits, m_tsDescription;
895 int m_tsSourceMode = 0;
896 QString m_tsFilePath, m_tsColumnSelector;
897 QDateTime m_tsFileMTime;
898 QVector<QPair<QDateTime, double>> m_tsPoints;
901 QString m_txComments;
902 double m_txNLeft = 0, m_txNRight = 0, m_txNChannel = 0;
903 double m_txXLeftBank = 0, m_txXRightBank = 0;
904 double m_txXLeftEncroach = 0, m_txXRightEncroach = 0;
905 double m_txXFactor = 1, m_txYFactor = 1, m_txLengthFactor = 1;
906 QVector<QPair<double, double>> m_txPoints;
918 QList<OpenSWMMVisLayer *> newOrder,
920 QUndoCommand *
parent =
nullptr);
921 void undo()
override;
922 void redo()
override;
925 QList<OpenSWMMVisLayer *> m_oldOrder;
926 QList<OpenSWMMVisLayer *> m_newOrder;
927 bool m_firstRedo =
true;
942 QVector<SWMMModelLayer::Category> oldOrder,
943 QVector<SWMMModelLayer::Category> newOrder,
944 QUndoCommand *
parent =
nullptr);
945 void undo()
override;
946 void redo()
override;
950 QVector<SWMMModelLayer::Category> m_oldOrder;
951 QVector<SWMMModelLayer::Category> m_newOrder;
952 bool m_firstRedo =
true;
967 QVector<int> oldOrder,
968 QVector<int> newOrder,
969 QUndoCommand *
parent =
nullptr);
970 void undo()
override;
971 void redo()
override;
976 QVector<int> m_oldOrder;
977 QVector<int> m_newOrder;
978 bool m_firstRedo =
true;
1003 QUndoCommand *
parent =
nullptr);
1006 void undo()
override;
1007 void redo()
override;
1008 int id()
const override {
return 21; }
1014 bool m_present =
false;
1029 QString linkName,
double t,
1030 QString
nodeName, QString newLinkName,
1032 QUndoCommand *
parent =
nullptr);
1034 void undo()
override;
1035 void redo()
override;
1036 int id()
const override {
return 22; }
1043 QString m_newLinkName;
1044 bool m_present =
false;
1062 QString linkName,
double t,
1063 QString
nodeName, QString newLinkName,
1065 QUndoCommand *
parent =
nullptr);
1067 void undo()
override;
1068 void redo()
override;
1069 int id()
const override {
return 27; }
1076 QString m_newLinkName;
1077 bool m_present =
false;
1102 QString linkName,
double t,
1103 QString
nodeName, QString newLinkName,
1106 QUndoCommand *
parent =
nullptr);
1108 void undo()
override;
1109 void redo()
override;
1110 int id()
const override {
return 49; }
1114 [[nodiscard]] QStringList
warnings()
const {
return m_warnings; }
1117 [[nodiscard]]
bool retyped()
const {
return m_retyped; }
1124 QString m_newLinkName;
1126 bool m_present =
false;
1127 bool m_retyped =
false;
1128 QStringList m_warnings;
1146 QUndoCommand *
parent =
nullptr);
1148 void undo()
override;
1149 void redo()
override;
1150 int id()
const override {
return 23; }
1159 QString m_upLinkName;
1160 QString m_dnLinkName;
1162 double m_invert = 0.0;
1163 double m_x = 0.0, m_y = 0.0;
1164 bool m_valid =
false;
1165 bool m_present =
false;
1185 const SWMM_InletUsage &newUsage,
1188 QUndoCommand *
parent =
nullptr);
1190 void undo()
override;
1191 void redo()
override;
1192 int id()
const override {
return 24; }
1196 SWMM_InletUsage m_new{};
1197 SWMM_InletUsage m_old{};
1198 bool m_removing =
false;
1199 bool m_hadOld =
false;
1214 QString linkName,
double t,
1215 QString
nodeName, QString newLinkName,
1216 QString inletId, QString captureNode,
1218 QUndoCommand *
parent =
nullptr);
1220 void undo()
override;
1221 void redo()
override;
1222 int id()
const override {
return 25; }
1229 QString m_newLinkName;
1231 QString m_captureNode;
1232 bool m_present =
false;
1250 QUndoCommand *
parent =
nullptr);
1252 void undo()
override;
1253 void redo()
override;
1254 int id()
const override {
return 26; }
1263 QString m_upLinkName;
1264 QString m_dnLinkName;
1266 double m_invert = 0.0;
1267 double m_x = 0.0, m_y = 0.0;
1269 QString m_captureNode;
1270 SWMM_InletUsage m_usage{};
1271 bool m_valid =
false;
1272 bool m_present =
false;
Records the placement of a single text annotation.
Definition mapundostack.h:995
~AddAnnotationCommand() override
Definition mapundostack.cpp:1204
void undo() override
Definition mapundostack.cpp:1226
int id() const override
Definition mapundostack.h:1008
void redo() override
Definition mapundostack.cpp:1213
Records the creation of a rain gage.
Definition mapundostack.h:596
int id() const override
Definition mapundostack.h:606
void undo() override
Definition mapundostack.cpp:714
void redo() override
Definition mapundostack.cpp:704
Records adding a layer to the canvas layer stack.
Definition mapundostack.h:248
void undo() override
Definition mapundostack.cpp:182
void redo() override
Definition mapundostack.cpp:194
Records the creation of a SWMM link (conduit/pump/orifice/weir/outlet).
Definition mapundostack.h:555
void redo() override
Definition mapundostack.cpp:648
void undo() override
Definition mapundostack.cpp:683
int id() const override
Definition mapundostack.h:576
Records the creation of a SWMM node.
Definition mapundostack.h:517
void undo() override
Definition mapundostack.cpp:530
int id() const override
Definition mapundostack.h:536
void redo() override
Definition mapundostack.cpp:513
Records the creation of a subcatchment polygon.
Definition mapundostack.h:620
void undo() override
Definition mapundostack.cpp:764
void redo() override
Definition mapundostack.cpp:735
int id() const override
Definition mapundostack.h:630
Data model for a single styled text annotation.
Definition annotationtextitem.h:34
Reassigns the rain gage of many subcatchments as ONE undo step.
Definition mapundostack.h:655
int id() const override
Definition mapundostack.h:667
void redo() override
Definition mapundostack.cpp:814
void undo() override
Definition mapundostack.cpp:815
Undoable bulk deletion (perf-plan Phase A2): one engine swmm_*_delete_many call per kind instead of K...
Definition mapundostack.h:832
void redo() override
Definition mapundostack.cpp:1264
Macro command that holds one SWMMModelLayer::BulkEdit scope open across every child command.
Definition mapundostack.h:749
void undo() override
Definition mapundostack.h:761
void redo() override
Definition mapundostack.h:755
BulkEditCommand(SWMMModelLayer *layer, const QString &text, QUndoCommand *parent=nullptr)
Definition mapundostack.h:751
Records a canvas CRS change for undo/redo.
Definition mapundostack.h:227
void redo() override
Definition mapundostack.cpp:158
void undo() override
Definition mapundostack.cpp:149
Undoable deletion of a non-spatial data object (curve, time series, or transect) held in a SWMMModelL...
Definition mapundostack.h:866
static bool supports(SWMMObjectRef::ObjectType type)
Definition mapundostack.cpp:1302
void undo() override
Definition mapundostack.cpp:1361
int id() const override
Definition mapundostack.h:875
void redo() override
Definition mapundostack.cpp:1326
Undoable deletion of a node, link, rain gage, or subcatchment.
Definition mapundostack.h:780
int id() const override
Definition mapundostack.h:796
void redo() override
Definition mapundostack.cpp:1056
void setEngineAppliedByBatch(bool b)
Definition mapundostack.h:792
void undo() override
Definition mapundostack.cpp:1071
TargetKind
Definition mapundostack.h:782
@ DeleteSubcatch
Definition mapundostack.h:782
@ DeleteLink
Definition mapundostack.h:782
@ DeleteGage
Definition mapundostack.h:782
@ DeleteNode
Definition mapundostack.h:782
Records a change to a subcatchment's polygon vertices.
Definition mapundostack.h:475
int id() const override
Definition mapundostack.h:490
void redo() override
Definition mapundostack.cpp:479
void undo() override
Definition mapundostack.cpp:486
Records a change to a link's interior polyline vertices.
Definition mapundostack.h:418
void undo() override
Definition mapundostack.cpp:420
int id() const override
Definition mapundostack.h:433
void redo() override
Definition mapundostack.cpp:412
Reverses a link's direction — upstream node becomes downstream.
Definition mapundostack.h:453
int id() const override
Definition mapundostack.h:463
void undo() override
Definition mapundostack.cpp:450
void redo() override
Definition mapundostack.cpp:445
Records the re-fusion (deletion) of an inlet junction.
Definition mapundostack.h:1245
bool valid() const
False when the node is not a two-conduit through inlet junction with a readable usage row; the comman...
Definition mapundostack.h:1258
void undo() override
Definition mapundostack.cpp:1836
int id() const override
Definition mapundostack.h:1254
void redo() override
Definition mapundostack.cpp:1829
Records the re-fusion (deletion) of a virtual junction.
Definition mapundostack.h:1141
int id() const override
Definition mapundostack.h:1150
void undo() override
Definition mapundostack.cpp:1681
void redo() override
Definition mapundostack.cpp:1674
bool valid() const
False when the node is not a two-conduit through virtual junction (snapshot failed); the command must...
Definition mapundostack.h:1154
Records a STREET-conduit split that inserts a configured inlet junction (swmm_conduit_split_inlet).
Definition mapundostack.h:1211
int id() const override
Definition mapundostack.h:1222
void undo() override
Definition mapundostack.cpp:1768
void redo() override
Definition mapundostack.cpp:1759
Records a conduit split that inserts a plain (non-virtual) junction.
Definition mapundostack.h:1059
int id() const override
Definition mapundostack.h:1069
void undo() override
Definition mapundostack.cpp:1547
void redo() override
Definition mapundostack.cpp:1539
Records "place a node ON a conduit": the conduit is split at the picked point and a node of the reque...
Definition mapundostack.h:1099
int id() const override
Definition mapundostack.h:1110
void redo() override
Definition mapundostack.cpp:1581
bool retyped() const
Definition mapundostack.h:1117
QStringList warnings() const
Definition mapundostack.h:1114
void undo() override
Definition mapundostack.cpp:1615
Records a conduit split that inserts a virtual junction.
Definition mapundostack.h:1026
void undo() override
Definition mapundostack.cpp:1512
int id() const override
Definition mapundostack.h:1036
void redo() override
Definition mapundostack.cpp:1504
The central map display widget — QGIS-style hybrid rendering.
Definition mapcanvas.h:63
Abstract base for all undoable commands that affect the MapCanvas.
Definition mapundostack.h:172
MapCanvas * m_canvas
Definition mapundostack.h:185
MapCanvas * canvas() const
Definition mapundostack.cpp:85
An axis-aligned bounding box in the coordinate space of a given CRS.
Definition mapextent.h:26
An undo/redo stack for map operations with a configurable maximum depth.
Definition mapundostack.h:117
void maxUndoCountChanged(int count)
void loadSettings()
Convenience: loads the undo limit from QSettings (key "MapCanvas/undoLimit").
Definition mapundostack.cpp:62
void saveSettings() const
Saves the current undo limit to QSettings.
Definition mapundostack.cpp:69
int maxUndoCount
Definition mapundostack.h:120
void setMaxUndoCount(int count)
Sets the maximum number of stored undo operations.
Definition mapundostack.cpp:53
Records a rain-gage coordinate change for undo/redo — the [SYMBOLS] twin of MoveNodeCommand.
Definition mapundostack.h:384
bool mergeWith(const QUndoCommand *other) override
Definition mapundostack.cpp:343
void redo() override
Definition mapundostack.cpp:331
int id() const override
Definition mapundostack.h:396
void undo() override
Definition mapundostack.cpp:337
Records reordering a layer within the canvas stack.
Definition mapundostack.h:284
void redo() override
Definition mapundostack.cpp:249
void undo() override
Definition mapundostack.cpp:243
Records a node coordinate change for undo/redo.
Definition mapundostack.h:335
void undo() override
Definition mapundostack.cpp:309
void redo() override
Definition mapundostack.cpp:301
bool mergeWith(const QUndoCommand *other) override
Definition mapundostack.cpp:356
int id() const override
Definition mapundostack.h:360
Records reordering one sublayer inside an ISublayerHost layer's paint stack (Slice LTR-2026-09-19)....
Definition mapundostack.h:305
void redo() override
Definition mapundostack.cpp:275
void undo() override
Definition mapundostack.cpp:269
Definition annotationlayer.h:30
Abstract base class for all layers displayed in the MapCanvas.
Definition openswmmvislayer.h:116
Records an extent change (pan or zoom) for undo/redo.
Definition mapundostack.h:201
int id() const override
Definition mapundostack.h:215
bool mergeWith(const QUndoCommand *other) override
Attempts to merge consecutive pan operations into a single command.
Definition mapundostack.cpp:113
void undo() override
Definition mapundostack.cpp:101
void redo() override
Definition mapundostack.cpp:107
Records removing a layer from the canvas layer stack.
Definition mapundostack.h:266
void undo() override
Definition mapundostack.cpp:214
void redo() override
Definition mapundostack.cpp:220
Records a SWMM object category order change for undo/redo.
Definition mapundostack.h:939
void undo() override
Definition mapundostack.cpp:581
void redo() override
Definition mapundostack.cpp:586
Records a full layer-stack reorder (e.g. moving an entire category group) as a single undoable step.
Definition mapundostack.h:915
void redo() override
Definition mapundostack.cpp:559
void undo() override
Definition mapundostack.cpp:553
Records a per-category object order change for undo/redo.
Definition mapundostack.h:963
void undo() override
Definition mapundostack.cpp:609
void redo() override
Definition mapundostack.cpp:617
Definition swmmmodellayer.h:1899
Renders the SWMM network elements (nodes, links, subcatchments, rain gages) for one OpenSWMMEngine mo...
Definition swmmmodellayer.h:133
Records a change to one inlet-usage row (conduit host or inlet junction host — the same command serve...
Definition mapundostack.h:1179
int id() const override
Definition mapundostack.h:1192
void redo() override
Definition mapundostack.cpp:1720
void undo() override
Definition mapundostack.cpp:1729
Represents a coordinate reference system backed by a GDAL OGRSpatialReference.
Definition spatialreferencesystem.h:28
DiagramType t
Definition diagramspec.cpp:20
enum OpenSWMM::Render::@788::Value::Type type
QString nodeName
Definition importplanning.cpp:95
bool ok
Definition inpmeshwriter.cpp:575
Axis-aligned bounding box in a map coordinate system, used by MapCanvas and all layer types to define...
int b
local residual indices, a < b
Definition meshquadmatch.cpp:46
SwmmCategory
Stable ordinal categorising every SWMM-element kind that has per-kind styling, per-kind tree rows,...
Definition swmm_category.h:28
EdgeRef ref
Definition pslgminsize.cpp:377
QVector< int > parent
union-find
Definition pslgminsize.cpp:176
TokenKind kind
Definition queryparser.cpp:34
QString text
Definition queryparser.cpp:35
int position
Definition queryparser.cpp:149
QString name
Definition sectionmodelbuilders.cpp:474
Definition mapundostack.h:834
DeleteObjectCommand::TargetKind kind
Definition mapundostack.h:834
QString name
Definition mapundostack.h:834
Definition mapundostack.h:84
double x
Definition mapundostack.h:86
QString name
Definition mapundostack.h:85
double y
Definition mapundostack.h:86
Definition mapundostack.h:65
double crestHeight
Definition mapundostack.h:75
double length
Definition mapundostack.h:71
int linkType
Definition mapundostack.h:67
QString fromNode
Definition mapundostack.h:68
QString name
Definition mapundostack.h:66
int flapGate
Definition mapundostack.h:78
double offsetUp
Definition mapundostack.h:73
QVector< QPointF > interiorVertices
Definition mapundostack.h:70
double endContractions
Definition mapundostack.h:77
double dischargeCoeff
Definition mapundostack.h:76
int pumpInitState
Definition mapundostack.h:79
QString toNode
Definition mapundostack.h:69
double roughness
Definition mapundostack.h:72
double offsetDn
Definition mapundostack.h:74
Per-link length snapshot used by auto-length.
Definition mapundostack.h:343
double newLen
Definition mapundostack.h:346
double oldLen
Definition mapundostack.h:345
int linkIdx
Definition mapundostack.h:344
Definition mapundostack.h:32
QString name
Definition mapundostack.h:33
int outfallFlapGate
Definition mapundostack.h:56
int nodeType
Definition mapundostack.h:34
double maxDepth
Definition mapundostack.h:37
int isVirtual
Definition mapundostack.h:44
int outfallType
Definition mapundostack.h:55
bool hasInletUsage
Definition mapundostack.h:50
QString inletDesignId
resolved by name — indices shift
Definition mapundostack.h:52
double seepRate
Definition mapundostack.h:58
int dividerType
Definition mapundostack.h:60
double invertElev
Definition mapundostack.h:36
int isInlet
Definition mapundostack.h:49
double rimDepth
Definition mapundostack.h:45
double pondedArea
Definition mapundostack.h:40
double surchargeDepth
Definition mapundostack.h:39
double x
Definition mapundostack.h:35
SWMM_InletUsage inletUsage
Definition mapundostack.h:51
QString captureNodeId
resolved by name — indices shift
Definition mapundostack.h:53
double y
Definition mapundostack.h:35
double initDepth
Definition mapundostack.h:38
Identifies a single SWMM object.
Definition selectionmanager.h:32
ObjectType
Coarse object kind. Mirrors the engine's logical groupings; finer subtypes (e.g. junction vs outfall)...
Definition selectionmanager.h:39
Definition mapundostack.h:91
double impervPct
Definition mapundostack.h:97
QString name
Definition mapundostack.h:92
double slope
Definition mapundostack.h:96
QVector< QPointF > polygon
Definition mapundostack.h:93
double area
Definition mapundostack.h:94
double width
Definition mapundostack.h:95
Map layer that renders an OpenSWMMEngine network (nodes, links, subcatchments, rain gages) and provid...