summaryrefslogtreecommitdiffstats
path: root/pokemodr/PokeModTreeItem.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'pokemodr/PokeModTreeItem.cpp')
-rw-r--r--pokemodr/PokeModTreeItem.cpp46
1 files changed, 45 insertions, 1 deletions
diff --git a/pokemodr/PokeModTreeItem.cpp b/pokemodr/PokeModTreeItem.cpp
index 35ad701d..e44e14c6 100644
--- a/pokemodr/PokeModTreeItem.cpp
+++ b/pokemodr/PokeModTreeItem.cpp
@@ -459,7 +459,7 @@ void PokeModTreeItem::makeMenu(const QPoint& pos)
{
}
-Object* PokeModTreeItem::makeCopy()
+Object* PokeModTreeItem::copy()
{
if (obj)
{
@@ -501,3 +501,47 @@ Object* PokeModTreeItem::makeCopy()
}
return NULL;
}
+
+Object* PokeModTreeItem::cut()
+{
+ // TODO: actually cut the item
+ if (obj)
+ {
+ QString name(obj->getClassName());
+#define IF_IS_CLASS(class) if (name == #class) return new ::class(obj->getPokemod(), *static_cast< ::class* >(obj), obj->getId());
+ IF_IS_CLASS(Ability)
+ else IF_IS_CLASS(AbilityEffect)
+ else IF_IS_CLASS(Author)
+ else IF_IS_CLASS(Badge)
+ else IF_IS_CLASS(CoinList)
+ else IF_IS_CLASS(CoinListObject)
+ else IF_IS_CLASS(Dialog)
+ else IF_IS_CLASS(EggGroup)
+ else IF_IS_CLASS(Item)
+ else IF_IS_CLASS(ItemEffect)
+ else IF_IS_CLASS(ItemType)
+ else IF_IS_CLASS(Map)
+ else IF_IS_CLASS(MapEffect)
+ else IF_IS_CLASS(MapTrainer)
+ else IF_IS_CLASS(MapTrainerTeamMember)
+ else IF_IS_CLASS(MapWarp)
+ else IF_IS_CLASS(MapWildList)
+ else IF_IS_CLASS(MapWildListEncounter)
+ else IF_IS_CLASS(Move)
+ else IF_IS_CLASS(MoveEffect)
+ else IF_IS_CLASS(Nature)
+ else if (name == "Pokemod") return new Pokemod(*static_cast<Pokemod*>(obj));
+ else if (name == "Rules") return new Rules(obj->getPokemod());
+ else IF_IS_CLASS(Species)
+ else IF_IS_CLASS(SpeciesAbility)
+ else IF_IS_CLASS(SpeciesEvolution)
+ else IF_IS_CLASS(SpeciesItem)
+ else IF_IS_CLASS(SpeciesMove)
+ else IF_IS_CLASS(Store)
+ else IF_IS_CLASS(Tile)
+ else IF_IS_CLASS(Time)
+ else IF_IS_CLASS(Type)
+#undef IF_IS_CLASS
+ }
+ return NULL;
+}