Changeset b8d1aeb for src/UIElements/QT4


Ignore:
Timestamp:
Feb 2, 2010, 11:38:06 AM (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:
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/QT4
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • 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 {
Note: See TracChangeset for help on using the changeset viewer.