Changeset cd8e55


Ignore:
Timestamp:
Jul 2, 2010, 1:05:08 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:
4a611e
Parents:
edb454
Message:

New StringsQuery that returns space-separated vector of strings.

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

Location:
src
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • src/Actions/MapOfActions.cpp

    redb454 rcd8e55  
    198198  ShortFormMap["linear-interpolate"] = "L";
    199199  ShortFormMap["nonconvex-envelope"] = "N";
     200//  ShortFormMap["output"] = "o";
    200201  ShortFormMap["pair-correlation"] = "C";
    201202  ShortFormMap["parse-xyz"] = "p";
     
    236237  TypeMap["molecular-volume"] = Molecule;
    237238  TypeMap["nonconvex-envelope"] = Molecule;
    238   TypeMap["output"] = String;
     239  TypeMap["output"] = ListOfString;
    239240  TypeMap["parse-xyz"] = String;
    240241  TypeMap["pair-correlation"] = String;
     
    559560              ;
    560561            break;
     562          case ListOfString:
     563            ListRunner->second->add_options()
     564              (getKeyAndShortForm(*OptionRunner).c_str(),
     565                  po::value< vector<std::string> >()->multitoken(),
     566                  getDescription(*OptionRunner).c_str())
     567              ;
     568            break;
    561569          case Axis:
    562570            ListRunner->second->add_options()
  • src/Actions/MapOfActions.hpp

    redb454 rcd8e55  
    123123  friend class MapOfActionsTest;
    124124public:
    125   enum OptionTypes { None, Boolean, Integer, ListOfInts, Double, ListOfDoubles, String, Axis, Vector, Box, Molecule, ListOfMolecules, Atom, ListOfAtoms, Element, ListOfElements };
     125  enum OptionTypes { None, Boolean, Integer, ListOfInts, Double, ListOfDoubles, String, ListOfString, Axis, Vector, Box, Molecule, ListOfMolecules, Atom, ListOfAtoms, Element, ListOfElements };
    126126
    127127  // getter for the action descriptions and short forms
  • src/UIElements/CommandLineUI/CommandLineDialog.cpp

    redb454 rcd8e55  
    6565}
    6666
     67void CommandLineDialog::queryStrings(const char* title, vector<string> * target, string _description){
     68  registerQuery(new StringsCommandLineQuery(title,target, _description));
     69}
     70
    6771void CommandLineDialog::queryAtom(const char* title, atom **target, string _description) {
    6872  registerQuery(new AtomCommandLineQuery(title,target, _description));
     
    139143  if (CommandLineParser::getInstance().vm.count(getTitle())) {
    140144    tmp = CommandLineParser::getInstance().vm[getTitle()].as<string>();
     145    return true;
     146  } else {
     147    DoeLog(1) && (eLog() << Verbose(1) << "CommandLineUI parsing error: Missing string for " << getTitle() << "." << endl);
     148    return false;
     149  }
     150}
     151
     152CommandLineDialog::StringsCommandLineQuery::StringsCommandLineQuery(string title,vector<string> *_target, string _description) :
     153    Dialog::StringsQuery(title,_target, _description)
     154{}
     155
     156CommandLineDialog::StringsCommandLineQuery::~StringsCommandLineQuery() {}
     157
     158bool CommandLineDialog::StringsCommandLineQuery::handle() {
     159  if (CommandLineParser::getInstance().vm.count(getTitle())) {
     160    temp = CommandLineParser::getInstance().vm[getTitle()].as<string>();
     161    // dissect by ","
     162    string::iterator olditer = temp.begin();
     163    for(string::iterator iter = temp.begin(); iter != temp.end(); ++iter) {
     164      if (*iter == ' ') {
     165        tmp.push_back(string(iter, olditer));
     166        olditer = iter;
     167      }
     168    }
     169    if (olditer != temp.begin())  // insert last part also
     170      tmp.push_back(string(olditer, temp.end()));
    141171    return true;
    142172  } else {
  • src/UIElements/CommandLineUI/CommandLineDialog.hpp

    redb454 rcd8e55  
    3131  virtual void queryBoolean(const char *, bool *, std::string = "");
    3232  virtual void queryString(const char*, std::string *, std::string = "");
     33  virtual void queryStrings(const char*, std::vector<std::string> *, std::string = "");
    3334  virtual void queryDouble(const char*, double*, std::string = "");
    3435  virtual void queryAtom(const char*,atom**, std::string = "");
     
    7576  };
    7677
     78  class StringsCommandLineQuery : public Dialog::StringsQuery {
     79  public:
     80    StringsCommandLineQuery(std::string title, std::vector<std::string> *_target, std::string _description = "");
     81    virtual ~StringsCommandLineQuery();
     82    virtual bool handle();
     83  };
     84
    7785  class AtomCommandLineQuery : public Dialog::AtomQuery {
    7886  public:
  • src/UIElements/Dialog.cpp

    redb454 rcd8e55  
    128128}
    129129
     130// Strings Queries
     131
     132Dialog::StringsQuery::StringsQuery(string title,vector<string> *_target, std::string _description) :
     133    Query(title, _description), target(_target)
     134{}
     135
     136Dialog::StringsQuery::~StringsQuery() {};
     137
     138void Dialog::StringsQuery::setResult() {
     139  *target = tmp;
     140}
     141
    130142// Double Queries
    131143
  • src/UIElements/Dialog.hpp

    redb454 rcd8e55  
    4040  virtual void queryDouble(const char*,double *, std::string = "")=0;
    4141  virtual void queryString(const char*, std::string *, std::string = "")=0;
     42  virtual void queryStrings(const char*, std::vector<std::string> *, std::string = "")=0;
    4243  virtual void queryAtom(const char*,atom**,std::string = "")=0;
    4344  virtual void queryMolecule(const char*,molecule**, std::string = "")=0;
     
    134135  private:
    135136    std::string *target;
     137  };
     138
     139  class StringsQuery : public Query {
     140  public:
     141    StringsQuery(std::string title,std::vector<std::string> *_target, std::string _description = "");
     142    virtual ~StringsQuery();
     143    virtual bool handle()=0;
     144    virtual void setResult();
     145  protected:
     146    std::string temp;
     147    std::vector<std::string> tmp;
     148  private:
     149    std::vector<std::string> *target;
    136150  };
    137151
  • src/UIElements/QT4/QTDialog.cpp

    redb454 rcd8e55  
    113113}
    114114
     115void QTDialog::queryStrings(const char* title, std::vector<std::string> *target,string)
     116{
     117  registerQuery(new StringsQTQuery(title,target,inputLayout,this));
     118}
     119
    115120void QTDialog::queryMolecule(const char *title,molecule **target,string)
    116121{
     
    210215{
    211216  return tmp!="";
     217}
     218
     219QTDialog::StringsQTQuery::StringsQTQuery(string _title,vector<string> *_target,QBoxLayout *_parent,QTDialog *_dialog) :
     220    Dialog::StringsQuery(_title,_target),
     221    parent(_parent)
     222{
     223  thisLayout = new QHBoxLayout();
     224  titleLabel = new QLabel(QString(getTitle().c_str()));
     225  inputBox = new QLineEdit();
     226  parent->addLayout(thisLayout);
     227  thisLayout->addWidget(titleLabel);
     228  thisLayout->addWidget(inputBox);
     229
     230  pipe = new StringQTQueryPipe(&temp,_dialog);
     231  pipe->update(inputBox->text());
     232  connect(inputBox,SIGNAL(textChanged(const QString&)),pipe,SLOT(update(const QString&)));
     233}
     234
     235QTDialog::StringsQTQuery::~StringsQTQuery()
     236{
     237  delete pipe;
     238}
     239
     240// All values besides the empty string are valid
     241bool QTDialog::StringsQTQuery::handle()
     242{
     243  // dissect by ","
     244  string::iterator olditer = temp.begin();
     245  for(string::iterator iter = temp.begin(); iter != temp.end(); ++iter) {
     246    if (*iter == ' ') {
     247      tmp.push_back(string(iter, olditer));
     248      olditer = iter;
     249    }
     250  }
     251  if (olditer != temp.begin())  // insert last part also
     252    tmp.push_back(string(olditer, temp.end()));
     253
     254  return temp!="";
    212255}
    213256
  • src/UIElements/QT4/QTDialog.hpp

    redb454 rcd8e55  
    4040  virtual void queryDouble(const char*,double *,std::string = "");
    4141  virtual void queryString(const char*, std::string *,std::string = "");
     42  virtual void queryStrings(const char*, std::vector<std::string> *,std::string = "");
    4243  virtual void queryAtom(const char*,atom**,std::string = "");
    4344  virtual void queryMolecule(const char*,molecule**,std::string = "");
     
    9394    };
    9495
     96    class StringsQTQuery : public Dialog::StringsQuery {
     97    public:
     98      StringsQTQuery(std::string _title, std::vector<std::string> *_target, QBoxLayout *_parent,QTDialog *_dialog);
     99      virtual ~StringsQTQuery();
     100      virtual bool handle();
     101    private:
     102      QBoxLayout *parent;
     103      QBoxLayout *thisLayout;
     104      QLabel *titleLabel;
     105      QLineEdit *inputBox;
     106
     107      StringQTQueryPipe *pipe;
     108    };
     109
    95110    class MoleculeQTQuery : public Dialog::MoleculeQuery {
    96111    public:
  • src/UIElements/TextUI/TextDialog.cpp

    redb454 rcd8e55  
    5656void TextDialog::queryString(const char* title, string* target, string description){
    5757  registerQuery(new StringTextQuery(title,target,description));
     58}
     59
     60void TextDialog::queryStrings(const char* title, vector<string>* target, string description){
     61  registerQuery(new StringsTextQuery(title,target,description));
    5862}
    5963
     
    153157  Log() << Verbose(0) << getTitle();
    154158  getline(cin,tmp);
     159  return true;
     160}
     161
     162TextDialog::StringsTextQuery::StringsTextQuery(string title,vector<string> *_target, std::string _description) :
     163    Dialog::StringsQuery(title,_target,_description)
     164{}
     165
     166TextDialog::StringsTextQuery::~StringsTextQuery() {}
     167
     168bool TextDialog::StringsTextQuery::handle() {
     169  Log() << Verbose(0) << getTitle();
     170  getline(cin,temp);
     171  // dissect by ","
     172  string::iterator olditer = temp.begin();
     173  for(string::iterator iter = temp.begin(); iter != temp.end(); ++iter) {
     174    if (*iter == ' ') {
     175      tmp.push_back(string(iter, olditer));
     176      olditer = iter;
     177    }
     178  }
     179  if (olditer != temp.begin())  // insert last part also
     180    tmp.push_back(string(olditer, temp.end()));
     181
    155182  return true;
    156183}
  • src/UIElements/TextUI/TextDialog.hpp

    redb454 rcd8e55  
    2828  virtual void queryInt(const char *, int *, std::string = "");
    2929  virtual void queryString(const char*, std::string *, std::string = "");
     30  virtual void queryStrings(const char*, std::vector<std::string> *, std::string = "");
    3031  virtual void queryDouble(const char*, double*, std::string = "");
    3132  virtual void queryAtom(const char*,atom**,std::string = "");
     
    7273  };
    7374
     75  class StringsTextQuery : public Dialog::StringsQuery {
     76  public:
     77    StringsTextQuery(std::string title, std::vector<std::string> *_target, std::string _description = NULL);
     78    virtual ~StringsTextQuery();
     79    virtual bool handle();
     80  };
     81
    7482  class AtomTextQuery : public Dialog::AtomQuery {
    7583  public:
Note: See TracChangeset for help on using the changeset viewer.