155 lines
4.5 KiB
C++
155 lines
4.5 KiB
C++
#include <Qt>
|
|
#include <QtGui>
|
|
|
|
extern "C" {
|
|
#include "global.h"
|
|
#include "recipe.h"
|
|
}
|
|
|
|
#include "CREFormulaePanel.h"
|
|
#include "CREUtils.h"
|
|
|
|
CREFormulaePanel::CREFormulaePanel()
|
|
{
|
|
myRecipe = NULL;
|
|
|
|
QGridLayout* layout = new QGridLayout(this);
|
|
|
|
layout->addWidget(new QLabel(tr("Title:"), this), 1, 1);
|
|
myTitle = new QLineEdit(this);
|
|
layout->addWidget(myTitle, 1, 2);
|
|
|
|
layout->addWidget(new QLabel(tr("Skill:"), this), 2, 1);
|
|
mySkill = new QComboBox(this);
|
|
layout->addWidget(mySkill, 2, 2);
|
|
|
|
layout->addWidget(new QLabel(tr("Cauldron:"), this), 3, 1);
|
|
myCauldron = new QComboBox(this);
|
|
layout->addWidget(myCauldron, 3, 2);
|
|
|
|
layout->addWidget(new QLabel(tr("Yield:"), this), 4, 1);
|
|
myYield = new QLineEdit(this);
|
|
layout->addWidget(myYield, 4, 2);
|
|
|
|
layout->addWidget(new QLabel(tr("Chance:"), this), 5, 1);
|
|
myChance = new QLineEdit(this);
|
|
layout->addWidget(myChance, 5, 2);
|
|
|
|
layout->addWidget(new QLabel(tr("Experience:"), this), 6, 1);
|
|
myExperience = new QLineEdit(this);
|
|
layout->addWidget(myExperience, 6, 2);
|
|
|
|
layout->addWidget(new QLabel(tr("Difficulty:"), this), 7, 1);
|
|
myDifficulty = new QLineEdit(this);
|
|
layout->addWidget(myDifficulty, 7, 2);
|
|
|
|
mySkill->addItem(tr("(none)"), 0);
|
|
myCauldron->addItem(tr("(none)"), 0);
|
|
const archt* arch = first_archetype;
|
|
for (; arch; arch = arch->next)
|
|
{
|
|
if (arch->clone.type == SKILL)
|
|
mySkill->addItem(arch->clone.name);
|
|
if (QUERY_FLAG(&arch->clone, FLAG_IS_CAULDRON))
|
|
myCauldron->addItem(arch->name);
|
|
}
|
|
|
|
myArchetypes = new QTreeWidget(this);
|
|
myArchetypes->setHeaderLabel(tr("Archetypes:"));
|
|
myArchetypes->setRootIsDecorated(false);
|
|
myArchetypes->setIconSize(QSize(32, 32));
|
|
layout->addWidget(myArchetypes, 8, 1, 1, 2);
|
|
|
|
layout->addWidget(new QLabel(tr("Ingredients:"), this), 9, 1, 1, 2);
|
|
myIngredients = new QTextEdit(this);
|
|
layout->addWidget(myIngredients, 10, 1, 1, 2);
|
|
|
|
QHBoxLayout* buttons = new QHBoxLayout;
|
|
myValidate = new QPushButton(tr("&Validate"));
|
|
buttons->addWidget(myValidate);
|
|
myReset = new QPushButton(tr("&Reset"));
|
|
buttons->addWidget(myReset);
|
|
layout->addLayout(buttons, 11, 1, 1, 2);
|
|
|
|
connect(myReset, SIGNAL(clicked(bool)), this, SLOT(resetClicked(bool)));
|
|
connect(myValidate, SIGNAL(clicked(bool)), this, SLOT(validateClicked(bool)));
|
|
}
|
|
|
|
void CREFormulaePanel::setRecipe(const recipe* recipe)
|
|
{
|
|
Q_ASSERT(recipe);
|
|
myRecipe = recipe;
|
|
|
|
myTitle->setText(recipe->title);
|
|
myYield->setText(QString::number(recipe->yield));
|
|
myChance->setText(QString::number(recipe->chance));
|
|
myExperience->setText(QString::number(recipe->exp));
|
|
myDifficulty->setText(QString::number(recipe->diff));
|
|
|
|
int index = mySkill->findText(recipe->skill);
|
|
if (index == -1)
|
|
index = 0;
|
|
mySkill->setCurrentIndex(index);
|
|
|
|
index = myCauldron->findText(recipe->cauldron);
|
|
if (index == -1)
|
|
index = 0;
|
|
myCauldron->setCurrentIndex(index);
|
|
|
|
myArchetypes->clear();
|
|
|
|
const archt* arch;
|
|
for (size_t a = 0; a < recipe->arch_names; a++)
|
|
{
|
|
arch = find_archetype(recipe->arch_name[a]);
|
|
myArchetypes->addTopLevelItem(CREUtils::archetypeNode(arch, NULL));
|
|
}
|
|
|
|
QStringList list;
|
|
for (const linked_char* ing = myRecipe->ingred; ing; ing = ing->next)
|
|
{
|
|
list.append(ing->name);
|
|
}
|
|
myIngredients->setPlainText(list.join("\n"));
|
|
}
|
|
|
|
void CREFormulaePanel::resetClicked(bool)
|
|
{
|
|
setRecipe(myRecipe);
|
|
}
|
|
|
|
void CREFormulaePanel::validateClicked(bool)
|
|
{
|
|
#if 0
|
|
Q_ASSERT(myRecipe);
|
|
|
|
myRecipe->setTitle(myTitle->text());
|
|
myRecipe->setYield(myYield->text().toInt());
|
|
myRecipe->setChance(myChance->text().toInt());
|
|
myRecipe->setExperience(myExperience->text().toInt());
|
|
myRecipe->setDifficulty(myDifficulty->text().toInt());
|
|
if (mySkill->currentIndex() != 0)
|
|
myRecipe->setSkill(mySkill->currentText());
|
|
else
|
|
myRecipe->setSkill("");
|
|
if (myCauldron->currentIndex() != 0)
|
|
myRecipe->setCauldron(myCauldron->currentText());
|
|
else
|
|
myRecipe->setCauldron("");
|
|
|
|
QStringList arches;
|
|
const Archetype* arch;
|
|
ManagedReference ref;
|
|
for (int a = 0; a < myArchetypes->topLevelItemCount(); a++)
|
|
{
|
|
ref = myArchetypes->topLevelItem(a)->data(0, Qt::UserRole).toInt();
|
|
arch = DM_ARCHS->get(ref);
|
|
arches.append(arch->name);
|
|
DM_ARCHS->release(ref);
|
|
}
|
|
myRecipe->setArches(arches);
|
|
|
|
myRecipe->setIngredients(myIngredients->toPlainText().split('\n'));
|
|
#endif
|
|
}
|