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
SWMMNodePropertyAdapter Class Reference

#include <swmmnodepropertyadapter.h>

Inheritance diagram for SWMMNodePropertyAdapter:
Collaboration diagram for SWMMNodePropertyAdapter:

Public Types

enum  NodeKind {
  Junction = 0 ,
  Outfall = 1 ,
  Storage = 2 ,
  Divider = 3 ,
  VirtualJunction = 4 ,
  InletJunction = 5
}
 
enum  OutfallType {
  FREE = 0 ,
  NORMAL = 1 ,
  FIXED = 2 ,
  TIDAL = 3 ,
  TIMESERIES = 4
}
 
enum  DividerType {
  CUTOFF = 0 ,
  OVERFLOW_ = 1 ,
  TABULAR = 2 ,
  WEIR = 3
}
 
enum  FlapGate {
  NO = 0 ,
  YES = 1
}
 
enum  InletPlacement {
  AUTOMATIC = 0 ,
  ON_GRADE = 1 ,
  ON_SAG = 2
}
 
enum  StorageShape {
  Tabular = 0 ,
  Functional = 1 ,
  Cylindrical = 2 ,
  Conical = 3 ,
  Paraboloid = 4 ,
  Pyramidal = 5
}
 

Public Slots

void setName (const QString &newName)
 
void setTag (const QString &t)
 
void setInvertElev (double v)
 
void setMaxDepth (double v)
 
void setRimDepth (double v)
 
void setInitialDepth (double v)
 
void setSurchargeDepth (double v)
 
void setPondedArea (double v)
 
void setSeepRate (double v)
 
void setXCoord (double v)
 
void setYCoord (double v)
 
void setOutfallType (OutfallType v)
 
void setOutfallFlapGate (FlapGate v)
 
void setDividerType (DividerType v)
 
void setInflowsRef (const NodeCompoundEditRef &)
 
void setDwfRef (const NodeCompoundEditRef &)
 
void setRdiiRef (const NodeCompoundEditRef &)
 
void setTreatmentRef (const NodeCompoundEditRef &)
 
void setGroundwaterSourcesRef (const NodeCompoundEditRef &)
 
void setUserFlagsRef (const UserFlagsEditRef &)
 
void setInitialQualityRef (const InitialQualityEditRef &)
 
void setOutfallStage (double v)
 
void setOutfallTidalCurveRef (const DataObjectRef &r)
 
void setOutfallTimeseriesRef (const DataObjectRef &r)
 
void setInletDesignRef (const DataObjectRef &r)
 
void setCaptureNodeRef (const DataObjectRef &r)
 
void setNumInlets (int v)
 
void setPctClogged (double v)
 
void setFlowRestriction (double v)
 
void setDepressionHeight (double v)
 
void setDepressionWidth (double v)
 
void setPlacement (InletPlacement v)
 
void setStorageShape (StorageShape v)
 
void setStorageCurveRef (const DataObjectRef &r)
 
void setStorageCoeffA (double v)
 
void setStorageExpB (double v)
 
void setStorageConstC (double v)
 
void setStorageParam1 (double v)
 
void setStorageParam2 (double v)
 
void setStorageParam3 (double v)
 
void refresh ()
 
void updateStoredName (const QString &newName)
 
void setStatsRegistry (openswmmvis::OutputStatsRegistry *registry)
 
void setStatsSource (const QUuid &id)
 
QUuid statsSourceId () const
 

Signals

void changed ()
 
void renameRequested (const QString &oldName, const QString &newName)
 
void coordChangeRequested (double newX, double newY)
 
void displayLabelsChanged ()
 

Public Member Functions

 SWMMNodePropertyAdapter (SWMM_Engine engine, QString name, QObject *parent=nullptr)
 
void setModelLayer (SWMMModelLayer *layer)
 
SWMMModelLayermodelLayer () const
 
QString name () const
 
NodeKind nodeKind () const
 
QString tag () const
 
double invertElev () const
 
double maxDepth () const
 
double rimDepth () const
 
double initialDepth () const
 
double surchargeDepth () const
 
