Changes in src/UIElements/TextDialog.cpp [8de8f7:97ebf8]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/UIElements/TextDialog.cpp
r8de8f7 r97ebf8 8 8 #include <iostream> 9 9 10 #include <Descriptors/AtomDescriptor.hpp> 11 #include <Descriptors/AtomIdDescriptor.hpp> 12 #include <Descriptors/MoleculeDescriptor.hpp> 13 #include <Descriptors/MoleculeIdDescriptor.hpp> 10 14 #include "UIElements/TextDialog.hpp" 11 15 12 16 #include "World.hpp" 13 17 #include "periodentafel.hpp" 14 #include "atom.hpp"15 #include "molecule.hpp"16 18 #include "log.hpp" 17 19 #include "verbose.hpp" 18 20 21 #include "atom.hpp" 22 #include "element.hpp" 23 #include "molecule.hpp" 24 #include "vector.hpp" 25 19 26 using namespace std; 20 27 … … 29 36 30 37 31 void TextDialog::queryInt(const char* title, int* target){ 32 registerQuery(new IntTextQuery(title,target)); 33 } 34 35 void TextDialog::queryDouble(const char* title, double* target){ 36 registerQuery(new DoubleTextQuery(title,target)); 37 } 38 39 void TextDialog::queryString(const char* title, string* target){ 40 registerQuery(new StringTextQuery(title,target)); 41 } 42 43 void TextDialog::queryMolecule(const char* title, molecule **target, MoleculeListClass *molecules) { 44 registerQuery(new MoleculeTextQuery(title,target,molecules)); 45 } 46 47 void TextDialog::queryVector(const char* title, Vector *target,const double *const cellSize, bool check) { 48 registerQuery(new VectorTextQuery(title,target,cellSize,check)); 49 } 50 51 void TextDialog::queryElement(const char* title, const element **target){ 52 registerQuery(new ElementTextQuery(title,target)); 38 void TextDialog::queryEmpty(const char* title, string description){ 39 registerQuery(new EmptyTextQuery(title,description)); 40 } 41 42 void TextDialog::queryBoolean(const char* title, bool* target, string description){ 43 registerQuery(new BooleanTextQuery(title,target,description)); 44 } 45 46 void TextDialog::queryInt(const char* title, int* target, string description){ 47 registerQuery(new IntTextQuery(title,target,description)); 48 } 49 50 void TextDialog::queryDouble(const char* title, double* target, string description){ 51 registerQuery(new DoubleTextQuery(title,target,description)); 52 } 53 54 void TextDialog::queryString(const char* title, string* target, string description){ 55 registerQuery(new StringTextQuery(title,target,description)); 56 } 57 58 void TextDialog::queryAtom(const char* title, atom **target, string description) { 59 registerQuery(new AtomTextQuery(title,target,description)); 60 } 61 62 void TextDialog::queryMolecule(const char* title, molecule **target, string description) { 63 registerQuery(new MoleculeTextQuery(title,target,description)); 64 } 65 66 void TextDialog::queryVector(const char* title, Vector *target,const double *const cellSize, bool check, string description) { 67 registerQuery(new VectorTextQuery(title,target,cellSize,check,description)); 68 } 69 70 void TextDialog::queryBox(const char* title,double ** const cellSize, string description) { 71 registerQuery(new BoxTextQuery(title,cellSize,description)); 72 } 73 74 void TextDialog::queryElement(const char* title, const element **target, string description){ 75 registerQuery(new ElementTextQuery(title,target,description)); 53 76 } 54 77 55 78 /************************** Query Infrastructure ************************/ 56 79 57 TextDialog::IntTextQuery::IntTextQuery(string title,int *_target) : 58 Dialog::IntQuery(title,_target) 80 TextDialog::EmptyTextQuery::EmptyTextQuery(string title, std::string _description) : 81 Dialog::EmptyQuery(title,_description) 82 {} 83 84 TextDialog::EmptyTextQuery::~EmptyTextQuery() {} 85 86 bool TextDialog::EmptyTextQuery::handle() { 87 cout << "Message of " << getTitle() << ":\n" << getDescription() << "\n"; 88 return true; 89 } 90 91 TextDialog::IntTextQuery::IntTextQuery(string title, int * _target, std::string _description) : 92 Dialog::IntQuery(title,_target,_description) 59 93 {} 60 94 … … 79 113 } 80 114 81 TextDialog::StringTextQuery::StringTextQuery(string title,string *_target) : 82 Dialog::StringQuery(title,_target) 115 TextDialog::BooleanTextQuery::BooleanTextQuery(string title, bool * _target, std::string _description) : 116 Dialog::BooleanQuery(title,_target,_description) 117 {} 118 119 TextDialog::BooleanTextQuery::~BooleanTextQuery() {} 120 121 bool TextDialog::BooleanTextQuery::handle() { 122 bool badInput = false; 123 char input = ' '; 124 do{ 125 badInput = false; 126 Log() << Verbose(0) << getTitle(); 127 cin >> input; 128 if ((input == 'y' ) || (input == 'Y')) { 129 tmp = true; 130 } else if ((input == 'n' ) || (input == 'N')) { 131 tmp = false; 132 } else { 133 badInput=true; 134 cin.clear(); 135 cin.ignore(std::numeric_limits<streamsize>::max(),'\n'); 136 Log() << Verbose(0) << "Input was not of [yYnN]!" << endl; 137 } 138 } while(badInput); 139 // clear the input buffer of anything still in the line 140 cin.ignore(std::numeric_limits<streamsize>::max(),'\n'); 141 return true; 142 } 143 144 TextDialog::StringTextQuery::StringTextQuery(string title,string *_target, std::string _description) : 145 Dialog::StringQuery(title,_target,_description) 83 146 {} 84 147 … … 91 154 } 92 155 93 TextDialog::DoubleTextQuery::DoubleTextQuery(string title,double *_target ) :94 Dialog::DoubleQuery(title,_target )156 TextDialog::DoubleTextQuery::DoubleTextQuery(string title,double *_target, std::string _description) : 157 Dialog::DoubleQuery(title,_target,_description) 95 158 {} 96 159 … … 114 177 } 115 178 116 TextDialog::MoleculeTextQuery::MoleculeTextQuery(string title, molecule **_target, MoleculeListClass *_molecules) : 117 Dialog::MoleculeQuery(title,_target,_molecules) 179 TextDialog::AtomTextQuery::AtomTextQuery(string title, atom **_target, std::string _description) : 180 Dialog::AtomQuery(title,_target,_description) 181 {} 182 183 TextDialog::AtomTextQuery::~AtomTextQuery() {} 184 185 bool TextDialog::AtomTextQuery::handle() { 186 int idxOfAtom=0; 187 bool badInput = false; 188 do{ 189 badInput = false; 190 Log() << Verbose(0) << getTitle(); 191 cin >> idxOfAtom; 192 if(cin.fail()){ 193 badInput = true; 194 cin.clear(); 195 cin.ignore(std::numeric_limits<streamsize>::max(),'\n'); 196 Log() << Verbose(0) << "Input was not a number!" << endl; 197 continue; 198 } 199 200 tmp = World::getInstance().getAtom(AtomById(idxOfAtom)); 201 if(!tmp && idxOfAtom!=-1){ 202 Log() << Verbose(0) << "Invalid Atom Index" << endl; 203 badInput = true; 204 } 205 206 } while(badInput); 207 cin.ignore(std::numeric_limits<streamsize>::max(),'\n'); 208 return (idxOfAtom!=-1); 209 } 210 211 TextDialog::MoleculeTextQuery::MoleculeTextQuery(string title, molecule **_target, std::string _description) : 212 Dialog::MoleculeQuery(title,_target,_description) 118 213 {} 119 214 … … 135 230 } 136 231 137 tmp = molecules->ReturnIndex(idxOfMol);232 tmp = World::getInstance().getMolecule(MoleculeById(idxOfMol)); 138 233 if(!tmp && idxOfMol!=-1){ 139 234 Log() << Verbose(0) << "Invalid Molecule Index" << endl; … … 146 241 } 147 242 148 TextDialog::VectorTextQuery::VectorTextQuery(std::string title, Vector *_target, const double *const _cellSize, bool _check ) :149 Dialog::VectorQuery(title,_target,_cellSize,_check )243 TextDialog::VectorTextQuery::VectorTextQuery(std::string title, Vector *_target, const double *const _cellSize, bool _check, std::string _description) : 244 Dialog::VectorQuery(title,_target,_cellSize,_check,_description) 150 245 {} 151 246 … … 154 249 155 250 bool TextDialog::VectorTextQuery::handle() { 156 Log() << Verbose(0) << getTitle(); 157 tmp->AskPosition(cellSize,check); 158 return true; 159 } 160 161 162 TextDialog::ElementTextQuery::ElementTextQuery(std::string title, const element **target) : 163 Dialog::ElementQuery(title,target) 251 Log() << Verbose(0) << getTitle(); 252 253 char coords[3] = {'x','y','z'}; 254 int j = -1; 255 for (int i=0;i<3;i++) { 256 j += i+1; 257 do { 258 Log() << Verbose(0) << coords[i] << "[0.." << cellSize[j] << "]: "; 259 cin >> (*tmp)[i]; 260 } while ((((*tmp)[i] < 0) || ((*tmp)[i] >= cellSize[j])) && (check)); 261 } 262 return true; 263 } 264 265 TextDialog::BoxTextQuery::BoxTextQuery(std::string title, double ** const _cellSize, std::string _description) : 266 Dialog::BoxQuery(title,_cellSize,_description) 267 {} 268 269 TextDialog::BoxTextQuery::~BoxTextQuery() 270 {} 271 272 bool TextDialog::BoxTextQuery::handle() { 273 Log() << Verbose(0) << getTitle(); 274 275 std::string coords[6] = {"xx","xy","xz", "yy", "yz", "zz"}; 276 for (int i=0;i<6;i++) { 277 Log() << Verbose(0) << coords[i] << ": "; 278 cin >> tmp[i]; 279 } 280 return true; 281 } 282 283 TextDialog::ElementTextQuery::ElementTextQuery(std::string title, const element **target, std::string _description) : 284 Dialog::ElementQuery(title,target,_description) 164 285 {} 165 286
Note:
See TracChangeset
for help on using the changeset viewer.