Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/UIElements/TextDialog.cpp

    r97ebf8 r8de8f7  
    88#include <iostream>
    99
    10 #include <Descriptors/AtomDescriptor.hpp>
    11 #include <Descriptors/AtomIdDescriptor.hpp>
    12 #include <Descriptors/MoleculeDescriptor.hpp>
    13 #include <Descriptors/MoleculeIdDescriptor.hpp>
    1410#include "UIElements/TextDialog.hpp"
    1511
    1612#include "World.hpp"
    1713#include "periodentafel.hpp"
     14#include "atom.hpp"
     15#include "molecule.hpp"
    1816#include "log.hpp"
    1917#include "verbose.hpp"
    2018
    21 #include "atom.hpp"
    22 #include "element.hpp"
    23 #include "molecule.hpp"
    24 #include "vector.hpp"
    25 
    2619using namespace std;
    2720
     
    3629
    3730
    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));
     31void TextDialog::queryInt(const char* title, int* target){
     32  registerQuery(new IntTextQuery(title,target));
     33}
     34
     35void TextDialog::queryDouble(const char* title, double* target){
     36  registerQuery(new DoubleTextQuery(title,target));
     37}
     38
     39void TextDialog::queryString(const char* title, string* target){
     40  registerQuery(new StringTextQuery(title,target));
     41}
     42
     43void TextDialog::queryMolecule(const char* title, molecule **target, MoleculeListClass *molecules) {
     44  registerQuery(new MoleculeTextQuery(title,target,molecules));
     45}
     46
     47void TextDialog::queryVector(const char* title, Vector *target,const double *const cellSize, bool check) {
     48  registerQuery(new VectorTextQuery(title,target,cellSize,check));
     49}
     50
     51void TextDialog::queryElement(const char* title, const element **target){
     52  registerQuery(new ElementTextQuery(title,target));
    7653}
    7754
    7855/************************** Query Infrastructure ************************/
    7956
    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)
     57TextDialog::IntTextQuery::IntTextQuery(string title,int *_target) :
     58    Dialog::IntQuery(title,_target)
    9359{}
    9460
     
    11379}
    11480
    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)
     81TextDialog::StringTextQuery::StringTextQuery(string title,string *_target) :
     82    Dialog::StringQuery(title,_target)
    14683{}
    14784
     
    15491}
    15592
    156 TextDialog::DoubleTextQuery::DoubleTextQuery(string title,double *_target, std::string _description) :
    157     Dialog::DoubleQuery(title,_target,_description)
     93TextDialog::DoubleTextQuery::DoubleTextQuery(string title,double *_target) :
     94    Dialog::DoubleQuery(title,_target)
    15895{}
    15996
     
    177114}
    178115
    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)
     116TextDialog::MoleculeTextQuery::MoleculeTextQuery(string title, molecule **_target, MoleculeListClass *_molecules) :
     117    Dialog::MoleculeQuery(title,_target,_molecules)
    213118{}
    214119
     
    230135    }
    231136
    232     tmp = World::getInstance().getMolecule(MoleculeById(idxOfMol));
     137    tmp = molecules->ReturnIndex(idxOfMol);
    233138    if(!tmp && idxOfMol!=-1){
    234139      Log() << Verbose(0) << "Invalid Molecule Index" << endl;
     
    241146}
    242147
    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)
     148TextDialog::VectorTextQuery::VectorTextQuery(std::string title, Vector *_target, const double *const _cellSize, bool _check) :
     149    Dialog::VectorQuery(title,_target,_cellSize,_check)
    245150{}
    246151
     
    249154
    250155bool TextDialog::VectorTextQuery::handle() {
    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)
     156 Log() << Verbose(0) << getTitle();
     157 tmp->AskPosition(cellSize,check);
     158 return true;
     159}
     160
     161
     162TextDialog::ElementTextQuery::ElementTextQuery(std::string title, const element **target) :
     163    Dialog::ElementQuery(title,target)
    285164{}
    286165
Note: See TracChangeset for help on using the changeset viewer.