Changeset d2a077a for src/Actions


Ignore:
Timestamp:
May 9, 2017, 12:18:01 PM (8 years ago)
Author:
Frederik Heber <frederik.heber@…>
Branches:
ForceAnnealing_goodresults, ForceAnnealing_tocheck
Children:
54293d
Parents:
e59735
git-author:
Frederik Heber <frederik.heber@…> (05/09/17 11:07:11)
git-committer:
Frederik Heber <frederik.heber@…> (05/09/17 12:18:01)
Message:

SelectMoleculeByOrder now allows multiple indices.

Location:
src/Actions/SelectionAction/Molecules
Files:
2 edited

Legend:

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

    re59735 rd2a077a  
    5454
    5555ActionState::ptr SelectionMoleculeByOrderAction::performCall() {
    56   const molecule *mol = const_cast<const World &>(World::getInstance()).
    57       getMolecule(MoleculeByOrder(params.molindex.get()));
     56  size_t no_selected = 0;
     57  const std::vector<int> &indices = params.molindices.get();
     58  std::vector<const molecule *> mols;
     59  for( std::vector<int>::const_iterator iter = indices.begin();
     60      iter != indices.end(); ++iter) {
     61    const molecule *mol = const_cast<const World &>(World::getInstance()).
     62        getMolecule(MoleculeByOrder(*iter));
    5863
    59   if (mol != NULL) {
    60     if (!World::getInstance().isSelected(mol)) {
    61       LOG(1, "Selecting molecule " << mol->name);
    62       World::getInstance().selectMolecule(mol);
    63       LOG(0, World::getInstance().countSelectedMolecules() << " molecules selected.");
    64       return ActionState::ptr(new SelectionMoleculeByOrderState(mol, params));
     64    if (mol != NULL) {
     65      if (!World::getInstance().isSelected(mol)) {
     66        //LOG(1, "Selecting molecule " << mol->name);
     67        World::getInstance().selectMolecule(mol);
     68        mols.push_back(mol);
     69      }
    6570    } else {
    66       return Action::success;
     71      STATUS("Cannot find molecule by given index "+toString(*iter)+".");
     72      return Action::failure;
    6773    }
     74  }
     75
     76  LOG(0, no_selected << " molecules additionally selected.");
     77  if (no_selected != 0) {
     78    return ActionState::ptr(new SelectionMoleculeByOrderState(mols, params));
    6879  } else {
    69     STATUS("Cannot find molecule by given index "+toString(params.molindex.get())+".");
    70     return Action::failure;
     80    return Action::success;
    7181  }
    7282}
     
    7585  SelectionMoleculeByOrderState *state = assert_cast<SelectionMoleculeByOrderState*>(_state.get());
    7686
    77   World::getInstance().unselectMolecule(state->mol);
     87  for (std::vector<const molecule *>::const_iterator iter = state->mols.begin();
     88      iter != state->mols.end(); ++iter)
     89    World::getInstance().unselectMolecule(*iter);
    7890  return ActionState::ptr(_state);
    7991}
     
    8294  SelectionMoleculeByOrderState *state = assert_cast<SelectionMoleculeByOrderState*>(_state.get());
    8395
    84   World::getInstance().selectMolecule(state->mol);
     96  for (std::vector<const molecule *>::const_iterator iter = state->mols.begin();
     97      iter != state->mols.end(); ++iter)
     98    World::getInstance().selectMolecule(*iter);
    8599  return ActionState::ptr(_state);
    86100}
  • src/Actions/SelectionAction/Molecules/MoleculeByOrderAction.def

    re59735 rd2a077a  
    99class molecule;
    1010
    11 #include "Parameters/Validators/DummyValidator.hpp"
     11#include "Parameters/Validators/STLVectorValidator.hpp"
    1212
    1313// i.e. there is an integer with variable name Z that can be found in
    1414// ValueStorage by the token "Z" -> first column: int, Z, "Z"
    1515// "undefine" if no parameters are required, use (NOPARAM_DEFAULT) for each (undefined) default value
    16 #define paramtypes (int)
     16#define paramtypes (std::vector<int>)
    1717#define paramtokens ("select-molecule-by-order")
    18 #define paramdescriptions ("molecule order index, start at 1 or -1")
     18#define paramdescriptions ("molecule order indices, starting at 1 or -1")
    1919#undef paramdefaults
    20 #define paramreferences (molindex)
     20#define paramreferences (molindices)
    2121#define paramvalids \
    22 (DummyValidator< int >())
     22(STLVectorValidator< std::vector< int > >(1, 99))
    2323
    24 #define statetypes (const molecule *)
    25 #define statereferences (mol)
     24#define statetypes (std::vector<const molecule *>)
     25#define statereferences (mols)
    2626
    2727// some defines for all the names, you may use ACTION, STATE and PARAMS
Note: See TracChangeset for help on using the changeset viewer.