#include #include 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 }