Changes in / [fa1830:c5186e]
- Files:
-
- 2 added
- 3 deleted
- 27 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Actions/AtomAction/AddAction.cpp
rfa1830 rc5186e 10 10 #include "Actions/AtomAction/AddAction.hpp" 11 11 #include "Actions/ActionRegistry.hpp" 12 #include "Descriptors/AtomIdDescriptor.hpp"13 12 #include "atom.hpp" 14 13 #include "element.hpp" … … 27 26 #include "UIElements/Dialog.hpp" 28 27 #include "Actions/ValueStorage.hpp" 29 30 // memento to remember the state when undoing31 32 class AtomAddState : public ActionState {33 public:34 AtomAddState(const Vector &_position, const element *_elemental, const atomId_t _id) :35 position(_position),36 elemental(_elemental),37 id(_id)38 {}39 Vector position;40 const element *elemental;41 atomId_t id;42 };43 28 44 29 const char AtomAddAction::NAME[] = "add-atom"; … … 85 70 (*iter)->AddAtom(first); 86 71 } 87 return Action::s tate_ptr(new AtomAddState(position, elemental, first->getId()));72 return Action::success; 88 73 } 89 74 90 75 Action::state_ptr AtomAddAction::performUndo(Action::state_ptr _state) { 91 AtomAddState *state = assert_cast<AtomAddState*>(_state.get());76 // ParserLoadXyzState *state = assert_cast<ParserLoadXyzState*>(_state.get()); 92 77 93 DoLog(1) && (Log() << Verbose(1) << "Removing atom with id " << state->id << "." << endl); 94 World::getInstance().destroyAtom(state->id); 95 96 return Action::state_ptr(_state); 78 return Action::failure; 79 // string newName = state->mol->getName(); 80 // state->mol->setName(state->lastName); 81 // 82 // return Action::state_ptr(new ParserLoadXyzState(state->mol,newName)); 97 83 } 98 84 99 85 Action::state_ptr AtomAddAction::performRedo(Action::state_ptr _state){ 100 AtomAddState *state = assert_cast<AtomAddState*>(_state.get()); 101 102 atom * first = World::getInstance().createAtom(); 103 first->setType(state->elemental); 104 first->setPosition(state->position); 105 DoLog(1) && (Log() << Verbose(1) << "Re-adding new atom with element " << state->elemental->getName() << " at " << state->position << "." << endl); 106 // TODO: remove when all of World's atoms are stored. 107 std::vector<molecule *> molecules = World::getInstance().getAllMolecules(); 108 if (!molecules.empty()) { 109 std::vector<molecule *>::iterator iter = molecules.begin(); 110 (*iter)->AddAtom(first); 111 } 112 if (first->getId() != state->id) 113 if (!first->changeId(state->id)) 114 return Action::failure; 115 return Action::state_ptr(_state); 86 return Action::failure; 116 87 } 117 88 118 89 bool AtomAddAction::canUndo() { 119 return true;90 return false; 120 91 } 121 92 122 93 bool AtomAddAction::shouldUndo() { 123 return true;94 return false; 124 95 } 125 96 -
src/Actions/AtomAction/ChangeElementAction.cpp
rfa1830 rc5186e 10 10 #include "Actions/AtomAction/ChangeElementAction.hpp" 11 11 #include "Actions/ActionRegistry.hpp" 12 #include "Descriptors/AtomIdDescriptor.hpp"13 12 #include "atom.hpp" 14 13 #include "element.hpp" … … 20 19 21 20 #include <iostream> 22 #include <map>23 21 #include <string> 24 22 … … 28 26 #include "UIElements/Dialog.hpp" 29 27 #include "Actions/ValueStorage.hpp" 30 31 typedef std::map<int, const element *> ElementMap;32 33 // memento to remember the state when undoing34 35 class AtomChangeElementState : public ActionState {36 public:37 AtomChangeElementState(ElementMap _Elements, const element *_elemental) :38 Elements(_Elements),39 elemental(_elemental)40 {}41 ElementMap Elements;42 const element *elemental;43 };44 28 45 29 const char AtomChangeElementAction::NAME[] = "change-element"; … … 72 56 ValueStorage::getInstance().queryCurrentValue(NAME, elemental); 73 57 74 // create undo state75 ElementMap Elements;76 for (World::AtomSelectionIterator iter = World::getInstance().beginAtomSelection(); iter != World::getInstance().endAtomSelection(); ++iter) {77 Elements.insert(std::pair<int, const element *> (iter->second->getId(), iter->second->getType()));78 }79 AtomChangeElementState *UndoState = new AtomChangeElementState(Elements, elemental);80 81 58 for (World::AtomSelectionIterator iter = World::getInstance().beginAtomSelection(); iter != World::getInstance().endAtomSelection(); ++iter) { 82 59 first = iter->second; … … 87 64 mol->AddAtom(first); // add atom to ensure correctness of formula 88 65 } 89 return Action::s tate_ptr(UndoState);66 return Action::success; 90 67 } 91 68 92 69 Action::state_ptr AtomChangeElementAction::performUndo(Action::state_ptr _state) { 93 AtomChangeElementState *state = assert_cast<AtomChangeElementState*>(_state.get()); 94 atom *first = NULL; 95 molecule *mol = NULL; 70 // ParserLoadXyzState *state = assert_cast<ParserLoadXyzState*>(_state.get()); 96 71 97 for(ElementMap::const_iterator iter = state->Elements.begin(); iter != state->Elements.end(); ++iter) { 98 first = World::getInstance().getAtom(AtomById(iter->first)); 99 mol = first->getMolecule(); 100 first->removeFromMolecule(); // remove atom 101 first->setType(iter->second); 102 mol->AddAtom(first); // add atom to ensure correctness of formula 103 } 104 105 return Action::state_ptr(_state); 72 return Action::failure; 73 // string newName = state->mol->getName(); 74 // state->mol->setName(state->lastName); 75 // 76 // return Action::state_ptr(new ParserLoadXyzState(state->mol,newName)); 106 77 } 107 78 108 79 Action::state_ptr AtomChangeElementAction::performRedo(Action::state_ptr _state){ 109 AtomChangeElementState *state = assert_cast<AtomChangeElementState*>(_state.get()); 110 atom *first = NULL; 111 molecule *mol = NULL; 112 113 for(ElementMap::const_iterator iter = state->Elements.begin(); iter != state->Elements.end(); ++iter) { 114 first = World::getInstance().getAtom(AtomById(iter->first)); 115 mol = first->getMolecule(); 116 first->removeFromMolecule(); // remove atom 117 first->setType(state->elemental); 118 mol->AddAtom(first); // add atom to ensure correctness of formula 119 } 120 121 return Action::state_ptr(_state); 80 return Action::failure; 122 81 } 123 82 124 83 bool AtomChangeElementAction::canUndo() { 125 return true;84 return false; 126 85 } 127 86 128 87 bool AtomChangeElementAction::shouldUndo() { 129 return true;88 return false; 130 89 } 131 90 -
src/Actions/AtomAction/RemoveAction.cpp
rfa1830 rc5186e 11 11 #include "Actions/ActionRegistry.hpp" 12 12 #include "atom.hpp" 13 #include "AtomicInfo.hpp"14 13 #include "Descriptors/AtomDescriptor.hpp" 15 14 #include "Helpers/Log.hpp" … … 26 25 #include "UIElements/Dialog.hpp" 27 26 #include "Actions/ValueStorage.hpp" 28 29 // memento to remember the state when undoing30 31 class AtomRemoveState : public ActionState {32 public:33 AtomRemoveState(std::vector<AtomicInfo> _Walkers) :34 Walkers(_Walkers)35 {}36 std::vector<AtomicInfo> Walkers;37 };38 27 39 28 const char AtomRemoveAction::NAME[] = "remove-atom"; … … 61 50 atom *first = NULL; 62 51 63 // create undo state 64 std::vector<AtomicInfo> Walkers; 65 for (World::AtomSelectionIterator iter = World::getInstance().beginAtomSelection(); iter != World::getInstance().endAtomSelection(); ++iter) { 66 Walkers.push_back(AtomicInfo(*(iter->second))); 67 } 68 AtomRemoveState *UndoState = new AtomRemoveState(Walkers); 69 70 // remove all selected atoms 71 // std::vector<molecule *> molecules = World::getInstance().getAllMolecules(); 52 std::vector<molecule *> molecules = World::getInstance().getAllMolecules(); 72 53 for (World::AtomSelectionIterator iter = World::getInstance().beginAtomSelection(); iter != World::getInstance().endAtomSelection(); ++iter) { 73 54 first = iter->second; 74 55 DoLog(1) && (Log() << Verbose(1) << "Removing atom " << first->getId() << "." << endl); 75 //// TODO: this is not necessary when atoms and their storing to file are handled by the World76 //// simply try to erase in every molecule found77 //for (std::vector<molecule *>::iterator iter = molecules.begin();iter != molecules.end(); ++iter) {78 //(*iter)->erase(first);79 //}56 // TODO: this is not necessary when atoms and their storing to file are handled by the World 57 // simply try to erase in every molecule found 58 for (std::vector<molecule *>::iterator iter = molecules.begin();iter != molecules.end(); ++iter) { 59 (*iter)->erase(first); 60 } 80 61 World::getInstance().destroyAtom(first); 81 62 } 82 return Action::s tate_ptr(UndoState);63 return Action::success; 83 64 } 84 65 85 66 Action::state_ptr AtomRemoveAction::performUndo(Action::state_ptr _state) { 86 AtomRemoveState *state = assert_cast<AtomRemoveState*>(_state.get());67 // ParserLoadXyzState *state = assert_cast<ParserLoadXyzState*>(_state.get()); 87 68 88 size_t i=0; 89 for (; i<state->Walkers.size(); ++i) { 90 // re-create the atom 91 DoLog(1) && (Log() << Verbose(1) << "Re-adding atom " << state->Walkers[i].getId() << "." << endl); 92 atom *Walker = World::getInstance().createAtom(); 93 if (!state->Walkers[i].setAtom(*Walker)) { 94 DoeLog(1) && (eLog() << Verbose(1) << "Failed to set id." << endl); 95 World::getInstance().destroyAtom(Walker); 96 break; 97 } 98 } 99 if (i<state->Walkers.size()) { 100 // remove all previous ones, too 101 for (size_t j=0;j<i;++j) 102 World::getInstance().destroyAtom(state->Walkers[j].getId()); 103 // and announce the failure of the undo 104 return Action::failure; 105 } 106 return Action::state_ptr(_state); 69 return Action::failure; 70 // string newName = state->mol->getName(); 71 // state->mol->setName(state->lastName); 72 // 73 // return Action::state_ptr(new ParserLoadXyzState(state->mol,newName)); 107 74 } 108 75 109 76 Action::state_ptr AtomRemoveAction::performRedo(Action::state_ptr _state){ 110 AtomRemoveState *state = assert_cast<AtomRemoveState*>(_state.get()); 111 112 // simple remove again all previously added atoms 113 for (size_t i=0; i<state->Walkers.size(); ++i) { 114 DoLog(1) && (Log() << Verbose(1) << "Re-removing atom " << state->Walkers[i].getId() << "." << endl); 115 World::getInstance().destroyAtom(state->Walkers[i].getId()); 116 } 117 118 return Action::state_ptr(_state); 77 return Action::failure; 119 78 } 120 79 121 80 bool AtomRemoveAction::canUndo() { 122 return true;81 return false; 123 82 } 124 83 125 84 bool AtomRemoveAction::shouldUndo() { 126 return true;85 return false; 127 86 } 128 87 -
src/Actions/CmdAction/FastParsingAction.cpp
rfa1830 rc5186e 28 28 class CommandLineFastParsingState : public ActionState { 29 29 public: 30 CommandLineFastParsingState(const bool _oldvalue, const bool _newvalue) : 31 oldvalue(_oldvalue), 32 newvalue(_newvalue) 30 CommandLineFastParsingState(bool _bool) : 31 boolean(_bool) 33 32 {} 34 bool oldvalue; 35 bool newvalue; 33 bool boolean; 36 34 }; 37 35 … … 60 58 61 59 Action::state_ptr CommandLineFastParsingAction::performCall() { 60 62 61 config *configuration = World::getInstance().getConfig(); 63 bool oldvalue = configuration->FastParsing; 64 bool newvalue; 65 ValueStorage::getInstance().queryCurrentValue(NAME, newvalue); 66 configuration->FastParsing = newvalue; 62 ValueStorage::getInstance().queryCurrentValue(NAME, configuration->FastParsing); 67 63 if (configuration->FastParsing) 68 64 DoLog(0) && (Log() << Verbose(0) << "I won't parse trajectories." << endl); 69 65 else 70 66 DoLog(0) && (Log() << Verbose(0) << "I will parse trajectories." << endl); 71 return Action::s tate_ptr(new CommandLineFastParsingState(oldvalue, newvalue));67 return Action::success; 72 68 } 73 69 … … 76 72 77 73 config *configuration = World::getInstance().getConfig(); 78 configuration->FastParsing = state->oldvalue; 79 if (configuration->FastParsing) 80 DoLog(0) && (Log() << Verbose(0) << "I won't parse trajectories." << endl); 81 else 82 DoLog(0) && (Log() << Verbose(0) << "I will parse trajectories." << endl); 74 configuration->FastParsing = state->boolean; 83 75 84 return Action::state_ptr( _state);76 return Action::state_ptr(new CommandLineFastParsingState(!state->boolean)); 85 77 } 86 78 87 79 Action::state_ptr CommandLineFastParsingAction::performRedo(Action::state_ptr _state){ 88 CommandLineFastParsingState *state = assert_cast<CommandLineFastParsingState*>(_state.get()); 89 90 config *configuration = World::getInstance().getConfig(); 91 configuration->FastParsing = state->newvalue; 92 if (configuration->FastParsing) 93 DoLog(0) && (Log() << Verbose(0) << "I won't parse trajectories." << endl); 94 else 95 DoLog(0) && (Log() << Verbose(0) << "I will parse trajectories." << endl); 96 97 return Action::state_ptr(_state); 80 return performUndo(_state); 98 81 } 99 82 -
src/Actions/CmdAction/VerboseAction.cpp
rfa1830 rc5186e 26 26 class CommandLineVerboseState : public ActionState { 27 27 public: 28 CommandLineVerboseState(const int _oldverbosity, const int _newverbosity) : 29 oldverbosity(_oldverbosity), 30 newverbosity(_newverbosity) 28 CommandLineVerboseState(int _verbosity) : 29 verbosity(_verbosity) 31 30 {} 32 int oldverbosity; 33 int newverbosity; 31 int verbosity; 34 32 }; 35 33 … … 58 56 59 57 Action::state_ptr CommandLineVerboseAction::performCall() { 60 int oldverbosity = getVerbosity(); 61 int newverbosity = 2; 58 int verbosity = 2; 62 59 63 ValueStorage::getInstance().queryCurrentValue(NAME, newverbosity);60 ValueStorage::getInstance().queryCurrentValue(NAME, verbosity); 64 61 65 if (oldverbosity != newverbosity) { 66 CommandLineVerboseState *UndoState = new CommandLineVerboseState(oldverbosity, newverbosity); 67 setVerbosity(newverbosity); 68 DoLog(0) && (Log() << Verbose(0) << "Setting verbosity from " << oldverbosity << " to " << newverbosity << "." << endl); 69 return Action::state_ptr(UndoState); 70 } else { 71 DoLog(0) && (Log() << Verbose(0) << "Verbosity remains unchanged at " << oldverbosity << "." << endl); 72 return Action::failure; 73 } 62 setVerbosity(verbosity); 63 DoLog(0) && (Log() << Verbose(0) << "Setting verbosity to " << verbosity << "." << endl); 64 return Action::success; 74 65 } 75 66 … … 77 68 CommandLineVerboseState *state = assert_cast<CommandLineVerboseState*>(_state.get()); 78 69 79 DoLog(0) && (Log() << Verbose(0) << "Setting verbosity from " << state->newverbosity << " to " << state->oldverbosity << "." << endl);80 setVerbosity(state->oldverbosity);70 int verbosity = 2; 71 ValueStorage::getInstance().queryCurrentValue(NAME, verbosity); 81 72 82 return Action::state_ptr(_state); 73 setVerbosity(state->verbosity); 74 return Action::state_ptr(new CommandLineVerboseState(verbosity)); 83 75 } 84 76 85 77 Action::state_ptr CommandLineVerboseAction::performRedo(Action::state_ptr _state){ 86 CommandLineVerboseState *state = assert_cast<CommandLineVerboseState*>(_state.get()); 87 88 DoLog(0) && (Log() << Verbose(0) << "Setting verbosity from " << state->oldverbosity << " to " << state->newverbosity << "." << endl); 89 setVerbosity(state->newverbosity); 90 91 return Action::state_ptr(_state); 78 return performUndo(_state); 92 79 } 93 80 -
src/Actions/WorldAction/SetDefaultNameAction.cpp
rfa1830 rc5186e 62 62 63 63 defaultname = World::getInstance().getDefaultName(); 64 WorldSetDefaultNameState *UndoState = new WorldSetDefaultNameState(defaultname);65 64 ValueStorage::getInstance().queryCurrentValue(NAME, defaultname); 66 65 67 66 World::getInstance().setDefaultName(defaultname); 68 67 DoLog(0) && (Log() << Verbose(0) << "Default name of new molecules set to " << World::getInstance().getDefaultName() << "." << endl); 69 return Action::s tate_ptr(UndoState);68 return Action::success; 70 69 } 71 70 … … 75 74 string newName = World::getInstance().getDefaultName(); 76 75 World::getInstance().setDefaultName(state->lastName); 77 DoLog(0) && (Log() << Verbose(0) << "Default name of new molecules set to " << World::getInstance().getDefaultName() << "." << endl);78 76 79 77 return Action::state_ptr(new WorldSetDefaultNameState(newName)); -
src/Helpers/Log.cpp
rfa1830 rc5186e 18 18 void setVerbosity(int verbosityLevel) { 19 19 logger::getInstance().setVerbosity(verbosityLevel); 20 }21 22 /**23 * Gets verbosity for the error logger and the standard logger.24 *25 * \param int verbosity level26 */27 int getVerbosity() {28 return logger::getInstance().getVerbosity();29 20 } 30 21 -
src/Helpers/Log.hpp
rfa1830 rc5186e 15 15 class errorLogger & eLog(); 16 16 void setVerbosity(int verbosityLevel); 17 int getVerbosity();18 17 bool DoLog(int verbose); 19 18 bool DoeLog(int verbose); -
src/Helpers/errorlogger.cpp
rfa1830 rc5186e 41 41 void errorLogger::setVerbosity(int verbosityLevel) { 42 42 verbosity = verbosityLevel; 43 }44 45 /**46 * Gets the verbosity.47 *48 * \return verbosity level49 */50 int errorLogger::getVerbosity()51 {52 return verbosity;53 43 } 54 44 -
src/Helpers/errorlogger.hpp
rfa1830 rc5186e 25 25 static bool DoOutput(); 26 26 static void setVerbosity(int verbosityLevel); 27 static int getVerbosity();28 27 29 28 protected: -
src/Helpers/logger.cpp
rfa1830 rc5186e 44 44 45 45 /** 46 * Gets the verbosity.47 *48 * \return verbosity level49 */50 int logger::getVerbosity()51 {52 return verbosity;53 }54 55 /**56 46 * Operator for the Binary(arg) call. 57 47 * Constructs temporary a Verbose class object, wherein the Binary is stored. -
src/Helpers/logger.hpp
rfa1830 rc5186e 25 25 static bool DoOutput(); 26 26 static void setVerbosity(int verbosityLevel); 27 static int getVerbosity();28 27 29 28 protected: -
src/Makefile.am
rfa1830 rc5186e 6 6 ATOMSOURCE = \ 7 7 atom.cpp \ 8 AtomicInfo.cpp \9 8 atom_atominfo.cpp \ 10 9 atom_bondedparticle.cpp \ … … 17 16 ATOMHEADER = \ 18 17 atom.hpp \ 19 AtomicInfo.hpp \20 18 atom_atominfo.hpp \ 21 19 atom_bondedparticle.hpp \ -
src/UIElements/Views/QT4/QTStatusBar.cpp
rfa1830 rc5186e 21 21 QStatusBar(_parent), 22 22 Observer("QTStatusBar"), 23 parent(_parent), 23 24 atomCount(World::getInstance().numAtoms()), 24 moleculeCount(World::getInstance().numMolecules()), 25 parent(_parent) 25 moleculeCount(World::getInstance().numMolecules()) 26 26 { 27 27 World::getInstance().signOn(this); -
src/UIElements/Views/QT4/QTWorldView.cpp
rfa1830 rc5186e 20 20 // these attributes are skiped so far 21 21 const int QTWorldView::COLUMNCOUNT = COLUMNTYPES_MAX; 22 const char *QTWorldView::COLUMNNAMES[QTWorldView::COLUMNCOUNT]={"Name","Atoms"/*,"Formula"*/ /*,"Size"*/};22 const char *QTWorldView::COLUMNNAMES[QTWorldView::COLUMNCOUNT]={"Name","Atoms"/*,"Formula"*/,"Center"/*,"Size"*/}; 23 23 24 24 QTWorldView::QTWorldView(QWidget * _parent) : … … 81 81 setItem(i,ATOMS,countWidget); 82 82 83 const Vector center = (*iter)->Center; 84 QTableWidgetItem *centerWidget = new QTableWidgetItem(); 85 stringstream centersstr; 86 centersstr << center; 87 centerWidget->setText(QString(centersstr.str().c_str())); 88 setItem(i,CENTER,centerWidget); 89 centerWidget->setFlags(Qt::ItemIsSelectable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled); 90 83 91 molSelection[i]=nameWidget->isSelected(); 84 92 } -
src/UIElements/Views/QT4/QTWorldView.hpp
rfa1830 rc5186e 28 28 29 29 static const int COLUMNCOUNT; 30 enum {NAME,ATOMS,C OLUMNTYPES_MAX} COLUMNTYPES;30 enum {NAME,ATOMS,CENTER,COLUMNTYPES_MAX} COLUMNTYPES; 31 31 static const char *COLUMNNAMES[]; 32 32 -
src/atom.cpp
rfa1830 rc5186e 353 353 } 354 354 355 molecule* atom::getMolecule() const{355 molecule* atom::getMolecule(){ 356 356 return mol; 357 357 } -
src/atom.hpp
rfa1830 rc5186e 92 92 93 93 void setMolecule(molecule*); 94 molecule* getMolecule() const;94 molecule* getMolecule(); 95 95 void removeFromMolecule(); 96 96 -
src/boundary.cpp
rfa1830 rc5186e 804 804 // Center filler at origin 805 805 filler->CenterEdge(&Inserter); 806 filler->Center.Zero(); 806 807 const int FillerCount = filler->getAtomCount(); 807 808 DoLog(2) && (Log() << Verbose(2) << "INFO: Filler molecule has the following bonds:" << endl); -
src/config.cpp
rfa1830 rc5186e 1586 1586 for (MoleculeList::iterator ListRunner = molecules->ListOfMolecules.begin(); ListRunner != molecules->ListOfMolecules.end(); ListRunner++) { 1587 1587 src[N++] = (*ListRunner)->IndexNr; 1588 (*ListRunner)->Translate(&(*ListRunner)->Center); 1588 1589 } 1589 1590 mol = World::getInstance().createMolecule(); 1590 1591 mol->SetNameFromFilename(ConfigFileName); 1592 molecules->SimpleMultiMerge(mol, src, N); 1591 1593 //mol->CalculateOrbitals(*this); 1592 1594 delete[](src); -
src/molecule.hpp
rfa1830 rc5186e 104 104 double BondDistance; //!< typical bond distance used in CreateAdjacencyList() and furtheron 105 105 bool ActiveFlag; //!< in a MoleculeListClass used to discern active from inactive molecules 106 //Vector Center; //!< Center of molecule in a global box106 Vector Center; //!< Center of molecule in a global box 107 107 int IndexNr; //!< index of molecule in a MoleculeListClass 108 108 char name[MAXSTRINGSIZE]; //!< arbitrary name … … 379 379 void eraseMolecule(); 380 380 381 382 // merging of molecules 383 bool SimpleMerge(molecule *mol, molecule *srcmol); 384 bool SimpleAdd(molecule *mol, molecule *srcmol); 385 bool SimpleMultiMerge(molecule *mol, int *src, int N); 386 bool SimpleMultiAdd(molecule *mol, int *src, int N); 387 bool ScatterMerge(molecule *mol, int *src, int N); 388 bool EmbedMerge(molecule *mol, molecule *srcmol); 389 381 390 private: 382 391 World *world; //!< The world this List belongs to. Needed to avoid deadlocks in the destructor -
src/molecule_geometry.cpp
rfa1830 rc5186e 104 104 (*max) += (*min); 105 105 Translate(min); 106 Center.Zero(); 106 107 } 107 108 delete(min); … … 117 118 int Num = 0; 118 119 molecule::const_iterator iter = begin(); // start at first in list 119 Vector Center;120 120 121 121 Center.Zero(); 122 122 123 if (iter != end()) { //list not empty? 123 124 for (; iter != end(); ++iter) { // continue with second if present … … 127 128 Center.Scale(-1./(double)Num); // divide through total number (and sign for direction) 128 129 Translate(&Center); 130 Center.Zero(); 129 131 } 130 132 }; … … 195 197 void molecule::CenterPeriodic() 196 198 { 197 Vector NewCenter; 198 DeterminePeriodicCenter(NewCenter); 199 // go through all atoms 200 BOOST_FOREACH(atom* iter, atoms){ 201 *iter -= NewCenter; 202 } 199 DeterminePeriodicCenter(Center); 203 200 }; 204 201 … … 210 207 void molecule::CenterAtVector(Vector *newcenter) 211 208 { 212 // go through all atoms 213 BOOST_FOREACH(atom* iter, atoms){ 214 *iter -= *newcenter; 215 } 209 Center = *newcenter; 216 210 }; 217 211 … … 283 277 bool flag; 284 278 Vector Testvector, Translationvector; 285 Vector Center;286 279 287 280 do { … … 329 322 330 323 Center.Scale(1./static_cast<double>(getAtomCount())); 331 CenterAtVector(&Center);332 324 }; 333 325 -
src/moleculelist.cpp
rfa1830 rc5186e 193 193 } 194 194 // Center and size 195 Vector *Center = (*ListRunner)->DetermineCenterOfAll(); 196 (*out) << "\t" << *Center << "\t" << sqrt(size) << endl; 197 delete(Center); 195 (*out) << "\t" << (*ListRunner)->Center << "\t" << sqrt(size) << endl; 198 196 } 199 197 } … … 212 210 }; 213 211 212 /** Simple merge of two molecules into one. 213 * \param *mol destination molecule 214 * \param *srcmol source molecule 215 * \return true - merge successful, false - merge failed (probably due to non-existant indices 216 */ 217 bool MoleculeListClass::SimpleMerge(molecule *mol, molecule *srcmol) 218 { 219 if (srcmol == NULL) 220 return false; 221 222 // put all molecules of src into mol 223 for (molecule::iterator iter = srcmol->begin(); !srcmol->empty(); iter=srcmol->begin()) { 224 atom * const Walker = *iter; 225 srcmol->UnlinkAtom(Walker); 226 mol->AddAtom(Walker); 227 } 228 229 // remove src 230 ListOfMolecules.remove(srcmol); 231 World::getInstance().destroyMolecule(srcmol); 232 return true; 233 }; 234 235 /** Simple add of one molecules into another. 236 * \param *mol destination molecule 237 * \param *srcmol source molecule 238 * \return true - merge successful, false - merge failed (probably due to non-existant indices 239 */ 240 bool MoleculeListClass::SimpleAdd(molecule *mol, molecule *srcmol) 241 { 242 if (srcmol == NULL) 243 return false; 244 245 // put all molecules of src into mol 246 atom *Walker = NULL; 247 for (molecule::iterator iter = srcmol->begin(); iter != srcmol->end(); ++iter) { 248 Walker = mol->AddCopyAtom((*iter)); 249 Walker->father = Walker; 250 } 251 252 return true; 253 }; 254 255 /** Simple merge of a given set of molecules into one. 256 * \param *mol destination molecule 257 * \param *src index of set of source molecule 258 * \param N number of source molecules 259 * \return true - merge successful, false - some merges failed (probably due to non-existant indices) 260 */ 261 bool MoleculeListClass::SimpleMultiMerge(molecule *mol, int *src, int N) 262 { 263 bool status = true; 264 // check presence of all source molecules 265 for (int i=0;i<N;i++) { 266 molecule *srcmol = ReturnIndex(src[i]); 267 status = status && SimpleMerge(mol, srcmol); 268 } 269 insert(mol); 270 return status; 271 }; 272 273 /** Simple add of a given set of molecules into one. 274 * \param *mol destination molecule 275 * \param *src index of set of source molecule 276 * \param N number of source molecules 277 * \return true - merge successful, false - some merges failed (probably due to non-existant indices) 278 */ 279 bool MoleculeListClass::SimpleMultiAdd(molecule *mol, int *src, int N) 280 { 281 bool status = true; 282 // check presence of all source molecules 283 for (int i=0;i<N;i++) { 284 molecule *srcmol = ReturnIndex(src[i]); 285 status = status && SimpleAdd(mol, srcmol); 286 } 287 return status; 288 }; 289 290 /** Scatter merge of a given set of molecules into one. 291 * Scatter merge distributes the molecules in such a manner that they don't overlap. 292 * \param *mol destination molecule 293 * \param *src index of set of source molecule 294 * \param N number of source molecules 295 * \return true - merge successful, false - merge failed (probably due to non-existant indices 296 * \TODO find scatter center for each src molecule 297 */ 298 bool MoleculeListClass::ScatterMerge(molecule *mol, int *src, int N) 299 { 300 // check presence of all source molecules 301 for (int i=0;i<N;i++) { 302 // get pointer to src molecule 303 molecule *srcmol = ReturnIndex(src[i]); 304 if (srcmol == NULL) 305 return false; 306 } 307 // adapt each Center 308 for (int i=0;i<N;i++) { 309 // get pointer to src molecule 310 molecule *srcmol = ReturnIndex(src[i]); 311 //srcmol->Center.Zero(); 312 srcmol->Translate(&srcmol->Center); 313 } 314 // perform a simple multi merge 315 SimpleMultiMerge(mol, src, N); 316 return true; 317 }; 318 319 /** Embedding merge of a given set of molecules into one. 320 * Embedding merge inserts one molecule into the other. 321 * \param *mol destination molecule (fixed one) 322 * \param *srcmol source molecule (variable one, where atoms are taken from) 323 * \return true - merge successful, false - merge failed (probably due to non-existant indices) 324 * \TODO linked cell dimensions for boundary points has to be as big as inner diameter! 325 */ 326 bool MoleculeListClass::EmbedMerge(molecule *mol, molecule *srcmol) 327 { 328 LinkedCell *LCList = NULL; 329 Tesselation *TesselStruct = NULL; 330 if ((srcmol == NULL) || (mol == NULL)) { 331 DoeLog(1) && (eLog()<< Verbose(1) << "Either fixed or variable molecule is given as NULL." << endl); 332 return false; 333 } 334 335 // calculate envelope for *mol 336 LCList = new LinkedCell(mol, 8.); 337 FindNonConvexBorder(mol, TesselStruct, (const LinkedCell *&)LCList, 4., NULL); 338 if (TesselStruct == NULL) { 339 DoeLog(1) && (eLog()<< Verbose(1) << "Could not tesselate the fixed molecule." << endl); 340 return false; 341 } 342 delete(LCList); 343 LCList = new LinkedCell(TesselStruct, 8.); // re-create with boundary points only! 344 345 // prepare index list for bonds 346 atom ** CopyAtoms = new atom*[srcmol->getAtomCount()]; 347 for(int i=0;i<srcmol->getAtomCount();i++) 348 CopyAtoms[i] = NULL; 349 350 // for each of the source atoms check whether we are in- or outside and add copy atom 351 int nr=0; 352 for (molecule::const_iterator iter = srcmol->begin(); iter != srcmol->end(); ++iter) { 353 DoLog(2) && (Log() << Verbose(2) << "INFO: Current Walker is " << **iter << "." << endl); 354 if (!TesselStruct->IsInnerPoint((*iter)->getPosition(), LCList)) { 355 CopyAtoms[(*iter)->nr] = (*iter)->clone(); 356 mol->AddAtom(CopyAtoms[(*iter)->nr]); 357 nr++; 358 } else { 359 // do nothing 360 } 361 } 362 DoLog(1) && (Log() << Verbose(1) << nr << " of " << srcmol->getAtomCount() << " atoms have been merged."); 363 364 // go through all bonds and add as well 365 for(molecule::iterator AtomRunner = srcmol->begin(); AtomRunner != srcmol->end(); ++AtomRunner) 366 for(BondList::iterator BondRunner = (*AtomRunner)->ListOfBonds.begin(); BondRunner != (*AtomRunner)->ListOfBonds.end(); ++BondRunner) 367 if ((*BondRunner)->leftatom == *AtomRunner) { 368 DoLog(3) && (Log() << Verbose(3) << "Adding Bond between " << *CopyAtoms[(*BondRunner)->leftatom->nr] << " and " << *CopyAtoms[(*BondRunner)->rightatom->nr]<< "." << endl); 369 mol->AddBond(CopyAtoms[(*BondRunner)->leftatom->nr], CopyAtoms[(*BondRunner)->rightatom->nr], (*BondRunner)->BondDegree); 370 } 371 delete(LCList); 372 return true; 373 }; 214 374 215 375 /** Simple output of the pointers in ListOfMolecules. -
src/periodentafel.cpp
rfa1830 rc5186e 295 295 getline(input,header1tmp); 296 296 getline(input,header2tmp); // skip first two header lines 297 //cout << "First header: " << header1tmp << endl;298 //cout << "Second header: " << header2tmp << endl;297 cout << "First header: " << header1tmp << endl; 298 cout << "Second header: " << header2tmp << endl; 299 299 DoLog(0) && (Log() << Verbose(0) << "Parsed elements:"); 300 300 while (!input.eof()) { -
tests/regression/Simple_configuration/5/pre/test.conf
rfa1830 rc5186e 28 28 OutSrcStep 5 # Output "restart" data every ..th step 29 29 TargetTemp 0.000950045 # Target temperature 30 MaxPsiStep 3# number of Minimisation steps per state (0 - default)30 MaxPsiStep 0 # number of Minimisation steps per state (0 - default) 31 31 EpsWannier 1e-07 # tolerance value for spread minimisation of orbitals 32 32 … … 35 35 RelEpsTotalE 1e-07 # relative change in total energy 36 36 RelEpsKineticE 1e-05 # relative change in kinetic energy 37 MaxMinStopStep 1# check every ..th steps38 MaxMinGapStopStep 1# check every ..th steps37 MaxMinStopStep 0 # check every ..th steps 38 MaxMinGapStopStep 0 # check every ..th steps 39 39 40 40 # Values specifying when to stop for INIT, otherwise same as above … … 42 42 InitRelEpsTotalE 1e-05 # relative change in total energy 43 43 InitRelEpsKineticE 0.0001 # relative change in kinetic energy 44 InitMaxMinStopStep 1# check every ..th steps45 InitMaxMinGapStopStep 1# check every ..th steps44 InitMaxMinStopStep 0 # check every ..th steps 45 InitMaxMinGapStopStep 0 # check every ..th steps 46 46 47 47 BoxLength # (Length of a unit cell) … … 54 54 Level0Factor 2 # factor by which node number increases from S to 0 level 55 55 RiemannTensor 0 # (Use metric) 56 PsiType 1# 0 - doubly occupied, 1 - SpinUp,SpinDown56 PsiType 0 # 0 - doubly occupied, 1 - SpinUp,SpinDown 57 57 MaxPsiDouble 0 # here: specifying both maximum number of SpinUp- and -Down-states 58 58 PsiMaxNoUp 0 # here: specifying maximum number of SpinUp-states 59 PsiMaxNoDown 1# here: specifying maximum number of SpinDown-states59 PsiMaxNoDown 0 # here: specifying maximum number of SpinDown-states 60 60 AddPsis 0 # Additional unoccupied Psis for bandgap determination 61 61 -
tests/regression/testsuite-simple_configuration.at
rfa1830 rc5186e 31 31 AT_CHECK([../../molecuilder -i test2.conf -e ${abs_top_srcdir}/src/ -o mpqc pcp xyz -a 1 --position "0., 0., -1."], 134, [ignore], [ignore]) 32 32 AT_CLEANUP 33 AT_SETUP([Simple configuration - adding atom with Undo/Redo])34 AT_KEYWORDS([configuration])35 AT_CHECK([../../molecuilder -i empty.conf -o pcp -a 1 --position "10., 10., 10." --undo], 0, [ignore], [ignore])36 AT_CHECK([file=empty.conf; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/3/post/$file], 0, [ignore], [ignore])37 AT_CHECK([../../molecuilder -i test.conf -o mpqc pcp xyz -a 1 --position "10., 10., 10." --undo --redo], 0, [ignore], [ignore])38 AT_CHECK([file=test.conf; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/3/post/$file], 0, [ignore], [ignore])39 AT_CHECK([file=test.in; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/3/post/$file], 0, [ignore], [ignore])40 AT_CHECK([file=test.xyz; diff -I '.*Created by molecuilder.*' $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/3/post/$file], 0, [ignore], [ignore])41 AT_CLEANUP42 33 43 34 # 4. change the element … … 46 37 AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/4/pre/test.xyz test.xyz], 0) 47 38 AT_CHECK([../../molecuilder -i test.xyz -e ${abs_top_srcdir}/src/ --select-atom-by-id 0 -E 6 ], 0, [ignore], [ignore]) 48 AT_CHECK([file=test.xyz; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/4/post/$file], 0, [ignore], [ignore])49 AT_CLEANUP50 AT_SETUP([Simple configuration - Changing element with Undo/Redo])51 AT_KEYWORDS([configuration])52 AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/4/pre/test.xyz test.xyz], 0)53 AT_CHECK([../../molecuilder -i test.xyz -e ${abs_top_srcdir}/src/ --select-atom-by-id 0 -E 6 --undo], 0, [ignore], [ignore])54 AT_CHECK([file=test.xyz; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/4/pre/$file], 0, [ignore], [ignore])55 AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/4/pre/test.xyz test.xyz], 0)56 AT_CHECK([../../molecuilder -i test.xyz -e ${abs_top_srcdir}/src/ --select-atom-by-id 0 -E 6 --undo --redo], 0, [ignore], [ignore])57 39 AT_CHECK([file=test.xyz; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/4/post/$file], 0, [ignore], [ignore]) 58 40 AT_CLEANUP … … 66 48 AT_CHECK([file=test.in; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/5/post/$file], 0, [ignore], [ignore]) 67 49 AT_CHECK([file=test.xyz; diff -I '.*Created by molecuilder.*' $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/5/post/$file], 0, [ignore], [ignore]) 68 AT_CLEANUP69 AT_SETUP([Simple configuration - Atom removal with Undo/Redo])70 AT_KEYWORDS([configuration])71 AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/5/pre/test.conf .], 0)72 AT_CHECK([../../molecuilder -i test.conf --select-atom-by-id 0 -r --undo], 0, [ignore], [ignore])73 AT_CHECK([file=test.conf; diff -I '.*Created by molecuilder.*' $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/5/pre/$file], 0, [ignore], [ignore])74 AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/5/pre/test.conf .], 0)75 AT_CHECK([../../molecuilder -i test.conf --select-atom-by-id 0 -r --undo --redo], 0, [ignore], [ignore])76 AT_CHECK([file=test.conf; diff -I '.*Created by molecuilder.*' $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/5/post/$file], 0, [ignore], [ignore])77 50 AT_CLEANUP 78 51 … … 113 86 AT_CHECK([file=test.xyz-sorted; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/8/post/$file], 0, [ignore], [ignore]) 114 87 AT_CLEANUP 115 AT_SETUP([Simple configuration - Removing sphere of atoms with Undo/Redo])116 AT_KEYWORDS([configuration])117 AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/8/pre/test.xyz .], 0)118 AT_CHECK([../../molecuilder -i test.xyz --select-atoms-inside-sphere 7. --position "7.283585982, 3.275186040, 3.535886037" -r --undo], 0, [stdout], [stderr])119 AT_CHECK([file=test.xyz; diff -I '.*Created by molecuilder.*' $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/8/pre/$file], 0, [ignore], [ignore])120 AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/8/pre/test.xyz test-withoutsphere.xyz], 0)121 AT_CHECK([../../molecuilder -i test-withoutsphere.xyz --select-atoms-inside-sphere 7. --position "7.283585982, 3.275186040, 3.535886037" -r --undo --redo], 0, [stdout], [stderr])122 AT_CHECK([sort -n test-withoutsphere.xyz | grep -v -E "^[[[:digit:]]]+" | grep -v "Created by" >test-withoutsphere.xyz-sorted], 0, [ignore], [ignore])123 AT_CHECK([file=test-withoutsphere.xyz-sorted; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/8/post/$file], 0, [ignore], [ignore])124 AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/8/pre/test.xyz .], 0)125 AT_CHECK([../../molecuilder -i test.xyz --select-all-atoms --unselect-atoms-inside-sphere 7. --position "7.283585982, 3.275186040, 3.535886037" -r --undo], 0, [stdout], [stderr])126 AT_CHECK([file=test.xyz; diff -I '.*Created by molecuilder.*' $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/8/pre/$file], 0, [ignore], [ignore])127 AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/8/pre/test.xyz test-sphere.xyz], 0)128 AT_CHECK([../../molecuilder -i test-sphere.xyz --select-all-atoms --unselect-atoms-inside-sphere 7. --position "7.283585982, 3.275186040, 3.535886037" -r --undo --redo], 0, [stdout], [stderr])129 AT_CHECK([sort -n test-sphere.xyz | grep -v -E "^[[[:digit:]]]+" | grep -v "Created by" >test-sphere.xyz-sorted], 0, [ignore], [ignore])130 AT_CHECK([file=test-sphere.xyz-sorted; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/8/post/$file], 0, [ignore], [ignore])131 AT_CHECK([cat test-sphere.xyz-sorted test-withoutsphere.xyz-sorted | sort -n >test.xyz-sorted], 0, [ignore], [ignore])132 AT_CHECK([file=test.xyz-sorted; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/8/post/$file], 0, [ignore], [ignore])133 AT_CLEANUP134 88 135 89 AT_SETUP([Simple configuration - Removing cuboid of atoms]) … … 141 95 AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/8/pre/test.xyz test-cuboid.xyz], 0) 142 96 AT_CHECK([../../molecuilder -i test-cuboid.xyz --select-all-atoms --unselect-atoms-inside-cuboid "2,2,2" --position "9.78,2.64,2.64" -r], 0, [stdout], [stderr]) 143 AT_CHECK([sort -n test-cuboid.xyz | grep -v -E "^[[[:digit:]]]+" | grep -v "Created by" >test-cuboid.xyz-sorted], 0, [ignore], [ignore])144 AT_CHECK([file=test-cuboid.xyz-sorted; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/8/post/$file], 0, [ignore], [ignore])145 AT_CHECK([cat test-cuboid.xyz-sorted test-withoutcuboid.xyz-sorted | sort -n >test.xyz-sorted], 0, [ignore], [ignore])146 AT_CHECK([file=test.xyz-sorted; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/8/post/$file], 0, [ignore], [ignore])147 AT_CLEANUP148 AT_SETUP([Simple configuration - Removing cuboid of atoms with Undo/Redo])149 AT_KEYWORDS([configuration])150 AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/8/pre/test.xyz .], 0)151 AT_CHECK([../../molecuilder -i test.xyz --select-atoms-inside-cuboid "2,2,2" --position "9.78,2.64,2.64" -r --undo], 0, [stdout], [stderr])152 AT_CHECK([file=test.xyz; diff -I '.*Created by molecuilder.*' $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/8/pre/$file], 0, [ignore], [ignore])153 AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/8/pre/test.xyz test-withoutcuboid.xyz], 0)154 AT_CHECK([../../molecuilder -i test-withoutcuboid.xyz --select-atoms-inside-cuboid "2,2,2" --position "9.78,2.64,2.64" -r --undo --redo], 0, [stdout], [stderr])155 AT_CHECK([sort -n test-withoutcuboid.xyz | grep -v -E "^[[[:digit:]]]+" | grep -v "Created by" >test-withoutcuboid.xyz-sorted], 0, [ignore], [ignore])156 AT_CHECK([file=test-withoutcuboid.xyz-sorted; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/8/post/$file], 0, [ignore], [ignore])157 AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/8/pre/test.xyz .], 0)158 AT_CHECK([../../molecuilder -i test.xyz --select-all-atoms --unselect-atoms-inside-cuboid "2,2,2" --position "9.78,2.64,2.64" -r --undo], 0, [stdout], [stderr])159 AT_CHECK([file=test.xyz; diff -I '.*Created by molecuilder.*' $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/8/pre/$file], 0, [ignore], [ignore])160 AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/8/pre/test.xyz test-cuboid.xyz], 0)161 AT_CHECK([../../molecuilder -i test-cuboid.xyz --select-all-atoms --unselect-atoms-inside-cuboid "2,2,2" --position "9.78,2.64,2.64" -r --undo --redo], 0, [stdout], [stderr])162 97 AT_CHECK([sort -n test-cuboid.xyz | grep -v -E "^[[[:digit:]]]+" | grep -v "Created by" >test-cuboid.xyz-sorted], 0, [ignore], [ignore]) 163 98 AT_CHECK([file=test-cuboid.xyz-sorted; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/8/post/$file], 0, [ignore], [ignore]) -
tests/regression/testsuite-standard_options.at
rfa1830 rc5186e 5 5 AT_CHECK([pwd],[ignore],[ignore]) 6 6 AT_CHECK([../../molecuilder -v 1], 0, [stdout], [ignore]) 7 AT_CHECK([grep "Setting verbosity from .* to 1" stdout], 0, [ignore], [ignore]) 8 AT_CLEANUP 9 AT_SETUP([Standard Options - verbosity with Undo/Redo]) 10 AT_KEYWORDS([options]) 11 AT_CHECK([../../molecuilder -v 1 --undo], 0, [stdout], [ignore]) 12 AT_CHECK([grep "Setting verbosity from 1 to .*" stdout], 0, [ignore], [ignore]) 13 AT_CHECK([../../molecuilder -v 1 --undo --redo], 0, [stdout], [ignore]) 14 AT_CHECK([grep "Setting verbosity from .* to 1" stdout], 0, [ignore], [ignore]) 7 AT_CHECK([fgrep olecuilder stdout], 0, [ignore], [ignore]) 15 8 AT_CLEANUP 16 9 … … 60 53 AT_CHECK([fgrep "I won't parse trajectories" stdout], 0, [ignore], [ignore]) 61 54 AT_CLEANUP 62 AT_SETUP([Standard Options - fast trajectories with Undo/Redo])63 AT_KEYWORDS([options])64 AT_CHECK([../../molecuilder -i test.conf -n 1 --undo], 0, [stdout], [stderr])65 AT_CHECK([fgrep "I will parse trajectories." stdout], 0, [ignore], [ignore])66 AT_CHECK([../../molecuilder -i test.conf -n 1 --undo --redo], 0, [stdout], [stderr])67 AT_CHECK([grep -c "I won't parse trajectories" stdout], 0, 268 , [ignore])69 AT_CLEANUP70 55 71 56 # 7. molecule default name … … 75 60 AT_CHECK([fgrep "Default name of new molecules set to test." stdout], 0, [ignore], [ignore]) 76 61 AT_CLEANUP 77 AT_SETUP([Standard Options - molecule default name with Undo/Redo])78 AT_KEYWORDS([options])79 AT_CHECK([../../molecuilder -i test.conf -X test --undo], 0, [stdout], [stderr])80 AT_CHECK([fgrep "Default name of new molecules set to none." stdout], 0, [ignore], [ignore])81 AT_CHECK([../../molecuilder -i test.conf -X test --undo --redo], 0, [stdout], [stderr])82 AT_CHECK([fgrep "Default name of new molecules set to test." stdout], 0, [ignore], [ignore])83 AT_CLEANUP
Note:
See TracChangeset
for help on using the changeset viewer.