Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/UIElements/TextDialog.cpp

    r86466e r97ebf8  
    88#include <iostream>
    99
     10#include <Descriptors/AtomDescriptor.hpp>
     11#include <Descriptors/AtomIdDescriptor.hpp>
     12#include <Descriptors/MoleculeDescriptor.hpp>
     13#include <Descriptors/MoleculeIdDescriptor.hpp>
    1014#include "UIElements/TextDialog.hpp"
    1115
    1216#include "World.hpp"
    1317#include "periodentafel.hpp"
    14 #include "atom.hpp"
    15 #include "molecule.hpp"
    1618#include "log.hpp"
    1719#include "verbose.hpp"
    1820
     21#include "atom.hpp"
     22#include "element.hpp"
     23#include "molecule.hpp"
     24#include "vector.hpp"
     25
    1926using namespace std;
    2027
     
    3340}
    3441
     42void TextDialog::queryBoolean(const char* title, bool* target, string description){
     43  registerQuery(new BooleanTextQuery(title,target,description));
     44}
     45
    3546void TextDialog::queryInt(const char* title, int* target, string description){
    3647  registerQuery(new IntTextQuery(title,target,description));
     
    4556}
    4657
    47 void TextDialog::queryMolecule(const char* title, molecule **target, MoleculeListClass *molecules, string description) {
    48   registerQuery(new MoleculeTextQuery(title,target,molecules,description));
     58void TextDialog::queryAtom(const char* title, atom **target, string description) {
     59  registerQuery(new AtomTextQuery(title,target,description));
     60}
     61
     62void TextDialog::queryMolecule(const char* title, molecule **target, string description) {
     63  registerQuery(new MoleculeTextQuery(title,target,description));
    4964}
    5065
    5166void TextDialog::queryVector(const char* title, Vector *target,const double *const cellSize, bool check, string description) {
    5267  registerQuery(new VectorTextQuery(title,target,cellSize,check,description));
     68}
     69
     70void TextDialog::queryBox(const char* title,double ** const cellSize, string description) {
     71  registerQuery(new BoxTextQuery(title,cellSize,description));
    5372}
    5473
     
    94113}
    95114
     115TextDialog::BooleanTextQuery::BooleanTextQuery(string title, bool * _target, std::string _description) :
     116    Dialog::BooleanQuery(title,_target,_description)
     117{}
     118
     119TextDialog::BooleanTextQuery::~BooleanTextQuery() {}
     120
     121bool 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
    96144TextDialog::StringTextQuery::StringTextQuery(string title,string *_target, std::string _description) :
    97145    Dialog::StringQuery(title,_target,_description)
     
    129177}
    130178
    131 TextDialog::MoleculeTextQuery::MoleculeTextQuery(string title, molecule **_target, MoleculeListClass *_molecules, std::string _description) :
    132     Dialog::MoleculeQuery(title,_target,_molecules,_description)
     179TextDialog::AtomTextQuery::AtomTextQuery(string title, atom **_target, std::string _description) :
     180    Dialog::AtomQuery(title,_target,_description)
     181{}
     182
     183TextDialog::AtomTextQuery::~AtomTextQuery() {}
     184
     185bool 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
     211TextDialog::MoleculeTextQuery::MoleculeTextQuery(string title, molecule **_target, std::string _description) :
     212    Dialog::MoleculeQuery(title,_target,_description)
    133213{}
    134214
     
    150230    }
    151231
    152     tmp = molecules->ReturnIndex(idxOfMol);
     232    tmp = World::getInstance().getMolecule(MoleculeById(idxOfMol));
    153233    if(!tmp && idxOfMol!=-1){
    154234      Log() << Verbose(0) << "Invalid Molecule Index" << endl;
     
    183263}
    184264
     265TextDialog::BoxTextQuery::BoxTextQuery(std::string title, double ** const _cellSize, std::string _description) :
     266    Dialog::BoxQuery(title,_cellSize,_description)
     267{}
     268
     269TextDialog::BoxTextQuery::~BoxTextQuery()
     270{}
     271
     272bool 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}
    185282
    186283TextDialog::ElementTextQuery::ElementTextQuery(std::string title, const element **target, std::string _description) :
Note: See TracChangeset for help on using the changeset viewer.