void __fastcall TfrmObjectList::InitListBox() { tvItems->IsUpdating = true; tvItems->Items->Clear(); cur_cls = LTools->CurrentClassID(); for(SceneToolsMapPairIt it=Scene->FirstTools(); it!=Scene->LastTools(); it++){ ESceneCustomOTools* ot = dynamic_cast<ESceneCustomOTools*>(it->second); if (ot&&((cur_cls==OBJCLASS_DUMMY)||(it->first==cur_cls))){ if (it->first==OBJCLASS_DUMMY) continue; TElTreeItem* node = FindFolderByType(it->first); if (!node) node = AddFolder(it->first); VERIFY(node); ObjectList& lst = ot->GetObjects(); if (OBJCLASS_GROUP==it->first){ for(ObjectIt _F = lst.begin();_F!=lst.end();_F++){ TElTreeItem* grp_node = AddObject(node,(*_F)->Name,(void*)(*_F)); ObjectList& grp_lst = ((CGroupObject*)(*_F))->GetObjects(); for (ObjectIt _G=grp_lst.begin(); _G!=grp_lst.end(); _G++) AddObject(grp_node,(*_G)->Name,(void*)(*_F)); } }else{ for(ObjectIt _F = lst.begin();_F!=lst.end();_F++) AddObject(node,(*_F)->Name,(void*)(*_F)); } } } tvItems->Sort (true); tvItems->IsUpdating = false; UpdateState(); tvItems->FullExpand (); obj_count = Scene->ObjCount(); }
bool EScene::FindDuplicateName() { // find duplicate name SceneToolsMapPairIt _I = m_SceneTools.begin(); SceneToolsMapPairIt _E = m_SceneTools.end(); for (; _I!=_E; _I++){ ESceneCustomOTools* mt = dynamic_cast<ESceneCustomOTools*>(_I->second); if (mt){ ObjectList& lst = mt->GetObjects(); for(ObjectIt _F = lst.begin();_F!=lst.end();_F++) if (FindObjectByName((*_F)->Name, *_F)){ ELog.DlgMsg(mtError,"Duplicate object name already exists: '%s'",(*_F)->Name); return true; } } } return false; }