diff options
Diffstat (limited to 'pokemodr/PokeModrUI.cpp')
-rw-r--r-- | pokemodr/PokeModrUI.cpp | 358 |
1 files changed, 256 insertions, 102 deletions
diff --git a/pokemodr/PokeModrUI.cpp b/pokemodr/PokeModrUI.cpp index 4159d4e4..acef2ef4 100644 --- a/pokemodr/PokeModrUI.cpp +++ b/pokemodr/PokeModrUI.cpp @@ -32,8 +32,38 @@ #include <BugCatcher.h> #include <Exception.h> -#include "PokeModrUI.h" -#include "PokeModTreeItem.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" @@ -68,10 +98,14 @@ #include "TimeUI.h" #include "TypeUI.h" +#include "PokeModrUI.h" +#include "PokeModTreeItem.h" + PokeModrUI::PokeModrUI(KConfigGroup cfg, KConfigGroup history, QWidget* parent) : KMainWindow(parent), config(cfg), - recent("&Recent Files...", NULL) + recent("&Recent Files...", NULL), + clipboard(NULL) { setupUi(this); QMetaObject::connectSlotsByName(this); @@ -79,11 +113,16 @@ PokeModrUI::PokeModrUI(KConfigGroup cfg, KConfigGroup history, QWidget* parent) menuBar()->addMenu(customHelpMenu(false)); restoreWindowSize(cfg); splitter->setSizes(QList<int>() << cfg.readEntry("treeWidth", 100) << cfg.readEntry("panelWidth", 100)); - if (cfg.readEntry("reloadOnStart", false)) - { - for (int i = 0; i < cfg.readEntry("openedFiles", 0); ++i) - openPokeMod(recent.urls().at(i)); - } +// if (cfg.readEntry("reloadOnStart", false)) +// { +// 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"); + pokemods.append(p); rebuildTree(); } @@ -94,6 +133,112 @@ 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); + } } void PokeModrUI::openPokeMod(const KUrl& path) @@ -141,6 +286,12 @@ void PokeModrUI::closePokeMod() } } +void PokeModrUI::closeEvent(QCloseEvent* event) +{ + on_actionQuit_triggered(); + event->accept(); +} + void PokeModrUI::setChangedTitle(const bool c) { if (formPanel->widget()) @@ -195,38 +346,39 @@ void PokeModrUI::on_actionCopy_triggered() 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(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); +#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); + 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 } @@ -238,38 +390,39 @@ void PokeModrUI::on_actionPaste_triggered() if (clipboard->getClassName() != o->getClassName()) return; QString name(clipboard->getClassName()); -#define IF_IS_CLASS(class) if (name == "class") *static_cast<class*>(static_cast<ObjectUI*>(formPanel->widget())->getOriginal()) = *static_cast<class*>(clipboard) - IF_IS_CLASS(Ability); - else IF_IS_CLASS(AbilityEffect); - 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); +#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(); } @@ -298,38 +451,39 @@ void PokeModrUI::on_treePokemod_itemSelectionChanged() Object* o = selected->getObject(); 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(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); +#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)), selected, SLOT(updateName())); |