Ignore:
Timestamp:
May 15, 2010, 5:56:57 PM (15 years ago)
Author:
Frederik Heber <heber@…>
Branches:
Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
Children:
99fcaf, f941b1
Parents:
498c519
git-author:
Frederik Heber <heber@…> (05/14/10 20:14:27)
git-committer:
Frederik Heber <heber@…> (05/15/10 17:56:57)
Message:

Added all commands defined in ParseCommandLineOptions() as Actions.

  • Actions are not yet used, except verbose, version and help.
  • Files are present and included in Makefile.am
  • not unit tests written so far
  • no action has been tested so far (except for MapOfActions)
  • structure introduced to to transition from ParseCommandLineOptions to actions.
  • program name and config file are fixed arguments.

Signed-off-by: Frederik Heber <heber@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/UIElements/TextDialog.cpp

    r498c519 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.