summaryrefslogtreecommitdiffstats
path: root/sigtools
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2009-03-25 01:13:49 -0400
committerBen Boeckel <MathStuf@gmail.com>2009-03-25 01:13:49 -0400
commit69d9f32deb8b1fa2cb13cfb438d375d45a655aa6 (patch)
treeead901506d0acc6beebf9fe93d6b2f7de8e192a8 /sigtools
parent11a6970a5ef3aba98a80f999bee4d7d33bf7fc64 (diff)
downloadsigen-69d9f32deb8b1fa2cb13cfb438d375d45a655aa6.tar.gz
sigen-69d9f32deb8b1fa2cb13cfb438d375d45a655aa6.tar.xz
sigen-69d9f32deb8b1fa2cb13cfb438d375d45a655aa6.zip
Add plugin loading code for Arena (though something isn't being exported right)
Diffstat (limited to 'sigtools')
-rw-r--r--sigtools/PluginModel.cpp33
1 files changed, 32 insertions, 1 deletions
diff --git a/sigtools/PluginModel.cpp b/sigtools/PluginModel.cpp
index a6e49526..86ed16b0 100644
--- a/sigtools/PluginModel.cpp
+++ b/sigtools/PluginModel.cpp
@@ -22,10 +22,14 @@
#include "ClassModel.h"
#include "PluginTypeModel.h"
+// Sigencore includes
+#include <sigencore/plugins/ArenaPlugin.h>
+
// KDE includes
#include <KColorScheme>
#include <KGlobalSettings>
#include <KIcon>
+#include <KMessageBox>
#include <KPluginInfo>
// Qt includes
@@ -33,12 +37,39 @@
#include <QtGui/QPainter>
#include <QtGui/QStyleOptionViewItem>
+using namespace Sigencore::Interfaces;
using namespace Sigtools;
PluginModel::PluginModel(KService::Ptr service, PluginTypeModel* parent) :
BaseModel(parent),
- m_service(service)
+ m_service(service),
+ m_info(new KPluginInfo(m_service))
{
+ KPluginLoader loader(m_service->library());
+ KPluginFactory *factory = loader.factory();
+
+ if (!factory)
+ {
+ KMessageBox::error(NULL, QString("The plugin of type \"%1\" with name \"%2\" is not a valid Sigen plugin. The error was:\n%3").arg(m_service->serviceTypes()[0]).arg(m_service->name()).arg(loader.errorString()), "Plugin loading error");
+ return;
+ }
+
+ const QStringList types = m_service->serviceTypes();
+ foreach (const QString& type, types)
+ {
+ if (type == "Sigen/Arena")
+ {
+ ArenaPlugin* plugin = factory->create<ArenaPlugin>(this);
+ if (plugin)
+ {
+ QStringList arenas = plugin->arenas();
+ foreach (const QString& arena, arenas)
+ m_classes.append(new ClassModel(plugin->icon(arena), arena, plugin->description(arena), this));
+ }
+ }
+ else
+ KMessageBox::information(NULL, QString("The plugin type \"%1\" is not supported.").arg(m_service->type()), "Unsupported plugin type");
+ }
}
int PluginModel::rowCount() const