bool EditableSceneBodyImpl::storeProperties(Archive& archive) { ListingPtr states = new Listing(); ItemList<BodyItem> bodyItems; bodyItems.extractChildItems(RootItem::instance()); for(size_t i=0; i < bodyItems.size(); ++i){ BodyItem* bodyItem = bodyItems[i]; EditableSceneBody* sceneBody = bodyItem->existingSceneBody(); if(sceneBody){ ValueNodePtr id = archive.getItemId(bodyItem); if(id){ EditableSceneBodyImpl* impl = sceneBody->impl; MappingPtr state = new Mapping(); state->insert("bodyItem", id); state->write("showCenterOfMass", impl->isCmVisible); state->write("showZmp", impl->isZmpVisible); states->append(state); } } } if(!states->empty()){ archive.insert("editableSceneBodies", states); return true; } return false; }
void ItemTreeViewImpl::storeExpandedItems(Archive& archive) { ListingPtr expanded = new Listing(); expanded->setFlowStyle(true); storeExpandedItemsSub(invisibleRootItem(), archive, expanded); if(!expanded->empty()){ archive.insert("expanded", expanded); } }
void ViewArea::storeAllViewAreaLayouts(ArchivePtr archive) { ListingPtr layouts = new Listing(); for(size_t i=0; i < viewAreas.size(); ++i){ ArchivePtr layout = new Archive(); layout->inheritSharedInfoFrom(*archive); viewAreas[i]->storeLayout(layout); layouts->append(layout); } if(!layouts->empty()){ archive->insert("viewAreas", layouts); } }
void ItemTreeViewImpl::storeItemIds(Archive& archive, const char* key, const ItemList<>& items) { ListingPtr idseq = new Listing(); idseq->setFlowStyle(true); for(size_t i=0; i < items.size(); ++i){ ValueNodePtr id = archive.getItemId(items[i]); if(id){ idseq->append(id); } } if(!idseq->empty()){ archive.insert(key, idseq); } }
bool ViewManager::storeViewStates(ArchivePtr archive, const std::string& key) { // assign view ids first int id = 0; ModuleNameToClassNameToViewInfoMap::iterator p; for(p = moduleNameToClassNameToViewInfoMap.begin(); p != moduleNameToClassNameToViewInfoMap.end(); ++p){ ClassNameToViewInfoMap& viewInfoMap = *p->second; for(ClassNameToViewInfoMap::iterator q = viewInfoMap.begin(); q != viewInfoMap.end(); ++q){ ViewInfoPtr& viewInfo = q->second; InstanceInfoList& instances = viewInfo->instances; for(InstanceInfoList::iterator p = instances.begin(); p != instances.end(); ++p){ archive->registerViewId((*p)->view, id++); } } } ListingPtr viewList = new Listing(); for(p = moduleNameToClassNameToViewInfoMap.begin(); p != moduleNameToClassNameToViewInfoMap.end(); ++p){ const std::string& moduleName = p->first; ClassNameToViewInfoMap& viewInfoMap = *p->second; for(ClassNameToViewInfoMap::iterator q = viewInfoMap.begin(); q != viewInfoMap.end(); ++q){ ViewInfoPtr& viewInfo = q->second; InstanceInfoList& instances = viewInfo->instances; for(InstanceInfoList::iterator p = instances.begin(); p != instances.end(); ++p){ View* view = (*p)->view; ArchivePtr viewArchive = storeView(*archive, moduleName, *viewInfo, view); if(viewArchive){ viewList->append(viewArchive); } } } } if(!viewList->empty()){ archive->insert(key, viewList); return true; } return false; }