Changeset 8923ad8 for src/UIElements


Ignore:
Timestamp:
Jul 24, 2015, 4:44:35 PM (9 years ago)
Author:
Frederik Heber <heber@…>
Branches:
Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
Children:
9c259e
Parents:
28864c
git-author:
Frederik Heber <heber@…> (06/08/15 17:05:01)
git-committer:
Frederik Heber <heber@…> (07/24/15 16:44:35)
Message:

Removed GLMoleculeObject_molecule's init() and reinit().

  • also removed InitAtomMap and associated code.
  • removed changeAtomId slot/signal in GLWorldScene.
Location:
src/UIElements/Views/Qt4/Qt3D
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject_molecule.cpp

    r28864c r8923ad8  
    178178  m_visible = false;
    179179
    180   init();
    181 
    182180  connect (this, SIGNAL(hoverChanged(GLMoleculeObject *)), this, SLOT(hoverChangedSignalled(GLMoleculeObject *)));
    183181  connect (this, SIGNAL(hoverChanged(GLMoleculeObject *)), this, SIGNAL(changed()));
     
    217215  m_visible = false;
    218216
    219   init();
    220 
    221217  connect (this, SIGNAL(hoverChanged(GLMoleculeObject *)), this, SLOT(hoverChangedSignalled(GLMoleculeObject *)));
    222218  connect (this, SIGNAL(hoverChanged(GLMoleculeObject *)), this, SIGNAL(changed()));
     
    244240  _atom->signOff(this, AtomObservable::BondsAdded);*/
    245241  World::getInstance().signOff(this, World::SelectionChanged);
    246 }
    247 
    248 /** Initialise the WorldScene with molecules and atoms from World.
    249  *
    250  */
    251 void GLMoleculeObject_molecule::init()
    252 {
    253   const molecule * const _molecule = const_cast<const World &>(World::getInstance()).
    254       getMolecule(MoleculeById(moleculeid));
    255   if (_molecule == NULL) {
    256     ELOG(1, "GLMoleculeObject_molecule cannot init, molecule with "
    257         << moleculeid << " has disappeared.");
    258     return;
    259   }
    260   if (_molecule->begin() != _molecule->end()) {
    261     int atomicid = -1;
    262     for (molecule::const_iterator atomiter = _molecule->begin();
    263         atomiter != _molecule->end();
    264         atomiter++) {
    265       // create atom objects in scene
    266       atomicid = (*atomiter)->getId();
    267       atomInserted(atomicid);
    268       InitAtomNodesSet.insert(atomicid);
    269 
    270       // create bond objects in scene
    271       const BondList &bondlist = (*atomiter)->getListOfBonds();
    272       for (BondList::const_iterator bonditer = bondlist.begin();
    273           bonditer != bondlist.end();
    274           ++bonditer) {
    275         const bond::ptr _bond = *bonditer;
    276         const GLMoleculeObject_bond::SideOfBond side = (_bond->leftatom == *atomiter) ?
    277             GLMoleculeObject_bond::left : GLMoleculeObject_bond::right;
    278         bondInserted(_bond, side);
    279       }
    280     }
    281     // set id to one of the atom's as either mol or atoms is present at the same time
    282     setObjectId(atomicid);
    283   }
    284242}
    285243
     
    320278      addAtomBonds(_bond, side);
    321279      addAtomBonds(_bond, otherside);
    322     }
    323   }
    324 }
    325 
    326 void GLMoleculeObject_molecule::reinit()
    327 {
    328   const molecule * const _molecule = const_cast<const World &>(World::getInstance()).
    329       getMolecule(MoleculeById(moleculeid));
    330   if (_molecule == NULL) {
    331     ELOG(1, "GLMoleculeObject_molecule cannot reinit, molecule with "
    332         << moleculeid << " has disappeared.");
    333     return;
    334   }
    335   if (_molecule->getAtomCount() > 0) {
    336     for (molecule::const_iterator atomiter = _molecule->begin();
    337         atomiter != _molecule->end();
    338         atomiter++) {
    339       // check whether atom already exists
    340       const atomId_t atomid = (*atomiter)->getId();
    341       const bool atom_present = AtomsinSceneMap.count(atomid);
    342       if (!atom_present)
    343         atomInserted((*atomiter)->getId());
    344       else
    345         AtomsinSceneMap[atomid]->resetPosition();
    346 
    347 
    348       // create bond objects in scene
    349       addAtomBonds(*atomiter);
    350280    }
    351281  }
     
    543473{
    544474  LOG(3, "INFO: GLWorldScene: Received signal atomInserted for atom "+toString(_id)+".");
    545   // remove ids if second insertion via update comes in
    546   if ((!InitAtomNodesSet.empty()) && (InitAtomNodesSet.find(_id) != InitAtomNodesSet.end())) {
    547     // the problem is as follows:
    548     // In order to get really all atoms, we first signOn to molecule and then call init()
    549     // however, in init() further atoms may have been loaded which are then also
    550     // instantiated by init(). Note only that but we also obtain an update() from
    551     // molecule itself (because we signOn'd before) that a new atom is to be inserted
    552     // hence, this would cause double insertion of the same atom and this has to be
    553     // caught
    554     InitAtomNodesSet.erase(_id);
    555     LOG(4, "Atom with " << _id << " has already been added.");
    556   } else {
    557     GLMoleculeObject_atom *atomObject = new GLMoleculeObject_atom(GLMoleculeObject::meshSphere, this, _id);
    558     ASSERT( atomObject != NULL,
    559         "GLMoleculeObject_molecule::atomInserted - could not create atom object for "+toString(_id));
    560     AtomNodeMap::iterator iter = AtomsinSceneMap.find(_id);
    561     ASSERT(iter == AtomsinSceneMap.end(),
    562         "GLMoleculeObject_molecule::atomInserted - same atom with id "+toString(_id)+" added again.");
    563     AtomsinSceneMap.insert( make_pair(_id, atomObject) );
    564 
    565     qRegisterMetaType<atomId_t>("atomId_t");
    566     qRegisterMetaType<bond::ptr>("bond::ptr");
    567     qRegisterMetaType<GLMoleculeObject_bond::SideOfBond>("GLMoleculeObject_bond::SideOfBond");
    568     connect (atomObject, SIGNAL(clicked(atomId_t)), this, SIGNAL(atomClicked(atomId_t)));
    569     connect (atomObject, SIGNAL(changed()), this, SIGNAL(changed()));
    570     connect (atomObject, SIGNAL(hoverChanged(GLMoleculeObject *)), this, SIGNAL(changed()));
    571     connect (atomObject, SIGNAL(hoverChanged(GLMoleculeObject *)), this, SLOT(hoverChangedSignalled(GLMoleculeObject *)));
    572     connect (atomObject, SIGNAL(selectionChanged()), this, SIGNAL(changed()));
    573     connect (atomObject, SIGNAL(BondsInserted(const bond::ptr , const GLMoleculeObject_bond::SideOfBond)), this, SLOT(bondInserted(const bond::ptr , const GLMoleculeObject_bond::SideOfBond)));
    574     connect (atomObject, SIGNAL(indexChanged(GLMoleculeObject_atom*, int, int)), this, SLOT(changeAtomId(GLMoleculeObject_atom*, int, int)));
    575 
    576     isBoundingBoxUptodate = false;
    577 
    578     if (m_objectId  == -1)
    579       setObjectId(_id);
    580   }
     475  GLMoleculeObject_atom *atomObject = new GLMoleculeObject_atom(GLMoleculeObject::meshSphere, this, _id);
     476  ASSERT( atomObject != NULL,
     477      "GLMoleculeObject_molecule::atomInserted - could not create atom object for "+toString(_id));
     478  AtomNodeMap::iterator iter = AtomsinSceneMap.find(_id);
     479  ASSERT(iter == AtomsinSceneMap.end(),
     480      "GLMoleculeObject_molecule::atomInserted - same atom with id "+toString(_id)+" added again.");
     481  AtomsinSceneMap.insert( make_pair(_id, atomObject) );
     482
     483  qRegisterMetaType<atomId_t>("atomId_t");
     484  qRegisterMetaType<bond::ptr>("bond::ptr");
     485  qRegisterMetaType<GLMoleculeObject_bond::SideOfBond>("GLMoleculeObject_bond::SideOfBond");
     486  connect (atomObject, SIGNAL(clicked(atomId_t)), this, SIGNAL(atomClicked(atomId_t)));
     487  connect (atomObject, SIGNAL(changed()), this, SIGNAL(changed()));
     488  connect (atomObject, SIGNAL(hoverChanged(GLMoleculeObject *)), this, SIGNAL(changed()));
     489  connect (atomObject, SIGNAL(hoverChanged(GLMoleculeObject *)), this, SLOT(hoverChangedSignalled(GLMoleculeObject *)));
     490  connect (atomObject, SIGNAL(selectionChanged()), this, SIGNAL(changed()));
     491  connect (atomObject, SIGNAL(BondsInserted(const bond::ptr , const GLMoleculeObject_bond::SideOfBond)), this, SLOT(bondInserted(const bond::ptr , const GLMoleculeObject_bond::SideOfBond)));
     492  connect (atomObject, SIGNAL(indexChanged(GLMoleculeObject_atom*, int, int)), this, SLOT(changeAtomId(GLMoleculeObject_atom*, int, int)));
     493
     494  isBoundingBoxUptodate = false;
     495
     496  if (m_objectId  == -1)
     497    setObjectId(_id);
    581498
    582499  // add all bonds
  • src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject_molecule.hpp

    r28864c r8923ad8  
    7777
    7878private:
    79   void init();
    80   void reinit();
    81 
    8279  void addAtomBonds(
    8380      const bond::ptr &_bond,
     
    10198  typedef std::map< atomId_t, GLMoleculeObject_atom* > AtomNodeMap;
    10299  typedef std::map< BondIds , GLMoleculeObject_bond* > BondNodeMap;
    103   typedef std::set< atomId_t > InitAtomNodesSet_t;
    104   //!> atoms added by init() may also be added by atomsInserted, don't alarm then
    105   InitAtomNodesSet_t InitAtomNodesSet;
    106100  AtomNodeMap AtomsinSceneMap;
    107101  BondNodeMap BondsinSceneMap;
  • src/UIElements/Views/Qt4/Qt3D/GLWorldScene.cpp

    r28864c r8923ad8  
    107107void GLWorldScene::init()
    108108{
    109   const std::vector<const molecule *> &molecules =
    110       const_cast<const World &>(World::getInstance()).getAllMolecules();
    111 
    112   for (std::vector<const molecule*>::const_iterator moliter = molecules.begin();
    113       moliter != molecules.end();
    114       moliter++) {
    115     // create molecule objects in scene
    116     moleculeInserted((*moliter)->getId());
    117   }
     109//  const std::vector<const molecule *> &molecules =
     110//      const_cast<const World &>(World::getInstance()).getAllMolecules();
     111//
     112//  for (std::vector<const molecule*>::const_iterator moliter = molecules.begin();
     113//      moliter != molecules.end();
     114//      moliter++) {
     115//    // create molecule objects in scene
     116//    moleculeInserted((*moliter)->getId());
     117//  }
    118118}
    119119
     
    138138      moleculeInserted((*moliter)->getId());
    139139  }
     140
     141  MoleculeNodeMap::iterator iter = MoleculesinSceneMap.begin();
     142  for (;iter != MoleculesinSceneMap.end();) {
     143    const moleculeId_t molid = iter->first;
     144    const molecule * const mol = const_cast<const World &>(World::getInstance()).
     145        getMolecule(MoleculeById(molid));
     146    const bool mol_absent = (mol == NULL);
     147    // step on to next molecule before possibly removing entry and invalidating iter
     148    ++iter;
     149    if (mol_absent)
     150      moleculeRemoved(molid);
     151  }
     152
    140153}
    141154
     
    226239  connect (molObject, SIGNAL(atomClicked(atomId_t)), this, SLOT(atomClicked(atomId_t)));
    227240  connect (molObject, SIGNAL(moleculeClicked(moleculeId_t)), this, SLOT(moleculeClicked(moleculeId_t)));
    228   connect (molObject, SIGNAL(changeAtomId(GLMoleculeObject_atom *, int, int)), this, SLOT(changeAtomId(GLMoleculeObject_atom *, int, int)));
    229241  connect (molObject, SIGNAL(selectionChanged()), this, SIGNAL(changed()));
    230242  connect (molObject, SIGNAL(selectionChanged()), this, SIGNAL(changed()));
Note: See TracChangeset for help on using the changeset viewer.