Changeset b8d1aeb for src/UIElements


Ignore:
Timestamp:
Feb 2, 2010, 11:38:06 AM (16 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, Candidate_v1.7.0, 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:
7ba324
Parents:
9fe36b (diff), 2ededc2 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'MenuRefactoring' into QT4Refactoring

Conflicts:

molecuilder/src/Makefile.am
molecuilder/src/builder.cpp
molecuilder/src/unittests/Makefile.am

Location:
src/UIElements
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • src/UIElements/Dialog.cpp

    r9fe36b rb8d1aeb  
    99
    1010#include "UIElements/Dialog.hpp"
     11
     12#include "vector.hpp"
    1113
    1214using namespace std;
     
    9698}
    9799
     100// Double Queries
     101
     102Dialog::DoubleQuery::DoubleQuery(string title,double *_target) :
     103    Query(title), target(_target)
     104{}
     105
     106Dialog::DoubleQuery::~DoubleQuery() {};
     107
     108void Dialog::DoubleQuery::setResult() {
     109  *target = tmp;
     110}
     111
     112
    98113// Molecule Queries
    99114
     
    110125  *target = tmp;
    111126}
     127
     128// Vector Queries
     129
     130Dialog::VectorQuery::VectorQuery(std::string title,Vector *_target,const double *const _cellSize,bool _check) :
     131  Query(title), target(_target), cellSize(_cellSize), check(_check)
     132{
     133tmp = new Vector();
     134}
     135
     136Dialog::VectorQuery::~VectorQuery()
     137{
     138  delete tmp;
     139}
     140
     141void Dialog::VectorQuery::setResult() {
     142  *target = *tmp;
     143}
  • src/UIElements/Dialog.hpp

    r9fe36b rb8d1aeb  
    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();
     
    6770  };
    6871
     72  class DoubleQuery : public Query {
     73  public:
     74    DoubleQuery(std::string title,double *_target);
     75    ~DoubleQuery();
     76    virtual bool handle()=0;
     77    virtual void setResult();
     78  protected:
     79    double tmp;
     80  private:
     81    double *target;
     82  };
     83
    6984  class StringQuery : public Query {
    7085  public:
     
    7893    std::string *target;
    7994  };
     95
    8096
    8197  class MoleculeQuery : public Query {
     
    92108  };
    93109
     110  class VectorQuery : public Query {
     111  public:
     112      VectorQuery(std::string title,Vector *_target,const double *const _cellSize,bool _check);
     113      ~VectorQuery();
     114      virtual bool handle()=0;
     115      virtual void setResult();
     116    protected:
     117      Vector *tmp;
     118      const double *const cellSize;
     119      bool check;
     120    private:
     121      Vector *target;
     122  };
     123
    94124void registerQuery(Query* query);
    95125
  • src/UIElements/QT4/QTDialog.cpp

    r9fe36b rb8d1aeb  
    1010#include <string>
    1111#include <sstream>
     12#include <limits>
    1213
    1314#include <Qt/qboxlayout.h>
    1415#include <Qt/qlabel.h>
    1516#include <Qt/qspinbox.h>
     17#include <QtGui/QDoubleSpinBox>
    1618#include <Qt/qlineedit.h>
    1719#include <Qt/qdialogbuttonbox.h>
     
    7577}
    7678
     79void QTDialog::queryDouble(const char* title, double* target){
     80  registerQuery(new DoubleQTQuery(title,target,inputLayout,this));
     81}
     82
    7783void QTDialog::queryString(const char* title, std::string *target)
    7884{
     
    8490  registerQuery(new MoleculeQTQuery(title,target,molecules,inputLayout,this));
    8591}
     92
     93void QTDialog::queryVector(const char* title, Vector *target,const double *const cellSize, bool check) {
     94  registerQuery(new VectorQTQuery(title,target,cellSize,check,inputLayout,this));
     95}
     96
     97/************************** Query Objects *******************************/
    8698
    8799QTDialog::IntQTQuery::IntQTQuery(string _title,int *_target,QBoxLayout *_parent,QTDialog *_dialog) :
     
    110122bool QTDialog::IntQTQuery::handle()
    111123{
     124  return true;
     125}
     126
     127QTDialog::DoubleQTQuery::DoubleQTQuery(string title,double *_target,QBoxLayout *_parent,QTDialog *_dialog) :
     128    Dialog::DoubleQuery(title,_target),
     129    parent(_parent)
     130{
     131  thisLayout = new QHBoxLayout();
     132  titleLabel = new QLabel(QString(getTitle().c_str()));
     133  inputBox = new QDoubleSpinBox();
     134  inputBox->setValue(0);
     135  inputBox->setRange(-numeric_limits<double>::max(),numeric_limits<double>::max());
     136  inputBox->setDecimals(3);
     137  parent->addLayout(thisLayout);
     138  thisLayout->addWidget(titleLabel);
     139  thisLayout->addWidget(inputBox);
     140
     141  pipe = new DoubleQTQueryPipe(&tmp,_dialog);
     142  pipe->update(inputBox->value());
     143  connect(inputBox,SIGNAL(valueChanged(double)),pipe,SLOT(update(double)));
     144}
     145
     146QTDialog::DoubleQTQuery::~DoubleQTQuery()
     147{
     148  delete pipe;
     149}
     150
     151bool QTDialog::DoubleQTQuery::handle() {
    112152  return true;
    113153}
     
    177217}
    178218
     219QTDialog::VectorQTQuery::VectorQTQuery(std::string title, Vector *_target, const double *const _cellSize, bool _check,QBoxLayout *_parent,QTDialog *_dialog) :
     220    Dialog::VectorQuery(title,_target,_cellSize,_check),
     221    parent(_parent)
     222{
     223  // About the j: I don't know why it was done this way, but it was used this way in Vector::AskPosition, so I reused it
     224  int j = -1;
     225  const char *coords[3] = {"x:","y:","z:"};
     226  mainLayout= new QHBoxLayout();
     227  titleLabel = new QLabel(QString(getTitle().c_str()));
     228  mainLayout->addWidget(titleLabel);
     229  subLayout = new QVBoxLayout();
     230  mainLayout->addLayout(subLayout);
     231  for(int i=0; i<3; i++) {
     232    j+=i+1;
     233    coordLayout[i] = new QHBoxLayout();
     234    subLayout->addLayout(coordLayout[i]);
     235    coordLabel[i] = new QLabel(QString(coords[i]));
     236    coordLayout[i]->addWidget(coordLabel[i]);
     237    coordInput[i] = new QDoubleSpinBox();
     238    coordInput[i]->setRange(0,cellSize[j]);
     239    coordInput[i]->setDecimals(3);
     240    coordLayout[i]->addWidget(coordInput[i]);
     241    pipe[i] = new DoubleQTQueryPipe(&((*tmp)[i]),_dialog);
     242    pipe[i]->update(coordInput[i]->value());
     243    connect(coordInput[i],SIGNAL(valueChanged(double)),pipe[i],SLOT(update(double)));
     244
     245  }
     246  parent->addLayout(mainLayout);
     247}
     248
     249QTDialog::VectorQTQuery::~VectorQTQuery()
     250{}
     251
     252bool QTDialog::VectorQTQuery::handle() {
     253  return true;
     254}
     255
    179256
    180257/*************************** Plumbing *******************************/
     
    203280void IntQTQueryPipe::update(int newInt) {
    204281  (*content) = newInt;
     282  dialog->update();
     283}
     284
     285DoubleQTQueryPipe::DoubleQTQueryPipe(double *_content, QTDialog *_dialog) :
     286  content(_content),
     287  dialog(_dialog)
     288{}
     289
     290DoubleQTQueryPipe::~DoubleQTQueryPipe()
     291{}
     292
     293void DoubleQTQueryPipe::update(double newDbl) {
     294  (*content) = newDbl;
    205295  dialog->update();
    206296}
  • src/UIElements/QT4/QTDialog.hpp

    r9fe36b rb8d1aeb  
    1515class QLabel;
    1616class QSpinBox;
     17class QDoubleSpinBox;
    1718class QLineEdit;
    1819class QComboBox;
     
    2324class StringQTQueryPipe;
    2425class IntQTQueryPipe;
     26class DoubleQTQueryPipe;
    2527class MoleculeQTQueryPipe;
    2628
     
    3436  virtual void queryInt(const char *, int *);
    3537  virtual void queryString(const char*, std::string *);
     38  virtual void queryDouble(const char*,double *);
    3639  virtual void queryMolecule(const char*,molecule**,MoleculeListClass*);
     40  virtual void queryVector(const char*,Vector *,const double *const,bool);
    3741
    3842  virtual bool display();
     
    5357
    5458      IntQTQueryPipe *pipe;
     59    };
     60
     61    class DoubleQTQuery : public Dialog::DoubleQuery {
     62    public:
     63      DoubleQTQuery(std::string title, double *_target,QBoxLayout *_parent,QTDialog *_dialog);
     64      ~DoubleQTQuery();
     65      virtual bool handle();
     66    private:
     67      QBoxLayout *parent;
     68      QBoxLayout *thisLayout;
     69      QLabel *titleLabel;
     70      QDoubleSpinBox *inputBox;
     71
     72      DoubleQTQueryPipe *pipe;
    5573    };
    5674
     
    8199
    82100      MoleculeQTQueryPipe *pipe;
     101    };
     102
     103    class VectorQTQuery : public Dialog::VectorQuery {
     104    public:
     105      VectorQTQuery(std::string title,Vector *_target,const double *const _cellSize,bool _check,QBoxLayout *,QTDialog *);
     106      ~VectorQTQuery();
     107      virtual bool handle();
     108    private:
     109      QBoxLayout *parent;
     110      QBoxLayout *mainLayout;
     111      QLabel *titleLabel;
     112      QBoxLayout *subLayout;
     113      QBoxLayout *coordLayout[3];
     114      QLabel *coordLabel[3];
     115      QDoubleSpinBox *coordInput[3];
     116
     117      DoubleQTQueryPipe *pipe[3];
    83118    };
    84119
     
    124159};
    125160
     161class DoubleQTQueryPipe : public QWidget {
     162  Q_OBJECT
     163public:
     164  DoubleQTQueryPipe(double *_content, QTDialog *_dialog);
     165  ~DoubleQTQueryPipe();
     166
     167public slots:
     168  void update(double);
     169
     170private:
     171  double *content;
     172  QTDialog *dialog;
     173
     174};
    126175
    127176class MoleculeQTQueryPipe : public QWidget {
  • src/UIElements/TextDialog.cpp

    r9fe36b rb8d1aeb  
    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 return true;
     117}
  • src/UIElements/TextDialog.hpp

    r9fe36b rb8d1aeb  
    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
Note: See TracChangeset for help on using the changeset viewer.