double pondedArea () const
 
double seepRate () const
 
double xCoord () const
 
double yCoord () const
 
OutfallType outfallType () const
 
FlapGate outfallFlapGate () const
 
DividerType dividerType () const
 
double crownElev () const
 
double fullVolume () const
 
int degree () const
 
double statMaxDepth () const
 
double statMaxOverflow () const
 
double statVolFlooded () const
 
double statTimeFlooded () const
 
NodeCompoundEditRef inflowsRef () const
 
NodeCompoundEditRef dwfRef () const
 
NodeCompoundEditRef rdiiRef () const
 
NodeCompoundEditRef treatmentRef () const
 
NodeCompoundEditRef groundwaterSourcesRef () const
 
UserFlagsEditRef userFlagsRef () const
 
InitialQualityEditRef initialQualityRef () const
 
double outfallStage () const
 
DataObjectRef outfallTidalCurveRef () const
 
DataObjectRef outfallTimeseriesRef () const
 
DataObjectRef inletDesignRef () const
 
DataObjectRef captureNodeRef () const
 
int numInlets () const
 
double pctClogged () const
 
double flowRestriction () const
 
double depressionHeight () const
 
double depressionWidth () const
 
InletPlacement placement () const
 
QString approachStreet () const
 
StorageShape storageShape () const
 
DataObjectRef storageCurveRef () const
 
double storageCoeffA () const
 
double storageExpB () const
 
double storageConstC () const
 
double storageParam1 () const
 
double storageParam2 () const
 
double storageParam3 () const
 
Q_INVOKABLE QString displayLabelFor (const QString &property) const
 

Protected Member Functions

int nodeIdx () const
 
void writeInletUsage (const std::function< bool(SWMM_InletUsage &)> &mutate)
 

Protected Attributes

SWMM_Engine m_engine
 
QString m_name
 
SWMMModelLayerm_layer = nullptr
 DB.4c — for compound-cell pickers.
 
QUuid m_statsSourceId
 
openswmmvis::OutputStatsRegistrym_statsRegistry = nullptr
 

Properties

QString name
 
NodeKind nodeKind
 
double invertElev
 
QString tag
 
double xCoord
 
double yCoord
 

Detailed Description

Base node adapter — exposes only the attributes that ALL node types share (per the SWMM5 .inp [JUNCTIONS]/[OUTFALLS]/[STORAGE]/ [DIVIDERS] sections in InpWriter.cpp). Type-specific Q_PROPERTYs live on subclasses below so the Property Browser doesn't show inapplicable properties (e.g. outfalls won't show dividerType).

All accessors live on the base — subclasses just declare the Q_PROPERTYs they want exposed. Public getters/setters that aren't listed as Q_PROPERTY on the subclass simply don't appear in its metaObject, so QPropertyModel ignores them.

Member Enumeration Documentation

◆ DividerType

Enumerator
CUTOFF 
OVERFLOW_ 
TABULAR 
WEIR 

◆ FlapGate

Enumerator
NO 
YES 

◆ InletPlacement

Inlet placement mode — ordinals match SWMM_InletPlacement, so the int round-trips through SWMM_InletUsage::placement unchanged.

Enumerator
AUTOMATIC 
ON_GRADE 
ON_SAG 

◆ NodeKind

Round-4 follow-up 2026-05-12 — type-safe enums declared with Q_ENUM so QPropertyModel renders the key name ("CUTOFF", "FREE", etc.) instead of the raw integer. Values mirror SWMM_NodeType / SWMM_OutfallType / SWMM_DividerType + a yes/no boolean wrapped for flap-gate. Subclasses inherit these via metaObject() — no need to redeclare.

Junction/Outfall/Storage/Divider match SWMM_NodeType ordinals; the GUI presents VirtualJunction as a distinct kind even though the engine stores it as a JUNCTION with the is_virtual flag set.

An inlet junction is a virtual junction that additionally carries the is_inlet flag and one [INLET_USAGE] row, so nodeKind() tests it FIRST.

Enumerator
Junction 
Outfall 
Storage 
Divider 
VirtualJunction 
InletJunction 

