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
ExtensionHost.hpp
Go to the documentation of this file.
1
10#pragma once
11
12#include "ISettings.hpp"
13#include "IUiHost.hpp"
14#include "INetworkPolicy.hpp"
16#include "Version.hpp"
17#include <QColor>
18#include <QObject>
19#include <QUrl>
20#include <QVariantMap>
21#include <functional>
22
24{
25class IModelInstance;
26class IProject;
27
30{
31public:
33 virtual ~IConsole() = default;
40 virtual void append(const QString &level, const QString &text) = 0;
43 virtual void clear() = 0;
50 virtual void appendLocation(const QString &level, const QString &text, const QString &path,
51 int line) = 0;
57 virtual void setLocationHandler(QObject *context,
58 std::function<void(const QString &, int)> handler) = 0;
59};
62{
63public:
65 virtual ~IJobContext() = default;
68 virtual bool isCancelled() const = 0;
72 virtual void setProgress(double fraction, const QString &text = {}) = 0;
76 virtual void postToMainThread(std::function<void()> callback) = 0;
77};
79class IJob
80{
81public:
83 virtual ~IJob() = default;
85 virtual void cancel() = 0;
87 virtual bool isFinished() const = 0;
88};
89
96{
97public:
99 virtual ~ExtensionHost() = default;
101 virtual CompatibilityManifest manifest() const = 0;
103 virtual QString pluginId() const = 0;
112 virtual QObject *lifetime() const = 0;
114 virtual QList<IProject *> projects() const = 0;
116 virtual IProject *activeProject() const = 0;
118 virtual QList<IModelInstance *> instances() const = 0;
120 virtual IModelInstance *activeInstance() const = 0;
122 virtual IUiHost *ui() = 0;
124 virtual ISettings *settings() = 0;
126 virtual IConsole *console() = 0;
129 virtual INetworkPolicy *network() = 0;
131 virtual IRunRegistry *runRegistry() = 0;
133 virtual IPlotService *plots() = 0;
135 virtual IDialogs *dialogs() = 0;
137 virtual bool isDark() const = 0;
141 virtual QColor themeColor(QPalette::ColorRole role) const = 0;
161 virtual QMetaObject::Connection
162 observe(QObject *context,
163 std::function<void(const QString &event, const QVariantMap &data)> callback) = 0;
172 virtual IJob *runJob(const QString &title, std::function<void(IJobContext &)> work,
173 std::function<void(bool ok, const QString &error)> finished = {}) = 0;
178 virtual void prepareShutdown() = 0;
179};
180}
Public adapters for the application's simulation, plotting and dialog services.
Public network policy and shared HTTP client for GUI extensions.
Extension-scoped persistent user preferences.
Public factories and registration API for extension UI contributions.
Public SDK version and binary compatibility metadata.
Definition ExtensionHost.hpp:96
virtual IProject * activeProject() const =0
Resolve the active model project.
virtual IDialogs * dialogs()=0
Access registered built-in dialog commands.
virtual IRunRegistry * runRegistry()=0
Access Simulation Status enumeration/start/cancel operations.
virtual QColor themeColor(QPalette::ColorRole role) const =0
Read an active host palette token.
virtual void prepareShutdown()=0
Cancel and join extension workers before plugin-owned resources are released.
virtual QMetaObject::Connection observe(QObject *context, std::function< void(const QString &event, const QVariantMap &data)> callback)=0
Subscribe to scoped host notifications.
virtual QObject * lifetime() const =0
Obtain a safe QObject context for actions and signal connections.
virtual IPlotService * plots()=0
Access the application's existing plot panels.
virtual IModelInstance * activeInstance() const =0
Resolve the active loaded model.
virtual bool isDark() const =0
Inspect resolved palette contrast.
virtual IConsole * console()=0
Access this extension output channel.
virtual INetworkPolicy * network()=0
Access the host offline/HTTPS destination policy and shared client.
virtual IJob * runJob(const QString &title, std::function< void(IJobContext &)> work, std::function< void(bool ok, const QString &error)> finished={})=0
Run cancellable extension work on the extension's bounded thread pool.
virtual QList< IModelInstance * > instances() const =0
Enumerate loaded models across projects.
virtual IUiHost * ui()=0
Access namespaced widget/action registration.
virtual QString pluginId() const =0
Identify the extension owning this facade.
virtual QList< IProject * > projects() const =0
Enumerate open projects.
virtual ~ExtensionHost()=default
Join outstanding jobs and destroy host-owned contributions during teardown.
virtual ISettings * settings()=0
Access this extension user settings.
virtual CompatibilityManifest manifest() const =0
Inspect the running host build identity.
Host-owned plain-text output channel scoped to one extension and forwarded to native Logs.
Definition ExtensionHost.hpp:30
virtual void appendLocation(const QString &level, const QString &text, const QString &path, int line)=0
Append literal output associated with a source file location.
virtual void clear()=0
Clear only this extension's Output history; native Logs history is retained.
virtual ~IConsole()=default
Destroy a console implementation; the host owns the public facade.
virtual void setLocationHandler(QObject *context, std::function< void(const QString &, int)> handler)=0
Install this channel's GUI-thread source-navigation callback.
virtual void append(const QString &level, const QString &text)=0
Append literal text to this extension's bounded Output and native timestamped Logs.
Argument-free built-in dialog commands, exposed through registered application actions.
Definition IApplicationServices.hpp:65
Worker-only progress, cancellation and GUI-continuation interface.
Definition ExtensionHost.hpp:62
virtual ~IJobContext()=default
Destroy a context after the worker has returned; extensions borrow it.
virtual void postToMainThread(std::function< void()> callback)=0
Queue a GUI-thread continuation while the host is alive.
virtual bool isCancelled() const =0
Check cooperative cancellation from a worker.
virtual void setProgress(double fraction, const QString &text={})=0
Queue progress to the host without touching widgets from the worker.
Borrowed thread-safe handle for a job retained by its extension host.
Definition ExtensionHost.hpp:80
virtual ~IJob()=default
Destroy a job implementation; handles returned by the host are borrowed.
virtual bool isFinished() const =0
Inspect worker completion.
virtual void cancel()=0
Request cooperative cancellation.
Definition IModelInstance.hpp:25
Borrowed GUI-thread network service used for catalogue previews and data downloads.
Definition INetworkPolicy.hpp:18
Access to existing time-series and profile plot panels.
Definition IApplicationServices.hpp:39
Definition IProject.hpp:19
Simulation Status facade supporting native and legacy worker runs.
Definition IApplicationServices.hpp:19
Definition ISettings.hpp:18
Definition IUiHost.hpp:109
QPointer< QObject > context
Required provider lifetime guard.
Definition extensionattributes.cpp:31
QString path
Populated by the worker only after its own successful atomic creation.
Definition extensiontimeseriesaccess.cpp:32
int line
One-based source line.
Definition guiextensionhost.cpp:63
bool ok
Definition importplanning.cpp:143
SWMM_FilePathRole role
Definition ioportabilitynormalizer.cpp:26
Public header-only ABI for independently compiled native GUI extensions.
Definition ExtensionHost.hpp:24
QString text
Definition queryparser.cpp:54
const char * title
Definition snowpackeditordialog.cpp:92
Definition Version.hpp:24
double error
Definition terrainerrorfield.cpp:42