summaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/guiSQLiteStudio/formmanager.h
diff options
context:
space:
mode:
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/formmanager.h')
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/formmanager.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/SQLiteStudio3/guiSQLiteStudio/formmanager.h b/SQLiteStudio3/guiSQLiteStudio/formmanager.h
new file mode 100644
index 0000000..41f98ce
--- /dev/null
+++ b/SQLiteStudio3/guiSQLiteStudio/formmanager.h
@@ -0,0 +1,43 @@
+#ifndef FORMMANAGER_H
+#define FORMMANAGER_H
+
+#include "guiSQLiteStudio_global.h"
+#include "mainwindow.h"
+#include <QHash>
+#include <QString>
+
+class UiLoader;
+
+class GUI_API_EXPORT FormManager : public QObject
+{
+ Q_OBJECT
+
+ public:
+ FormManager();
+ virtual ~FormManager();
+
+ QWidget* createWidget(const QString& name);
+ bool hasWidget(const QString& name);
+ QStringList getAvailableForms() const;
+
+ private:
+ void init();
+ void load();
+ void loadRecurently(const QString& path, const QString& prefix = "");
+ QString getWidgetName(const QString& path);
+ QWidget* createWidgetByFullPath(const QString& path);
+
+ UiLoader* uiLoader = nullptr;
+ QHash<QString,QString> widgetNameToFullPath;
+ QStringList resourceForms;
+
+ private slots:
+ void rescanResources(Plugin* plugin, PluginType* pluginType);
+ void rescanResources(const QString& pluginName);
+ void pluginsAboutToMassUnload();
+ void pluginsInitiallyLoaded();
+};
+
+#define FORMS MainWindow::getInstance()->getFormManager()
+
+#endif // FORMMANAGER_H