source: src/UIElements/Dialog.cpp@ b9c847

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 b9c847 was cd8e55, checked in by Frederik Heber <heber@…>, 15 years ago

New StringsQuery that returns space-separated vector of strings.

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

  • Property mode set to 100644
File size: 4.5 KB
Line 
1/*
2 * Dialog.cpp
3 *
4 * Created on: Jan 5, 2010
5 * Author: crueger
6 */
7
8#include "Helpers/MemDebug.hpp"
9
10#include "Dialog.hpp"
11
12#include "atom.hpp"
13#include "element.hpp"
14#include "molecule.hpp"
15#include "vector.hpp"
16
17using namespace std;
18
19Dialog::Dialog()
20{
21}
22
23Dialog::~Dialog()
24{
25 list<Query*>::iterator iter;
26 for(iter=queries.begin();iter!=queries.end();iter++){
27 delete (*iter);
28 }
29}
30
31void Dialog::registerQuery(Query *query){
32 queries.push_back(query);
33}
34
35bool Dialog::display(){
36 if(checkAll()){
37 setAll();
38 return true;
39 }
40 else{
41 return false;
42 }
43}
44
45bool Dialog::checkAll(){
46 list<Query*>::iterator iter;
47 bool retval = true;
48 for(iter=queries.begin(); iter!=queries.end(); iter++){
49 retval &= (*iter)->handle();
50 // if any query fails (is canceled), we can end the handling process
51 if(!retval) {
52 DoeLog(1) && (eLog() << Verbose(1) << "The following query failed: " << (**iter).getTitle() << "." << endl);
53 break;
54 }
55 }
56 return retval;
57}
58
59void Dialog::setAll(){
60 list<Query*>::iterator iter;
61 for(iter=queries.begin(); iter!=queries.end(); iter++) {
62 (*iter)->setResult();
63 }
64}
65
66/****************** Query types Infrastructure **************************/
67
68// Base class
69Dialog::Query::Query(string _title, string _description) :
70 title(_title),
71 description(_description)
72{}
73
74Dialog::Query::~Query() {}
75
76const std::string Dialog::Query::getTitle() const{
77 return title;
78}
79
80const std::string Dialog::Query::getDescription() const{
81 return description;
82}
83// empty Queries
84
85Dialog::EmptyQuery::EmptyQuery(string title, std::string description) :
86 Query(title, description)
87{}
88
89Dialog::EmptyQuery::~EmptyQuery() {}
90
91void Dialog::EmptyQuery::setResult() {
92}
93
94// Int Queries
95
96Dialog::IntQuery::IntQuery(string title,int *_target, std::string description) :
97 Query(title, description), target(_target)
98{}
99
100Dialog::IntQuery::~IntQuery() {}
101
102void Dialog::IntQuery::setResult() {
103 *target = tmp;
104}
105
106// Int Queries
107
108Dialog::BooleanQuery::BooleanQuery(string title,bool *_target, std::string description) :
109 Query(title, description), target(_target)
110{}
111
112Dialog::BooleanQuery::~BooleanQuery() {}
113
114void Dialog::BooleanQuery::setResult() {
115 *target = tmp;
116}
117
118// String Queries
119
120Dialog::StringQuery::StringQuery(string title,string *_target, std::string _description) :
121 Query(title, _description), target(_target)
122{}
123
124Dialog::StringQuery::~StringQuery() {};
125
126void Dialog::StringQuery::setResult() {
127 *target = tmp;
128}
129
130// Strings Queries
131
132Dialog::StringsQuery::StringsQuery(string title,vector<string> *_target, std::string _description) :
133 Query(title, _description), target(_target)
134{}
135
136Dialog::StringsQuery::~StringsQuery() {};
137
138void Dialog::StringsQuery::setResult() {
139 *target = tmp;
140}
141
142// Double Queries
143
144Dialog::DoubleQuery::DoubleQuery(string title,double *_target, std::string _description) :
145 Query(title, _description), target(_target)
146{}
147
148Dialog::DoubleQuery::~DoubleQuery() {};
149
150void Dialog::DoubleQuery::setResult() {
151 *target = tmp;
152}
153
154
155// Atom Queries
156
157Dialog::AtomQuery::AtomQuery(string title, atom **_target, std::string _description) :
158 Query(title, _description),
159 tmp(0),
160 target(_target)
161
162{}
163
164Dialog::AtomQuery::~AtomQuery() {}
165
166void Dialog::AtomQuery::setResult() {
167 *target = tmp;
168}
169
170// Molecule Queries
171
172Dialog::MoleculeQuery::MoleculeQuery(string title, molecule **_target, std::string _description) :
173 Query(title, _description),
174 tmp(0),
175 target(_target)
176
177{}
178
179Dialog::MoleculeQuery::~MoleculeQuery() {}
180
181void Dialog::MoleculeQuery::setResult() {
182 *target = tmp;
183}
184
185// Vector Queries
186
187Dialog::VectorQuery::VectorQuery(std::string title,Vector *_target,const double *const _cellSize,bool _check, std::string _description) :
188 Query(title, _description),
189 cellSize(_cellSize),
190 check(_check),
191 target(_target)
192{
193 tmp = new Vector();
194}
195
196Dialog::VectorQuery::~VectorQuery()
197{
198 delete tmp;
199}
200
201void Dialog::VectorQuery::setResult() {
202 *target = *tmp;
203}
204
205// Box Queries
206
207Dialog::BoxQuery::BoxQuery(std::string title, double ** const _cellSize, std::string _description) :
208 Query(title, _description),
209 target(_cellSize)
210{
211 tmp = new double[6];
212}
213
214Dialog::BoxQuery::~BoxQuery()
215{
216 delete[] tmp;
217}
218
219void Dialog::BoxQuery::setResult() {
220 for (int i=0;i<6;i++) {
221 (*target)[i] = tmp[i];
222 }
223}
224
225// Element Queries
226Dialog::ElementQuery::ElementQuery(std::string title, std::vector<element *> *_target, std::string _description) :
227 Query(title, _description),
228 target(_target)
229 {}
230
231Dialog::ElementQuery::~ElementQuery(){}
232
233void Dialog::ElementQuery::setResult(){
234 *target=elements;
235}
Note: See TracBrowser for help on using the repository browser.