#include extern "C" { #include "global.h" #include "face.h" #include "image.h" } #include "CREFacePanel.h" #include "CREUtils.h" /** @todo duplication with common/image */ static const char *const colorname[] = { "black", /* 0 */ "white", /* 1 */ "blue", /* 2 */ "red", /* 3 */ "orange", /* 4 */ "light_blue", /* 5 */ "dark_orange", /* 6 */ "green", /* 7 */ "light_green", /* 8 */ "grey", /* 9 */ "brown", /* 10 */ "yellow", /* 11 */ "khaki" /* 12 */ }; CREFacePanel::CREFacePanel() { myFace = 0; QGridLayout* layout = new QGridLayout(this); myUsing = new QTreeWidget(this); myUsing->setColumnCount(1); myUsing->setHeaderLabel(tr("Used by")); myUsing->setIconSize(QSize(32, 32)); layout->addWidget(myUsing, 1, 1, 3, 2); myColor = new QComboBox(this); layout->addWidget(myColor, 4, 2); layout->addWidget(new QLabel("Magicmap color: "), 4, 1); for(uint color = 0; color < sizeof(colorname) / sizeof(*colorname); color++) myColor->addItem(colorname[color], color); myFile = new QLineEdit(this); myFile->setReadOnly(true); layout->addWidget(myFile, 5, 2); layout->addWidget(new QLabel("Original file: "), 5, 1); mySave = new QPushButton(tr("Save face")); layout->addWidget(mySave, 6, 1); connect(mySave, SIGNAL(clicked(bool)), this, SLOT(saveClicked(bool))); } void CREFacePanel::setFace(const New_Face* face) { Q_ASSERT(face); myFace = face; myUsing->clear(); QTreeWidgetItem* root = NULL; const archt* arch; for (arch = first_archetype; arch; arch = arch->more ? arch->more : arch->next) { if (arch->clone.face == myFace) { if (root == NULL) { root = CREUtils::archetypeNode(NULL); myUsing->addTopLevelItem(root); root->setExpanded(true); } CREUtils::archetypeNode(arch, root); } } root = NULL; const Animations* anim; // "bug" animation is zero, don't forget that shift for (int a = 0; a <= num_animations; a++) { anim = &animations[a]; for (int face = 0; face < anim->num_animations; face++) { if (anim->faces[face] == myFace->number) { if (root == NULL) { root = CREUtils::animationNode(NULL); myUsing->addTopLevelItem(root); root->setExpanded(true); } CREUtils::animationNode(anim, root); break; } } } root = NULL; const artifactlist* list; const typedata* data; const artifact* arti; for (list = first_artifactlist; list; list = list->next) { data = get_typedata(list->type); // item = new QTreeWidgetItem(root, QStringList(data ? data->name : tr("type %1").arg(type))); for (arti = list->items; arti; arti = arti->next) { if (arti->item->face == myFace) { if (!root) { root = CREUtils::artifactNode(NULL); myUsing->addTopLevelItem(root); root->setExpanded(true); } CREUtils::artifactNode(arti, root); } } } myColor->setCurrentIndex(myFace->magicmap); } void CREFacePanel::saveClicked(bool) { }