diff options
Diffstat (limited to 'pokemodr/models/GlobalScriptGroupModel.cpp')
| -rw-r--r-- | pokemodr/models/GlobalScriptGroupModel.cpp | 27 |
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) |
