Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/World.cpp

    r46ce1c r4f2895  
    245245    WorldTime::getInstance().setTime(_step);
    246246
    247     // TODO: removed when BondGraph creates the adjacency
    248     // 3. remove all of World's molecules
    249     for (MoleculeIterator iter = getMoleculeIter();
    250         getMoleculeIter() != moleculeEnd();
    251         iter = getMoleculeIter()) {
    252       getMolecules()->erase(*iter);
    253       destroyMolecule(*iter);
    254     }
    255 
    256247    // 4. scan for connected subgraphs => molecules
    257248    DepthFirstSearchAnalysis DFS;
     
    304295
    305296void World::destroyMolecule(molecule* mol){
    306   OBSERVE;
    307297  ASSERT(mol,"Molecule that was meant to be destroyed did not exist");
    308298  destroyMolecule(mol->getId());
     
    319309  }
    320310  mol->signOff(this);
     311  // TODO: removed when depcreated MoleculeListClass is gone
     312  molecules_deprecated->erase(mol);
    321313  DeleteMolecule(mol);
    322314  if (isMoleculeSelected(id))
     
    365357    NOTIFY(AtomRemoved);
    366358  }
     359  // check if it's the last atom
     360  molecule *_mol = atom->getMolecule();
     361  if ((_mol == NULL) || (_mol->getAtomCount() > 1))
     362    _mol = NULL;
    367363  DeleteAtom(atom);
    368364  if (isAtomSelected(id))
     
    370366  atoms.erase(id);
    371367  atomIdPool.releaseId(id);
     368  // remove molecule if empty
     369  if (_mol != NULL)
     370    destroyMolecule(_mol);
    372371}
    373372
     
    555554  std::for_each(invertedSelection.begin(),invertedSelection.end(),
    556555      std::bind1st(std::mem_fun(selector),this)); // func is select... see above
     556}
     557
     558void World::popAtomSelection(){
     559  OBSERVE;
     560  NOTIFY(SelectionChanged);
     561  selectedAtoms = selectedAtoms_Stack.top();
     562  selectedAtoms_Stack.pop();
     563}
     564
     565void World::pushAtomSelection(){
     566  OBSERVE;
     567  NOTIFY(SelectionChanged);
     568  selectedAtoms_Stack.push( selectedAtoms );
     569  selectedAtoms.clear();
    557570}
    558571
     
    685698  std::for_each(invertedSelection.begin(),invertedSelection.end(),
    686699      std::bind1st(std::mem_fun(selector),this)); // func is select... see above
     700}
     701
     702void World::popMoleculeSelection(){
     703  OBSERVE;
     704  NOTIFY(SelectionChanged);
     705  selectedMolecules = selectedMolecules_Stack.top();
     706  selectedMolecules_Stack.pop();
     707}
     708
     709void World::pushMoleculeSelection(){
     710  OBSERVE;
     711  NOTIFY(SelectionChanged);
     712  selectedMolecules_Stack.push( selectedMolecules );
     713  selectedMolecules.clear();
    687714}
    688715
Note: See TracChangeset for help on using the changeset viewer.