void EnchantsDialog::OnClick(wxCommandEvent &event) { if (event.GetId() == ID_ENCHANTSOK) { std::string sel = effectsListbox->GetStringSelection().c_str(); if (sel == "") { Show(false); return; } if (sel==wxT("NONE") || sel==wxT("None")) { if (slot->GetSelection() == 0) RHandEnchant = -1; else LHandEnchant = -1; Show(false); return; } for (std::map<int, EnchantsRec>::iterator it=enchants.begin(); it!=enchants.end(); ++it) { if (it->second.name == sel) { EnchantsRec enchant = it->second; int s = slot->GetSelection(); s += 10; if (!charControl->model) return; if (!slotHasModel(s)) return; if (slot->GetSelection() == 0) RHandEnchant = it->first; else LHandEnchant = it->first; // children: for (size_t i=0; i < charControl->charAtt->children.size(); i++) { if (charControl->charAtt->children[i]->slot == s) { Attachment *att = charControl->charAtt->children[i]; if (att->children.size() > 0) att->delChildren(); WoWModel *m = static_cast<WoWModel*>(att->model()); if (!m) return; for (ssize_t k=0; k<5; k++) { if ((enchant.models[k] != "") && (m->attLookup[k]>=0)) { att->addChild(enchant.models[k].c_str(), k, -1); } } break; } } Show(false); return; } } } else if (event.GetId() == ID_ENCHANTSCANCEL) { this->Show(false); } }