source: molecuilder/src/UIElements/Dialog.cpp@ 83afe0

Last change on this file since 83afe0 was 83afe0, checked in by Frederik Heber <heber@…>, 16 years ago

Extended UIFactory to a CommandLine derivate.

Signed-off-by: Frederik Heber <heber@…>

  • Property mode set to 100644
File size: 3.0 KB
RevLine 
[6d21bd]1/*
2 * Dialog.cpp
3 *
4 * Created on: Jan 5, 2010
5 * Author: crueger
6 */
7
8#include <cassert>
9
10#include "UIElements/Dialog.hpp"
11
[dbd19f]12#include "vector.hpp"
13
[6d21bd]14using namespace std;
15
16Dialog::Dialog()
17{
18}
19
20Dialog::~Dialog()
21{
[f89c1c]22 list<Query*>::iterator iter;
23 for(iter=queries.begin();iter!=queries.end();iter++){
24 delete (*iter);
25 }
[6d21bd]26}
27
[f89c1c]28void Dialog::registerQuery(Query *query){
29 queries.push_back(query);
30}
[6d21bd]31
[f89c1c]32bool Dialog::display(){
33 list<Query*>::iterator iter;
34 bool retval = true;
35 for(iter=queries.begin(); iter!=queries.end(); iter++){
36 retval &= (*iter)->handle();
37 // if any query fails (is canceled), we can end the handling process
38 if(!retval)
39 break;
40 }
41 if (retval){
42 // if all queries succeeded we can set the targets to appropriate values
43 for(iter=queries.begin(); iter!=queries.end(); iter++) {
44 (*iter)->setResult();
45 }
46 }
47 return retval;
[6d21bd]48}
49
[3896fc]50/****************** Query types Infrastructure **************************/
51
52// Base class
[83afe0]53Dialog::Query::Query(string _title, string _description) :
54 title(_title),
55 description(_description)
[f89c1c]56{}
[6d21bd]57
[f89c1c]58Dialog::Query::~Query() {}
59
60const std::string Dialog::Query::getTitle() const{
61 return title;
[6d21bd]62}
63
[83afe0]64const std::string Dialog::Query::getDescription() const{
65 return description;
66}
[3896fc]67// Int Queries
68
[83afe0]69Dialog::IntQuery::IntQuery(string title,int *_target, std::string description) :
70 Query(title, description), target(_target)
[f89c1c]71{}
72
73Dialog::IntQuery::~IntQuery() {}
74
75void Dialog::IntQuery::setResult() {
76 *target = tmp;
[6d21bd]77}
[f89c1c]78
[3896fc]79// String Queries
80
[83afe0]81Dialog::StringQuery::StringQuery(string title,string *_target, std::string _description) :
82 Query(title, _description), target(_target)
[f89c1c]83{}
84
85Dialog::StringQuery::~StringQuery() {};
86
87void Dialog::StringQuery::setResult() {
88 *target = tmp;
89}
90
[dbd19f]91// Double Queries
92
[83afe0]93Dialog::DoubleQuery::DoubleQuery(string title,double *_target, std::string _description) :
94 Query(title, _description), target(_target)
[dbd19f]95{}
96
97Dialog::DoubleQuery::~DoubleQuery() {};
98
99void Dialog::DoubleQuery::setResult() {
100 *target = tmp;
101}
102
103
[3896fc]104// Molecule Queries
105
[83afe0]106Dialog::MoleculeQuery::MoleculeQuery(string title, molecule **_target, MoleculeListClass *_molecules, std::string _description) :
107 Query(title, _description),
[98a2987]108 tmp(0),
[3896fc]109 molecules(_molecules),
[98a2987]110 target(_target)
111
[3896fc]112{}
113
114Dialog::MoleculeQuery::~MoleculeQuery() {}
115
116void Dialog::MoleculeQuery::setResult() {
117 *target = tmp;
118}
[dbd19f]119
120// Vector Queries
121
[83afe0]122Dialog::VectorQuery::VectorQuery(std::string title,Vector *_target,const double *const _cellSize,bool _check, std::string _description) :
123 Query(title, _description),
[98a2987]124 cellSize(_cellSize),
125 check(_check),
126 target(_target)
[dbd19f]127{
128tmp = new Vector();
129}
130
131Dialog::VectorQuery::~VectorQuery()
132{
133 delete tmp;
134}
135
136void Dialog::VectorQuery::setResult() {
137 *target = *tmp;
138}
[f467c6]139
140// Element Queries
[83afe0]141Dialog::ElementQuery::ElementQuery(std::string title, const element **_target, std::string _description) :
142 Query(title, _description),
[b787af]143 tmp(0),
144 target(_target)
[f467c6]145 {}
146
147Dialog::ElementQuery::~ElementQuery(){}
148
149void Dialog::ElementQuery::setResult(){
150 *target=tmp;
151}
Note: See TracBrowser for help on using the repository browser.