bool Schema::save(QDomDocument& doc, QDomElement &parent, bool onlySelected) { QDomElement rootElem = doc.createElement(XML_TAGNAME.c_str()); parent.appendChild(rootElem); //save all gears QDomElement gearsElem = doc.createElement("Gears"); rootElem.appendChild(gearsElem); for (std::list<Gear*>::iterator it=_gears.begin();it!=_gears.end();++it) { GearGui* ggui = (*it)->getGearGui(); if( onlySelected && ( ggui==NULL || !( ggui->isSelected() ) )) continue; std::cerr<<"About to save!"<<std::endl; (*it)->save(doc, gearsElem); } //save all connections QDomElement connectionsElem = doc.createElement("Connections"); rootElem.appendChild(connectionsElem); std::list<Connection*> connections; getAllConnections(connections); for (std::list<Connection*>::iterator it = connections.begin(); it != connections.end(); ++it) { Gear * gA = getGearByName((*it)->gearA()); Gear * gB = getGearByName((*it)->gearB()); GearGui* ggA = (gA==NULL?NULL:gA->getGearGui()); GearGui* ggB = (gB==NULL?NULL:gB->getGearGui()); if(onlySelected && (ggA == NULL || !ggA->isSelected() || ggB == NULL || !ggB->isSelected())) continue; (*it)->save(doc, connectionsElem); delete (*it);//free } return true; }