◆ OutfallType

Enumerator
FREE 
NORMAL 
FIXED 
TIDAL 
TIMESERIES 

◆ StorageShape

Storage geometry form — ordinals match the engine's SWMM_StorageShape (and the legacy solver's enum StorageType), so the int round-trips through swmm_node_get/set_storage_shape unchanged.

  • Tabular: depth–area curve by id (swmm_node_set_storage_curve).
  • Functional: power law Area = A·Depth^B + C (swmm_node_set_storage_functional).
  • The four geometric shapes: three raw dimensions L/W/Z (swmm_node_set_storage_geometry), from which the engine derives its internal area coefficients. See storageshapegeom.h for what L/W/Z mean per shape — they differ, which is why the row labels are generic.
Enumerator
Tabular 
Functional 
Cylindrical 
Conical 
Paraboloid 
Pyramidal 

Constructor & Destructor Documentation

◆ SWMMNodePropertyAdapter()

SWMMNodePropertyAdapter::SWMMNodePropertyAdapter ( SWMM_Engine  engine,
QString  name,
QObject *  parent = nullptr 
)
Parameters
engineEngine handle (non-null).
nameNode id (must already exist on the engine).
Here is the call graph for this function:

Member Function Documentation

◆ approachStreet()

QString SWMMNodePropertyAdapter::approachStreet ( ) const

Read-only: the name of the upstream STREET conduit's street section, i.e. the gutter the inlet sits in. Empty when not resolvable.

Here is the call graph for this function:

◆ captureNodeRef()

DataObjectRef SWMMNodePropertyAdapter::captureNodeRef ( ) const
Here is the call graph for this function:

◆ changed

void SWMMNodePropertyAdapter::changed ( )
signal
Here is the caller graph for this function:

◆ coordChangeRequested

void SWMMNodePropertyAdapter::coordChangeRequested ( double  newX,
double  newY 
)
signal

Slice DB — emitted when setXCoord() or setYCoord() is called with a value distinct from the current coord pair. The attribute panel connects this to SWMMModelLayer::applyNodeMove, which writes the engine + rebuilds the scene cache + bumps link bboxes + repaints. A direct swmm_spatial_set_node_coord would update the engine but leave the cached scene coords stale until the next full geometry rebuild. The signal carries the full pair so the panel doesn't have to re-read the other coord.

Here is the caller graph for this function:

◆ crownElev()

double SWMMNodePropertyAdapter::crownElev ( ) const

◆ degree()

int SWMMNodePropertyAdapter::degree ( ) const
Here is the call graph for this function:

◆ depressionHeight()

double SWMMNodePropertyAdapter::depressionHeight ( ) const
Here is the call graph for this function:

◆ depressionWidth()

double SWMMNodePropertyAdapter::depressionWidth ( ) const
Here is the call graph for this function:

◆ displayLabelFor()

QString SWMMNodePropertyAdapter::displayLabelFor ( const QString &  property) const

Maps a Q_PROPERTY identifier (e.g. "maxDepth") to a human-readable column-0 label (e.g. "Max Depth (ft)") with unit suffixes pulled live from UnitSystem::instance(). Q_INVOKABLE so QPropertyModel can pick it up generically without taking a SWMM-specific dependency. Returns an empty string for unknown property names — the model then falls back to the raw identifier.

Here is the call graph for this function:

◆ displayLabelsChanged

void SWMMNodePropertyAdapter::displayLabelsChanged ( )
signal

Emitted whenever the active unit system changes, so the Property Browser can refresh column-0 labels (e.g. swap "(ft)" → "(m)") without rebuilding the property tree.

Here is the caller graph for this function:

◆ dividerType()

SWMMNodePropertyAdapter::DividerType SWMMNodePropertyAdapter::dividerType ( ) const
Here is the call graph for this function:

◆ dwfRef()

NodeCompoundEditRef SWMMNodePropertyAdapter::dwfRef ( ) const
Here is the call graph for this function:

◆ flowRestriction()

double SWMMNodePropertyAdapter::flowRestriction ( ) const
Here is the call graph for this function:

