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
IUiHost.hpp
Go to the documentation of this file.
1
10#pragma once
11
12#include <QAction>
13#include <QJsonObject>
14#include <QList>
15#include <QStringList>
16#include <QWidget>
17#include <functional>
18
19namespace OpenSWMM::Sdk
20{
21class ExtensionHost;
22class IModelInstance;
23class ISettings;
24
29 QString caption;
30 QStringList actionIds;
31};
36 QString id;
37 QString title;
38 bool contextual = false;
39 QList<RibbonGroupSpec> groups;
40};
41
44{
45public:
47 virtual ~IDockPanelFactory() = default;
49 virtual QString id() const = 0;
51 virtual QString title() const = 0;
53 virtual Qt::DockWidgetArea defaultArea() const { return Qt::RightDockWidgetArea; }
55 virtual QString tabifyWith() const { return {}; }
59 virtual QWidget *create(ExtensionHost *host) = 0;
60};
63{
64public:
66 virtual ~IDocumentViewFactory() = default;
68 virtual QString kind() const = 0;
72 virtual bool accepts(IModelInstance *instance) const = 0;
77 virtual QWidget *create(IModelInstance *instance, ExtensionHost *host) = 0;
81 virtual QJsonObject saveState(QWidget *view) const = 0;
85 virtual void restoreState(QWidget *view, const QJsonObject &state) = 0;
86};
89{
90public:
92 virtual ~IPreferencesPageFactory() = default;
94 virtual QString id() const = 0;
96 virtual QString title() const = 0;
100 virtual QWidget *create(ISettings *settings) = 0;
102 virtual void apply() = 0;
104 virtual void reset() = 0;
105};
106
109{
110public:
112 virtual ~IUiHost() = default;
121 virtual bool registerAction(const QString &id, QAction *action) = 0;
123 virtual void unregisterAction(const QString &id) = 0;
128 virtual bool registerRibbonTab(const RibbonTabSpec &tab) = 0;
131 virtual void unregisterRibbonTab(const QString &id) = 0;
135 virtual bool registerDockPanelFactory(IDockPanelFactory *factory) = 0;
137 virtual void unregisterDockPanelFactory(const QString &id) = 0;
143 virtual void unregisterDocumentViewFactory(const QString &kind) = 0;
148 virtual QWidget *openDocumentView(const QString &kind, IModelInstance *instance) = 0;
154 virtual void unregisterPreferencesPage(const QString &id) = 0;
156 virtual void showDock(const QString &id) = 0;
160 virtual void statusMessage(const QString &text, int milliseconds = 5000) = 0;
164 virtual void message(const QString &title, const QString &text) = 0;
168 virtual void postToMainThread(std::function<void()> callback) = 0;
170 virtual QWidget *mainWindow() const = 0;
171};
172}
Definition ExtensionHost.hpp:96
Definition IUiHost.hpp:44
virtual Qt::DockWidgetArea defaultArea() const
Choose initial placement before saved layout restore.
Definition IUiHost.hpp:53
virtual QString tabifyWith() const
Request tabification beside an existing dock.
Definition IUiHost.hpp:55
virtual ~IDockPanelFactory()=default
Destroy an unregistered factory; registered factories remain borrowed by the host.
virtual QString id() const =0
Supply a stable extension-local dock ID.
virtual QWidget * create(ExtensionHost *host)=0
Create dock contents on the GUI thread.
virtual QString title() const =0
Supply a translated dock caption.
Borrowed factory for MDI widgets with JSON project-state persistence.
Definition IUiHost.hpp:63
virtual QJsonObject saveState(QWidget *view) const =0
Serialize one live view during project save.
virtual QWidget * create(IModelInstance *instance, ExtensionHost *host)=0
Create a new MDI document widget.
virtual ~IDocumentViewFactory()=default
Destroy an unregistered view factory; unregister first to close its views.
virtual QString kind() const =0
Identify a persistent document kind.
virtual void restoreState(QWidget *view, const QJsonObject &state)=0
Restore a newly created view from its saved project state.
virtual bool accepts(IModelInstance *instance) const =0
Check whether a document can be created for the requested model.
Definition IModelInstance.hpp:25
Borrowed factory for extension pages in the host Preferences dialog.
Definition IUiHost.hpp:89
virtual QWidget * create(ISettings *settings)=0
Create an extension preferences page.
virtual void apply()=0
Apply current page edits after the user selects Apply or OK.
virtual void reset()=0
Reset the page controls when the user requests defaults.
virtual ~IPreferencesPageFactory()=default
Destroy an unregistered preferences factory after its live page has been removed.
virtual QString id() const =0
Supply a stable extension-local page identity.
virtual QString title() const =0
Supply a translated preferences caption.
Definition ISettings.hpp:18
Definition IUiHost.hpp:109
virtual ~IUiHost()=default
Destroy UI service implementation; extensions borrow this facade.
virtual void unregisterAction(const QString &id)=0
Remove a command without deleting its QAction.
virtual bool registerPreferencesPage(IPreferencesPageFactory *factory)=0
Add a preferences factory to the Extensions section of future Preferences dialogs.
virtual void unregisterRibbonTab(const QString &id)=0
Remove only this contribution and its host-owned toolbars.
virtual bool registerRibbonTab(const RibbonTabSpec &tab)=0
Register an independent, dynamically removable extension-owned ribbon tab.
virtual bool registerDocumentViewFactory(IDocumentViewFactory *factory)=0
Register a borrowed document factory and materialize pending project views.
virtual bool registerAction(const QString &id, QAction *action)=0
Register an extension command in the host command palette and shortcut context.
virtual void postToMainThread(std::function< void()> callback)=0
Queue a callback onto the GUI thread from any worker.
virtual void unregisterPreferencesPage(const QString &id)=0
Remove a preferences factory and its live page before resource teardown.
virtual void showDock(const QString &id)=0
Reveal and raise a registered dock.
virtual void unregisterDocumentViewFactory(const QString &kind)=0
Close all views of this kind before releasing its factory.
virtual void statusMessage(const QString &text, int milliseconds=5000)=0
Display transient status-bar text.
virtual QWidget * mainWindow() const =0
Obtain the main window for widget parenting.
virtual bool registerDockPanelFactory(IDockPanelFactory *factory)=0
Instantiate and mount a dock with View-menu and layout persistence.
virtual QWidget * openDocumentView(const QString &kind, IModelInstance *instance)=0
Create and show one host-owned MDI document.
virtual void message(const QString &title, const QString &text)=0
Present an informational dialog on the GUI thread.
virtual void unregisterDockPanelFactory(const QString &id)=0
Destroy a registered dock and its widget.
Public header-only ABI for independently compiled native GUI extensions.
Definition ExtensionHost.hpp:24
TokenKind kind
Definition queryparser.cpp:53
QString text
Definition queryparser.cpp:54
const char * title
Definition snowpackeditordialog.cpp:92
One captioned ribbon group using commands already registered by the extension.
Definition IUiHost.hpp:28
QStringList actionIds
Ordered extension-local action identities.
Definition IUiHost.hpp:30
QString caption
Translated group caption.
Definition IUiHost.hpp:29
Value-described ribbon contribution suitable for native or future Python-authored UI.
Definition IUiHost.hpp:35
QList< RibbonGroupSpec > groups
Ordered groups and their registered commands.
Definition IUiHost.hpp:39
QString title
Translated caption of this extension-owned ribbon tab.
Definition IUiHost.hpp:37
QString id
Stable extension-local tab identity.
Definition IUiHost.hpp:36
bool contextual
Start this contribution hidden until explicitly revealed.
Definition IUiHost.hpp:38