Ignore:
Timestamp:
Apr 18, 2011, 3:43:58 PM (14 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:
3bd460a
Parents:
b404da
git-author:
Frederik Heber <heber@…> (04/18/11 15:42:35)
git-committer:
Frederik Heber <heber@…> (04/18/11 15:43:58)
Message:

FIX: select-molecule-by-id crashed when no molecules are present.

  • each molecule selection action checks whether molecules are present at all
  • rewrote MoleculeByIdActions to take integer from command-line not molecule reference and perform the MoleculeById selection themselves (as do all other Actions, too).
  • this fixes ticket #134.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Actions/SelectionAction/Molecules/MoleculeByIdAction.cpp

    rb404da rb7fbf0  
    2323#include "CodePatterns/Log.hpp"
    2424#include "CodePatterns/Verbose.hpp"
     25#include "Descriptors/MoleculeIdDescriptor.hpp"
    2526#include "World.hpp"
    2627
     
    4041  getParametersfromValueStorage();
    4142
    42   if (params.mol != NULL) {
    43     if (!World::getInstance().isSelected(params.mol)) {
    44       DoLog(1) && (Log() << Verbose(1) << "Selecting molecule " << params.mol->name << endl);
    45       World::getInstance().selectMolecule(params.mol);
     43  // check whether molecules are present at all
     44  if (World::getInstance().numMolecules() == 0) {
     45    ELOG(1, "No molecules present in the world to select!");
     46    return Action::failure;
     47  }
     48
     49  const molecule *mol = World::getInstance().getMolecule(MoleculeById(params.molindex));
     50  if (mol != NULL) {
     51    if (!World::getInstance().isSelected(mol)) {
     52      DoLog(1) && (Log() << Verbose(1) << "Selecting molecule " << mol->name << endl);
     53      World::getInstance().selectAllMolecules(MoleculeById(params.molindex));
    4654      DoLog(0) && (Log() << Verbose(0) << World::getInstance().countSelectedMolecules() << " molecules selected." << endl);
    4755      return Action::state_ptr(new SelectionMoleculeByIdState(params));
     
    5765  SelectionMoleculeByIdState *state = assert_cast<SelectionMoleculeByIdState*>(_state.get());
    5866
    59   World::getInstance().unselectMolecule(state->params.mol);
     67  World::getInstance().unselectAllMolecules(MoleculeById(state->params.molindex));
    6068
    6169  return Action::state_ptr(_state);
     
    6573  SelectionMoleculeByIdState *state = assert_cast<SelectionMoleculeByIdState*>(_state.get());
    6674
    67   World::getInstance().selectMolecule(state->params.mol);
     75  World::getInstance().selectAllMolecules(MoleculeById(state->params.molindex));
    6876
    6977  return Action::state_ptr(_state);
Note: See TracChangeset for help on using the changeset viewer.