◆ fullVolume()

double SWMMNodePropertyAdapter::fullVolume ( ) const

◆ groundwaterSourcesRef()

NodeCompoundEditRef SWMMNodePropertyAdapter::groundwaterSourcesRef ( ) const

AQUIFER_GROUNDWATER_EXCHANGE plan G5 — read-only navigation row listing the subcatchments that discharge groundwater to this node ("from S1, S3" / "(none)"); the button opens GroundwaterExchangeDialog for the picked subcatchment.

Here is the call graph for this function:

◆ inflowsRef()

NodeCompoundEditRef SWMMNodePropertyAdapter::inflowsRef ( ) const
Here is the call graph for this function:

◆ initialDepth()

double SWMMNodePropertyAdapter::initialDepth ( ) const

◆ initialQualityRef()

InitialQualityEditRef SWMMNodePropertyAdapter::initialQualityRef ( ) const

Initial-quality UI round — per-element [INITIAL_QUALITY] overrides row. Same compound-ref pattern; the InitialQualityEditButton editor opens InitialQualityDialog scoped to this node.

Here is the call graph for this function:

◆ inletDesignRef()

DataObjectRef SWMMNodePropertyAdapter::inletDesignRef ( ) const
Here is the call graph for this function:

◆ invertElev()

double SWMMNodePropertyAdapter::invertElev ( ) const

◆ maxDepth()

double SWMMNodePropertyAdapter::maxDepth ( ) const

◆ modelLayer()

SWMMModelLayer * SWMMNodePropertyAdapter::modelLayer ( ) const
inline

◆ name()

QString SWMMNodePropertyAdapter::name ( ) const
inline

◆ nodeIdx()

int SWMMNodePropertyAdapter::nodeIdx ( ) const
protected

◆ nodeKind()

SWMMNodePropertyAdapter::NodeKind SWMMNodePropertyAdapter::nodeKind ( ) const
Here is the call graph for this function:

◆ numInlets()

int SWMMNodePropertyAdapter::numInlets ( ) const
Here is the call graph for this function:

◆ outfallFlapGate()

SWMMNodePropertyAdapter::FlapGate SWMMNodePropertyAdapter::outfallFlapGate ( ) const
Here is the call graph for this function:

◆ outfallStage()

double SWMMNodePropertyAdapter::outfallStage ( ) const
Here is the call graph for this function:

◆ outfallTidalCurveRef()

DataObjectRef SWMMNodePropertyAdapter::outfallTidalCurveRef ( ) const
Here is the call graph for this function:

◆ outfallTimeseriesRef()

DataObjectRef SWMMNodePropertyAdapter::outfallTimeseriesRef ( ) const
Here is the call graph for this function:

◆ outfallType()

SWMMNodePropertyAdapter::OutfallType SWMMNodePropertyAdapter::outfallType ( ) const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ pctClogged()

double SWMMNodePropertyAdapter::pctClogged ( ) const
Here is the call graph for this function:

◆ placement()

SWMMNodePropertyAdapter::InletPlacement SWMMNodePropertyAdapter::placement ( ) const
Here is the call graph for this function:

◆ pondedArea()

double SWMMNodePropertyAdapter::pondedArea ( ) const

◆ rdiiRef()

NodeCompoundEditRef SWMMNodePropertyAdapter::rdiiRef ( ) const
Here is the call graph for this function:

◆ refresh

void SWMMNodePropertyAdapter::refresh ( )
inlineslot

Round-4 follow-up 2026-05-12 — force the Property Browser to re-query. Used when the table view edits the same object externally; emitting changed() triggers QPropertyModel to re-read every property (each getter round-trips to the engine, so values stay authoritative).

Here is the call graph for this function:

◆ renameRequested

void SWMMNodePropertyAdapter::renameRequested ( const QString &  oldName,
const QString &  newName 
)
signal

Emitted when setName() is called with a non-empty, non-duplicate name. The attribute panel connects this to SWMMModelLayer::applyRename().

Here is the caller graph for this function:

◆ rimDepth()

