00001 #include <QtGui>
00002
00003 extern "C" {
00004 #include "global.h"
00005 #include "artifact.h"
00006 }
00007
00008 #include "CREArtifactPanel.h"
00009 #include "CREUtils.h"
00010
00011 CREArtifactPanel::CREArtifactPanel()
00012 {
00013 myArtifact = NULL;
00014
00015 QGridLayout* layout = new QGridLayout(this);
00016
00017 QLabel* label = new QLabel(this);
00018 label->setText("Name:");
00019 layout->addWidget(label, 1, 1);
00020 myName = new QLineEdit(this);
00021 layout->addWidget(myName, 1, 2);
00022
00023 label = new QLabel(this);
00024 label->setText("Chance:");
00025 layout->addWidget(label, 2, 1);
00026 myChance = new QLineEdit(this);
00027 layout->addWidget(myChance, 2, 2);
00028
00029 label = new QLabel(this);
00030 label->setText("Type:");
00031 layout->addWidget(label, 3, 1);
00032 myType = new QLineEdit(this);
00033 layout->addWidget(myType, 3, 2);
00034
00035 myArchetypes = new QTreeWidget(this);
00036 layout->addWidget(myArchetypes, 4, 1, 1, 2);
00037 myArchetypes->setHeaderLabel("Allowed/forbidden archetypes");
00038 myArchetypes->setIconSize(QSize(32, 32));
00039 myArchetypes->setRootIsDecorated(false);
00040 }
00041
00042 void CREArtifactPanel::setArtifact(const artifact* artifact)
00043 {
00044 Q_ASSERT(artifact);
00045 myArtifact = artifact;
00046
00047 myName->setText(artifact->item->name);
00048 myChance->setText(QString::number(artifact->chance));
00049 myType->setText(QString::number(artifact->item->type));
00050
00051 const archt* arch;
00052 const char* name;
00053 QTreeWidgetItem* item;
00054 bool check;
00055
00056 myArchetypes->clear();
00057
00058 for (const linked_char* allowed = artifact->allowed; allowed; allowed = allowed->next)
00059 {
00060 name = allowed->name;
00061 if (name[0] == '!')
00062 {
00063 name = name + 1;
00064 check = false;
00065 }
00066 else
00067 check = true;
00068
00069 arch = try_find_archetype(name);
00070 if (!arch)
00071 arch = find_archetype_by_object_name(name);
00072
00073 if (arch)
00074 {
00075 item = CREUtils::archetypeNode(arch, NULL);
00076 item->setCheckState(0, check ? Qt::Checked : Qt::Unchecked);
00077 myArchetypes->addTopLevelItem(item);
00078 }
00079 }
00080 }