summaryrefslogtreecommitdiffstats
path: root/pokemodr/models/GlobalScriptGroupModel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'pokemodr/models/GlobalScriptGroupModel.cpp')
-rw-r--r--pokemodr/models/GlobalScriptGroupModel.cpp27
1 files changed, 26 insertions, 1 deletions
diff --git a/pokemodr/models/GlobalScriptGroupModel.cpp b/pokemodr/models/GlobalScriptGroupModel.cpp
index c2ad6258..f17c6c29 100644
--- a/pokemodr/models/GlobalScriptGroupModel.cpp
+++ b/pokemodr/models/GlobalScriptGroupModel.cpp
@@ -25,6 +25,9 @@
#include "../../pokemod/GlobalScript.h"
#include "../../pokemod/Pokemod.h"
+// Qt includes
+#include <QFile>
+
// KDE includes
#include <KMenu>
@@ -44,12 +47,34 @@ QVariant GlobalScriptGroupModel::data(const int role) const
if (role == BaseModel::ContextMenuRole)
{
KMenu* menu = new KMenu;
- menu->addAction("Add GlobalScript", this, SLOT(addObject()));
+ menu->addAction("Add Global Script", this, SLOT(addObject()));
return QVariant::fromValue(static_cast<void*>(menu));
}
return GroupModel::data(role);
}
+bool GlobalScriptGroupModel::setData(const QVariant& value, int role)
+{
+ if (role == BaseModel::XmlRole)
+ {
+ if (value.canConvert<QString>())
+ {
+ QFile file(value.toString());
+ QDomDocument xml;
+ if ((file.open(QIODevice::ReadOnly) && xml.setContent(&file)) || xml.setContent(value.toString()))
+ {
+ if (xml.doctype().name() == "GlobalScript")
+ {
+ addObject(static_cast<Pokemod*>(m_object)->newGlobalScript(xml.documentElement()));
+ return true;
+ }
+ file.close();
+ }
+ }
+ }
+ return false;
+}
+
void GlobalScriptGroupModel::addObject(Object* object)
{
if (!object)