Changeset 45f5d6 for src/UIElements
- Timestamp:
- Jan 13, 2010, 10:22:29 AM (15 years ago)
- 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, 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:
- 7aa000
- Parents:
- aab2b1
- Location:
- src/UIElements
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified src/UIElements/Dialog.cpp ¶
raab2b1 r45f5d6 14 14 Dialog::Dialog() 15 15 { 16 // TODO Auto-generated constructor stub17 18 16 } 19 17 20 18 Dialog::~Dialog() 21 19 { 22 // TODO Auto-generated destructor stub 20 list<Query*>::iterator iter; 21 for(iter=queries.begin();iter!=queries.end();iter++){ 22 delete (*iter); 23 } 23 24 } 24 25 25 void Dialog::queryInt(const char *_title, int *_target) { 26 Query q; 27 q.title = _title; 28 q.type = Int; 29 q.target = (void*) _target; 30 31 queries.push_back(q); 26 void Dialog::registerQuery(Query *query){ 27 queries.push_back(query); 32 28 } 33 29 34 void Dialog::queryString(const char *_title, string *_target) { 35 Query q; 36 q.title = _title; 37 q.type = String; 38 q.target = (void*) _target; 39 40 queries.push_back(q); 30 bool Dialog::display(){ 31 list<Query*>::iterator iter; 32 bool retval = true; 33 for(iter=queries.begin(); iter!=queries.end(); iter++){ 34 retval &= (*iter)->handle(); 35 // if any query fails (is canceled), we can end the handling process 36 if(!retval) 37 break; 38 } 39 if (retval){ 40 // if all queries succeeded we can set the targets to appropriate values 41 for(iter=queries.begin(); iter!=queries.end(); iter++) { 42 (*iter)->setResult(); 43 } 44 } 45 return retval; 41 46 } 42 47 43 void Dialog::display(){ 44 list<Query>::iterator iter; 45 for(iter=queries.begin(); iter!=queries.end(); iter++){ 46 switch((*iter).type) { 47 case Int: 48 handleInt((*iter).title,(int*)((*iter).target)); 49 break; 50 case String: 51 handleString((*iter).title,(string*)((*iter).target)); 52 break; 53 default: 54 assert(0 && "This type of query does not seem to exist... Something is seriously wrong"); 55 break; 56 } 57 } 48 Dialog::Query::Query(string _title) : 49 title(_title) 50 {} 51 52 Dialog::Query::~Query() {} 53 54 const std::string Dialog::Query::getTitle() const{ 55 return title; 58 56 } 57 58 Dialog::IntQuery::IntQuery(string title,int *_target) : 59 Query(title), target(_target) 60 {} 61 62 Dialog::IntQuery::~IntQuery() {} 63 64 void Dialog::IntQuery::setResult() { 65 *target = tmp; 66 } 67 68 Dialog::StringQuery::StringQuery(string title,string *_target) : 69 Query(title), target(_target) 70 {} 71 72 Dialog::StringQuery::~StringQuery() {}; 73 74 void Dialog::StringQuery::setResult() { 75 *target = tmp; 76 } 77 -
TabularUnified src/UIElements/Dialog.hpp ¶
raab2b1 r45f5d6 12 12 #include<list> 13 13 14 class MoleculeListClass; 15 class Molecule; 16 14 17 class Dialog 15 18 { … … 18 21 virtual ~Dialog(); 19 22 20 void queryInt(const char *, int *); 21 void queryString(const char*, std::string *); 23 virtual void queryInt(const char *, int *)=0; 24 virtual void queryString(const char*, std::string *)=0; 25 // virtual void queryMolecule(const char*,MoleculeListClass*,Molecule*)=0; 22 26 23 virtual voiddisplay();27 virtual bool display(); 24 28 25 29 protected: 26 virtual void handleInt(std::string,int *)=0;27 virtual void handleString(std::string,std::string *)=0;28 29 30 private:31 30 // methodology for handling queries 32 31 // all queries are stored and then performed at appropriate times 33 32 34 33 //these queries can be handled by this dialog 35 enum QueryType {Int,String}; 36 struct Query { 34 35 //TODO: Find a way to reduce complexity... 36 //needs O(N*M) query classes, where N is the number of query types and M is the number of GUIs 37 //usual approach for reducing inheritance complexity (strategy pattern) does not work, 38 //due to lack of common code for query types as well as GUI-Types (all subtypes differ a lot) 39 40 //base class for all queries 41 class Query { 42 public: 43 Query(std::string _title); 44 ~Query(); 45 virtual bool handle()=0; 46 virtual void setResult()=0; 47 protected: 48 const std::string getTitle() const; 49 private: 37 50 std::string title; 38 QueryType type;39 void *target;40 51 }; 41 52 42 std::list<Query> queries; 53 //Specialized classes for certain types. GUI-Types are not specialized at this time 54 class IntQuery : public Query { 55 public: 56 IntQuery(std::string title,int *_target); 57 ~IntQuery(); 58 virtual bool handle()=0; 59 virtual void setResult(); 60 protected: 61 int tmp; 62 private: 63 int *target; 64 }; 65 66 class StringQuery : public Query { 67 public: 68 StringQuery(std::string title,std::string *_target); 69 ~StringQuery(); 70 virtual bool handle()=0; 71 virtual void setResult(); 72 protected: 73 std::string tmp; 74 private: 75 std::string *target; 76 }; 77 78 void registerQuery(Query* query); 79 80 private: 81 std::list<Query*> queries; 43 82 44 83 }; -
TabularUnified src/UIElements/TextDialog.cpp ¶
raab2b1 r45f5d6 17 17 TextDialog::TextDialog() 18 18 { 19 // TODO Auto-generated constructor stub20 21 19 } 22 20 23 21 TextDialog::~TextDialog() 24 22 { 25 // TODO Auto-generated destructor stub26 23 } 27 24 28 void TextDialog::handleInt(std::string title, int *target) { 29 Log() << Verbose(0) << title; 30 cin >> (*target); 25 void TextDialog::queryInt(const char* title, int* target){ 26 registerQuery(new IntTextQuery(title,target)); 31 27 } 32 28 33 void TextDialog::handleString(std::string title, string *target) { 34 string input; 35 Log() << Verbose(0) << title; 36 cin >> (*target); 29 void TextDialog::queryString(const char* title, string* target){ 30 registerQuery(new StringTextQuery(title,target)); 37 31 } 32 33 TextDialog::IntTextQuery::IntTextQuery(string title,int *_target) : 34 Dialog::IntQuery(title,_target) 35 {} 36 37 TextDialog::IntTextQuery::~IntTextQuery() {} 38 39 bool TextDialog::IntTextQuery::handle() { 40 Log() << Verbose(0) << IntQuery::getTitle(); 41 cin >> tmp; 42 return true; 43 } 44 45 TextDialog::StringTextQuery::StringTextQuery(string title,string *_target) : 46 Dialog::StringQuery(title,_target) 47 {} 48 49 TextDialog::StringTextQuery::~StringTextQuery() {} 50 51 bool TextDialog::StringTextQuery::handle() { 52 Log() << Verbose(0) << StringQuery::getTitle(); 53 cin >> tmp; 54 return true; 55 } -
TabularUnified src/UIElements/TextDialog.hpp ¶
raab2b1 r45f5d6 9 9 #define TEXTDIALOG_HPP_ 10 10 11 #include <string> 12 11 13 #include "UIElements/Dialog.hpp" 12 14 … … 17 19 virtual ~TextDialog(); 18 20 19 virtual void handleInt(std::string,int *); 20 virtual void handleString(std::string,std::string *); 21 virtual void queryInt(const char *, int *); 22 virtual void queryString(const char*, std::string *); 23 24 protected: 25 // specialized stuff for text queries 26 class IntTextQuery : public Dialog::IntQuery { 27 public: 28 IntTextQuery(std::string title, int *_target); 29 ~IntTextQuery(); 30 virtual bool handle(); 31 }; 32 33 class StringTextQuery : public Dialog::StringQuery { 34 public: 35 StringTextQuery(std::string title, std::string *_target); 36 ~StringTextQuery(); 37 virtual bool handle(); 38 }; 21 39 }; 22 40
Note:
See TracChangeset
for help on using the changeset viewer.