double SWMMNodePropertyAdapter::rimDepth ( ) const

Rendering-only rim (ground) depth above the invert; 0 = unset. Exposed as the "Max Depth, Display" row on virtual junctions, whose real max depth is the derived pipe crown. Never read by the solver — see swmm_node_get_rim_depth().

◆ seepRate()

double SWMMNodePropertyAdapter::seepRate ( ) const

◆ setCaptureNodeRef

void SWMMNodePropertyAdapter::setCaptureNodeRef ( const DataObjectRef r)
slot
Here is the call graph for this function:

◆ setDepressionHeight

void SWMMNodePropertyAdapter::setDepressionHeight ( double  v)
slot
Here is the call graph for this function:

◆ setDepressionWidth

void SWMMNodePropertyAdapter::setDepressionWidth ( double  v)
slot
Here is the call graph for this function:

◆ setDividerType

void SWMMNodePropertyAdapter::setDividerType ( DividerType  v)
slot
Here is the call graph for this function:

◆ setDwfRef

void SWMMNodePropertyAdapter::setDwfRef ( const NodeCompoundEditRef )
inlineslot
Here is the call graph for this function:

◆ setFlowRestriction

void SWMMNodePropertyAdapter::setFlowRestriction ( double  v)
slot
Here is the call graph for this function:

◆ setGroundwaterSourcesRef

void SWMMNodePropertyAdapter::setGroundwaterSourcesRef ( const NodeCompoundEditRef )
inlineslot
Here is the call graph for this function:

◆ setInflowsRef

void SWMMNodePropertyAdapter::setInflowsRef ( const NodeCompoundEditRef )
inlineslot

Compound-ref write slots — the cell's NodeCompoundEditButton invokes these via the delegate's setModelData round-trip after the dialog closes. The actual engine mutations already happened inside the dialog (swmm_*_add/remove/set), so these are no-ops except for emitting changed() so the property tree (and the attribute table) re-reads its summary. Their existence is what flips QMetaProperty::isWritable() to true, which is what QVariantPropertyItem checks to mark the cell editable — without these, the cell never enters edit mode and the registered NodeCompoundEditButton creator never fires.

Here is the call graph for this function:

◆ setInitialDepth

void SWMMNodePropertyAdapter::setInitialDepth ( double  v)
slot

◆ setInitialQualityRef

void SWMMNodePropertyAdapter::setInitialQualityRef ( const InitialQualityEditRef )
inlineslot
Here is the call graph for this function:

◆ setInletDesignRef

void SWMMNodePropertyAdapter::setInletDesignRef ( const DataObjectRef r)
slot
Here is the call graph for this function:

◆ setInvertElev

void SWMMNodePropertyAdapter::setInvertElev ( double  v)
slot

◆ setMaxDepth

void SWMMNodePropertyAdapter::setMaxDepth ( double  v)
slot

◆ setModelLayer()

void SWMMNodePropertyAdapter::setModelLayer ( SWMMModelLayer layer)
inline

DB.4c — set the model layer the compound-edit pickers can call back into to create new TS / patterns / UHs. Optional.

◆ setName

void SWMMNodePropertyAdapter::setName ( const QString &  newName)
slot
Here is the call graph for this function:

◆ setNumInlets

void SWMMNodePropertyAdapter::setNumInlets ( int  v)
slot
Here is the call graph for this function:

◆ setOutfallFlapGate

void SWMMNodePropertyAdapter::setOutfallFlapGate ( FlapGate  v)
slot
Here is the call graph for this function:

◆ setOutfallStage

void SWMMNodePropertyAdapter::setOutfallStage ( double  v)
slot
Here is the call graph for this function:

◆ setOutfallTidalCurveRef

void SWMMNodePropertyAdapter::setOutfallTidalCurveRef ( const DataObjectRef r)
slot
Here is the call graph for this function:

◆ setOutfallTimeseriesRef

void SWMMNodePropertyAdapter::setOutfallTimeseriesRef ( const DataObjectRef r)
slot
Here is the call graph for this function:

◆ setOutfallType

