Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Actions/AtomAction/TranslateAction.cpp

    rbcf653 r34c338  
    1 /*
    2  * Project: MoleCuilder
    3  * Description: creates and alters molecular systems
    4  * Copyright (C)  2010 University of Bonn. All rights reserved.
    5  * Please see the LICENSE file or "Copyright notice" in builder.cpp for details.
    6  */
    7 
    81/*
    92 * TranslateAction.cpp
     
    125 *      Author: heber
    136 */
    14 
    15 // include config.h
    16 #ifdef HAVE_CONFIG_H
    17 #include <config.h>
    18 #endif
    197
    208#include "Helpers/MemDebug.hpp"
     
    4432class AtomTranslateState : public ActionState {
    4533public:
    46   AtomTranslateState(const std::vector<atom*> &_selectedAtoms, const Vector &_v, const bool _periodic) :
     34  AtomTranslateState(std::vector<atom*> _selectedAtoms, Vector &_v) :
    4735    selectedAtoms(_selectedAtoms),
    48     v(_v),
    49     periodic(_periodic)
     36    v(_v)
    5037  {}
    5138  std::vector<atom*> selectedAtoms;
    5239  Vector v;
    53   bool periodic;
    5440};
    5541
     
    6349{}
    6450
    65 void AtomTranslate(Vector &x, bool periodic = false) {
     51void AtomTranslate(Vector &x) {
    6652  ValueStorage::getInstance().setCurrentValue(AtomTranslateAction::NAME, x);
    67   ValueStorage::getInstance().setCurrentValue("periodic", periodic);
    6853  ActionRegistry::getInstance().getActionByName(AtomTranslateAction::NAME)->call(Action::NonInteractive);
    6954};
     
    7358
    7459  dialog->queryVector(NAME, false, ValueStorage::getInstance().getDescription(NAME));
    75   dialog->queryBoolean("periodic", ValueStorage::getInstance().getDescription("periodic"));
    7660
    7761  return dialog;
     
    8064Action::state_ptr AtomTranslateAction::performCall() {
    8165  Vector v;
    82   bool periodic = false;
    83   Box &domain = World::getInstance().getDomain();
    8466  std::vector<atom *> selectedAtoms = World::getInstance().getSelectedAtoms();
    8567
    8668  ValueStorage::getInstance().queryCurrentValue(NAME, v);
    87   if (!ValueStorage::getInstance().queryCurrentValue("periodic", periodic, true))
    88     periodic = false;
    8969
    9070  // TODO: use AtomSet::translate
    9171  for (std::vector<atom *>::iterator iter = selectedAtoms.begin(); iter != selectedAtoms.end(); ++iter) {
    9272    *(*iter) += v;
    93     if (periodic)
    94       (*iter)->setPosition(domain.WrapPeriodically((*iter)->getPosition()));
    9573  }
    96 
    97   return Action::state_ptr(new AtomTranslateState(selectedAtoms, v, periodic));
     74  return Action::state_ptr(new AtomTranslateState(selectedAtoms, v));
    9875}
    9976
    10077Action::state_ptr AtomTranslateAction::performUndo(Action::state_ptr _state) {
    10178  AtomTranslateState *state = assert_cast<AtomTranslateState*>(_state.get());
    102   Box &domain = World::getInstance().getDomain();
    10379
    10480  for (std::vector<atom *>::iterator iter = state->selectedAtoms.begin(); iter != state->selectedAtoms.end(); ++iter) {
    10581    *(*iter) -= state->v;
    106     if (state->periodic)
    107       (*iter)->setPosition(domain.WrapPeriodically((*iter)->getPosition()));
    10882  }
    10983
    110   return Action::state_ptr(_state);
     84  return Action::state_ptr(new AtomTranslateState(state->selectedAtoms, state->v));
    11185}
    11286
    11387Action::state_ptr AtomTranslateAction::performRedo(Action::state_ptr _state){
    11488  AtomTranslateState *state = assert_cast<AtomTranslateState*>(_state.get());
    115   Box &domain = World::getInstance().getDomain();
    11689
    11790  for (std::vector<atom *>::iterator iter = state->selectedAtoms.begin(); iter != state->selectedAtoms.end(); ++iter) {
    11891    *(*iter) += state->v;
    119     if (state->periodic)
    120       (*iter)->setPosition(domain.WrapPeriodically((*iter)->getPosition()));
    12192  }
    12293
    123   return Action::state_ptr(_state);
     94  return Action::state_ptr(new AtomTranslateState(state->selectedAtoms, state->v));
    12495}
    12596
Note: See TracChangeset for help on using the changeset viewer.