source: molecuilder/src/Actions/ManipulateAtomsProcess.cpp@ c53e0b

Last change on this file since c53e0b was 521e29, checked in by Tillmann Crueger <crueger@…>, 15 years ago

Switched type of pointer used for ActionStates

  • Property mode set to 100644
File size: 1.4 KB
RevLine 
[cbc27f]1/*
2 * ManipulateAtomsProcess.cpp
3 *
4 * Created on: Feb 18, 2010
5 * Author: crueger
6 */
7
8#include "ManipulateAtomsProcess.hpp"
9
10#include <iostream>
11
[5738177]12#include "World.hpp"
[0012e6]13#include "Helpers/Assert.hpp"
[5738177]14
[cbc27f]15using namespace std;
16
17ManipulateAtomsProcess::ManipulateAtomsProcess(boost::function<void(atom*)> _operation, AtomDescriptor _descr,
18 std::string _name,bool _doRegister) :
[98a2987]19 Process(0,_name,_doRegister),
[cbc27f]20 descr(_descr),
[98a2987]21 operation(_operation)
[cbc27f]22{}
23
24ManipulateAtomsProcess::~ManipulateAtomsProcess()
25{}
26
[521e29]27Action::state_ptr ManipulateAtomsProcess::performCall(){
[4c60ef]28 World::getInstance().doManipulate(this);
[0012e6]29 return Action::success;
[cbc27f]30}
31
[521e29]32Action::state_ptr ManipulateAtomsProcess::performUndo(Action::state_ptr){
[0012e6]33 ASSERT(0,"Undo called for a ManipulateAtomsProcess");
34 return Action::success;
35}
[cbc27f]36
[521e29]37Action::state_ptr ManipulateAtomsProcess::performRedo(Action::state_ptr){
[0012e6]38 ASSERT(0,"Redo called for a ManipulateAtomsProcess");
39 return Action::success;
[cbc27f]40}
41
42bool ManipulateAtomsProcess::canUndo(){
43 return false;
44}
[9ef76a]45
[0012e6]46bool ManipulateAtomsProcess::shouldUndo(){
47 return true;
48}
49
[9ef76a]50void ManipulateAtomsProcess::doManipulate(World *world){
51 setMaxSteps(world->numAtoms());
52 start();
[5738177]53 for(World::AtomIterator iter=world->getAtomIter(descr);iter!=world->atomEnd();++iter){
[9ef76a]54 setCurrStep(iter.getCount());
55 operation(*iter);
56 }
57 stop();
58}
Note: See TracBrowser for help on using the repository browser.