source: src/UIElements/QT4/QTDialog.hpp@ db7cb0

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
Last change on this file since db7cb0 was 6f5dfe, checked in by Frederik Heber <heber@…>, 14 years ago

Added boost::filesystem usage for input files.

  • parameters for Action input now have type boost::filesystem.
  • rewritten Actions to use boost::filesystems
  • in the progress of writing FileQtQuery to present a file dialog.
  • Property mode set to 100644
File size: 12.1 KB
RevLine 
[d3a5ea]1/*
2 * QTDialog.hpp
3 *
4 * Created on: Jan 18, 2010
5 * Author: crueger
6 */
7
8#ifndef QTDIALOG_HPP_
9#define QTDIALOG_HPP_
10
11#include "UIElements/Dialog.hpp"
[cef1d7]12#include <QtGui/QDialog>
[6f5dfe]13#include <QtGui/QFileDialog>
14
15#include <boost/filesystem.hpp>
[d3a5ea]16
17class QBoxLayout;
18class QLabel;
19class QSpinBox;
[b8d1aeb]20class QDoubleSpinBox;
[d3a5ea]21class QLineEdit;
[7cd6e7]22class QListWidget;
[d3a5ea]23class QComboBox;
24class QDialogButtonBox;
25
26
27// Forward declarations for plumbing
[7cd6e7]28template<typename T> class QTQueryListPipe;
[d3a5ea]29class StringQTQueryPipe;
[7cd6e7]30class StringsQTQueryPipe;
[d3a5ea]31class IntQTQueryPipe;
[b8d1aeb]32class DoubleQTQueryPipe;
[7cd6e7]33class DoublesQTQueryPipe;
34class AtomQTQueryPipe;
35class AtomsQTQueryPipe;
[d3a5ea]36class MoleculeQTQueryPipe;
[7cd6e7]37class MoleculesQTQueryPipe;
[cbf01e]38class ElementQTQueryPipe;
[7cd6e7]39class ElementsQTQueryPipe;
40class VectorQTQueryPipe;
41class VectorsQTQueryPipe;
[6f5dfe]42class FileQTQueryPipe;
[d3a5ea]43
44class QTDialog : public QDialog, public Dialog
45{
46 Q_OBJECT
47public:
48 QTDialog();
49 virtual ~QTDialog();
50
[257c77]51 virtual void queryEmpty(const char*, std::string);
[3731b4]52 virtual void queryBoolean(const char *, std::string = "");
53 virtual void queryInt(const char *,std::string = "");
[7cd6e7]54 virtual void queryInts(const char *,std::string = "");
[3731b4]55 virtual void queryDouble(const char*,std::string = "");
[7cd6e7]56 virtual void queryDoubles(const char*,std::string = "");
[3731b4]57 virtual void queryString(const char*,std::string = "");
58 virtual void queryStrings(const char*,std::string = "");
59 virtual void queryAtom(const char*,std::string = "");
[7cd6e7]60 virtual void queryAtoms(const char*,std::string = "");
[3731b4]61 virtual void queryMolecule(const char*,std::string = "");
[7cd6e7]62 virtual void queryMolecules(const char*,std::string = "");
[3731b4]63 virtual void queryVector(const char*,bool,std::string = "");
[7cd6e7]64 virtual void queryVectors(const char*,bool,std::string = "");
[3731b4]65 virtual void queryBox(const char*, std::string = "");
66 virtual void queryElement(const char*,std::string = "");
[7cd6e7]67 virtual void queryElements(const char*,std::string = "");
[6f5dfe]68 virtual void queryFile(const char*,std::string = "");
[d3a5ea]69
70 virtual bool display();
71
72 virtual void update();
73
74protected:
75 class IntQTQuery : public Dialog::IntQuery {
76 public:
[3731b4]77 IntQTQuery(std::string _title,QBoxLayout *_parent,QTDialog *_dialog);
[cbf01e]78 virtual ~IntQTQuery();
[d3a5ea]79 virtual bool handle();
80 private:
81 QBoxLayout *parent;
82 QBoxLayout *thisLayout;
83 QLabel *titleLabel;
84 QSpinBox *inputBox;
85
86 IntQTQueryPipe *pipe;
87 };
88
[7cd6e7]89 class IntsQTQuery : public Dialog::IntsQuery {
90 public:
91 IntsQTQuery(std::string _title,QBoxLayout *_parent,QTDialog *_dialog);
92 virtual ~IntsQTQuery();
93 virtual bool handle();
94 void IntegerEntered(const QString&);
95 void IntegerSelected();
96 void AddInteger();
97 void RemoveInteger();
98 private:
99 QBoxLayout *parent;
100 QBoxLayout *thisLayout;
101 QLabel *titleLabel;
102
103 QTQueryListPipe<int> *pipe;
104 };
105
[b8d1aeb]106 class DoubleQTQuery : public Dialog::DoubleQuery {
107 public:
[3731b4]108 DoubleQTQuery(std::string title,QBoxLayout *_parent,QTDialog *_dialog);
[cbf01e]109 virtual ~DoubleQTQuery();
[b8d1aeb]110 virtual bool handle();
111 private:
112 QBoxLayout *parent;
113 QBoxLayout *thisLayout;
114 QLabel *titleLabel;
115 QDoubleSpinBox *inputBox;
116
117 DoubleQTQueryPipe *pipe;
118 };
119
[7cd6e7]120 class DoublesQTQuery : public Dialog::DoublesQuery {
121 public:
122 DoublesQTQuery(std::string title,QBoxLayout *_parent,QTDialog *_dialog);
123 virtual ~DoublesQTQuery();
124 virtual bool handle();
125 private:
126 QBoxLayout *parent;
127 QBoxLayout *thisLayout;
128 QLabel *titleLabel;
129 QDoubleSpinBox *inputBox;
130
131 QTQueryListPipe<double> *pipe;
132 };
133
[d3a5ea]134 class StringQTQuery : public Dialog::StringQuery {
135 public:
[3731b4]136 StringQTQuery(std::string _title, QBoxLayout *_parent,QTDialog *_dialog);
[cbf01e]137 virtual ~StringQTQuery();
[d3a5ea]138 virtual bool handle();
139 private:
140 QBoxLayout *parent;
141 QBoxLayout *thisLayout;
[cd8e55]142 QLabel *titleLabel;
143 QLineEdit *inputBox;
144
145 StringQTQueryPipe *pipe;
146 };
147
148 class StringsQTQuery : public Dialog::StringsQuery {
149 public:
[3731b4]150 StringsQTQuery(std::string _title, QBoxLayout *_parent,QTDialog *_dialog);
[cd8e55]151 virtual ~StringsQTQuery();
152 virtual bool handle();
153 private:
154 QBoxLayout *parent;
[d3a5ea]155 QBoxLayout *thisLayout;
156 QLabel *titleLabel;
157 QLineEdit *inputBox;
158
[7cd6e7]159 QTQueryListPipe<std::string> *pipe;
160 };
161
162 class AtomQTQuery : public Dialog::AtomQuery {
163 public:
164 AtomQTQuery(std::string _title, QBoxLayout *_parent,QTDialog *_dialog);
165 virtual ~AtomQTQuery();
166 virtual bool handle();
167 private:
168 QBoxLayout *parent;
169 QBoxLayout *thisLayout;
170 QLabel *titleLabel;
171 QComboBox *inputBox;
172
173 AtomQTQueryPipe *pipe;
174 };
175
176 class AtomsQTQuery : public Dialog::AtomsQuery {
177 public:
178 AtomsQTQuery(std::string _title, QBoxLayout *_parent,QTDialog *_dialog);
179 virtual ~AtomsQTQuery();
180 virtual bool handle();
181 private:
182 QBoxLayout *parent;
183 QBoxLayout *thisLayout;
184 QLabel *titleLabel;
185 QComboBox *inputBox;
186
187 AtomsQTQueryPipe *pipe;
[d3a5ea]188 };
189
190 class MoleculeQTQuery : public Dialog::MoleculeQuery {
191 public:
[3731b4]192 MoleculeQTQuery(std::string _title, QBoxLayout *_parent,QTDialog *_dialog);
[cbf01e]193 virtual ~MoleculeQTQuery();
[d3a5ea]194 virtual bool handle();
195 private:
196 QBoxLayout *parent;
197 QBoxLayout *thisLayout;
198 QLabel *titleLabel;
199 QComboBox *inputBox;
200
201 MoleculeQTQueryPipe *pipe;
202 };
203
[7cd6e7]204 class MoleculesQTQuery : public Dialog::MoleculesQuery {
205 public:
206 MoleculesQTQuery(std::string _title, QBoxLayout *_parent,QTDialog *_dialog);
207 virtual ~MoleculesQTQuery();
208 virtual bool handle();
209 private:
210 QBoxLayout *parent;
211 QBoxLayout *thisLayout;
212 QLabel *titleLabel;
213 QComboBox *inputBox;
214
215 MoleculesQTQueryPipe *pipe;
216 };
217
[b8d1aeb]218 class VectorQTQuery : public Dialog::VectorQuery {
219 public:
[3731b4]220 VectorQTQuery(std::string title,bool _check,QBoxLayout *,QTDialog *);
[cbf01e]221 virtual ~VectorQTQuery();
[b8d1aeb]222 virtual bool handle();
223 private:
224 QBoxLayout *parent;
225 QBoxLayout *mainLayout;
226 QLabel *titleLabel;
227 QBoxLayout *subLayout;
[7cd6e7]228 QBoxLayout *coordLayout;
229 QLabel *coordLabel;
230 QDoubleSpinBox *coordInput;
231
232 VectorQTQueryPipe *pipe;
233 };
234
235 class VectorsQTQuery : public Dialog::VectorsQuery {
236 public:
237 VectorsQTQuery(std::string title,bool _check,QBoxLayout *,QTDialog *);
238 virtual ~VectorsQTQuery();
239 virtual bool handle();
240 private:
241 QBoxLayout *parent;
242 QBoxLayout *mainLayout;
243 QLabel *titleLabel;
244 QBoxLayout *subLayout;
245 QBoxLayout *coordLayout;
246 QLabel *coordLabel;
247 QDoubleSpinBox *coordInput;
[b8d1aeb]248
[7cd6e7]249 VectorsQTQueryPipe *pipe;
[b8d1aeb]250 };
251
[cbf01e]252 class ElementQTQuery : public Dialog::ElementQuery {
253 public:
[3731b4]254 ElementQTQuery(std::string _title, QBoxLayout *_parent, QTDialog *_dialog);
[cbf01e]255 virtual ~ElementQTQuery();
256 virtual bool handle();
257 private:
258 QBoxLayout *parent;
259 QBoxLayout *thisLayout;
260 QLabel *titleLabel;
261 QComboBox *inputBox;
262
263 ElementQTQueryPipe *pipe;
264 };
265
[7cd6e7]266 class ElementsQTQuery : public Dialog::ElementsQuery {
267 public:
268 ElementsQTQuery(std::string _title, QBoxLayout *_parent, QTDialog *_dialog);
269 virtual ~ElementsQTQuery();
270 virtual bool handle();
271 private:
272 QBoxLayout *parent;
273 QBoxLayout *thisLayout;
274 QLabel *titleLabel;
275 QComboBox *inputBox;
276
277 ElementsQTQueryPipe *pipe;
278 };
279
[6f5dfe]280 class FileQTQuery : public Dialog::FileQuery {
281 public:
282 FileQTQuery(std::string _title, QBoxLayout *_parent, QTDialog *_dialog);
283 virtual ~FileQTQuery();
284 virtual bool handle();
285 private:
286 QBoxLayout *parent;
287 QBoxLayout *thisLayout;
288 QLineEdit *filenameLineEdit;
289 QPushButton *filedialogButton;
290
291 FileQTQueryPipe *pipe;
292 };
293
[d3a5ea]294private:
295 QBoxLayout *mainLayout;
296 QBoxLayout *inputLayout;
297 QBoxLayout *buttonLayout;
298 QDialogButtonBox *buttons;
299};
300
301// All kinds of plumbing for Queries
302// Plumbing needs to be outside of the class where it is needed,
303// since MOC doesn't like nested classes
304
[7cd6e7]305
306template<typename T> class QTQueryListPipe : public QWidget {
307 public:
308 QTQueryListPipe(std::vector<T> *_content, QTDialog *_dialog, QLineEdit *_inputBox, QListWidget *_inputList, QPushButton *_AddButton, QPushButton *_RemoveButton);
309 virtual ~QTQueryListPipe();
310 void AddInteger();
311 void RemoveInteger();
312 void IntegerSelected();
313 void IntegerEntered(const QString&);
314
315 private:
316 void AddValue(T item);
317 void RemoveRow(int row);
318
319 std::vector<T> *content;
320 QTDialog *dialog;
321 QLineEdit *inputBox;
322 QListWidget *inputList;
323 QPushButton *AddButton;
324 QPushButton *RemoveButton;
325};
326
327
[d3a5ea]328class StringQTQueryPipe : public QWidget {
329 Q_OBJECT
330public:
331 StringQTQueryPipe(std::string *_content, QTDialog *_dialog);
[cbf01e]332 virtual ~StringQTQueryPipe();
[d3a5ea]333
334public slots:
335 void update(const QString&);
336
337private:
338 std::string *content;
339 QTDialog *dialog;
340
341};
342
343class IntQTQueryPipe : public QWidget {
344 Q_OBJECT
345public:
346 IntQTQueryPipe(int *_content, QTDialog *_dialog);
[cbf01e]347 virtual ~IntQTQueryPipe();
[d3a5ea]348
349public slots:
350 void update(int);
351
352private:
353 int *content;
354 QTDialog *dialog;
355
356};
357
[7cd6e7]358
[b8d1aeb]359class DoubleQTQueryPipe : public QWidget {
360 Q_OBJECT
361public:
362 DoubleQTQueryPipe(double *_content, QTDialog *_dialog);
[cbf01e]363 virtual ~DoubleQTQueryPipe();
[b8d1aeb]364
365public slots:
366 void update(double);
367
368private:
369 double *content;
370 QTDialog *dialog;
371
372};
[d3a5ea]373
[7cd6e7]374class AtomQTQueryPipe : public QWidget {
375 Q_OBJECT
376public:
377 AtomQTQueryPipe(atom **_content, QTDialog *_dialog, QComboBox *_theBox);
378 virtual ~AtomQTQueryPipe();
379
380public slots:
381 void update(int);
382
383private:
384 atom **content;
385 QTDialog *dialog;
386 QComboBox *theBox;
387
388};
389
390
391class AtomsQTQueryPipe : public QWidget {
392 Q_OBJECT
393public:
394 AtomsQTQueryPipe(std::vector<atom *>*_content, QTDialog *_dialog, QComboBox *_theBox);
395 virtual ~AtomsQTQueryPipe();
396
397public slots:
398 void update(int);
399
400private:
401 std::vector<atom *>*content;
402 QTDialog *dialog;
403 QComboBox *theBox;
404
405};
406
[d3a5ea]407class MoleculeQTQueryPipe : public QWidget {
408 Q_OBJECT
409public:
[257c77]410 MoleculeQTQueryPipe(molecule **_content, QTDialog *_dialog, QComboBox *_theBox);
[cbf01e]411 virtual ~MoleculeQTQueryPipe();
[d3a5ea]412
413public slots:
414 void update(int);
415
416private:
417 molecule **content;
418 QTDialog *dialog;
419 QComboBox *theBox;
420
421};
[cbf01e]422
[7cd6e7]423class MoleculesQTQueryPipe : public QWidget {
424 Q_OBJECT
425public:
426 MoleculesQTQueryPipe(std::vector<molecule *>*_content, QTDialog *_dialog, QComboBox *_theBox);
427 virtual ~MoleculesQTQueryPipe();
428
429public slots:
430 void update(int);
431
432private:
433 std::vector<molecule *>*content;
434 QTDialog *dialog;
435 QComboBox *theBox;
436
437};
438
439class VectorQTQueryPipe : public QWidget {
440 Q_OBJECT
441public:
442 VectorQTQueryPipe(Vector *_content, QTDialog *_dialog, QComboBox *_theBox);
443 virtual ~VectorQTQueryPipe();
444
445public slots:
446 void update();
447
448private:
449 Vector *content;
450 QTDialog *dialog;
451 QComboBox *theBox;
452};
453
454class VectorsQTQueryPipe : public QWidget {
455 Q_OBJECT
456public:
457 VectorsQTQueryPipe(std::vector<Vector>*_content, QTDialog *_dialog, QComboBox *_theBox);
458 virtual ~VectorsQTQueryPipe();
459
460public slots:
461 void update();
462
463private:
464 std::vector<Vector> *content;
465 QTDialog *dialog;
466 QComboBox *theBox;
467};
468
[cbf01e]469class ElementQTQueryPipe : public QWidget {
470 Q_OBJECT
471public:
[e5c0a1]472 ElementQTQueryPipe(const element **_content, QTDialog *_dialog, QComboBox *_theBox);
[cbf01e]473 virtual ~ElementQTQueryPipe();
474
475public slots:
476 void update(int);
477
478private:
[e5c0a1]479 const element **content;
[7cd6e7]480 QTDialog *dialog;
481 QComboBox *theBox;
482};
483
484class ElementsQTQueryPipe : public QWidget {
485 Q_OBJECT
486public:
[e5c0a1]487 ElementsQTQueryPipe(std::vector<const element *>*_content, QTDialog *_dialog, QComboBox *_theBox);
[7cd6e7]488 virtual ~ElementsQTQueryPipe();
489
490public slots:
491 void update(int);
492
493private:
[e5c0a1]494 std::vector<const element *>*content;
[cbf01e]495 QTDialog *dialog;
496 QComboBox *theBox;
497};
[6f5dfe]498
499class FileQTQueryPipe : public QWidget {
500 Q_OBJECT
501public:
502 FileQTQueryPipe(const boost::filesystem::path &_content, QTDialog *_dialog, QLineEdit *_filenameLineEdit, QPushButton *_filedialogButton);
503 virtual ~FileQTQueryPipe();
504
505public slots:
506 void update();
507 void showFileDialog();
508
509private:
510 boost::filesystem::path content;
511 QTDialog *dialog;
512 QLineEdit *filenameLineEdit;
513 QPushButton *filedialogButton;
514 QFileDialog *theFileDialog;
515};
516
[d3a5ea]517#endif /* QTDIALOG_HPP_ */
Note: See TracBrowser for help on using the repository browser.