- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Actions/ParserAction/LoadXyzAction.cpp
ra1e929 r112b09 8 8 #include "Helpers/MemDebug.hpp" 9 9 10 using namespace std;11 12 10 #include "Actions/ParserAction/LoadXyzAction.hpp" 13 11 #include "Parser/XyzParser.hpp" 14 12 15 13 #include <iostream> 16 #include <set>17 14 #include <string> 18 #include <vector>19 15 16 using namespace std; 20 17 21 18 #include "UIElements/UIFactory.hpp" … … 24 21 25 22 #include "atom.hpp" 26 #include "log.hpp"27 23 #include "molecule.hpp" 28 #include "verbose.hpp"29 #include "World.hpp"30 24 31 25 /****** ParserLoadXyzAction *****/ … … 43 37 //}; 44 38 45 const char ParserLoadXyzAction::NAME[] = " parse-xyz";39 const char ParserLoadXyzAction::NAME[] = "LoadXyz"; 46 40 47 41 ParserLoadXyzAction::ParserLoadXyzAction() : … … 54 48 Action::state_ptr ParserLoadXyzAction::performCall() { 55 49 string filename; 50 XyzParser parser; 56 51 Dialog *dialog = UIFactory::getInstance().makeDialog(); 57 52 58 dialog->queryString( NAME,&filename, NAME);53 dialog->queryString("filename",&filename, "Filename of the xyz file"); 59 54 60 55 if(dialog->display()) { 61 DoLog(1) && (Log() << Verbose(1) << "Parsing xyz file for new atoms." << endl);62 56 // parse xyz file 63 57 ifstream input; 64 58 input.open(filename.c_str()); 65 if (!input.fail()) { 66 // TODO: Remove the insertion into molecule when saving does not depend on them anymore. Also, remove molecule.hpp include 67 set <atom*> UniqueList; 68 { 69 vector<atom *> ListBefore = World::getInstance().getAllAtoms(); 70 for (vector<atom *>::iterator runner = ListBefore.begin();runner != ListBefore.end(); ++runner) 71 UniqueList.insert(*runner); 72 } 73 XyzParser parser; // briefly instantiate a parser which is removed at end of focus 59 if (!input.fail()) 74 60 parser.load(&input); 75 {76 vector<atom *> ListAfter = World::getInstance().getAllAtoms();77 pair< set<atom *>::iterator, bool > Inserter;78 if (UniqueList.size() != ListAfter.size()) { // only create if new atoms have been parsed79 MoleculeListClass *molecules = World::getInstance().getMolecules();80 molecule *mol= NULL;81 if (molecules->ListOfMolecules.empty()) {82 mol = World::getInstance().createMolecule();83 molecules->insert(mol);84 } else {85 mol = *(molecules->ListOfMolecules.begin());86 }87 for (vector<atom *>::iterator runner = ListAfter.begin(); runner != ListAfter.end(); ++runner) {88 Inserter = UniqueList.insert(*runner);89 if (Inserter.second) { // if not present, then new (just parsed) atom, add ...90 cout << "Adding new atom " << **runner << " to new mol." << endl;91 mol->AddAtom(*runner);92 }93 }94 mol->doCountAtoms();95 } else {96 cout << "No atoms parsed?" << endl;97 }98 }99 } else {100 DoeLog(1) && (eLog() << Verbose(1) << "Could not open file " << filename << "." << endl);101 }102 61 input.close(); 103 62 }
Note:
See TracChangeset
for help on using the changeset viewer.