Example #1
0
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;
}