17 #ifndef GEPETTO_GUI_PLUGINMANAGERDIALOG_HH 18 #define GEPETTO_GUI_PLUGINMANAGERDIALOG_HH 23 #include <QPluginLoader> 24 #include <QSignalMapper> 25 #include <QTableWidgetItem> 29 class PluginManagerDialog;
36 typedef QPair<QString, QPluginLoader*>
Pair;
37 typedef QMap<QString, QPluginLoader*>
Map;
38 typedef QPair<QString, QString>
PyPair;
39 typedef QMap<QString, QString>
PyMap;
43 const Map&
plugins()
const {
return plugins_; }
45 const PyMap&
pyplugins()
const {
return pyplugins_; }
47 template <
typename Interface>
48 Interface* getFirstOf();
50 template <
typename Interface>
51 QList<Interface*>
get();
53 static QIcon icon(
const QPluginLoader* pl);
55 static QString status(
const QPluginLoader* pl);
57 static void addPluginDir(
const QString& path);
59 void declareAllPlugins(QWidget* parent = NULL);
61 bool declarePlugin(
const QString& name, QWidget* parent = NULL);
63 bool loadPlugin(
const QString& name);
65 bool initPlugin(
const QString& name);
67 bool unloadPlugin(
const QString& name);
71 void declareAllPyPlugins();
73 bool declarePyPlugin(
const QString& name);
75 bool loadPyPlugin(
const QString& name);
77 bool unloadPyPlugin(
const QString& name);
79 bool isPyPluginLoaded(
const QString& name);
81 void clearPyPlugins();
84 template <
typename Interface>
85 static const Interface* const_instance_cast(
const QPluginLoader* pl);
87 QMap<QString, QPluginLoader*> plugins_;
88 static QList<QDir> pluginDirs_;
89 QMap<QString, QString> pyplugins_;
100 void onItemChanged(QTableWidgetItem* current, QTableWidgetItem* previous);
101 void contextMenu(
const QPoint& pos);
102 void load(
const QString& name);
103 void unload(
const QString& name);
107 void pyContextMenu(
const QPoint& pos);
108 void pyLoad(
const QString& name);
109 void pyUnload(
const QString& name);
115 static const int P_NAME;
116 static const int P_FILE;
117 static const int P_FULLPATH;
118 static const int P_VERSION;
122 ::Ui::PluginManagerDialog* ui_;
127 template <
typename Interface>
128 Interface* PluginManager::getFirstOf() {
129 foreach (QPluginLoader* p, plugins_) {
132 if (check && check->
isInit()) {
133 Interface* pi = qobject_cast<Interface*>(p->instance());
141 template <
typename Interface>
142 QList<Interface*> PluginManager::get() {
143 QList<Interface*> list;
144 foreach (QPluginLoader* p, plugins_) {
147 if (check && check->
isInit()) {
148 Interface* pi = qobject_cast<Interface*>(p->instance());
149 if (pi) list.append(pi);
156 template <
typename Interface>
157 const Interface* PluginManager::const_instance_cast(
const QPluginLoader* pl) {
158 return (
const Interface*)qobject_cast<Interface*>(
159 const_cast<QPluginLoader*
>(pl)->instance());
164 #endif // GEPETTO_GUI_PLUGINMANAGERDIALOG_HH Definition: pluginmanagerdialog.hh:92
QMap< QString, QPluginLoader * > Map
Definition: pluginmanagerdialog.hh:37
Definition: dialogloadenvironment.hh:23
bool isInit() const
Definition: plugin-interface.hh:51
Definition: plugin-interface.hh:34
Definition: action-search-bar.hh:27
QPair< QString, QString > PyPair
Definition: pluginmanagerdialog.hh:38
Definition: pluginmanagerdialog.hh:34
const Map & plugins() const
Definition: pluginmanagerdialog.hh:43
const PyMap & pyplugins() const
Definition: pluginmanagerdialog.hh:45
QPair< QString, QPluginLoader * > Pair
Definition: pluginmanagerdialog.hh:36
~PluginManager()
Definition: pluginmanagerdialog.hh:41
QMap< QString, QString > PyMap
Definition: pluginmanagerdialog.hh:39