Changeset 2ededc2


Ignore:
Timestamp:
Jan 28, 2010, 1:54:35 PM (15 years ago)
Author:
Tillmann Crueger <crueger@…>
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:
63c1f6, b8d1aeb
Parents:
04b6f9
git-author:
Tillmann Crueger <crueger@…> (01/28/10 13:02:49)
git-committer:
Tillmann Crueger <crueger@…> (01/28/10 13:54:35)
Message:

Added possibility to query doubles and vectors using dialogs.

Location:
src
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • src/UIElements/Dialog.cpp

    r04b6f9 r2ededc2  
    99
    1010#include "UIElements/Dialog.hpp"
     11
     12#include "vector.hpp"
    1113
    1214using namespace std;
     
    8385}
    8486
     87// Double Queries
     88
     89Dialog::DoubleQuery::DoubleQuery(string title,double *_target) :
     90    Query(title), target(_target)
     91{}
     92
     93Dialog::DoubleQuery::~DoubleQuery() {};
     94
     95void Dialog::DoubleQuery::setResult() {
     96  *target = tmp;
     97}
     98
     99
    85100// Molecule Queries
    86101
     
    97112  *target = tmp;
    98113}
     114
     115// Vector Queries
     116
     117Dialog::VectorQuery::VectorQuery(std::string title,Vector *_target,const double *const _cellSize,bool _check) :
     118  Query(title), target(_target), cellSize(_cellSize), check(_check)
     119{
     120tmp = new Vector();
     121}
     122
     123Dialog::VectorQuery::~VectorQuery()
     124{
     125  delete tmp;
     126}
     127
     128void Dialog::VectorQuery::setResult() {
     129  *target = *tmp;
     130}
  • src/UIElements/Dialog.hpp

    r04b6f9 r2ededc2  
    1414class MoleculeListClass;
    1515class molecule;
     16class Vector;
    1617
    1718class Dialog
     
    2223
    2324  virtual void queryInt(const char *, int *)=0;
     25  virtual void queryDouble(const char*,double *)=0;
    2426  virtual void queryString(const char*, std::string *)=0;
    2527  virtual void queryMolecule(const char*,molecule**,MoleculeListClass*)=0;
     28  virtual void queryVector(const char*,Vector *,const double *const,bool)=0;
    2629
    2730  virtual bool display();
     
    6467  };
    6568
     69  class DoubleQuery : public Query {
     70  public:
     71    DoubleQuery(std::string title,double *_target);
     72    ~DoubleQuery();
     73    virtual bool handle()=0;
     74    virtual void setResult();
     75  protected:
     76    double tmp;
     77  private:
     78    double *target;
     79  };
     80
    6681  class StringQuery : public Query {
    6782  public:
     
    7590    std::string *target;
    7691  };
     92
    7793
    7894  class MoleculeQuery : public Query {
     
    89105  };
    90106
     107  class VectorQuery : public Query {
     108  public:
     109      VectorQuery(std::string title,Vector *_target,const double *const _cellSize,bool _check);
     110      ~VectorQuery();
     111      virtual bool handle()=0;
     112      virtual void setResult();
     113    protected:
     114      Vector *tmp;
     115      const double *const cellSize;
     116      bool check;
     117    private:
     118      Vector *target;
     119  };
     120
    91121void registerQuery(Query* query);
    92122
  • src/UIElements/TextDialog.cpp

    r04b6f9 r2ededc2  
    3131}
    3232
     33void TextDialog::queryDouble(const char* title, double* target){
     34  registerQuery(new DoubleTextQuery(title,target));
     35}
     36
    3337void TextDialog::queryString(const char* title, string* target){
    3438  registerQuery(new StringTextQuery(title,target));
     
    3741void TextDialog::queryMolecule(const char* title, molecule **target, MoleculeListClass *molecules) {
    3842  registerQuery(new MoleculeTextQuery(title,target,molecules));
     43}
     44
     45void TextDialog::queryVector(const char* title, Vector *target,const double *const cellSize, bool check) {
     46  registerQuery(new VectorTextQuery(title,target,cellSize,check));
    3947}
    4048
     
    6573}
    6674
     75TextDialog::DoubleTextQuery::DoubleTextQuery(string title,double *_target) :
     76    Dialog::DoubleQuery(title,_target)
     77{}
     78
     79TextDialog::DoubleTextQuery::~DoubleTextQuery() {}
     80
     81bool TextDialog::DoubleTextQuery::handle() {
     82  Log() << Verbose(0) << getTitle();
     83  cin >> tmp;
     84  return true;
     85}
     86
    6787TextDialog::MoleculeTextQuery::MoleculeTextQuery(string title, molecule **_target, MoleculeListClass *_molecules) :
    6888    Dialog::MoleculeQuery(title,_target,_molecules)
     
    84104  return (idxOfMol!=-1);
    85105}
     106
     107TextDialog::VectorTextQuery::VectorTextQuery(std::string title, Vector *_target, const double *const _cellSize, bool _check) :
     108    Dialog::VectorQuery(title,_target,_cellSize,_check)
     109{}
     110
     111TextDialog::VectorTextQuery::~VectorTextQuery()
     112{}
     113
     114bool TextDialog::VectorTextQuery::handle() {
     115 tmp->AskPosition(cellSize,check);
     116}
  • src/UIElements/TextDialog.hpp

    r04b6f9 r2ededc2  
    2121  virtual void queryInt(const char *, int *);
    2222  virtual void queryString(const char*, std::string *);
     23  virtual void queryDouble(const char*, double*);
    2324  virtual void queryMolecule(const char*,molecule**,MoleculeListClass*);
     25  virtual void queryVector(const char*,Vector *,const double * const,bool);
    2426
    2527protected:
     
    2931    IntTextQuery(std::string title, int *_target);
    3032    ~IntTextQuery();
     33    virtual bool handle();
     34  };
     35
     36  class DoubleTextQuery : public Dialog::DoubleQuery {
     37  public:
     38    DoubleTextQuery(std::string title, double *_target);
     39    ~DoubleTextQuery();
    3140    virtual bool handle();
    3241  };
     
    4554    virtual bool handle();
    4655  };
     56
     57  class VectorTextQuery : public Dialog::VectorQuery {
     58  public:
     59    VectorTextQuery(std::string title,Vector *_target,const double *const _cellSize,bool _check);
     60    ~VectorTextQuery();
     61    virtual bool handle();
     62  };
    4763};
    4864
  • src/vector.cpp

    r04b6f9 r2ededc2  
    663663};
    664664
     665Vector& Vector::operator=(const Vector& src) {
     666  CopyVector(src);
     667  return *this;
     668}
     669
    665670/** Prints a 3dim vector.
    666671 * prints no end of line.
     
    10761081void Vector::CopyVector(const Vector * const y)
    10771082{
    1078   for (int i=NDIM;i--;)
    1079     this->x[i] = y->x[i];
     1083  // check for self assignment
     1084  if(y!=this){
     1085    for (int i=NDIM;i--;)
     1086      this->x[i] = y->x[i];
     1087  }
    10801088}
    10811089
     
    10851093void Vector::CopyVector(const Vector &y)
    10861094{
    1087   for (int i=NDIM;i--;)
    1088     this->x[i] = y.x[i];
     1095  // check for self assignment
     1096  if(&y!=this) {
     1097    for (int i=NDIM;i--;)
     1098      this->x[i] = y.x[i];
     1099  }
    10891100}
    10901101
  • src/vector.hpp

    r04b6f9 r2ededc2  
    7979  bool IsInParallelepiped(const Vector &offset, const double * const parallelepiped) const;
    8080  void WrapPeriodically(const double * const M, const double * const Minv);
     81
     82  Vector& operator=(const Vector &src);
     83
    8184};
    8285
Note: See TracChangeset for help on using the changeset viewer.