Ignore:
Timestamp:
Jul 25, 2010, 3:07:42 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, Candidate_v1.7.0, Candidate_v1.7.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:
e2f3114
Parents:
0ff6b5
Message:

Add all possible versions of queries where the user is asked for multiples of the same.

  • Note that these are correctly implemented in TextUI and CommandLineUI, but not yet in QT4.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/UIElements/QT4/QTDialog.cpp

    r0ff6b5 r7cd6e7  
    1717#include <QtGui/QDoubleSpinBox>
    1818#include <Qt/qlineedit.h>
     19#include <Qt/qlistwidget.h>
    1920#include <Qt/qdialogbuttonbox.h>
    2021#include <Qt/qpushbutton.h>
     
    2829#include "element.hpp"
    2930#include "molecule.hpp"
     31#include "Descriptors/AtomIdDescriptor.hpp"
    3032#include "Descriptors/MoleculeIdDescriptor.hpp"
    3133#include "Matrix.hpp"
     
    9597}
    9698
     99void QTDialog::queryAtoms(char const*, string){
     100  // TODO
     101  ASSERT(false, "Not implemented yet");
     102}
     103
    97104void QTDialog::queryBox(char const*, string){
    98105  // TODO
     
    106113}
    107114
     115void QTDialog::queryInts(const char *title,string)
     116{
     117  registerQuery(new IntsQTQuery(title,inputLayout,this));
     118}
     119
    108120void QTDialog::queryDouble(const char* title,string){
    109121  registerQuery(new DoubleQTQuery(title,inputLayout,this));
    110122}
    111123
     124void QTDialog::queryDoubles(const char* title,string){
     125  registerQuery(new DoublesQTQuery(title,inputLayout,this));
     126}
     127
    112128void QTDialog::queryString(const char* title,string)
    113129{
     
    123139{
    124140  registerQuery(new MoleculeQTQuery(title,inputLayout,this));
     141}
     142
     143void QTDialog::queryMolecules(const char *title,string)
     144{
     145  // TODO
     146  ASSERT(false, "Not implemented yet");
    125147}
    126148
     
    129151}
    130152
     153void QTDialog::queryVectors(const char* title, bool check,string) {
     154  // TODO
     155  ASSERT(false, "Not implemented yet");
     156}
     157
    131158void QTDialog::queryElement(const char* title, string){
    132159  registerQuery(new ElementQTQuery(title,inputLayout,this));
     160}
     161
     162void QTDialog::queryElements(const char* title, string){
     163  // TODO
     164  ASSERT(false, "Not implemented yet");
    133165}
    134166
     
    157189}
    158190
    159 // Handling is easy since the GUI makes it impossible to enter invalid values
    160 bool QTDialog::IntQTQuery::handle()
    161 {
    162   return true;
    163 }
     191bool QTDialog::IntQTQuery::handle() {
     192  return true;
     193}
     194
     195
     196QTDialog::IntsQTQuery::IntsQTQuery(string _title,QBoxLayout *_parent,QTDialog *_dialog) :
     197    Dialog::IntsQuery(_title),
     198    parent(_parent)
     199{
     200  QHBoxLayout * thisHLayout = new QHBoxLayout();
     201  QVBoxLayout * thisV1Layout = new QVBoxLayout();
     202  QVBoxLayout * thisV2Layout = new QVBoxLayout();
     203
     204  QLabel *titleLabel = new QLabel(QString(getTitle().c_str()));
     205  QLabel *inputLabel = new QLabel("Enter to add");
     206  QListWidget* inputList = new QListWidget();
     207  inputList->setSelectionMode(QAbstractItemView::ExtendedSelection);
     208  QLineEdit* inputBox = new QLineEdit();
     209  inputLabel->setBuddy(inputBox);
     210  titleLabel->setBuddy(inputList);
     211  QPushButton* AddButton = new QPushButton("Add");
     212  AddButton->setEnabled(false);
     213  QPushButton* RemoveButton = new QPushButton("Remove");
     214  RemoveButton->setEnabled(false);
     215
     216  thisV1Layout->addWidget(titleLabel);
     217  thisV1Layout->addWidget(inputList);
     218  thisV2Layout->addWidget(inputLabel);
     219  thisV2Layout->addWidget(inputBox);
     220  thisV2Layout->addWidget(AddButton);
     221  thisV2Layout->addWidget(RemoveButton);
     222  parent->addLayout(thisHLayout);
     223  thisHLayout->addLayout(thisV1Layout);
     224  thisHLayout->addLayout(thisV2Layout);
     225
     226  pipe = new QTQueryListPipe<int>(&tmp,_dialog,inputBox,inputList,AddButton,RemoveButton);
     227  connect(inputBox,SIGNAL(textChanged(const QString&)),pipe,SLOT(IntegerEntered(const QString&)));
     228  connect(inputList,SIGNAL(itemSelectionChanged()),pipe,SLOT(IntegerSelected()));
     229  connect(AddButton,SIGNAL(Clicked()),pipe,SLOT(AddValue()));
     230  connect(RemoveButton,SIGNAL(Clicked()),pipe,SLOT(RemoveRow()));
     231}
     232
     233QTDialog::IntsQTQuery::~IntsQTQuery()
     234{
     235  delete pipe;
     236}
     237
     238bool QTDialog::IntsQTQuery::handle() {
     239  return true;
     240}
     241
    164242
    165243QTDialog::DoubleQTQuery::DoubleQTQuery(string title,QBoxLayout *_parent,QTDialog *_dialog) :
     
    192270
    193271
     272QTDialog::DoublesQTQuery::DoublesQTQuery(string title,QBoxLayout *_parent,QTDialog *_dialog) :
     273    Dialog::DoublesQuery(title),
     274    parent(_parent)
     275{
     276  QHBoxLayout * thisHLayout = new QHBoxLayout();
     277  QVBoxLayout * thisV1Layout = new QVBoxLayout();
     278  QVBoxLayout * thisV2Layout = new QVBoxLayout();
     279
     280  QLabel *titleLabel = new QLabel(QString(getTitle().c_str()));
     281  QLabel *inputLabel = new QLabel("Enter to add");
     282  QListWidget* inputList = new QListWidget();
     283  inputList->setSelectionMode(QAbstractItemView::ExtendedSelection);
     284  QLineEdit* inputBox = new QLineEdit();
     285  inputLabel->setBuddy(inputBox);
     286  titleLabel->setBuddy(inputList);
     287  QPushButton* AddButton = new QPushButton("Add");
     288  AddButton->setEnabled(false);
     289  QPushButton* RemoveButton = new QPushButton("Remove");
     290  RemoveButton->setEnabled(false);
     291
     292  thisV1Layout->addWidget(titleLabel);
     293  thisV1Layout->addWidget(inputList);
     294  thisV2Layout->addWidget(inputLabel);
     295  thisV2Layout->addWidget(inputBox);
     296  thisV2Layout->addWidget(AddButton);
     297  thisV2Layout->addWidget(RemoveButton);
     298  parent->addLayout(thisHLayout);
     299  thisHLayout->addLayout(thisV1Layout);
     300  thisHLayout->addLayout(thisV2Layout);
     301
     302  pipe = new QTQueryListPipe<double>(&tmp,_dialog,inputBox,inputList,AddButton,RemoveButton);
     303  connect(inputBox,SIGNAL(textChanged(const QString&)),pipe,SLOT(IntegerEntered(const QString&)));
     304  connect(inputList,SIGNAL(itemSelectionChanged()),pipe,SLOT(IntegerSelected()));
     305  connect(AddButton,SIGNAL(Clicked()),pipe,SLOT(AddValue()));
     306  connect(RemoveButton,SIGNAL(Clicked()),pipe,SLOT(RemoveRow()));}
     307
     308QTDialog::DoublesQTQuery::~DoublesQTQuery()
     309{
     310  delete pipe;
     311}
     312
     313bool QTDialog::DoublesQTQuery::handle() {
     314  return true;
     315}
     316
     317
    194318QTDialog::StringQTQuery::StringQTQuery(string _title,QBoxLayout *_parent,QTDialog *_dialog) :
    195319    Dialog::StringQuery(_title),
     
    223347    parent(_parent)
    224348{
    225   thisLayout = new QHBoxLayout();
    226   titleLabel = new QLabel(QString(getTitle().c_str()));
    227   inputBox = new QLineEdit();
    228   parent->addLayout(thisLayout);
    229   thisLayout->addWidget(titleLabel);
    230   thisLayout->addWidget(inputBox);
    231 
    232   pipe = new StringQTQueryPipe(&temp,_dialog);
    233   pipe->update(inputBox->text());
    234   connect(inputBox,SIGNAL(textChanged(const QString&)),pipe,SLOT(update(const QString&)));
    235 }
     349  QHBoxLayout * thisHLayout = new QHBoxLayout();
     350  QVBoxLayout * thisV1Layout = new QVBoxLayout();
     351  QVBoxLayout * thisV2Layout = new QVBoxLayout();
     352
     353  QLabel *titleLabel = new QLabel(QString(getTitle().c_str()));
     354  QLabel *inputLabel = new QLabel("Enter to add");
     355  QListWidget* inputList = new QListWidget();
     356  inputList->setSelectionMode(QAbstractItemView::ExtendedSelection);
     357  QLineEdit* inputBox = new QLineEdit();
     358  inputLabel->setBuddy(inputBox);
     359  titleLabel->setBuddy(inputList);
     360  QPushButton* AddButton = new QPushButton("Add");
     361  AddButton->setEnabled(false);
     362  QPushButton* RemoveButton = new QPushButton("Remove");
     363  RemoveButton->setEnabled(false);
     364
     365  thisV1Layout->addWidget(titleLabel);
     366  thisV1Layout->addWidget(inputList);
     367  thisV2Layout->addWidget(inputLabel);
     368  thisV2Layout->addWidget(inputBox);
     369  thisV2Layout->addWidget(AddButton);
     370  thisV2Layout->addWidget(RemoveButton);
     371  parent->addLayout(thisHLayout);
     372  thisHLayout->addLayout(thisV1Layout);
     373  thisHLayout->addLayout(thisV2Layout);
     374
     375  pipe = new QTQueryListPipe<std::string>(&tmp,_dialog,inputBox,inputList,AddButton,RemoveButton);
     376  connect(inputBox,SIGNAL(textChanged(const QString&)),pipe,SLOT(IntegerEntered(const QString&)));
     377  connect(inputList,SIGNAL(itemSelectionChanged()),pipe,SLOT(IntegerSelected()));
     378  connect(AddButton,SIGNAL(Clicked()),pipe,SLOT(AddValue()));
     379  connect(RemoveButton,SIGNAL(Clicked()),pipe,SLOT(RemoveRow()));}
    236380
    237381QTDialog::StringsQTQuery::~StringsQTQuery()
     
    293437}
    294438
     439QTDialog::MoleculesQTQuery::MoleculesQTQuery(string _title, QBoxLayout *_parent,QTDialog *_dialog) :
     440    Dialog::MoleculesQuery(_title),
     441    parent(_parent)
     442{
     443  thisLayout = new QHBoxLayout();
     444  titleLabel = new QLabel(QString(getTitle().c_str()));
     445  inputBox = new QComboBox();
     446  // add all molecules to the combo box
     447  vector<molecule*> molecules = World::getInstance().getAllMolecules();
     448  for(vector<molecule*>::iterator iter  = molecules.begin();
     449      iter != molecules.end();
     450      ++iter) {
     451    stringstream sstr;
     452    sstr << (*iter)->IndexNr << "\t" << (*iter)->getName();
     453    inputBox->addItem(QString(sstr.str().c_str()),QVariant((*iter)->IndexNr));
     454  }
     455  parent->addLayout(thisLayout);
     456  thisLayout->addWidget(titleLabel);
     457  thisLayout->addWidget(inputBox);
     458
     459  pipe = new MoleculesQTQueryPipe(&tmp,_dialog,inputBox);
     460  pipe->update(inputBox->currentIndex());
     461  connect(inputBox,SIGNAL(currentIndexChanged(int)),pipe,SLOT(update(int)));
     462}
     463
     464QTDialog::MoleculesQTQuery::~MoleculesQTQuery()
     465{
     466  delete pipe;
     467}
     468
     469// Handling is easy, since the GUI makes it impossible to select invalid values
     470bool QTDialog::MoleculesQTQuery::handle()
     471{
     472  return true;
     473}
     474
    295475QTDialog::VectorQTQuery::VectorQTQuery(std::string title, bool _check,QBoxLayout *_parent,QTDialog *_dialog) :
    296476    Dialog::VectorQuery(title,_check),
     
    304484  subLayout = new QVBoxLayout();
    305485  mainLayout->addLayout(subLayout);
    306   for(int i=0; i<3; i++) {
    307     coordLayout[i] = new QHBoxLayout();
    308     subLayout->addLayout(coordLayout[i]);
    309     coordLabel[i] = new QLabel(QString(coords[i]));
    310     coordLayout[i]->addWidget(coordLabel[i]);
    311     coordInput[i] = new QDoubleSpinBox();
    312     coordInput[i]->setRange(0,M.at(i,i));
    313     coordInput[i]->setDecimals(3);
    314     coordLayout[i]->addWidget(coordInput[i]);
    315     pipe[i] = new DoubleQTQueryPipe(&((*tmp)[i]),_dialog);
    316     pipe[i]->update(coordInput[i]->value());
    317     connect(coordInput[i],SIGNAL(valueChanged(double)),pipe[i],SLOT(update(double)));
    318 
    319   }
     486  QComboBox* inputBox = new QComboBox();
     487  coordLayout = new QHBoxLayout();
     488  subLayout->addLayout(coordLayout);
     489  coordLabel = new QLabel(QString("x,y,z"));
     490  coordLayout->addWidget(coordLabel);
     491  coordInput = new QDoubleSpinBox();
     492//  coordInput->setRange(0,M.at(i,i));
     493  coordInput->setDecimals(3);
     494  coordLayout->addWidget(coordInput);
     495  pipe = new VectorQTQueryPipe(&(tmp),_dialog,inputBox);
     496  //pipe->update(coordInput->value());
     497  connect(coordInput,SIGNAL(valueChanged(double)),pipe,SLOT(update(double)));
    320498  parent->addLayout(mainLayout);
    321499}
     
    325503
    326504bool QTDialog::VectorQTQuery::handle() {
     505  return true;
     506}
     507
     508
     509QTDialog::VectorsQTQuery::VectorsQTQuery(std::string title, bool _check,QBoxLayout *_parent,QTDialog *_dialog) :
     510    Dialog::VectorsQuery(title,_check),
     511    parent(_parent)
     512{
     513  const Matrix& M = World::getInstance().getDomain().getM();
     514  const char *coords[3] = {"x:","y:","z:"};
     515  mainLayout= new QHBoxLayout();
     516  titleLabel = new QLabel(QString(getTitle().c_str()));
     517  mainLayout->addWidget(titleLabel);
     518  subLayout = new QVBoxLayout();
     519  mainLayout->addLayout(subLayout);
     520  QComboBox* inputBox = new QComboBox();
     521  coordLayout = new QHBoxLayout();
     522  subLayout->addLayout(coordLayout);
     523  coordLabel = new QLabel(QString("x,y,z"));
     524  coordLayout->addWidget(coordLabel);
     525  coordInput = new QDoubleSpinBox();
     526//  coordInput->setRange(0,M.at(i,i));
     527  coordInput->setDecimals(3);
     528  coordLayout->addWidget(coordInput);
     529  pipe = new VectorsQTQueryPipe(&(tmp),_dialog,inputBox);
     530  //pipe->update(coordInput->value());
     531  connect(coordInput,SIGNAL(valueChanged(double)),pipe,SLOT(update(double)));
     532  parent->addLayout(mainLayout);
     533}
     534
     535QTDialog::VectorsQTQuery::~VectorsQTQuery()
     536{}
     537
     538bool QTDialog::VectorsQTQuery::handle() {
    327539  return true;
    328540}
     
    363575}
    364576
     577
     578QTDialog::ElementsQTQuery::ElementsQTQuery(std::string _title, QBoxLayout *_parent, QTDialog *_dialog) :
     579    Dialog::ElementsQuery(_title),
     580    parent(_parent)
     581{
     582  periodentafel *periode = World::getInstance().getPeriode();
     583  thisLayout = new QHBoxLayout();
     584  titleLabel = new QLabel(QString(getTitle().c_str()));
     585  inputBox = new QComboBox();
     586  for(periodentafel::const_iterator iter = periode->begin();
     587      iter!=periode->end();
     588      ++iter)
     589  {
     590    stringstream sstr;
     591    sstr << (*iter).first << "\t" << (*iter).second->name;
     592    inputBox->addItem(QString(sstr.str().c_str()),QVariant((*iter).first));
     593  }
     594  parent->addLayout(thisLayout);
     595  thisLayout->addWidget(titleLabel);
     596  thisLayout->addWidget(inputBox);
     597
     598  pipe = new ElementsQTQueryPipe(&tmp,_dialog,inputBox);
     599  pipe->update(inputBox->currentIndex());
     600  connect(inputBox,SIGNAL(currentIndexChanged(int)),pipe,SLOT(update(int)));
     601}
     602
     603QTDialog::ElementsQTQuery::~ElementsQTQuery()
     604{
     605  delete pipe;
     606}
     607
     608bool QTDialog::ElementsQTQuery::handle(){
     609  return true;
     610}
     611
    365612/*************************** Plumbing *******************************/
     613
     614
     615template<typename T> QTQueryListPipe<T>::QTQueryListPipe(std::vector<T> *_content, QTDialog *_dialog, QLineEdit *_inputBox, QListWidget *_inputList, QPushButton *_AddButton, QPushButton *_RemoveButton) :
     616  content(_content),
     617  dialog(_dialog),
     618  inputBox(_inputBox),
     619  inputList(_inputList),
     620  AddButton(_AddButton),
     621  RemoveButton(_RemoveButton)
     622{}
     623
     624template<typename T> QTQueryListPipe<T>::~QTQueryListPipe()
     625{}
     626
     627template<typename T> void QTQueryListPipe<T>::IntegerEntered(const QString&)
     628{
     629  AddButton->setEnabled(true);
     630}
     631
     632template<typename T> void QTQueryListPipe<T>::IntegerSelected()
     633{
     634  if (inputList->selectedItems().empty())
     635    RemoveButton->setEnabled(false);
     636  else
     637    RemoveButton->setEnabled(true);
     638}
     639
     640template<typename T> void QTQueryListPipe<T>::AddInteger() {
     641  // type-check
     642  std::string text = inputBox->text().toStdString();
     643  int number = 0;
     644  try {
     645    number = boost::lexical_cast<int>(text);
     646  } catch (boost::bad_lexical_cast&) {
     647    return;
     648  };
     649  // add item to both
     650  inputList->addItem(QString(number));
     651  AddValue(number);
     652}
     653
     654template<typename T> void QTQueryListPipe<T>::AddValue(T item) {
     655  content->push_back(item);
     656
     657  dialog->update();
     658}
     659
     660template<typename T> void QTQueryListPipe<T>::RemoveInteger() {
     661  QList<QListWidgetItem *> items = inputList->selectedItems();
     662  for (QList<QListWidgetItem *>::iterator iter = items.begin(); !items.empty(); iter = items.begin()) {
     663    // obtain which position item has (by making it current item)
     664    inputList->setCurrentItem(*iter);
     665    // remove
     666    QTQueryListPipe<T>::RemoteRow(inputList->currentRow()); // template parameters needs to be known, such that compiler knows which to call
     667    inputList->removeItemWidget(*iter);
     668  }
     669}
     670
     671template<typename T> void QTQueryListPipe<T>::RemoveRow(int row) {
     672  int counter = 0;
     673  typename std::vector<T>::iterator iter = content->begin();
     674  for (; iter != content->end(); ++iter)
     675    if (counter++ == row)
     676      break;
     677  if (iter != content->end())
     678      content->erase(iter);
     679}
     680
    366681
    367682StringQTQueryPipe::StringQTQueryPipe(string *_content, QTDialog *_dialog) :
     
    403718  dialog->update();
    404719}
     720
     721VectorQTQueryPipe::VectorQTQueryPipe(Vector *_content, QTDialog *_dialog, QComboBox *_theBox) :
     722  content(_content),
     723  dialog(_dialog),
     724  theBox(_theBox)
     725{}
     726
     727VectorQTQueryPipe::~VectorQTQueryPipe()
     728{}
     729
     730void VectorQTQueryPipe::update() {
     731  dialog->update();
     732}
     733
     734VectorsQTQueryPipe::VectorsQTQueryPipe(std::vector<Vector> *_content, QTDialog *_dialog, QComboBox *_theBox) :
     735  content(_content),
     736  dialog(_dialog),
     737  theBox(_theBox)
     738{}
     739
     740VectorsQTQueryPipe::~VectorsQTQueryPipe()
     741{}
     742
     743void VectorsQTQueryPipe::update() {
     744  dialog->update();
     745}
     746
     747AtomQTQueryPipe::AtomQTQueryPipe(atom **_content, QTDialog *_dialog, QComboBox *_theBox) :
     748  content(_content),
     749  dialog(_dialog),
     750  theBox(_theBox)
     751{}
     752
     753AtomQTQueryPipe::~AtomQTQueryPipe()
     754{}
     755
     756void AtomQTQueryPipe::update(int newIndex) {
     757  QVariant data = theBox->itemData(newIndex);
     758  int idx = data.toInt();
     759  (*content) = World::getInstance().getAtom(AtomById(idx));
     760  dialog->update();
     761}
     762
     763
     764AtomsQTQueryPipe::AtomsQTQueryPipe(std::vector<atom *>*_content, QTDialog *_dialog, QComboBox *_theBox) :
     765  content(_content),
     766  dialog(_dialog),
     767  theBox(_theBox)
     768{}
     769
     770AtomsQTQueryPipe::~AtomsQTQueryPipe()
     771{}
     772
     773void AtomsQTQueryPipe::update(int newIndex) {
     774  QVariant data = theBox->itemData(newIndex);
     775  int idx = data.toInt();
     776  atom *Walker = World::getInstance().getAtom(AtomById(idx));
     777  if (Walker)
     778    (*content).push_back(Walker) ;
     779  dialog->update();
     780}
     781
    405782
    406783MoleculeQTQueryPipe::MoleculeQTQueryPipe(molecule **_content, QTDialog *_dialog, QComboBox *_theBox) :
     
    420797}
    421798
    422 ElementQTQueryPipe::ElementQTQueryPipe(std::vector<element *> *_content, QTDialog *_dialog, QComboBox *_theBox) :
     799
     800MoleculesQTQueryPipe::MoleculesQTQueryPipe(std::vector<molecule *>*_content, QTDialog *_dialog, QComboBox *_theBox) :
    423801  content(_content),
    424802  dialog(_dialog),
    425803  theBox(_theBox)
    426 {
    427   content->resize(1);
    428 }
     804{}
     805
     806MoleculesQTQueryPipe::~MoleculesQTQueryPipe()
     807{}
     808
     809void MoleculesQTQueryPipe::update(int newIndex) {
     810  QVariant data = theBox->itemData(newIndex);
     811  int idx = data.toInt();
     812  molecule *mol = World::getInstance().getMolecule(MoleculeById(idx));
     813  if (mol)
     814    (*content).push_back(mol);
     815  dialog->update();
     816}
     817
     818ElementQTQueryPipe::ElementQTQueryPipe(element **_content, QTDialog *_dialog, QComboBox *_theBox) :
     819  content(_content),
     820  dialog(_dialog),
     821  theBox(_theBox)
     822{}
    429823
    430824ElementQTQueryPipe::~ElementQTQueryPipe()
     
    434828  QVariant data = theBox->itemData(newIndex);
    435829  int idx = data.toInt();
    436   (*content)[0] = World::getInstance().getPeriode()->FindElement(idx);
    437   dialog->update();
    438 }
    439 
     830  *content = World::getInstance().getPeriode()->FindElement(idx);
     831  dialog->update();
     832}
     833
     834ElementsQTQueryPipe::ElementsQTQueryPipe(std::vector<element *>*_content, QTDialog *_dialog, QComboBox *_theBox) :
     835  content(_content),
     836  dialog(_dialog),
     837  theBox(_theBox)
     838{}
     839
     840ElementsQTQueryPipe::~ElementsQTQueryPipe()
     841{}
     842
     843void ElementsQTQueryPipe::update(int newIndex) {
     844  QVariant data = theBox->itemData(newIndex);
     845  int idx = data.toInt();
     846  element *elemental = World::getInstance().getPeriode()->FindElement(idx);
     847  if(elemental)
     848    (*content).push_back(elemental);
     849  dialog->update();
     850}
     851
     852
Note: See TracChangeset for help on using the changeset viewer.