Changes in / [23bade:b8d15ba]
- Files:
-
- 3 added
- 2 deleted
- 27 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Actions/AtomAction/AddAction.cpp
r23bade rb8d15ba 10 10 #include "Actions/AtomAction/AddAction.hpp" 11 11 #include "Actions/ActionRegistry.hpp" 12 #include "Descriptors/AtomIdDescriptor.hpp" 12 13 #include "atom.hpp" 13 14 #include "element.hpp" … … 26 27 #include "UIElements/Dialog.hpp" 27 28 #include "Actions/ValueStorage.hpp" 29 30 // memento to remember the state when undoing 31 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 }; 28 43 29 44 const char AtomAddAction::NAME[] = "add-atom"; … … 70 85 (*iter)->AddAtom(first); 71 86 } 72 return Action::s uccess;87 return Action::state_ptr(new AtomAddState(position, elemental, first->getId())); 73 88 } 74 89 75 90 Action::state_ptr AtomAddAction::performUndo(Action::state_ptr _state) { 76 // ParserLoadXyzState *state = assert_cast<ParserLoadXyzState*>(_state.get());91 AtomAddState *state = assert_cast<AtomAddState*>(_state.get()); 77 92 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)); 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); 83 97 } 84 98 85 99 Action::state_ptr AtomAddAction::performRedo(Action::state_ptr _state){ 86 return Action::failure; 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); 87 116 } 88 117 89 118 bool AtomAddAction::canUndo() { 90 return false;119 return true; 91 120 } 92 121 93 122 bool AtomAddAction::shouldUndo() { 94 return false;123 return true; 95 124 } 96 125 -
src/Actions/AtomAction/ChangeElementAction.cpp
r23bade rb8d15ba 10 10 #include "Actions/AtomAction/ChangeElementAction.hpp" 11 11 #include "Actions/ActionRegistry.hpp" 12 #include "Descriptors/AtomIdDescriptor.hpp" 12 13 #include "atom.hpp" 13 14 #include "element.hpp" … … 19 20 20 21 #include <iostream> 22 #include <map> 21 23 #include <string> 22 24 … … 26 28 #include "UIElements/Dialog.hpp" 27 29 #include "Actions/ValueStorage.hpp" 30 31 typedef std::map<int, const element *> ElementMap; 32 33 // memento to remember the state when undoing 34 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 }; 28 44 29 45 const char AtomChangeElementAction::NAME[] = "change-element"; … … 56 72 ValueStorage::getInstance().queryCurrentValue(NAME, elemental); 57 73 74 // create undo state 75 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 58 81 for (World::AtomSelectionIterator iter = World::getInstance().beginAtomSelection(); iter != World::getInstance().endAtomSelection(); ++iter) { 59 82 first = iter->second; … … 64 87 mol->AddAtom(first); // add atom to ensure correctness of formula 65 88 } 66 return Action::s uccess;89 return Action::state_ptr(UndoState); 67 90 } 68 91 69 92 Action::state_ptr AtomChangeElementAction::performUndo(Action::state_ptr _state) { 70 // ParserLoadXyzState *state = assert_cast<ParserLoadXyzState*>(_state.get()); 93 AtomChangeElementState *state = assert_cast<AtomChangeElementState*>(_state.get()); 94 atom *first = NULL; 95 molecule *mol = NULL; 71 96 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)); 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); 77 106 } 78 107 79 108 Action::state_ptr AtomChangeElementAction::performRedo(Action::state_ptr _state){ 80 return Action::failure; 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); 81 122 } 82 123 83 124 bool AtomChangeElementAction::canUndo() { 84 return false;125 return true; 85 126 } 86 127 87 128 bool AtomChangeElementAction::shouldUndo() { 88 return false;129 return true; 89 130 } 90 131 -
src/Actions/AtomAction/RemoveAction.cpp
r23bade rb8d15ba 11 11 #include "Actions/ActionRegistry.hpp" 12 12 #include "atom.hpp" 13 #include "AtomicInfo.hpp" 13 14 #include "Descriptors/AtomDescriptor.hpp" 14 15 #include "Helpers/Log.hpp" … … 25 26 #include "UIElements/Dialog.hpp" 26 27 #include "Actions/ValueStorage.hpp" 28 29 // memento to remember the state when undoing 30 31 class AtomRemoveState : public ActionState { 32 public: 33 AtomRemoveState(std::vector<AtomicInfo> _Walkers) : 34 Walkers(_Walkers) 35 {} 36 std::vector<AtomicInfo> Walkers; 37 }; 27 38 28 39 const char AtomRemoveAction::NAME[] = "remove-atom"; … … 50 61 atom *first = NULL; 51 62 52 std::vector<molecule *> molecules = World::getInstance().getAllMolecules(); 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(); 53 72 for (World::AtomSelectionIterator iter = World::getInstance().beginAtomSelection(); iter != World::getInstance().endAtomSelection(); ++iter) { 54 73 first = iter->second; 55 74 DoLog(1) && (Log() << Verbose(1) << "Removing atom " << first->getId() << "." << endl); 56 // TODO: this is not necessary when atoms and their storing to file are handled by the World57 // simply try to erase in every molecule found58 for (std::vector<molecule *>::iterator iter = molecules.begin();iter != molecules.end(); ++iter) {59 (*iter)->erase(first);60 }75 // // TODO: this is not necessary when atoms and their storing to file are handled by the World 76 // // simply try to erase in every molecule found 77 // for (std::vector<molecule *>::iterator iter = molecules.begin();iter != molecules.end(); ++iter) { 78 // (*iter)->erase(first); 79 // } 61 80 World::getInstance().destroyAtom(first); 62 81 } 63 return Action::s uccess;82 return Action::state_ptr(UndoState); 64 83 } 65 84 66 85 Action::state_ptr AtomRemoveAction::performUndo(Action::state_ptr _state) { 67 // ParserLoadXyzState *state = assert_cast<ParserLoadXyzState*>(_state.get());86 AtomRemoveState *state = assert_cast<AtomRemoveState*>(_state.get()); 68 87 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)); 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); 74 107 } 75 108 76 109 Action::state_ptr AtomRemoveAction::performRedo(Action::state_ptr _state){ 77 return Action::failure; 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); 78 119 } 79 120 80 121 bool AtomRemoveAction::canUndo() { 81 return false;122 return true; 82 123 } 83 124 84 125 bool AtomRemoveAction::shouldUndo() { 85 return false;126 return true; 86 127 } 87 128 -
src/Actions/CmdAction/FastParsingAction.cpp
r23bade rb8d15ba 28 28 class CommandLineFastParsingState : public ActionState { 29 29 public: 30 CommandLineFastParsingState(bool _bool) : 31 boolean(_bool) 30 CommandLineFastParsingState(const bool _oldvalue, const bool _newvalue) : 31 oldvalue(_oldvalue), 32 newvalue(_newvalue) 32 33 {} 33 bool boolean; 34 bool oldvalue; 35 bool newvalue; 34 36 }; 35 37 … … 58 60 59 61 Action::state_ptr CommandLineFastParsingAction::performCall() { 60 61 62 config *configuration = World::getInstance().getConfig(); 62 ValueStorage::getInstance().queryCurrentValue(NAME, configuration->FastParsing); 63 bool oldvalue = configuration->FastParsing; 64 bool newvalue; 65 ValueStorage::getInstance().queryCurrentValue(NAME, newvalue); 66 configuration->FastParsing = newvalue; 63 67 if (configuration->FastParsing) 64 68 DoLog(0) && (Log() << Verbose(0) << "I won't parse trajectories." << endl); 65 69 else 66 70 DoLog(0) && (Log() << Verbose(0) << "I will parse trajectories." << endl); 67 return Action::s uccess;71 return Action::state_ptr(new CommandLineFastParsingState(oldvalue, newvalue)); 68 72 } 69 73 … … 72 76 73 77 config *configuration = World::getInstance().getConfig(); 74 configuration->FastParsing = state->boolean; 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); 75 83 76 return Action::state_ptr( new CommandLineFastParsingState(!state->boolean));84 return Action::state_ptr(_state); 77 85 } 78 86 79 87 Action::state_ptr CommandLineFastParsingAction::performRedo(Action::state_ptr _state){ 80 return performUndo(_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); 81 98 } 82 99 -
src/Actions/CmdAction/VerboseAction.cpp
r23bade rb8d15ba 26 26 class CommandLineVerboseState : public ActionState { 27 27 public: 28 CommandLineVerboseState(int _verbosity) : 29 verbosity(_verbosity) 28 CommandLineVerboseState(const int _oldverbosity, const int _newverbosity) : 29 oldverbosity(_oldverbosity), 30 newverbosity(_newverbosity) 30 31 {} 31 int verbosity; 32 int oldverbosity; 33 int newverbosity; 32 34 }; 33 35 … … 56 58 57 59 Action::state_ptr CommandLineVerboseAction::performCall() { 58 int verbosity = 2; 60 int oldverbosity = getVerbosity(); 61 int newverbosity = 2; 59 62 60 ValueStorage::getInstance().queryCurrentValue(NAME, verbosity);63 ValueStorage::getInstance().queryCurrentValue(NAME, newverbosity); 61 64 62 setVerbosity(verbosity); 63 DoLog(0) && (Log() << Verbose(0) << "Setting verbosity to " << verbosity << "." << endl); 64 return Action::success; 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 } 65 74 } 66 75 … … 68 77 CommandLineVerboseState *state = assert_cast<CommandLineVerboseState*>(_state.get()); 69 78 70 int verbosity = 2;71 ValueStorage::getInstance().queryCurrentValue(NAME,verbosity);79 DoLog(0) && (Log() << Verbose(0) << "Setting verbosity from " << state->newverbosity << " to " << state->oldverbosity << "." << endl); 80 setVerbosity(state->oldverbosity); 72 81 73 setVerbosity(state->verbosity); 74 return Action::state_ptr(new CommandLineVerboseState(verbosity)); 82 return Action::state_ptr(_state); 75 83 } 76 84 77 85 Action::state_ptr CommandLineVerboseAction::performRedo(Action::state_ptr _state){ 78 return performUndo(_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); 79 92 } 80 93 -
src/Actions/WorldAction/SetDefaultNameAction.cpp
r23bade rb8d15ba 62 62 63 63 defaultname = World::getInstance().getDefaultName(); 64 WorldSetDefaultNameState *UndoState = new WorldSetDefaultNameState(defaultname); 64 65 ValueStorage::getInstance().queryCurrentValue(NAME, defaultname); 65 66 66 67 World::getInstance().setDefaultName(defaultname); 67 68 DoLog(0) && (Log() << Verbose(0) << "Default name of new molecules set to " << World::getInstance().getDefaultName() << "." << endl); 68 return Action::s uccess;69 return Action::state_ptr(UndoState); 69 70 } 70 71 … … 74 75 string newName = World::getInstance().getDefaultName(); 75 76 World::getInstance().setDefaultName(state->lastName); 77 DoLog(0) && (Log() << Verbose(0) << "Default name of new molecules set to " << World::getInstance().getDefaultName() << "." << endl); 76 78 77 79 return Action::state_ptr(new WorldSetDefaultNameState(newName)); -
src/Helpers/Log.cpp
r23bade rb8d15ba 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 level 26 */ 27 int getVerbosity() { 28 return logger::getInstance().getVerbosity(); 20 29 } 21 30 -
src/Helpers/Log.hpp
r23bade rb8d15ba 15 15 class errorLogger & eLog(); 16 16 void setVerbosity(int verbosityLevel); 17 int getVerbosity(); 17 18 bool DoLog(int verbose); 18 19 bool DoeLog(int verbose); -
src/Helpers/errorlogger.cpp
r23bade rb8d15ba 41 41 void errorLogger::setVerbosity(int verbosityLevel) { 42 42 verbosity = verbosityLevel; 43 } 44 45 /** 46 * Gets the verbosity. 47 * 48 * \return verbosity level 49 */ 50 int errorLogger::getVerbosity() 51 { 52 return verbosity; 43 53 } 44 54 -
src/Helpers/errorlogger.hpp
r23bade rb8d15ba 25 25 static bool DoOutput(); 26 26 static void setVerbosity(int verbosityLevel); 27 static int getVerbosity(); 27 28 28 29 protected: -
src/Helpers/logger.cpp
r23bade rb8d15ba 44 44 45 45 /** 46 * Gets the verbosity. 47 * 48 * \return verbosity level 49 */ 50 int logger::getVerbosity() 51 { 52 return verbosity; 53 } 54 55 /** 46 56 * Operator for the Binary(arg) call. 47 57 * Constructs temporary a Verbose class object, wherein the Binary is stored. -
src/Helpers/logger.hpp
r23bade rb8d15ba 25 25 static bool DoOutput(); 26 26 static void setVerbosity(int verbosityLevel); 27 static int getVerbosity(); 27 28 28 29 protected: -
src/Makefile.am
r23bade rb8d15ba 6 6 ATOMSOURCE = \ 7 7 atom.cpp \ 8 AtomicInfo.cpp \ 8 9 atom_atominfo.cpp \ 9 10 atom_bondedparticle.cpp \ … … 16 17 ATOMHEADER = \ 17 18 atom.hpp \ 19 AtomicInfo.hpp \ 18 20 atom_atominfo.hpp \ 19 21 atom_bondedparticle.hpp \ -
src/UIElements/Views/QT4/QTStatusBar.cpp
r23bade rb8d15ba 21 21 QStatusBar(_parent), 22 22 Observer("QTStatusBar"), 23 parent(_parent),24 23 atomCount(World::getInstance().numAtoms()), 25 moleculeCount(World::getInstance().numMolecules()) 24 moleculeCount(World::getInstance().numMolecules()), 25 parent(_parent) 26 26 { 27 27 World::getInstance().signOn(this); -
src/UIElements/Views/QT4/QTWorldView.cpp
r23bade rb8d15ba 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"*/ ,"Center"/*,"Size"*/};22 const char *QTWorldView::COLUMNNAMES[QTWorldView::COLUMNCOUNT]={"Name","Atoms"/*,"Formula"*//*,"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 91 83 molSelection[i]=nameWidget->isSelected(); 92 84 } -
src/UIElements/Views/QT4/QTWorldView.hpp
r23bade rb8d15ba 28 28 29 29 static const int COLUMNCOUNT; 30 enum {NAME,ATOMS,C ENTER,COLUMNTYPES_MAX} COLUMNTYPES;30 enum {NAME,ATOMS,COLUMNTYPES_MAX} COLUMNTYPES; 31 31 static const char *COLUMNNAMES[]; 32 32 -
src/atom.cpp
r23bade rb8d15ba 353 353 } 354 354 355 molecule* atom::getMolecule() {355 molecule* atom::getMolecule() const { 356 356 return mol; 357 357 } -
src/atom.hpp
r23bade rb8d15ba 92 92 93 93 void setMolecule(molecule*); 94 molecule* getMolecule() ;94 molecule* getMolecule() const; 95 95 void removeFromMolecule(); 96 96 -
src/boundary.cpp
r23bade rb8d15ba 804 804 // Center filler at origin 805 805 filler->CenterEdge(&Inserter); 806 filler->Center.Zero();807 806 const int FillerCount = filler->getAtomCount(); 808 807 DoLog(2) && (Log() << Verbose(2) << "INFO: Filler molecule has the following bonds:" << endl); -
src/config.cpp
r23bade rb8d15ba 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);1589 1588 } 1590 1589 mol = World::getInstance().createMolecule(); 1591 1590 mol->SetNameFromFilename(ConfigFileName); 1592 molecules->SimpleMultiMerge(mol, src, N);1593 1591 //mol->CalculateOrbitals(*this); 1594 1592 delete[](src); -
src/molecule.hpp
r23bade rb8d15ba 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 molecules383 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 390 381 private: 391 382 World *world; //!< The world this List belongs to. Needed to avoid deadlocks in the destructor -
src/molecule_geometry.cpp
r23bade rb8d15ba 104 104 (*max) += (*min); 105 105 Translate(min); 106 Center.Zero();107 106 } 108 107 delete(min); … … 118 117 int Num = 0; 119 118 molecule::const_iterator iter = begin(); // start at first in list 119 Vector Center; 120 120 121 121 Center.Zero(); 122 123 122 if (iter != end()) { //list not empty? 124 123 for (; iter != end(); ++iter) { // continue with second if present … … 128 127 Center.Scale(-1./(double)Num); // divide through total number (and sign for direction) 129 128 Translate(&Center); 130 Center.Zero();131 129 } 132 130 }; … … 197 195 void molecule::CenterPeriodic() 198 196 { 199 DeterminePeriodicCenter(Center); 197 Vector NewCenter; 198 DeterminePeriodicCenter(NewCenter); 199 // go through all atoms 200 BOOST_FOREACH(atom* iter, atoms){ 201 *iter -= NewCenter; 202 } 200 203 }; 201 204 … … 207 210 void molecule::CenterAtVector(Vector *newcenter) 208 211 { 209 Center = *newcenter; 212 // go through all atoms 213 BOOST_FOREACH(atom* iter, atoms){ 214 *iter -= *newcenter; 215 } 210 216 }; 211 217 … … 277 283 bool flag; 278 284 Vector Testvector, Translationvector; 285 Vector Center; 279 286 280 287 do { … … 322 329 323 330 Center.Scale(1./static_cast<double>(getAtomCount())); 331 CenterAtVector(&Center); 324 332 }; 325 333 -
src/moleculelist.cpp
r23bade rb8d15ba 193 193 } 194 194 // Center and size 195 (*out) << "\t" << (*ListRunner)->Center << "\t" << sqrt(size) << endl; 195 Vector *Center = (*ListRunner)->DetermineCenterOfAll(); 196 (*out) << "\t" << *Center << "\t" << sqrt(size) << endl; 197 delete(Center); 196 198 } 197 199 } … … 210 212 }; 211 213 212 /** Simple merge of two molecules into one.213 * \param *mol destination molecule214 * \param *srcmol source molecule215 * \return true - merge successful, false - merge failed (probably due to non-existant indices216 */217 bool MoleculeListClass::SimpleMerge(molecule *mol, molecule *srcmol)218 {219 if (srcmol == NULL)220 return false;221 222 // put all molecules of src into mol223 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 src230 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 molecule237 * \param *srcmol source molecule238 * \return true - merge successful, false - merge failed (probably due to non-existant indices239 */240 bool MoleculeListClass::SimpleAdd(molecule *mol, molecule *srcmol)241 {242 if (srcmol == NULL)243 return false;244 245 // put all molecules of src into mol246 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 molecule257 * \param *src index of set of source molecule258 * \param N number of source molecules259 * \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 molecules265 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 molecule275 * \param *src index of set of source molecule276 * \param N number of source molecules277 * \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 molecules283 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 molecule293 * \param *src index of set of source molecule294 * \param N number of source molecules295 * \return true - merge successful, false - merge failed (probably due to non-existant indices296 * \TODO find scatter center for each src molecule297 */298 bool MoleculeListClass::ScatterMerge(molecule *mol, int *src, int N)299 {300 // check presence of all source molecules301 for (int i=0;i<N;i++) {302 // get pointer to src molecule303 molecule *srcmol = ReturnIndex(src[i]);304 if (srcmol == NULL)305 return false;306 }307 // adapt each Center308 for (int i=0;i<N;i++) {309 // get pointer to src molecule310 molecule *srcmol = ReturnIndex(src[i]);311 //srcmol->Center.Zero();312 srcmol->Translate(&srcmol->Center);313 }314 // perform a simple multi merge315 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 *mol336 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 bonds346 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 atom351 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 nothing360 }361 }362 DoLog(1) && (Log() << Verbose(1) << nr << " of " << srcmol->getAtomCount() << " atoms have been merged.");363 364 // go through all bonds and add as well365 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 };374 214 375 215 /** Simple output of the pointers in ListOfMolecules. -
src/periodentafel.cpp
r23bade rb8d15ba 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
r23bade rb8d15ba 28 28 OutSrcStep 5 # Output "restart" data every ..th step 29 29 TargetTemp 0.000950045 # Target temperature 30 MaxPsiStep 0# number of Minimisation steps per state (0 - default)30 MaxPsiStep 3 # 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 0# check every ..th steps38 MaxMinGapStopStep 0# check every ..th steps37 MaxMinStopStep 1 # check every ..th steps 38 MaxMinGapStopStep 1 # 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 0# check every ..th steps45 InitMaxMinGapStopStep 0# check every ..th steps44 InitMaxMinStopStep 1 # check every ..th steps 45 InitMaxMinGapStopStep 1 # 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 0# 0 - doubly occupied, 1 - SpinUp,SpinDown56 PsiType 1 # 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 0# here: specifying maximum number of SpinDown-states59 PsiMaxNoDown 1 # 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
r23bade rb8d15ba 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_CLEANUP 33 42 34 43 # 4. change the element … … 37 46 AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/4/pre/test.xyz test.xyz], 0) 38 47 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_CLEANUP 50 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]) 39 57 AT_CHECK([file=test.xyz; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/4/post/$file], 0, [ignore], [ignore]) 40 58 AT_CLEANUP … … 48 66 AT_CHECK([file=test.in; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/5/post/$file], 0, [ignore], [ignore]) 49 67 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_CLEANUP 69 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]) 50 77 AT_CLEANUP 51 78 … … 86 113 AT_CHECK([file=test.xyz-sorted; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/8/post/$file], 0, [ignore], [ignore]) 87 114 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_CLEANUP 88 134 89 135 AT_SETUP([Simple configuration - Removing cuboid of atoms]) … … 95 141 AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/8/pre/test.xyz test-cuboid.xyz], 0) 96 142 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_CLEANUP 148 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]) 97 162 AT_CHECK([sort -n test-cuboid.xyz | grep -v -E "^[[[:digit:]]]+" | grep -v "Created by" >test-cuboid.xyz-sorted], 0, [ignore], [ignore]) 98 163 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
r23bade rb8d15ba 5 5 AT_CHECK([pwd],[ignore],[ignore]) 6 6 AT_CHECK([../../molecuilder -v 1], 0, [stdout], [ignore]) 7 AT_CHECK([fgrep olecuilder stdout], 0, [ignore], [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]) 8 15 AT_CLEANUP 9 16 … … 53 60 AT_CHECK([fgrep "I won't parse trajectories" stdout], 0, [ignore], [ignore]) 54 61 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, 2 68 , [ignore]) 69 AT_CLEANUP 55 70 56 71 # 7. molecule default name … … 60 75 AT_CHECK([fgrep "Default name of new molecules set to test." stdout], 0, [ignore], [ignore]) 61 76 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.