Maki
Formally verfied low-code orchestration
Loading...
Searching...
No Matches
plugin_tab.h
1#pragma once
2
3#include <QGraphicsView>
4#include <oclero/qlementine.hpp>
5
6#include "iui.h"
7#include "result.h"
8
9namespace maki
10{
11class IUI;
12}
13
14class PluginView;
15
24class PluginTab : public QObject, public maki::IUI
25{
26 Q_OBJECT
27public:
34 PluginTab(QMenu* menu, QObject* parent = nullptr);
35
44 void updateScene(const QString& name) override;
45
54 void openScene(const QString& name) override;
55
64 maki::Theme currentTheme() override;
65
75 void registerPlugin(const QString& name, std::function<VoidResult(QGraphicsScene* scene)> callback) override;
76
82 void deregisterPlugin(const QString& name) override;
83
90 void onThemeChanged();
91
92 void addTab(const QString& name, QWidget* tabWidget) override;
93 void closeTab(const QString& name, QWidget* tabWidget) override;
94
95signals:
105 void openView(const QString& name, PluginView* view);
106
116
117 void addBottomTab(const QString& name, QWidget* tab);
118 void removeBottomTab(QWidget* tab);
119
120private:
125 {
128
130 QGraphicsScene* scene;
131
133 std::function<VoidResult(QGraphicsScene* scene)> callback;
134
136 QAction* action;
137
138 QWidget* tab;
139 };
140
142 QMenu* mMenu;
143
145 QMap<QString, PluginData> mTabs;
146
153 maki::Theme qlementineToMaki(const oclero::qlementine::Theme& theme) const;
154};
maki::Theme currentTheme() override
Returns the currently active theme variables.
Definition plugin_tab.cpp:39
void openScene(const QString &name) override
Opens the scene associated with a plugin tab.
Definition plugin_tab.cpp:28
void onThemeChanged()
Notifies the tab that the application theme has changed.
Definition plugin_tab.cpp:188
maki::Theme qlementineToMaki(const oclero::qlementine::Theme &theme) const
Converts a qlementine theme to the maki theme.
Definition plugin_tab.cpp:48
void updateScene(const QString &name) override
Updates the scene associated with a plugin tab.
Definition plugin_tab.cpp:16
void deregisterPlugin(const QString &name) override
Deregisters a plugin.
Definition plugin_tab.cpp:216
QMap< QString, PluginData > mTabs
Mapping between plugin names and their associated data.
Definition plugin_tab.h:145
PluginTab(QMenu *menu, QObject *parent=nullptr)
Constructs a PluginTab instance.
Definition plugin_tab.cpp:10
void registerPlugin(const QString &name, std::function< VoidResult(QGraphicsScene *scene)> callback) override
Registers a plugin-provided tab.
Definition plugin_tab.cpp:194
void closeView(PluginView *view)
Signal emitted when a plugin view should be closed.
QMenu * mMenu
Menu where plugin tabs are registered as actions.
Definition plugin_tab.h:142
void openView(const QString &name, PluginView *view)
Signal emitted when a plugin view should be opened.
Custom QGraphicsView for plugin functionality.
Definition plugin_view.h:11
Contains UI helper widgets and layout grouping utilities used by MAKI.
Definition generator.h:10
Internal data structure storing information about a plugin tab.
Definition plugin_tab.h:125
QAction * action
QAction used to open this plugin.
Definition plugin_tab.h:136
PluginView * view
Pointer to the graphical view associated with the plugin.
Definition plugin_tab.h:127
QGraphicsScene * scene
Scene used by the plugin to render its graphical content.
Definition plugin_tab.h:130
std::function< VoidResult(QGraphicsScene *scene)> callback
Callback responsible for populating or updating the scene.
Definition plugin_tab.h:133