summaryrefslogtreecommitdiffstats
path: root/pokemodr/PokemodTree.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'pokemodr/PokemodTree.cpp')
-rw-r--r--pokemodr/PokemodTree.cpp30
1 files changed, 29 insertions, 1 deletions
diff --git a/pokemodr/PokemodTree.cpp b/pokemodr/PokemodTree.cpp
index 9c38663b..35b41017 100644
--- a/pokemodr/PokemodTree.cpp
+++ b/pokemodr/PokemodTree.cpp
@@ -25,6 +25,10 @@
#include "ObjectUI.h"
#include "PokemodTreeModel.h"
+// Pokemod includes
+#include "../pokemod/Object.h"
+#include "../pokemod/Pokemod.h"
+
// Qt includes
#include <QHeaderView>
@@ -43,7 +47,9 @@ QString PokemodTree::description(const QModelIndex& index)
ObjectUI* PokemodTree::editorWidget(const QModelIndex& index)
{
- return static_cast<ObjectUI*>(model()->data(index, BaseModel::WidgetRole).value<QWidget*>());
+ ObjectUI* widget = static_cast<ObjectUI*>(model()->data(index, BaseModel::WidgetRole).value<QWidget*>());
+ connect(widget, SIGNAL(changed(bool)), this, SLOT(setDirty()));
+ return widget;
}
KMenu* PokemodTree::contextMenu(const QModelIndex& index)
@@ -51,6 +57,18 @@ KMenu* PokemodTree::contextMenu(const QModelIndex& index)
return static_cast<KMenu*>(model()->data(index, BaseModel::ContextMenuRole).value<void*>());
}
+const Pokemod* PokemodTree::currentPokemod() const
+{
+ QModelIndex index = currentIndex();
+ if (index.isValid())
+ {
+ const Object* object = static_cast<BaseModel*>(index.internalPointer())->object();
+ if (object)
+ return static_cast<const Pokemod*>(object->pokemod());
+ }
+ return NULL;
+}
+
QDomDocument PokemodTree::cut(const QModelIndex& index)
{
// TODO: actually cut out the item
@@ -69,6 +87,11 @@ void PokemodTree::paste(const QModelIndex& index, const QDomDocument& data)
model()->setData(index, data.toString(), BaseModel::XmlRole);
}
+QList<const Pokemod*> PokemodTree::openedPokemods() const
+{
+ return m_pokemods.keys();
+}
+
void PokemodTree::addPokemod(Pokemod* pokemod)
{
static_cast<PokemodTreeModel*>(model())->addPokemod(pokemod);
@@ -115,3 +138,8 @@ void PokemodTree::setDirty(const Pokemod* pokemod, const bool dirty)
if (m_pokemods.contains(pokemod))
m_pokemods[pokemod].second = dirty;
}
+
+void PokemodTree::setDirty()
+{
+ setDirty(currentPokemod(), true);
+}