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; }
MappingPtr ViewAreaImpl::storeSplitterState(QSplitter* splitter, Archive* archive) { MappingPtr state = new Mapping; ListingPtr children = new Listing; for(int i=0; i < splitter->count(); ++i){ QSplitter* childSplitter = dynamic_cast<QSplitter*>(splitter->widget(i)); if(childSplitter){ MappingPtr childState = storeSplitterState(childSplitter, archive); if(childState){ children->append(childState); } } else { ViewPane* pane = dynamic_cast<ViewPane*>(splitter->widget(i)); if(pane && pane->count() > 0){ MappingPtr childState = storePaneState(pane, archive); if(childState){ children->append(childState); } } } } const int numChildren = children->size(); if(numChildren == 0){ state.reset(); } else if(numChildren == 1){ state = children->at(0)->toMapping(); } else if(numChildren == 2){ state->write("type", "splitter"); state->write("orientation", (splitter->orientation() == Qt::Vertical) ? "vertical" : "horizontal"); Listing* sizeSeq = state->createFlowStyleListing("sizes"); QList<int> sizes = splitter->sizes(); for(int i=0; i < sizes.size(); ++i){ sizeSeq->append(sizes[i]); } state->insert("children", children); } return state; }
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); } }
void ItemTreeViewImpl::storeExpandedItemsSub(QTreeWidgetItem* parentTwItem, Archive& archive, ListingPtr& expanded) { int n = parentTwItem->childCount(); for(int i=0; i < n; ++i){ ItvItem* itvItem = dynamic_cast<ItvItem*>(parentTwItem->child(i)); if(itvItem){ if(itvItem->isExpanded()){ ValueNodePtr id = archive.getItemId(itvItem->item); if(id){ expanded->append(id); } } if(itvItem->childCount() > 0){ storeExpandedItemsSub(itvItem, archive, expanded); } } } }
bool SensorVisualizerItem::store(Archive& archive) { ListingPtr subItems = new Listing(); for(size_t i=0; i < impl->subItems.size(); i++){ Item* item = impl->subItems[i]; string pluginName, className; ItemManager::getClassIdentifier(item, pluginName, className); ArchivePtr subArchive = new Archive(); subArchive->write("class", className); subArchive->write("name", item->name()); item->store(*subArchive); subItems->append(subArchive); } archive.insert("subItems", subItems); return true; }
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; }