void SWMMNodePropertyAdapter::setOutfallType ( OutfallType  v)
slot
Here is the call graph for this function:

◆ setPctClogged

void SWMMNodePropertyAdapter::setPctClogged ( double  v)
slot
Here is the call graph for this function:

◆ setPlacement

void SWMMNodePropertyAdapter::setPlacement ( InletPlacement  v)
slot
Here is the call graph for this function:

◆ setPondedArea

void SWMMNodePropertyAdapter::setPondedArea ( double  v)
slot

◆ setRdiiRef

void SWMMNodePropertyAdapter::setRdiiRef ( const NodeCompoundEditRef )
inlineslot
Here is the call graph for this function:

◆ setRimDepth

void SWMMNodePropertyAdapter::setRimDepth ( double  v)
slot

◆ setSeepRate

void SWMMNodePropertyAdapter::setSeepRate ( double  v)
slot

◆ setStatsRegistry

void SWMMNodePropertyAdapter::setStatsRegistry ( openswmmvis::OutputStatsRegistry registry)
slot
Here is the caller graph for this function:

◆ setStatsSource

void SWMMNodePropertyAdapter::setStatsSource ( const QUuid &  id)
slot
Here is the call graph for this function:

◆ setStorageCoeffA

void SWMMNodePropertyAdapter::setStorageCoeffA ( double  v)
slot
Here is the call graph for this function:

◆ setStorageConstC

void SWMMNodePropertyAdapter::setStorageConstC ( double  v)
slot
Here is the call graph for this function:

◆ setStorageCurveRef

void SWMMNodePropertyAdapter::setStorageCurveRef ( const DataObjectRef r)
slot
Here is the call graph for this function:

◆ setStorageExpB

void SWMMNodePropertyAdapter::setStorageExpB ( double  v)
slot
Here is the call graph for this function:

◆ setStorageParam1

void SWMMNodePropertyAdapter::setStorageParam1 ( double  v)
slot
Here is the call graph for this function:

◆ setStorageParam2

void SWMMNodePropertyAdapter::setStorageParam2 ( double  v)
slot
Here is the call graph for this function:

◆ setStorageParam3

void SWMMNodePropertyAdapter::setStorageParam3 ( double  v)
slot
Here is the call graph for this function:

◆ setStorageShape

void SWMMNodePropertyAdapter::setStorageShape ( StorageShape  v)
slot
Here is the call graph for this function:

◆ setSurchargeDepth

void SWMMNodePropertyAdapter::setSurchargeDepth ( double  v)
slot

◆ setTag

void SWMMNodePropertyAdapter::setTag ( const QString &  t)
slot
Here is the call graph for this function:

◆ setTreatmentRef

void SWMMNodePropertyAdapter::setTreatmentRef ( const NodeCompoundEditRef )
inlineslot
Here is the call graph for this function:

◆ setUserFlagsRef

void SWMMNodePropertyAdapter::setUserFlagsRef ( const UserFlagsEditRef )
inlineslot
Here is the call graph for this function:

◆ setXCoord

void SWMMNodePropertyAdapter::setXCoord ( double  v)
slot

◆ setYCoord

void SWMMNodePropertyAdapter::setYCoord ( double  v)
slot
Here is the call graph for this function:

◆ statMaxDepth()

double SWMMNodePropertyAdapter::statMaxDepth ( ) const

◆ statMaxOverflow()

double SWMMNodePropertyAdapter::statMaxOverflow ( ) const

◆ statsSourceId

QUuid SWMMNodePropertyAdapter::statsSourceId ( ) const
inlineslot

◆ statTimeFlooded()

double SWMMNodePropertyAdapter::statTimeFlooded ( ) const

◆ statVolFlooded()

double SWMMNodePropertyAdapter::statVolFlooded ( ) const

◆ storageCoeffA()

double SWMMNodePropertyAdapter::storageCoeffA ( ) const
Here is the call graph for this function:

◆ storageConstC()

double SWMMNodePropertyAdapter::storageConstC ( ) const
Here is the call graph for this function:

◆ storageCurveRef()

