summaryrefslogtreecommitdiffstats
path: root/pokemodr/PokeModrUI.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'pokemodr/PokeModrUI.cpp')
-rw-r--r--pokemodr/PokeModrUI.cpp315
1 files changed, 18 insertions, 297 deletions
diff --git a/pokemodr/PokeModrUI.cpp b/pokemodr/PokeModrUI.cpp
index b3ee11ad..490fafa8 100644
--- a/pokemodr/PokeModrUI.cpp
+++ b/pokemodr/PokeModrUI.cpp
@@ -32,75 +32,12 @@
#include <QListIterator>
#include <QMetaObject>
#include <QMutableListIterator>
+#include <QString>
#include <BugCatcher.h>
#include <Exception.h>
-#include <Ability.h>
-#include <AbilityEffect.h>
-#include <Author.h>
-#include <Badge.h>
-#include <CoinList.h>
-#include <CoinListObject.h>
-#include <Dialog.h>
-#include <EggGroup.h>
-#include <Item.h>
-#include <ItemEffect.h>
-#include <ItemType.h>
-#include <Map.h>
-#include <MapEffect.h>
-#include <MapTrainer.h>
-#include <MapTrainerTeamMember.h>
-#include <MapWarp.h>
-#include <MapWildList.h>
-#include <MapWildListEncounter.h>
-#include <Move.h>
-#include <MoveEffect.h>
-#include <Nature.h>
#include <Pokemod.h>
-#include <Rules.h>
-#include <Species.h>
-#include <SpeciesAbility.h>
-#include <SpeciesEvolution.h>
-#include <SpeciesItem.h>
-#include <SpeciesMove.h>
-#include <Store.h>
-#include <Tile.h>
-#include <Time.h>
-#include <Type.h>
-
-#include "AbilityUI.h"
-// #include "AbilityEffectUI.h"
-#include "AuthorUI.h"
-#include "BadgeUI.h"
-#include "CoinListUI.h"
-#include "CoinListObjectUI.h"
-// #include "DialogUI.h"
-#include "EggGroupUI.h"
-#include "ItemUI.h"
-// #include "ItemEffectUI.h"
-#include "ItemTypeUI.h"
-#include "MapUI.h"
-// #include "MapEffectUI.h"
-// #include "MapTrainerUI.h"
-#include "MapTrainerTeamMemberUI.h"
-#include "MapWarpUI.h"
-#include "MapWildListUI.h"
-#include "MapWildListEncounterUI.h"
-#include "MoveUI.h"
-// #include "MoveEffectUI.h"
-#include "NatureUI.h"
-#include "PokemodUI.h"
-#include "RulesUI.h"
-#include "SpeciesUI.h"
-#include "SpeciesAbilityUI.h"
-#include "SpeciesEvolutionUI.h"
-#include "SpeciesItemUI.h"
-#include "SpeciesMoveUI.h"
-#include "StoreUI.h"
-#include "TileUI.h"
-#include "TimeUI.h"
-#include "TypeUI.h"
#include "PokeModrUI.h"
#include "PokeModTreeItem.h"
@@ -114,7 +51,6 @@ PokeModrUI::PokeModrUI(KConfigGroup cfg, KConfigGroup history, QWidget* parent)
setupUi(this);
QMetaObject::connectSlotsByName(this);
recent.loadEntries(history);
- // This is just until Qt Designer allows for QActions to be promoted to KActions :/
menuBar()->addMenu(customHelpMenu(false));
restoreWindowSize(cfg);
splitter->setSizes(QList<int>() << cfg.readEntry("treeWidth", 100) << cfg.readEntry("panelWidth", 100));
@@ -123,14 +59,6 @@ PokeModrUI::PokeModrUI(KConfigGroup cfg, KConfigGroup history, QWidget* parent)
// for (int i = 0; i < cfg.readEntry("openedFiles", 0); ++i)
// openPokeMod(recent.urls().at(i));
// }
- Pokemod* p = new Pokemod();
- p->setTitle("foo");
- p->newAuthor()->setName("Bob");
- p->newAbility()->setName("Awesome");
- p->newItem()->setName("Potion");
- p->newItem()->setName("Super Potion");
- p->newNature()->setName("Timid");
- pokemods.append(p);
rebuildTree();
}
@@ -142,111 +70,8 @@ PokeModrUI::~PokeModrUI()
void PokeModrUI::rebuildTree()
{
treePokemod->clear();
- for (QListIterator<Pokemod*> i(pokemods); i.hasNext(); i.next())
- {
- Pokemod* p = i.peekNext();
- PokeModTreeItem* pti = new PokeModTreeItem(p, treePokemod);
- PokeModTreeItem* abilities = new PokeModTreeItem("Abilities", pti);
- for (int i = 0; i < p->getAbilityCount(); ++i)
- {
- Ability* a = p->getAbility(i);
- PokeModTreeItem* ability = new PokeModTreeItem(a, abilities);
- PokeModTreeItem* effect = new PokeModTreeItem("Effects", ability);
- for (int j = 0; j < a->getEffectCount(); ++j)
- new PokeModTreeItem(a->getEffect(j), effect);
- }
- PokeModTreeItem* authors = new PokeModTreeItem("Authors", pti);
- for (int i = 0; i < p->getAuthorCount(); ++i)
- new PokeModTreeItem(p->getAuthor(i), authors);
- PokeModTreeItem* badges = new PokeModTreeItem("Badges", pti);
- for (int i = 0; i < p->getBadgeCount(); ++i)
- new PokeModTreeItem(p->getBadge(i), badges);
- PokeModTreeItem* coinLists = new PokeModTreeItem("Coin Lists", pti);
- for (int i = 0; i < p->getCoinListCount(); ++i)
- {
- CoinList* c = p->getCoinList(i);
- PokeModTreeItem* coinList = new PokeModTreeItem(c, coinLists);
- PokeModTreeItem* object = new PokeModTreeItem("Objects", coinList);
- for (int j = 0; j < c->getItemCount(); ++j)
- new PokeModTreeItem(c->getItem(j), object);
- }
- PokeModTreeItem* eggGroups = new PokeModTreeItem("Egg Groups", pti);
- for (int i = 0; i < p->getEggGroupCount(); ++i)
- new PokeModTreeItem(p->getEggGroup(i), eggGroups);
- PokeModTreeItem* items = new PokeModTreeItem("Items", pti);
- for (int i = 0; i < p->getItemCount(); ++i)
- {
- Item* it = p->getItem(i);
- PokeModTreeItem* item = new PokeModTreeItem(it, items);
- PokeModTreeItem* effect = new PokeModTreeItem("Effects", item);
- for (int j = 0; j < it->getEffectCount(); ++j)
- new PokeModTreeItem(it->getEffect(j), effect);
- }
- PokeModTreeItem* maps = new PokeModTreeItem("Maps", pti);
- for (int i = 0; i < p->getMapCount(); ++i)
- {
- Map* m = p->getMap(i);
- PokeModTreeItem* map = new PokeModTreeItem(m, maps);
- PokeModTreeItem* effect = new PokeModTreeItem("Effects", map);
- for (int j = 0; j < m->getEffectCount(); ++j)
- new PokeModTreeItem(m->getEffect(j), effect);
- PokeModTreeItem* trainers = new PokeModTreeItem("Trainers", map);
- for (int j = 0; j < m->getTrainerCount(); ++j)
- {
- MapTrainer* t = m->getTrainer(j);
- PokeModTreeItem* trainer = new PokeModTreeItem(t, trainers);
- PokeModTreeItem* member = new PokeModTreeItem("Team", trainer);
- for (int k = 0; k < t->getTeamMemberCount(); ++k)
- new PokeModTreeItem(t->getTeamMember(k), member);
- }
- PokeModTreeItem* warp = new PokeModTreeItem("Warps", map);
- for (int j = 0; j < m->getWarpCount(); ++j)
- new PokeModTreeItem(m->getWarp(j), warp);
- PokeModTreeItem* wildLists = new PokeModTreeItem("Wild Lists", map);
- for (int j = 0; j < m->getWildListCount(); ++j)
- {
- MapWildList* w = m->getWildList(j);
- PokeModTreeItem* wildList = new PokeModTreeItem(w, wildLists);
- PokeModTreeItem* encounter = new PokeModTreeItem("Encounters", wildList);
- for (int k = 0; k < w->getEncounterCount(); ++k)
- new PokeModTreeItem(w->getEncounter(k), encounter);
- }
- }
- PokeModTreeItem* natures = new PokeModTreeItem("Natures", pti);
- for (int i = 0; i < p->getNatureCount(); ++i)
- new PokeModTreeItem(p->getNature(i), natures);
- new PokeModTreeItem(p->getRules(), pti);
- PokeModTreeItem* species = new PokeModTreeItem("Species", pti);
- for (int i = 0; i < p->getSpeciesCount(); ++i)
- {
- Species* s = p->getSpecies(i);
- PokeModTreeItem* specie = new PokeModTreeItem(s, species);
- PokeModTreeItem* ability = new PokeModTreeItem("Abilities", specie);
- for (int j = 0; j < s->getAbilityCount(); ++j)
- new PokeModTreeItem(s->getAbility(j), ability);
- PokeModTreeItem* evolution = new PokeModTreeItem("Evolutions", specie);
- for (int j = 0; j < s->getEvolutionCount(); ++j)
- new PokeModTreeItem(s->getEvolution(j), evolution);
- PokeModTreeItem* item = new PokeModTreeItem("Items", specie);
- for (int j = 0; j < s->getItemCount(); ++j)
- new PokeModTreeItem(s->getItem(j), item);
- PokeModTreeItem* move = new PokeModTreeItem("Moves", specie);
- for (int j = 0; j < s->getMoveCount(); ++j)
- new PokeModTreeItem(s->getMove(j), move);
- }
- PokeModTreeItem* stores = new PokeModTreeItem("Stores", pti);
- for (int i = 0; i < p->getStoreCount(); ++i)
- new PokeModTreeItem(p->getStore(i), stores);
- PokeModTreeItem* tiles = new PokeModTreeItem("Tiles", pti);
- for (int i = 0; i < p->getTileCount(); ++i)
- new PokeModTreeItem(p->getTile(i), tiles);
- PokeModTreeItem* times = new PokeModTreeItem("Times", pti);
- for (int i = 0; i < p->getTimeCount(); ++i)
- new PokeModTreeItem(p->getTime(i), times);
- PokeModTreeItem* types = new PokeModTreeItem("Types", pti);
- for (int i = 0; i < p->getTypeCount(); ++i)
- new PokeModTreeItem(p->getType(i), types);
- }
+ for (QMutableListIterator<Pokemod*> i(pokemods); i.hasNext(); )
+ new PokeModTreeItem(treePokemod, i.next());
}
void PokeModrUI::openPokeMod(const KUrl& path)
@@ -348,91 +173,18 @@ void PokeModrUI::on_actionQuit_triggered()
void PokeModrUI::on_actionCopy_triggered()
{
- if (!formPanel->widget())
+ if (!treePokemod->currentItem())
return;
if (clipboard)
delete clipboard;
- Object* o = static_cast<ObjectUI*>(formPanel->widget())->getOriginal();
- QString name(o->getClassName());
-#define IF_IS_CLASS(class) if (name == #class) clipboard = new class(o->getPokemod(), *static_cast<class*>(o), o->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") clipboard = new Pokemod(*static_cast<Pokemod*>(o));
- else if (name == "Rules") clipboard = new Rules(o->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
+ clipboard = static_cast<PokeModTreeItem*>(treePokemod->currentItem())->makeCopy();
}
void PokeModrUI::on_actionPaste_triggered()
{
- if (!clipboard || !formPanel->widget())
+ if (!clipboard || !treePokemod->currentItem())
return;
- Object* o = static_cast<ObjectUI*>(formPanel->widget())->getOriginal();
- if (clipboard->getClassName() != o->getClassName())
- return;
- QString name(clipboard->getClassName());
-#define IF_IS_CLASS(class) if (name == #class) *static_cast<class*>(o) = *static_cast<class*>(clipboard);
- 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_IS_CLASS(Pokemod)
- else IF_IS_CLASS(Rules)
- 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
- rebuildTree();
+ static_cast<PokeModTreeItem*>(treePokemod->currentItem())->paste(clipboard);
}
void PokeModrUI::on_actionPreferences_triggered()
@@ -447,8 +199,7 @@ void PokeModrUI::on_splitter_splitterMoved()
void PokeModrUI::on_treePokemod_currentItemChanged(QTreeWidgetItem* current, QTreeWidgetItem* previous)
{
- Object* o = static_cast<PokeModTreeItem*>(current)->getObject();
- if (!o)
+ if (!static_cast<PokeModTreeItem*>(current)->getUi())
{
if (previous)
treePokemod->setCurrentItem(previous);
@@ -457,48 +208,18 @@ void PokeModrUI::on_treePokemod_currentItemChanged(QTreeWidgetItem* current, QTr
}
if (formPanel->widget())
{
- if (o == static_cast<ObjectUI*>(formPanel->widget())->getOriginal())
- return;
if (!static_cast<ObjectUI*>(formPanel->widget())->close())
return;
}
- QString name(o->getClassName());
- ObjectUI* widget = NULL;
-#define IF_IS_CLASS(class) if (name == #class) widget = new class##UI(static_cast<class*>(o), formPanel);
- 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_IS_CLASS(Pokemod)
- else IF_IS_CLASS(Rules)
- 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
- formPanel->setWidget(widget);
- connect(widget, SIGNAL(changed(bool)), static_cast<PokeModTreeItem*>(current), SLOT(updateName()));
+ formPanel->setWidget(static_cast<PokeModTreeItem*>(current)->getUi());
formPanel->show();
}
+
+void PokeModrUI::on_treePokemod_customContextMenuRequested(const QPoint& pos)
+{
+ if (treePokemod->itemAt(pos))
+ static_cast<PokeModTreeItem*>(treePokemod->itemAt(pos))->makeMenu(pos);
+ else
+ {
+ }
+}