81 lines
2.0 KiB
C++
81 lines
2.0 KiB
C++
#include <QtGui>
|
|
|
|
extern "C" {
|
|
#include "global.h"
|
|
#include "artifact.h"
|
|
}
|
|
|
|
#include "CREArtifactPanel.h"
|
|
#include "CREUtils.h"
|
|
|
|
CREArtifactPanel::CREArtifactPanel()
|
|
{
|
|
myArtifact = NULL;
|
|
|
|
QGridLayout* layout = new QGridLayout(this);
|
|
|
|
QLabel* label = new QLabel(this);
|
|
label->setText("Name:");
|
|
layout->addWidget(label, 1, 1);
|
|
myName = new QLineEdit(this);
|
|
layout->addWidget(myName, 1, 2);
|
|
|
|
label = new QLabel(this);
|
|
label->setText("Chance:");
|
|
layout->addWidget(label, 2, 1);
|
|
myChance = new QLineEdit(this);
|
|
layout->addWidget(myChance, 2, 2);
|
|
|
|
label = new QLabel(this);
|
|
label->setText("Type:");
|
|
layout->addWidget(label, 3, 1);
|
|
myType = new QLineEdit(this);
|
|
layout->addWidget(myType, 3, 2);
|
|
|
|
myArchetypes = new QTreeWidget(this);
|
|
layout->addWidget(myArchetypes, 4, 1, 1, 2);
|
|
myArchetypes->setHeaderLabel("Allowed/forbidden archetypes");
|
|
myArchetypes->setIconSize(QSize(32, 32));
|
|
myArchetypes->setRootIsDecorated(false);
|
|
}
|
|
|
|
void CREArtifactPanel::setArtifact(const artifact* artifact)
|
|
{
|
|
Q_ASSERT(artifact);
|
|
myArtifact = artifact;
|
|
|
|
myName->setText(artifact->item->name);
|
|
myChance->setText(QString::number(artifact->chance));
|
|
myType->setText(QString::number(artifact->item->type));
|
|
|
|
const archt* arch;
|
|
const char* name;
|
|
QTreeWidgetItem* item;
|
|
bool check;
|
|
|
|
myArchetypes->clear();
|
|
|
|
for (const linked_char* allowed = artifact->allowed; allowed; allowed = allowed->next)
|
|
{
|
|
name = allowed->name;
|
|
if (name[0] == '!')
|
|
{
|
|
name = name + 1;
|
|
check = false;
|
|
}
|
|
else
|
|
check = true;
|
|
|
|
arch = try_find_archetype(name);
|
|
if (!arch)
|
|
arch = find_archetype_by_object_name(name);
|
|
|
|
if (arch)
|
|
{
|
|
item = CREUtils::archetypeNode(arch, NULL);
|
|
item->setCheckState(0, check ? Qt::Checked : Qt::Unchecked);
|
|
myArchetypes->addTopLevelItem(item);
|
|
}
|
|
}
|
|
}
|