DataObjectRef SWMMNodePropertyAdapter::storageCurveRef ( ) const
Here is the call graph for this function:

◆ storageExpB()

double SWMMNodePropertyAdapter::storageExpB ( ) const
Here is the call graph for this function:

◆ storageParam1()

double SWMMNodePropertyAdapter::storageParam1 ( ) const
Here is the call graph for this function:

◆ storageParam2()

double SWMMNodePropertyAdapter::storageParam2 ( ) const
Here is the call graph for this function:

◆ storageParam3()

double SWMMNodePropertyAdapter::storageParam3 ( ) const
Here is the call graph for this function:

◆ storageShape()

SWMMNodePropertyAdapter::StorageShape SWMMNodePropertyAdapter::storageShape ( ) const
Here is the call graph for this function:

◆ surchargeDepth()

double SWMMNodePropertyAdapter::surchargeDepth ( ) const

◆ tag()

QString SWMMNodePropertyAdapter::tag ( ) const
Here is the call graph for this function:

◆ treatmentRef()

NodeCompoundEditRef SWMMNodePropertyAdapter::treatmentRef ( ) const
Here is the call graph for this function:

◆ updateStoredName

void SWMMNodePropertyAdapter::updateStoredName ( const QString &  newName)
inlineslot

Called by PropertiesPanel after applyRename() succeeds so the adapter's stored name matches the engine's new name.

◆ userFlagsRef()

UserFlagsEditRef SWMMNodePropertyAdapter::userFlagsRef ( ) const

Phase 4 of docs/USER_FLAGS_UI_PLAN_2026-06-03.md — per-object user-flag assignments row. Same compound-ref pattern as the accessors above; the UserFlagsEditButton editor opens UserFlagValuesDialog. Requires setModelLayer() for the shared UserFlagsModel; without a layer the cell disables gracefully.

Here is the call graph for this function:

◆ writeInletUsage()

void SWMMNodePropertyAdapter::writeInletUsage ( const std::function< bool(SWMM_InletUsage &)> &  mutate)
protected

Read-modify-write of this node's SWMM_InletUsage row as ONE undoable step (SetInletUsageCommand via SWMMModelLayer::pushInletUsageEdit). mutate receives the current row — or an engine-default one when the node has none yet — and returns false to cancel the write (a no-op edit, or a name that did not resolve). Requires a bound model layer; without one it does nothing.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ xCoord()

double SWMMNodePropertyAdapter::xCoord ( ) const
Here is the call graph for this function:

◆ yCoord()

double SWMMNodePropertyAdapter::yCoord ( ) const
Here is the call graph for this function:

Member Data Documentation

◆ m_engine

SWMM_Engine SWMMNodePropertyAdapter::m_engine
protected

◆ m_layer

SWMMModelLayer* SWMMNodePropertyAdapter::m_layer = nullptr
protected

DB.4c — for compound-cell pickers.

◆ m_name

QString SWMMNodePropertyAdapter::m_name
protected

◆ m_statsRegistry

openswmmvis::OutputStatsRegistry* SWMMNodePropertyAdapter::m_statsRegistry = nullptr
protected

◆ m_statsSourceId

QUuid SWMMNodePropertyAdapter::m_statsSourceId
protected

Slice QA.2 — stats-source dispatch state. Null UUID = use the editing engine's ambient stats; non-null = read from the SWMMResultsLayer that the registry maps the UUID to.

Property Documentation

◆ invertElev

double SWMMNodePropertyAdapter::invertElev
readwrite

◆ name

QString SWMMNodePropertyAdapter::name
readwrite

◆ nodeKind

NodeKind SWMMNodePropertyAdapter::nodeKind
read

◆ tag

QString SWMMNodePropertyAdapter::tag
readwrite

Free-form [TAGS] label (DB.3 engine surface). Editable text; index-keyed in the engine, so survives a rename.

◆ xCoord

double SWMMNodePropertyAdapter::xCoord
readwrite

◆ yCoord

double SWMMNodePropertyAdapter::yCoord
readwrite

The documentation for this class was generated from the following files: