Ignore:
Timestamp:
Apr 20, 2016, 11:07:47 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:
bd6768
Parents:
7f185f9
git-author:
Frederik Heber <heber@…> (04/12/16 11:29:56)
git-committer:
Frederik Heber <heber@…> (04/20/16 23:07:47)
Message:

QtObservedAtom only offers direct access to associated const QtObservedMolecule ref.

  • the molecule index is not part of the atom's state, hence cannot be directly observed. The only thing we observe is the association to the molecule. For this a O/O-signal is available and we may actively change the ref when getting this signal without breaking anything as it occurs in the same thread, hence the board can be safely accessed.
  • QtObservedBond now needs to access mol index through the molecule ref.
  • QtInfoBox may now conveniently access atom'smol ref directly.
  • FIX: Removed static QtObservedBond::getMolecule().
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/UIElements/Qt4/InstanceBoard/QtObservedBond.cpp

    r7f185f9 r273c8a  
    5252using namespace boost::assign;
    5353
    54 static const Observable::channels_t getAllObservedAtomChannels()
    55 {
    56   Observable::channels_t channels;
    57   channels +=
    58       AtomObservable::IndexChanged,
    59       AtomObservable::ElementChanged,
    60       AtomObservable::PositionChanged;
    61   return channels;
    62 }
    63 
    64 static const molecule * getMolecule(const bond::ptr _bond)
    65 {
    66   ASSERT( _bond->leftatom->getMolecule() == _bond->rightatom->getMolecule(),
    67       "getMolecule() - leftatom and rightatom belong to different molecules.");
    68   return _bond->leftatom->getMolecule();
    69 }
    70 
    71 static const molecule * const getMoleculeConst(const bond::ptr _bond)
    72 {
    73   ASSERT( _bond->leftatom->getMolecule() == _bond->rightatom->getMolecule(),
    74       "getMolecule() - leftatom and rightatom belong to different molecules.");
    75   return _bond->leftatom->getMolecule();
    76 }
    77 
    7854template <class T>
    7955Observable * const getObservable(const T * _ptr)
     
    8763  const QtObservedBond::ObservableCount_t returnlist =
    8864      boost::assign::list_of< QtObservedBond::ObservableCount_t::value_type >
    89             ( getObservable(_bond.get()), 1)
    90             ( getObservable(_bond->leftatom), getAllObservedAtomChannels().size())
    91             ( getObservable(_bond->rightatom), getAllObservedAtomChannels().size())
    92             ( getObservable(getMolecule(_bond)), 1);
     65            ( getObservable(_bond.get()), 1);
    9366  return returnlist;
    9467}
    95 
    9668
    9769// static entities
     
    388360const moleculeId_t QtObservedBond::getLeftMoleculeIndex() const
    389361{
    390   return leftatom->getMoleculeIndex();
     362  if (leftatom->getMoleculeRef() != NULL)
     363    return leftatom->getMoleculeRef()->getMolIndex();
     364  else
     365    return (moleculeId_t)-1;
    391366}
    392367
     
    408383const moleculeId_t QtObservedBond::getRightMoleculeIndex() const
    409384{
    410   return rightatom->getMoleculeIndex();
    411 }
     385  if (rightatom->getMoleculeRef() != NULL)
     386    return rightatom->getMoleculeRef()->getMolIndex();
     387  else
     388    return (moleculeId_t)-1;
     389}
Note: See TracChangeset for help on using the changeset viewer.