From b46fba7a98595e8be65caaaa8f36b2e28adce137 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Thu, 15 May 2008 04:58:10 +0000 Subject: [ADD] MapEffect widget logic [FIX] Fixed up some other minor problems git-svn-id: https://pokegen.svn.sourceforge.net/svnroot/pokegen/trunk@133 6ecfd1a5-f3ed-3746-8530-beee90d26b22 --- pokemodr/MapEffectUI.cpp | 186 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 186 insertions(+) create mode 100644 pokemodr/MapEffectUI.cpp (limited to 'pokemodr/MapEffectUI.cpp') diff --git a/pokemodr/MapEffectUI.cpp b/pokemodr/MapEffectUI.cpp new file mode 100644 index 00000000..5aefb6fd --- /dev/null +++ b/pokemodr/MapEffectUI.cpp @@ -0,0 +1,186 @@ +/* + * Copyright 2008 Ben Boeckel + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +// Header include +#include "MapEffectUI.h" + +// PokeModr includes +#include "FileDialog.h" + +// Pokemod includes +#include "../pokemod/Dialog.h" +#include "../pokemod/Item.h" +#include "../pokemod/Map.h" +#include "../pokemod/MapEffect.h" +#include "../pokemod/Pokemod.h" + +MapEffectUI::MapEffectUI(MapEffect* effect, QWidget* parent) : + ObjectUI(parent) +{ + setupUi(this); + QMetaObject::connectSlotsByName(this); + setObjects(effect, new MapEffect(*effect)); + connect(this, SIGNAL(changed(bool)), boxButtons, SLOT(setEnabled(bool))); + connect(modified(), SIGNAL(error(const QString&)), this, SLOT(setGui())); + connect(modified(), SIGNAL(error(const QString&)), this, SLOT(errorMessage(const QString&))); + connect(modified(), SIGNAL(warning(const QString&)), this, SLOT(warningMessage(const QString&))); + connect(modified(), SIGNAL(changed()), this, SLOT(setChanged())); + init(); +} + +MapEffectUI::~MapEffectUI() +{ +} + +void MapEffectUI::initGui() +{ + varEffect->addItems(MapEffect::EffectStr); + varDirection->addItems(Pokemod::DirectionStr.mid(0, Pokemod::D_End)); +} + +void MapEffectUI::refreshGui() +{ + varCoordinate->setMaximum(static_cast(original()->parent())->size()); + varDialog->clear(); + for (int i = 0; i < static_cast(original()->pokemod())->dialogCount(); ++i) + { + const Dialog* dialog = static_cast(original()->pokemod())->dialog(i); + varDialog->addItem(dialog->dialog().mid(0, 25)); + varDialog->setItemData(i, dialog->id()); + } +} + +void MapEffectUI::setGui() +{ + varName->setText(static_cast(modified())->name()); + varCoordinate->setValue(static_cast(modified())->coordinate()); + varExistFlag->setValue(static_cast(modified())->existFlag()); + varSkin->setIcon(static_cast(modified())->skin()); + varEffect->setCurrentIndex(static_cast(modified())->effect()); + const int effect = static_cast(modified())->effect(); + if ((effect == MapEffect::E_Button) || (effect == MapEffect::E_StrengthBlock)) + { + varValue1->setEnabled(true); + varValue1->setValue(static_cast(modified())->value1()); + } + else + varValue1->setEnabled(false); + varValue2->clear(); + switch (effect) + { + case MapEffect::E_Item: + for (int i = 0; i < static_cast(original()->pokemod())->itemCount(); ++i) + { + const Item* item = static_cast(original()->pokemod())->item(i); + varValue2->addItem(item->name()); + varValue2->setItemData(i, item->id()); + } + varValue2->setCurrentIndex(varValue2->findData(static_cast(modified())->value2())); + break; + case MapEffect::E_PC: + varValue2->addItems(MapEffect::PCTypeStr); + for (int i = 0; i < MapEffect::PC_End; ++i) + varValue2->setItemData(i, i); + varValue2->setCurrentIndex(static_cast(modified())->value2()); + break; + case MapEffect::E_StrengthBlock: + case MapEffect::E_Button: + varValue2->addItems(Flag::ValueStr); + for (int i = 0; i < Flag::End; ++i) + varValue2->setItemData(i, i); + varValue2->setCurrentIndex(static_cast(modified())->value2()); + break; + } + varDirection->setCurrentIndex(static_cast(modified())->direction()); + varIsGhost->setChecked(static_cast(modified())->isGhost() ? Qt::Checked : Qt::Unchecked); + varCanMove->setChecked(static_cast(modified())->canMove() ? Qt::Checked : Qt::Unchecked); + varDialog->setCurrentIndex(varDialog->findData(static_cast(modified())->dialog())); +} + +void MapEffectUI::on_buttonApply_clicked() +{ + *static_cast(original()) = *static_cast(modified()); + emit(changed(false)); +} + +void MapEffectUI::on_buttonDiscard_clicked() +{ + *static_cast(modified()) = *static_cast(original()); + setGui(); + emit(changed(false)); +} + +void MapEffectUI::on_varName_textChanged(const QString& name) +{ + static_cast(modified())->setName(name); +} + +void MapEffectUI::on_varCoordinate_valueChanged(const Point& coordinate) +{ + static_cast(modified())->setCoordinate(coordinate); +} + +void MapEffectUI::on_varExistFlag_valueChanged(const Flag& existFlag) +{ + static_cast(modified())->setExistFlag(existFlag); +} + +void MapEffectUI::on_varSkin_pressed() +{ + FileDialog* dialog = new FileDialog(QSize(192, 128)); + if (dialog->exec() == QDialog::Accepted) + { + static_cast(modified())->setSkin(QPixmap(dialog->selectedFile())); + setGui(); + } + delete dialog; +} + +void MapEffectUI::on_varEffect_indexChanged(const int effect) +{ + static_cast(modified())->setEffect(effect); +} + +void MapEffectUI::on_varValue1_valueChanged(const int value1) +{ + static_cast(modified())->setValue1(value1); +} + +void MapEffectUI::on_varValue2_currentIndexChanged(const int value2) +{ + static_cast(modified())->setValue1(varValue2->itemData(value2).toInt()); +} + +void MapEffectUI::on_varDirection_currentIndexChanged(const int direction) +{ + static_cast(modified())->setDirection(direction); +} + +void MapEffectUI::on_varIsGhost_clicked(const bool isGhost) +{ + static_cast(modified())->setIsGhost(isGhost); +} + +void MapEffectUI::on_varCanMove_clicked(const bool canMove) +{ + static_cast(modified())->setCanMove(canMove); +} + +void MapEffectUI::on_varDialog_currentIndexChanged(const int dialog) +{ + static_cast(modified())->setDialog(varDialog->itemData(dialog).toInt()); +} -- cgit