Ignore:
File:
1 edited

Legend:

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

    rd7cad1 r26b4d62  
    5353/** =========== define the function ====================== */
    5454ActionState::ptr SelectionMoleculeByIdAction::performCall() {
    55 
    56   enum Sucess {
    57     NoStatus,
    58     AllMoleculesUnselected,
    59     MoleculesSelected,
    60     MoleculeMissing
    61   } status = NoStatus;
    62 
    63   const molids_t molids = params.molids.get();
    64   molids_t undomolids;
    65   undomolids.reserve(molids.size());
    66   for (molids_t::const_iterator iter = molids.begin(); iter != molids.end(); ++iter) {
    67     const molecule *Walker = World::getInstance().getMolecule(MoleculeById(*iter));
    68     if (Walker != NULL) {
    69       if (!World::getInstance().isSelected(Walker)) {
    70         LOG(1, "Selecting mol " << Walker->getName());
    71         World::getInstance().selectMolecule(Walker);
    72         undomolids.push_back(*iter);
    73         if (status < MoleculeMissing)
    74           status = MoleculesSelected;
    75       } else {
    76         if (status == NoStatus)
    77           status = AllMoleculesUnselected;
    78       }
     55  const molecule *mol = World::getInstance().getMolecule(MoleculeById(params.molindex.get()));
     56  if (mol != NULL) {
     57    if (!World::getInstance().isSelected(mol)) {
     58      LOG(1, "Selecting molecule " << mol->name);
     59      World::getInstance().selectAllMolecules(MoleculeById(params.molindex.get()));
     60      LOG(0, World::getInstance().countSelectedMolecules() << " molecules selected.");
     61      return ActionState::ptr(new SelectionMoleculeByIdState(params));
    7962    } else {
    80       status = MoleculeMissing;
     63      return Action::success;
    8164    }
     65  } else {
     66    STATUS("Cannot find molecule by given index "+toString(params.molindex.get())+".");
     67    return Action::failure;
    8268  }
    83   LOG(0, World::getInstance().countSelectedMolecules() << " mols selected.");
    84 
    85   switch (status) {
    86     case MoleculeMissing:
    87       STATUS("Cannot find all mols with given ids.");
    88       return Action::failure;
    89       break;
    90     case AllMoleculesUnselected:
    91     case MoleculesSelected:
    92       return ActionState::ptr(new SelectionMoleculeByIdState(undomolids, params));
    93       break;
    94     default:
    95       STATUS("No mols have been selected.");
    96       return Action::failure;
    97       break;
    98   }
    99   return Action::failure;
    10069}
    10170
     
    10372  SelectionMoleculeByIdState *state = assert_cast<SelectionMoleculeByIdState*>(_state.get());
    10473
    105   for (molids_t::const_iterator iter = state->undomolids.begin();
    106       iter != state->undomolids.end(); ++iter) {
    107     const molecule *Walker = World::getInstance().getMolecule(MoleculeById(*iter));
    108     World::getInstance().unselectMolecule(Walker);
    109   }
     74  World::getInstance().unselectAllMolecules(MoleculeById(state->params.molindex.get()));
    11075
    11176  return ActionState::ptr(_state);
     
    11580  SelectionMoleculeByIdState *state = assert_cast<SelectionMoleculeByIdState*>(_state.get());
    11681
    117   for (molids_t::const_iterator iter = state->undomolids.begin();
    118       iter != state->undomolids.end(); ++iter) {
    119     const molecule *Walker = World::getInstance().getMolecule(MoleculeById(*iter));
    120     World::getInstance().selectMolecule(Walker);
    121   }
     82  World::getInstance().selectAllMolecules(MoleculeById(state->params.molindex.get()));
    12283
    12384  return ActionState::ptr(_state);
Note: See TracChangeset for help on using the changeset viewer.