source: src/UIElements/QT4/QTDialog.hpp@ 9d457d

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 9d457d was 9d457d, checked in by Frederik Heber <heber@…>, 14 years ago

Added EmptyQTQuery.

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