From 4d705de01059eb04b19db68a11cea1c57084c57a Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Wed, 28 May 2008 00:59:52 +0000 Subject: [FIX] Typechart now works [FIX] Matrix fixed up [FIX] Pokemod map widget fixed up [FIX] FractionWidget sets stuff on ctor [FIX] Assertion used in pokemod rather than returning NULL [FIX] Fixed a bad compare in Type git-svn-id: https://pokegen.svn.sourceforge.net/svnroot/pokegen/trunk@180 6ecfd1a5-f3ed-3746-8530-beee90d26b22 --- pokemodr/PokemodUI.cpp | 49 ++++++++++++++++++++++++++----------------------- 1 file changed, 26 insertions(+), 23 deletions(-) (limited to 'pokemodr/PokemodUI.cpp') diff --git a/pokemodr/PokemodUI.cpp b/pokemodr/PokemodUI.cpp index 88d7111b..8479fd15 100644 --- a/pokemodr/PokemodUI.cpp +++ b/pokemodr/PokemodUI.cpp @@ -20,7 +20,7 @@ // PokeModr includes #include "FileDialog.h" -#include "TypechartWidgetItem.h" +#include "TypechartModel.h" // Pokemod includes #include "../pokemod/Map.h" @@ -40,6 +40,14 @@ PokemodUI::~PokemodUI() { } +void PokemodUI::initGui() +{ + QStringList types; + for (int i = 0; i < static_cast(original())->typeCount(); ++i) + types << static_cast(original())->type(i)->name(); + varTypechart->setModel(new TypechartModel(static_cast(original())->typechart(), types)); +} + void PokemodUI::refreshGui() { varMap->clear(); @@ -48,19 +56,7 @@ void PokemodUI::refreshGui() const Map* map = static_cast(original())->map(i); varMap->addItem(map->name(), map->id()); } - varTypechart->setRowCount(static_cast(original())->typeCount()); - varTypechart->setColumnCount(static_cast(original())->typeCount()); - QStringList types; - Matrix* typeChart = static_cast(original())->typeChart(); - for (int i = 0; i < static_cast(original())->typeCount(); ++i) - { - types << static_cast(original())->type(i)->name(); - // TODO: set the typechart correctly -// for (int j = 0; j < static_cast(original())->typeCount(); ++j) -// varTypechart->item(i, j)->setData(Qt::EditRole, QVariant::fromValue(typeChart->at(i, j))); - } - varTypechart->setVerticalHeaderLabels(types); - varTypechart->setHorizontalHeaderLabels(types); + varEffectiveness->setEnabled(false); } void PokemodUI::setGui() @@ -74,9 +70,10 @@ void PokemodUI::setGui() if (resetWarps) { varWarp->clear(); - const Map* map = static_cast(original())->mapById(static_cast(modified())->startMap()); - if (map) + const int mapIndex = static_cast(original())->mapIndex(static_cast(modified())->startMap()); + if (mapIndex != INT_MAX) { + const Map* map = static_cast(original())->map(mapIndex); for (int i = 0; i < map->warpCount(); ++i) { const MapWarp* warp = map->warp(i); @@ -127,12 +124,12 @@ void PokemodUI::on_varDescription_textChanged(const QString& description) void PokemodUI::on_varMap_activated(const int map) { - static_cast(modified())->setStartMap(map); + static_cast(modified())->setStartMap(varMap->itemData(map).toInt()); } void PokemodUI::on_varWarp_activated(const int warp) { - static_cast(modified())->setStartWarp(warp); + static_cast(modified())->setStartWarp(varWarp->itemData(warp).toInt()); } void PokemodUI::on_varWalkSkin_pressed() @@ -201,10 +198,16 @@ void PokemodUI::on_varSurfFishSkin_pressed() delete dialog; } -void PokemodUI::on_varTypechart_currentItemChanged(QTableWidgetItem* current, QTableWidgetItem* previous) +void PokemodUI::on_varTypechart_clicked(const QModelIndex& index) { - disconnect(varEffectiveness, SIGNAL(valueChanged(Fraction)), static_cast(previous), SLOT(setValue(Fraction))); - TypechartWidgetItem* widgetItem = static_cast(current); -// varEffectiveness->setValue(widgetItem->data(Qt::EditRole).value()); - connect(varEffectiveness, SIGNAL(valueChanged(Fraction)), widgetItem, SLOT(setValue(Fraction))); + m_index = index; + varEffectiveness->setEnabled(true); + varEffectiveness->setValue(varTypechart->model()->data(m_index, Qt::EditRole).value()); +} + +void PokemodUI::on_varEffectiveness_valueChanged(const Fraction& multiplier) +{ + varTypechart->model()->setData(m_index, QVariant::fromValue(multiplier), Qt::EditRole); + emit(changed()); + setGui(); } -- cgit