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
IModelInstance.hpp
Go to the documentation of this file.
1
10#pragma once
11#include <QObject>
12#include <QUuid>
13#include <QVariantMap>
14#include "IEngineLease.hpp"
15#include "IEditScope.hpp"
18#include <memory>
19
20namespace OpenSWMM::Sdk
21{
22class IProject;
25{
26public:
28 virtual ~IModelInstance() = default;
31 virtual QUuid id() const = 0;
33 virtual QString title() const = 0;
35 virtual QString inpPath() const = 0;
37 virtual QString engineVersion() const = 0;
40 virtual QObject *lifetime() const = 0;
42 virtual IProject *project() const = 0;
44 virtual bool isOpen() const = 0;
48 virtual QList<QVariantMap> selection() const = 0;
52 virtual void select(const QList<QVariantMap> &objects) = 0;
58 virtual QString snapshot(QString *error = nullptr) const = 0;
63 virtual QVariantMap attributes(const QString &category, const QString &name) const = 0;
66 virtual IAttributeProvider *attributeProvider() const = 0;
70 virtual QList<QVariantMap> results() const = 0;
76 virtual std::unique_ptr<IEngineLease> acquireLease(LeaseKind kind,
77 QString *error = nullptr) = 0;
83 virtual std::unique_ptr<INativeEditScope> nativeEdit(const QString &label,
84 QString *error = nullptr) = 0;
89 virtual std::unique_ptr<IEditScope> edit(const QString &label, QString *error = nullptr) = 0;
99 QObject *context, QString *error = nullptr) = 0;
103 virtual void unregisterAttributeProvider(const QString &id) = 0;
108 virtual void refreshAttributeProvider(const QString &id) = 0;
109};
110}
Layer-side seam for "what attributes can I theme by?" — Slice DM.1.
Read-only model attributes contributed by an independently built extension.
Mediated undoable model editing through the GUI property and apply paths.
RAII read/write access to the GUI-owned engine image.
Borrowed provider of derived attributes on authored model objects.
Definition IComputedAttributeProvider.hpp:20
Definition IModelInstance.hpp:25
virtual QList< QVariantMap > selection() const =0
Copy the cross-view selection shared by the map, tables and property panels.
virtual IAttributeProvider * attributeProvider() const =0
Access the layer's canonical attribute field metadata.
virtual void unregisterAttributeProvider(const QString &id)=0
Remove this extension's provider and refresh its model views.
virtual QString inpPath() const =0
Read the current model input path.
virtual std::unique_ptr< INativeEditScope > nativeEdit(const QString &label, QString *error=nullptr)=0
Begin a snapshot-backed native engine transaction under an exclusive lease.
virtual QString snapshot(QString *error=nullptr) const =0
Write a reviewable INP snapshot and its companions under the project directory.
virtual QVariantMap attributes(const QString &category, const QString &name) const =0
Read the same model attributes used by identify and property views.
virtual QString engineVersion() const =0
Read the selected simulation engine version.
virtual QString title() const =0
Read the current window caption.
virtual bool isOpen() const =0
Test model availability.
virtual QUuid id() const =0
Identify the model across project save/restore.
virtual void select(const QList< QVariantMap > &objects)=0
Replace the cross-view selection using stable object identities.
virtual void refreshAttributeProvider(const QString &id)=0
Refresh derived values after an extension changes its calculation inputs.
virtual IProject * project() const =0
Access the containing project facade.
virtual ~IModelInstance()=default
Destroy a facade; extensions borrow the host-owned instance.
virtual std::unique_ptr< IEditScope > edit(const QString &label, QString *error=nullptr)=0
Begin one undoable transaction through the existing GUI edit paths.
virtual bool registerAttributeProvider(const QString &id, IComputedAttributeProvider *provider, QObject *context, QString *error=nullptr)=0
Register read-only model attributes shared by identify, tables and symbology.
virtual QList< QVariantMap > results() const =0
Copy metadata for loaded 1D and 2D result layers.
virtual QObject * lifetime() const =0
Obtain the model window as a lifetime signal context.
virtual std::unique_ptr< IEngineLease > acquireLease(LeaseKind kind, QString *error=nullptr)=0
Acquire shared read access or exclusive write access to the live engine.
Definition IProject.hpp:19
OpenSWMM::Sdk::IComputedAttributeProvider * provider
Borrowed while context lives.
Definition extensionattributes.cpp:32
QPointer< QObject > context
Required provider lifetime guard.
Definition extensionattributes.cpp:31
const char * label
Human label for the filter entry.
Definition gdaldrivers.cpp:28
Public header-only ABI for independently compiled native GUI extensions.
Definition ExtensionHost.hpp:24
LeaseKind
Requested access to a GUI-owned model engine.
Definition IEngineLease.hpp:14
TokenKind kind
Definition queryparser.cpp:53
double error
Definition terrainerrorfield.cpp:42