示例#1
0
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();
}
示例#2
0
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;
}