Changeset 37a67f for src/UIElements
- Timestamp:
- Jun 11, 2015, 11:21:41 PM (10 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:
- 08d042
- Parents:
- 043598
- git-author:
- Frederik Heber <heber@…> (05/17/15 13:50:53)
- git-committer:
- Frederik Heber <heber@…> (06/11/15 23:21:41)
- Location:
- src/UIElements
- Files:
-
- 3 added
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
src/UIElements/CommandLineUI/CommandLineDialog.hpp
r043598 r37a67f 34 34 35 35 virtual void queryEmpty(const std::string ="", const std::string = ""); 36 virtual void queryInt(Parameter<int> &, const std::string ="", const std::string = "");37 virtual void queryInts(Parameter<std::vector<int> > &, const std::string ="", const std::string = "");38 virtual void queryUnsignedInt(Parameter<unsigned int> &, const std::string ="", const std::string = "");39 virtual void queryUnsignedInts(Parameter<std::vector<unsigned int> > &, const std::string ="", const std::string = "");40 virtual void queryBoolean(Parameter<bool> &, const std::string ="", const std::string = "");41 virtual void queryString(Parameter<std::string> &, const std::string ="", const std::string = "");42 virtual void queryStrings(Parameter<std::vector<std::string> > &, const std::string ="", const std::string = "");43 virtual void queryDouble(Parameter<double> &, const std::string ="", const std::string = "");44 virtual void queryDoubles(Parameter<std::vector<double> > &, const std::string ="", const std::string = "");45 virtual void queryAtom(Parameter<const atom *> &, const std::string ="", const std::string = "");46 virtual void queryAtoms(Parameter<std::vector<const atom *> > &, const std::string ="", const std::string = "");47 virtual void queryMolecule(Parameter<const molecule *> &, const std::string ="", const std::string = "");48 virtual void queryMolecules(Parameter<std::vector<const molecule *> > &, const std::string ="", const std::string = "");49 virtual void queryVector(Parameter<Vector> &, const std::string ="", const std::string = "");50 virtual void queryVectors(Parameter<std::vector<Vector> > &, const std::string ="", const std::string = "");51 virtual void queryRealSpaceMatrix(Parameter<RealSpaceMatrix> &, const std::string ="", const std::string = "");52 virtual void queryElement(Parameter<const element *> &, const std::string ="", const std::string = "");53 virtual void queryElements(Parameter<std::vector<const element *> > &, const std::string ="", const std::string = "");54 virtual void queryFile(Parameter<boost::filesystem::path> &, const std::string ="", const std::string = "");55 virtual void queryFiles(Parameter<std::vector< boost::filesystem::path> > &, const std::string ="", const std::string = "");56 virtual void queryKeyValuePair(Parameter<KeyValuePair> &, const std::string ="", const std::string = "");57 virtual void queryKeyValuePairs(Parameter< std::vector<KeyValuePair> > &, const std::string ="", const std::string = "");58 36 59 // specialized stuff for command line queries 60 // all placed into Query/CommandLineQuery.hpp 61 // !please adhere to alphabetical ordering! 37 protected: 62 38 63 class AtomCommandLineQuery;64 class AtomsCommandLineQuery;65 class BooleanCommandLineQuery;66 class DoubleCommandLineQuery;67 class DoublesCommandLineQuery;68 class ElementCommandLineQuery;69 class ElementsCommandLineQuery;70 39 class EmptyCommandLineQuery; 71 class FileCommandLineQuery; 72 class FilesCommandLineQuery; 73 class IntCommandLineQuery; 74 class IntsCommandLineQuery; 75 class KeyValuePairCommandLineQuery; 76 class KeyValuePairsCommandLineQuery; 77 class MoleculeCommandLineQuery; 78 class MoleculesCommandLineQuery; 79 class RealSpaceMatrixCommandLineQuery; 80 class StringCommandLineQuery; 81 class StringsCommandLineQuery; 82 class UnsignedIntCommandLineQuery; 83 class UnsignedIntsCommandLineQuery; 84 class VectorCommandLineQuery; 85 class VectorsCommandLineQuery; 40 41 /** With the following boost::preprocessor code we generate virtual function 42 * definitions and forward declarations for all desired query types in the 43 * CommandLineUI specialization of class Dialog. 44 */ 45 #include "UIElements/GlobalListOfParameterQueries.hpp" 46 #include "UIElements/Dialog_impl_pre.hpp" 47 48 #include <boost/preprocessor/facilities/empty.hpp> 49 50 // iterate over all parameter query types for query declarations 51 #if defined GLOBALLISTOFPARAMETERQUERIES_Token && defined GLOBALLISTOFPARAMETERQUERIES_Type 52 #define SUFFIX BOOST_PP_EMPTY() 53 #define BOOST_PP_LOCAL_MACRO(n) dialog_declaration(~, n, GLOBALLISTOFPARAMETERQUERIES_Token, GLOBALLISTOFPARAMETERQUERIES_Type) 54 #define BOOST_PP_LOCAL_LIMITS (0, MAXPARAMETERTOKENS-1) 55 #include BOOST_PP_LOCAL_ITERATE() 56 #undef dialog_declaration 57 #undef SUFFIX 58 #endif 59 60 // iterate over all parameter query types for forward declarations 61 #if defined GLOBALLISTOFPARAMETERQUERIES_Token && defined GLOBALLISTOFPARAMETERQUERIES_Type 62 #define BOOST_PP_LOCAL_MACRO(n) forward_declaration(~, n, GLOBALLISTOFPARAMETERQUERIES_Token, CommandLineQuery) 63 #define BOOST_PP_LOCAL_LIMITS (0, MAXPARAMETERTOKENS-1) 64 #include BOOST_PP_LOCAL_ITERATE() 65 #undef forward_declaration 66 #endif 67 68 #include "Dialog_impl_undef.hpp" 69 /* End of preprocessor code piece */ 70 86 71 }; 87 72 -
src/UIElements/CommandLineUI/Query/CommandLineQuery.hpp
r043598 r37a67f 24 24 }; 25 25 26 class CommandLineDialog::IntCommandLineQuery : public Dialog::TQuery<int> { 27 public: 28 IntCommandLineQuery(Parameter<int> &_param, const std::string &_title, const std::string &_description = "");29 virtual ~IntCommandLineQuery();30 virtual bool handle(); 31 }; 26 /** With the following boost::preprocessor code we generate forward declarations 27 * of query class for all desired query types in the Qt specialization class of 28 * Dialog. 29 */ 30 #include "UIElements/GlobalListOfParameterQueries.hpp" 31 #include "UIElements/Dialog_impl_pre.hpp" 32 32 33 class CommandLineDialog::IntsCommandLineQuery : public Dialog::TQuery<std::vector<int> > { 34 public: 35 IntsCommandLineQuery(Parameter<std::vector<int> > &_param, const std::string &_title, const std::string &_description = ""); 36 virtual ~IntsCommandLineQuery(); 37 virtual bool handle(); 38 }; 33 #include <boost/preprocessor/facilities/empty.hpp> 39 34 40 class CommandLineDialog::UnsignedIntCommandLineQuery : public Dialog::TQuery<unsigned int> { 41 public: 42 UnsignedIntCommandLineQuery(Parameter<unsigned int> &_param, const std::string &_title, const std::string &_description = ""); 43 virtual ~UnsignedIntCommandLineQuery(); 44 virtual bool handle(); 45 }; 35 // iterate over all parameter query types for forward declarations 36 #if defined GLOBALLISTOFPARAMETERQUERIES_Token && defined GLOBALLISTOFPARAMETERQUERIES_Type 37 #define BOOST_PP_LOCAL_MACRO(n) queryclass_definition(~, n, GLOBALLISTOFPARAMETERQUERIES_Token, GLOBALLISTOFPARAMETERQUERIES_Type, CommandLine) 38 #define BOOST_PP_LOCAL_LIMITS (0, MAXPARAMETERTOKENS-1) 39 #include BOOST_PP_LOCAL_ITERATE() 40 #undef queryclass_definition 41 #endif 46 42 47 class CommandLineDialog::UnsignedIntsCommandLineQuery : public Dialog::TQuery<std::vector<unsigned int> > { 48 public: 49 UnsignedIntsCommandLineQuery(Parameter<std::vector<unsigned int> > &_param, const std::string &_title, const std::string &_description = ""); 50 virtual ~UnsignedIntsCommandLineQuery(); 51 virtual bool handle(); 52 }; 43 #include "Dialog_impl_undef.hpp" 44 /* End of preprocessor code piece */ 53 45 54 class CommandLineDialog::BooleanCommandLineQuery : public Dialog::TQuery<bool> {55 public:56 BooleanCommandLineQuery(Parameter<bool> &_param, const std::string &_title, const std::string &_description = "");57 virtual ~BooleanCommandLineQuery();58 virtual bool handle();59 };60 61 class CommandLineDialog::DoubleCommandLineQuery : public Dialog::TQuery<double> {62 public:63 DoubleCommandLineQuery(Parameter<double> &_param, const std::string &_title, const std::string &_description = "");64 virtual ~DoubleCommandLineQuery();65 virtual bool handle();66 };67 68 class CommandLineDialog::DoublesCommandLineQuery : public Dialog::TQuery<std::vector<double> > {69 public:70 DoublesCommandLineQuery(Parameter<std::vector<double> > &_param, const std::string &_title, const std::string &_description = "");71 virtual ~DoublesCommandLineQuery();72 virtual bool handle();73 };74 75 class CommandLineDialog::StringCommandLineQuery : public Dialog::TQuery<std::string> {76 public:77 StringCommandLineQuery(Parameter<std::string> &_param, const std::string &_title, const std::string &_description = "");78 virtual ~StringCommandLineQuery();79 virtual bool handle();80 };81 82 class CommandLineDialog::StringsCommandLineQuery : public Dialog::TQuery<std::vector<std::string> > {83 public:84 StringsCommandLineQuery(Parameter<std::vector<std::string> > &_param, const std::string &_title, const std::string &_description = "");85 virtual ~StringsCommandLineQuery();86 virtual bool handle();87 };88 89 class CommandLineDialog::AtomCommandLineQuery : public Dialog::TQuery<const atom *> {90 public:91 AtomCommandLineQuery(Parameter<const atom *> &_param, const std::string &_title, const std::string &_description = "");92 virtual ~AtomCommandLineQuery();93 virtual bool handle();94 };95 96 class CommandLineDialog::AtomsCommandLineQuery : public Dialog::TQuery<std::vector<const atom*> > {97 public:98 AtomsCommandLineQuery(Parameter<std::vector<const atom *> > &_param, const std::string &_title, const std::string &_description = "");99 virtual ~AtomsCommandLineQuery();100 virtual bool handle();101 };102 103 class CommandLineDialog::MoleculeCommandLineQuery : public Dialog::TQuery<const molecule *> {104 public:105 MoleculeCommandLineQuery(Parameter<const molecule *> &_param, const std::string &_title, const std::string &_description = "");106 virtual ~MoleculeCommandLineQuery();107 virtual bool handle();108 };109 110 class CommandLineDialog::MoleculesCommandLineQuery : public Dialog::TQuery<std::vector<const molecule*> > {111 public:112 MoleculesCommandLineQuery(Parameter<std::vector<const molecule *> > &_param, const std::string &_title, const std::string &_description = "");113 virtual ~MoleculesCommandLineQuery();114 virtual bool handle();115 };116 117 class CommandLineDialog::VectorCommandLineQuery : public Dialog::TQuery<Vector> {118 public:119 VectorCommandLineQuery(Parameter<Vector> &_param, const std::string &_title, const std::string &_description = "");120 virtual ~VectorCommandLineQuery();121 virtual bool handle();122 };123 124 class CommandLineDialog::VectorsCommandLineQuery : public Dialog::TQuery<std::vector<Vector> > {125 public:126 VectorsCommandLineQuery(Parameter<std::vector<Vector> > &_param, const std::string &_title, const std::string &_description = "");127 virtual ~VectorsCommandLineQuery();128 virtual bool handle();129 };130 131 class CommandLineDialog::RealSpaceMatrixCommandLineQuery : public Dialog::TQuery<RealSpaceMatrix> {132 public:133 RealSpaceMatrixCommandLineQuery(Parameter<RealSpaceMatrix> &_param, const std::string &_title, const std::string &_description = "");134 virtual ~RealSpaceMatrixCommandLineQuery();135 virtual bool handle();136 };137 138 class CommandLineDialog::ElementCommandLineQuery : public Dialog::TQuery<const element *> {139 public:140 ElementCommandLineQuery(Parameter<const element *> &_param, const std::string &_title, const std::string &_description = "");141 virtual ~ElementCommandLineQuery();142 virtual bool handle();143 };144 145 class CommandLineDialog::ElementsCommandLineQuery : public Dialog::TQuery<std::vector<const element *> > {146 public:147 ElementsCommandLineQuery(Parameter<std::vector<const element *> > &_param, const std::string &_title, const std::string &_description = "");148 virtual ~ElementsCommandLineQuery();149 virtual bool handle();150 };151 152 class CommandLineDialog::FileCommandLineQuery : public Dialog::TQuery<boost::filesystem::path> {153 public:154 FileCommandLineQuery(Parameter<boost::filesystem::path> &_param, const std::string &_title, const std::string &_description = "");155 virtual ~FileCommandLineQuery();156 virtual bool handle();157 };158 159 class CommandLineDialog::FilesCommandLineQuery : public Dialog::TQuery<std::vector<boost::filesystem::path> > {160 public:161 FilesCommandLineQuery(Parameter<std::vector< boost::filesystem::path> > ¶m, const std::string &_title, const std::string &_description = "");162 virtual ~FilesCommandLineQuery();163 virtual bool handle();164 };165 166 class CommandLineDialog::KeyValuePairCommandLineQuery : public Dialog::TQuery<KeyValuePair> {167 public:168 KeyValuePairCommandLineQuery(Parameter<KeyValuePair> &_param, const std::string &_title, const std::string &_description = "");169 virtual ~KeyValuePairCommandLineQuery();170 virtual bool handle();171 };172 173 class CommandLineDialog::KeyValuePairsCommandLineQuery : public Dialog::TQuery<std::vector<KeyValuePair> > {174 public:175 KeyValuePairsCommandLineQuery(Parameter<std::vector<KeyValuePair> > &_param, const std::string &_title, const std::string &_description = "");176 virtual ~KeyValuePairsCommandLineQuery();177 virtual bool handle();178 };179 46 180 47 #endif /* COMMANDLINEQUERY_HPP_ */ -
src/UIElements/Dialog.cpp
r043598 r37a67f 135 135 }*/ 136 136 137 template <> void Dialog::query<bool>(Parameter<bool> ¶m, const std::string title, const std::string description) 138 { 139 queryBoolean(param, title, description); 140 } 137 /** With the following boost::preprocessor code we generate template 138 * specializations for each desired query types in the abstract class Dialog. 139 */ 140 #include "UIElements/GlobalListOfParameterQueries.hpp" 141 #include "UIElements/Dialog_impl_pre.hpp" 141 142 142 template <> void Dialog::query<int>(Parameter<int> ¶m, const std::string title, const std::string description) 143 { 144 queryInt(param, title, description); 145 } 143 // print a template body 144 #define dialog_definition(z,n,TOKENLIST,TYPELIST) \ 145 template <> void Dialog::query< \ 146 BOOST_PP_SEQ_ELEM(n, TYPELIST) \ 147 >(Parameter< \ 148 BOOST_PP_SEQ_ELEM(n, TYPELIST) \ 149 > ¶m, const std::string title, const std::string description) { \ 150 BOOST_PP_CAT(query, BOOST_PP_SEQ_ELEM(n, TOKENLIST)) \ 151 (param, title, description); } 146 152 147 template <> void Dialog::query< std::vector<int> >(Parameter<std::vector<int> > ¶m, const std::string title, const std::string description) 148 { 149 queryInts(param, title, description); 150 } 153 // print template specialization for every query type 154 #if defined GLOBALLISTOFPARAMETERQUERIES_Token && defined GLOBALLISTOFPARAMETERQUERIES_Type 155 #define BOOST_PP_LOCAL_MACRO(n) dialog_definition(~, n, GLOBALLISTOFPARAMETERQUERIES_Token, GLOBALLISTOFPARAMETERQUERIES_Type) 156 #define BOOST_PP_LOCAL_LIMITS (0, MAXPARAMETERTOKENS-1) 157 #include BOOST_PP_LOCAL_ITERATE() 158 #endif 151 159 152 template <> void Dialog::query<unsigned int>(Parameter<unsigned int> ¶m, const std::string title, const std::string description) 153 { 154 queryUnsignedInt(param, title, description); 155 } 160 #undef dialog_definition 156 161 157 template <> void Dialog::query< std::vector<unsigned int> >(Parameter<std::vector<unsigned int> > ¶m, const std::string title, const std::string description) 158 { 159 queryUnsignedInts(param, title, description); 160 } 162 #include "Dialog_impl_undef.hpp" 163 /* End of preprocessor code piece */ 161 164 162 template <> void Dialog::query<double>(Parameter<double> ¶m, const std::string title, const std::string description) 163 { 164 queryDouble(param, title, description); 165 } 166 167 template <> void Dialog::query< std::vector<double> >(Parameter<std::vector<double> > ¶m, const std::string title, const std::string description) 168 { 169 queryDoubles(param, title, description); 170 } 171 172 template <> void Dialog::query<std::string>(Parameter<std::string> ¶m, const std::string title, const std::string description) 173 { 174 queryString(param, title, description); 175 } 176 177 template <> void Dialog::query< std::vector<std::string> >(Parameter<std::vector<std::string> > ¶m, const std::string title, const std::string description) 178 { 179 queryStrings(param, title, description); 180 } 181 182 template <> void Dialog::query<const atom *>(Parameter<const atom *> ¶m, const std::string title, const std::string description) 183 { 184 queryAtom(param, title, description); 185 } 186 187 template <> void Dialog::query< std::vector<const atom *> >(Parameter<std::vector<const atom *> > ¶m, const std::string title, const std::string description) 188 { 189 queryAtoms(param, title, description); 190 } 191 192 template <> void Dialog::query<const molecule *>(Parameter<const molecule *> ¶m, const std::string title, const std::string description) 193 { 194 queryMolecule(param, title, description); 195 } 196 197 template <> void Dialog::query< std::vector<const molecule *> >(Parameter<std::vector<const molecule *> > ¶m, const std::string title, const std::string description) 198 { 199 queryMolecules(param, title, description); 200 } 201 202 template <> void Dialog::query<Vector>(Parameter<Vector> ¶m, const std::string title, const std::string description) 203 { 204 queryVector(param, title, description); 205 } 206 207 template <> void Dialog::query< std::vector<Vector> >(Parameter<std::vector<Vector> > ¶m, const std::string title, const std::string description) 208 { 209 queryVectors(param, title, description); 210 } 211 212 template <> void Dialog::query<RealSpaceMatrix>(Parameter<RealSpaceMatrix> ¶m, const std::string title, const std::string description) 213 { 214 queryRealSpaceMatrix(param, title, description); 215 } 216 217 template <> void Dialog::query<const element *>(Parameter<const element *> ¶m, const std::string title, const std::string description) 218 { 219 queryElement(param, title, description); 220 } 221 222 template <> void Dialog::query< std::vector<const element *> >(Parameter<std::vector<const element *> > ¶m, const std::string title, const std::string description) 223 { 224 queryElements(param, title, description); 225 } 226 227 template <> void Dialog::query< boost::filesystem::path >(Parameter<boost::filesystem::path> ¶m, const std::string title, const std::string description) 228 { 229 queryFile(param, title, description); 230 } 231 232 template <> void Dialog::query< std::vector<boost::filesystem::path> >(Parameter<std::vector< boost::filesystem::path> > ¶m, const std::string title, const std::string description) 233 { 234 queryFiles(param, title, description); 235 } 236 237 template <> void Dialog::query< KeyValuePair >(Parameter<KeyValuePair> ¶m, const std::string title, const std::string description) 238 { 239 queryKeyValuePair(param, title, description); 240 } 241 242 template <> void Dialog::query< std::vector<KeyValuePair> >(Parameter< std::vector<KeyValuePair> > ¶m, const std::string title, const std::string description) 243 { 244 queryKeyValuePairs(param, title, description); 245 } 165 //template <> void Dialog::query< std::vector<KeyValuePair> >(Parameter< std::vector<KeyValuePair> > ¶m, const std::string title, const std::string description) 166 //{ 167 // queryKeyValuePairs(param, title, description); 168 //} 246 169 247 170 /************************** Query Infrastructure ************************/ -
src/UIElements/Dialog.hpp
r043598 r37a67f 132 132 * Due to the three present UI interfaces we have to add a specific Query for each, here 133 133 * is a list: 134 * -# add ValueStorage::setCurrentValue() and ValueStorage::queryCurrentValue() for 135 * both types 136 * -# add Dialog::query...() 137 * -# add Dialog::query<>() specialization calling the above function 138 * -# add CommandLineDialog::query...(), TextDialog::query...(), and QtDialog::query...(), 139 * i.e. for each of the three interface 140 * -# add empty definition DummyDialog::query...() to the stub for Action unittests in DummUI.hpp. 141 * -# add Dialog::...Query class with tmp value of desired type 134 * -# add a token (i.e. a unique name for the query parameter) and its type to the 135 * global list in \ref GlobalListOfParameterQueries.hpp. This will via boost 136 * preprocessor magic add definitions and some intermediatr template specializations. 137 * -# add a specialization for each of the UI interfaces of Dialog::...Query class. 138 * -# add class declaration of QtDialog::...Query in \ref QtQuery.hpp 142 139 * -# add CommandLineDialog::...Query, TextDialog::...Query, QtDialog::...Query 143 * -# you probably also need a QtDialog::...QueryPipe() to handle the signal/slot stuff, 144 * Qt's moc does not like nested classes. Hence, this has to go extra. 145 * -# TypeEnumContainer add new type to query 140 * -# TypeEnumContainer add new type to query. Make the Type name match with the token 146 141 * -# CommandLineParser::AddOptionToParser() add new type to query 147 142 * -# CommandLineParser_valdiates.[ch]pp: If given above as a new type 148 143 * program_options::value, define and implement a validate() function here. 144 * 145 * Note that the Empty..Query is always specificly present as it has not type and thus 146 * does not fit into the preprocessor magic scheme (on the plus side it also serves 147 * as a kind of visualization of what the preprocessor actually does). 149 148 * 150 149 */ … … 158 157 159 158 virtual void queryEmpty(const std::string ="", const std::string = "")=0; 160 virtual void queryBoolean(Parameter<bool> &, const std::string ="", const std::string = "")=0; 161 virtual void queryInt(Parameter<int> &, const std::string ="", const std::string = "")=0; 162 virtual void queryInts(Parameter<std::vector<int> > &, const std::string ="", const std::string = "")=0; 163 virtual void queryUnsignedInt(Parameter<unsigned int> &, const std::string ="", const std::string = "")=0; 164 virtual void queryUnsignedInts(Parameter<std::vector<unsigned int> > &, const std::string ="", const std::string = "")=0; 165 virtual void queryDouble(Parameter<double> &, const std::string ="", const std::string = "")=0; 166 virtual void queryDoubles(Parameter<std::vector<double> > &, const std::string ="", const std::string = "")=0; 167 virtual void queryString(Parameter<std::string> &, const std::string ="", const std::string = "")=0; 168 virtual void queryStrings(Parameter<std::vector<std::string> > &, const std::string ="", const std::string = "")=0; 169 virtual void queryAtom(Parameter<const atom *> &, const std::string = "", const std::string = "")=0; 170 virtual void queryAtoms(Parameter<std::vector<const atom *> > &, const std::string = "", const std::string = "")=0; 171 virtual void queryMolecule(Parameter<const molecule *> &, const std::string ="", const std::string = "")=0; 172 virtual void queryMolecules(Parameter<std::vector<const molecule *> > &, const std::string ="", const std::string = "")=0; 173 virtual void queryVector(Parameter<Vector> &, const std::string ="", const std::string = "")=0; 174 virtual void queryVectors(Parameter<std::vector<Vector> > &, const std::string ="", const std::string = "")=0; 175 virtual void queryRealSpaceMatrix(Parameter<RealSpaceMatrix> &, const std::string ="", const std::string = "")=0; 176 virtual void queryElement(Parameter<const element *> &, const std::string ="", const std::string = "")=0; 177 virtual void queryElements(Parameter<std::vector<const element *> > &, const std::string ="", const std::string = "")=0; 178 virtual void queryFile(Parameter<boost::filesystem::path> &, const std::string ="", const std::string = "")=0; 179 virtual void queryFiles(Parameter< std::vector<boost::filesystem::path> > &, const std::string ="", const std::string = "")=0; 180 virtual void queryKeyValuePair(Parameter<KeyValuePair> &, const std::string ="", const std::string = "")=0; 181 virtual void queryKeyValuePairs(Parameter< std::vector<KeyValuePair> > &, const std::string ="", const std::string = "")=0; 159 160 /** With the following boost::preprocessor code we generate virtual function 161 * definitions for all desired query types in the abstract class Dialog. 162 */ 163 #include "UIElements/GlobalListOfParameterQueries.hpp" 164 #include "UIElements/Dialog_impl_pre.hpp" 165 166 // iterate over all parameter query types 167 #if defined GLOBALLISTOFPARAMETERQUERIES_Token && defined GLOBALLISTOFPARAMETERQUERIES_Type 168 #define SUFFIX =0 169 #define BOOST_PP_LOCAL_MACRO(n) dialog_declaration(~, n, GLOBALLISTOFPARAMETERQUERIES_Token, GLOBALLISTOFPARAMETERQUERIES_Type) 170 #define BOOST_PP_LOCAL_LIMITS (0, MAXPARAMETERTOKENS-1) 171 #include BOOST_PP_LOCAL_ITERATE() 172 #undef dialog_declaration 173 #undef SUFFIX 174 #endif 175 176 #include "Dialog_impl_undef.hpp" 177 /* End of preprocessor code piece */ 182 178 183 179 virtual bool display(); … … 286 282 }; 287 283 288 289 284 #endif /* DIALOG_HPP_ */ -
src/UIElements/Makefile.am
r043598 r37a67f 140 140 ${VIEWHEADER} \ 141 141 UIElements/Dialog.hpp \ 142 UIElements/Dialog_impl_pre.hpp \ 143 UIElements/Dialog_impl_undef.hpp \ 144 UIElements/GlobalListOfParameterQueries.hpp \ 142 145 UIElements/MainWindow.hpp 143 146 -
src/UIElements/Qt4/QtDialog.hpp
r043598 r37a67f 35 35 36 36 virtual void queryEmpty(const std::string ="", const std::string = ""); 37 virtual void queryBoolean(Parameter<bool> &, const std::string ="", const std::string = ""); 38 virtual void queryInt(Parameter<int> &, const std::string ="", const std::string = ""); 39 virtual void queryInts(Parameter<std::vector<int> > &, const std::string ="", const std::string = ""); 40 virtual void queryUnsignedInt(Parameter<unsigned int> &, const std::string ="", const std::string = ""); 41 virtual void queryUnsignedInts(Parameter<std::vector<unsigned int> > &, const std::string ="", const std::string = ""); 42 virtual void queryDouble(Parameter<double> &, const std::string ="", const std::string = ""); 43 virtual void queryDoubles(Parameter<std::vector<double> > &, const std::string ="", const std::string = ""); 44 virtual void queryString(Parameter<std::string> &, const std::string ="", const std::string = ""); 45 virtual void queryStrings(Parameter<std::vector<std::string> > &, const std::string ="", const std::string = ""); 46 virtual void queryAtom(Parameter<const atom *> &, const std::string ="", const std::string = ""); 47 virtual void queryAtoms(Parameter<std::vector<const atom *> > &, const std::string ="", const std::string = ""); 48 virtual void queryMolecule(Parameter<const molecule *> &, const std::string ="", const std::string = ""); 49 virtual void queryMolecules(Parameter<std::vector<const molecule *> > &, const std::string ="", const std::string = ""); 50 virtual void queryVector(Parameter<Vector> &, const std::string ="", const std::string = ""); 51 virtual void queryVectors(Parameter<std::vector<Vector> > &, const std::string ="", const std::string = ""); 52 virtual void queryRealSpaceMatrix(Parameter<RealSpaceMatrix> &, const std::string ="", const std::string = ""); 53 virtual void queryElement(Parameter<const element *> &, const std::string ="", const std::string = ""); 54 virtual void queryElements(Parameter<std::vector<const element *> > &, const std::string ="", const std::string = ""); 55 virtual void queryFile(Parameter<boost::filesystem::path> &, const std::string ="", const std::string = ""); 56 virtual void queryFiles(Parameter<std::vector< boost::filesystem::path> > &, const std::string ="", const std::string = ""); 57 virtual void queryKeyValuePair(Parameter<KeyValuePair> &, const std::string ="", const std::string = ""); 58 virtual void queryKeyValuePairs(Parameter< std::vector<KeyValuePair> > &, const std::string ="", const std::string = ""); 37 38 /** With the following boost::preprocessor code we generate virtual function 39 * definitions for all desired query types in the abstract class Dialog. 40 */ 41 #include "UIElements/GlobalListOfParameterQueries.hpp" 42 #include "UIElements/Dialog_impl_pre.hpp" 43 44 #include <boost/preprocessor/facilities/empty.hpp> 45 46 // iterate over all parameter query types 47 #if defined GLOBALLISTOFPARAMETERQUERIES_Token && defined GLOBALLISTOFPARAMETERQUERIES_Type 48 #define SUFFIX BOOST_PP_EMPTY() 49 #define BOOST_PP_LOCAL_MACRO(n) dialog_declaration(~, n, GLOBALLISTOFPARAMETERQUERIES_Token, GLOBALLISTOFPARAMETERQUERIES_Type) 50 #define BOOST_PP_LOCAL_LIMITS (0, MAXPARAMETERTOKENS-1) 51 #include BOOST_PP_LOCAL_ITERATE() 52 #undef dialog_declaration 53 #undef SUFFIX 54 #endif 55 56 #include "Dialog_impl_undef.hpp" 57 /* End of preprocessor code piece */ 59 58 60 59 virtual bool display(); … … 63 62 64 63 protected: 65 class AtomQtQuery; 66 class AtomsQtQuery; 67 class BooleanQtQuery; 68 class RealSpaceMatrixQtQuery; 69 class DoubleQtQuery; 70 class DoublesQtQuery; 71 class ElementQtQuery; 72 class ElementsQtQuery; 64 73 65 class EmptyQtQuery; 74 class FileQtQuery; 75 class FilesQtQuery; 76 class IntQtQuery; 77 class IntsQtQuery; 78 class KeyValuePairQtQuery; 79 class KeyValuePairsQtQuery; 80 class MoleculeQtQuery; 81 class MoleculesQtQuery; 82 class StringQtQuery; 83 class StringsQtQuery; 84 class UnsignedIntQtQuery; 85 class UnsignedIntsQtQuery; 86 class VectorQtQuery; 87 class VectorsQtQuery; 66 67 /** With the following boost::preprocessor code we generate forward declarations 68 * of query class for all desired query types in the Qt specialization class of 69 * Dialog. 70 */ 71 #include "UIElements/GlobalListOfParameterQueries.hpp" 72 #include "UIElements/Dialog_impl_pre.hpp" 73 74 #include <boost/preprocessor/facilities/empty.hpp> 75 76 // iterate over all parameter query types for forward declarations 77 #if defined GLOBALLISTOFPARAMETERQUERIES_Token && defined GLOBALLISTOFPARAMETERQUERIES_Type 78 #define BOOST_PP_LOCAL_MACRO(n) forward_declaration(~, n, GLOBALLISTOFPARAMETERQUERIES_Token, QtQuery) 79 #define BOOST_PP_LOCAL_LIMITS (0, MAXPARAMETERTOKENS-1) 80 #include BOOST_PP_LOCAL_ITERATE() 81 #undef forward_declaration 82 #endif 83 84 #include "Dialog_impl_undef.hpp" 85 /* End of preprocessor code piece */ 88 86 89 87 private: -
src/UIElements/TextUI/Query/TextQuery.hpp
r043598 r37a67f 17 17 #include "TextUI/TextDialog.hpp" 18 18 19 class TextDialog::AtomTextQuery : public Dialog::TQuery<const atom *> {20 public:21 AtomTextQuery(Parameter<const atom *> &, const std::string &_title, const std::string &_description = NULL);22 virtual ~AtomTextQuery();23 virtual bool handle();24 };25 26 class TextDialog::AtomsTextQuery : public Dialog::TQuery<std::vector<const atom *> > {27 public:28 AtomsTextQuery(Parameter<std::vector<const atom *> > &, const std::string &_title, const std::string &_description = NULL);29 virtual ~AtomsTextQuery();30 virtual bool handle();31 };32 33 class TextDialog::BooleanTextQuery : public Dialog::TQuery<bool> {34 public:35 BooleanTextQuery(Parameter<bool> &, const std::string &_title, const std::string &_description = NULL);36 virtual ~BooleanTextQuery();37 virtual bool handle();38 };39 40 class TextDialog::RealSpaceMatrixTextQuery : public Dialog::TQuery<RealSpaceMatrix> {41 public:42 RealSpaceMatrixTextQuery(Parameter<RealSpaceMatrix> &, const std::string &_title, const std::string &_description = NULL);43 virtual ~RealSpaceMatrixTextQuery();44 virtual bool handle();45 };46 47 class TextDialog::DoubleTextQuery : public Dialog::TQuery<double> {48 public:49 DoubleTextQuery(Parameter<double> &, const std::string &_title, const std::string &_description = NULL);50 virtual ~DoubleTextQuery();51 virtual bool handle();52 };53 54 class TextDialog::DoublesTextQuery : public Dialog::TQuery<std::vector<double> > {55 public:56 DoublesTextQuery(Parameter<std::vector<double> > &, const std::string &_title, const std::string &_description = NULL);57 virtual ~DoublesTextQuery();58 virtual bool handle();59 };60 61 class TextDialog::ElementTextQuery : public Dialog::TQuery<const element *> {62 public:63 ElementTextQuery(Parameter<const element *> &, const std::string &_title, const std::string &_description = NULL);64 virtual ~ElementTextQuery();65 virtual bool handle();66 };67 68 class TextDialog::ElementsTextQuery : public Dialog::TQuery<std::vector<const element *> > {69 public:70 ElementsTextQuery(Parameter<std::vector<const element *> > &, const std::string &_title, const std::string &_description = NULL);71 virtual ~ElementsTextQuery();72 virtual bool handle();73 };74 75 19 class TextDialog::EmptyTextQuery : public Dialog::EmptyQuery { 76 20 public: … … 80 24 }; 81 25 82 class TextDialog::FileTextQuery : public Dialog::TQuery<boost::filesystem::path> {83 public:84 FileTextQuery(Parameter<boost::filesystem::path> &, const std::string &_title, const std::string &_description = NULL);85 virtual ~FileTextQuery();86 virtual bool handle();87 };88 26 89 class TextDialog::FilesTextQuery : public Dialog::TQuery<std::vector<boost::filesystem::path> > { 90 public: 91 FilesTextQuery(Parameter<std::vector< boost::filesystem::path> > ¶m, const std::string &_title, const std::string &_description = NULL);92 virtual ~FilesTextQuery();93 virtual bool handle(); 94 }; 27 /** With the following boost::preprocessor code we generate forward declarations 28 * of query class for all desired query types in the Qt specialization class of 29 * Dialog. 30 */ 31 #include "UIElements/GlobalListOfParameterQueries.hpp" 32 #include "UIElements/Dialog_impl_pre.hpp" 95 33 96 class TextDialog::IntTextQuery : public Dialog::TQuery<int> { 97 public: 98 IntTextQuery(Parameter<int> &, const std::string &_title, const std::string &_description = NULL); 99 virtual ~IntTextQuery(); 100 virtual bool handle(); 101 }; 34 #include <boost/preprocessor/facilities/empty.hpp> 102 35 103 class TextDialog::IntsTextQuery : public Dialog::TQuery<std::vector<int> > { 104 public: 105 IntsTextQuery(Parameter<std::vector<int> > &, const std::string &_title, const std::string &_description = NULL); 106 virtual ~IntsTextQuery(); 107 virtual bool handle(); 108 }; 36 // iterate over all parameter query types for forward declarations 37 #if defined GLOBALLISTOFPARAMETERQUERIES_Token && defined GLOBALLISTOFPARAMETERQUERIES_Type 38 #define BOOST_PP_LOCAL_MACRO(n) queryclass_definition(~, n, GLOBALLISTOFPARAMETERQUERIES_Token, GLOBALLISTOFPARAMETERQUERIES_Type, Text) 39 #define BOOST_PP_LOCAL_LIMITS (0, MAXPARAMETERTOKENS-1) 40 #include BOOST_PP_LOCAL_ITERATE() 41 #undef queryclass_definition 42 #endif 109 43 110 class TextDialog::KeyValuePairTextQuery : public Dialog::TQuery<KeyValuePair> { 111 public: 112 KeyValuePairTextQuery(Parameter<KeyValuePair> &, const std::string &_title, const std::string &_description = NULL); 113 virtual ~KeyValuePairTextQuery(); 114 virtual bool handle(); 115 }; 44 #include "Dialog_impl_undef.hpp" 45 /* End of preprocessor code piece */ 116 46 117 class TextDialog::KeyValuePairsTextQuery : public Dialog::TQuery<std::vector<KeyValuePair> > {118 public:119 KeyValuePairsTextQuery(Parameter<std::vector<KeyValuePair> > &, const std::string &_title, const std::string &_description = NULL);120 virtual ~KeyValuePairsTextQuery();121 virtual bool handle();122 };123 124 class TextDialog::MoleculeTextQuery : public Dialog::TQuery<const molecule *> {125 public:126 MoleculeTextQuery(Parameter<const molecule *> &, const std::string &_title, const std::string &_description = NULL);127 virtual ~MoleculeTextQuery();128 virtual bool handle();129 };130 131 class TextDialog::MoleculesTextQuery : public Dialog::TQuery<std::vector<const molecule *> > {132 public:133 MoleculesTextQuery(Parameter<std::vector<const molecule *> > &, const std::string &_title, const std::string &_description = NULL);134 virtual ~MoleculesTextQuery();135 virtual bool handle();136 };137 138 class TextDialog::StringTextQuery : public Dialog::TQuery<std::string> {139 public:140 StringTextQuery(Parameter<std::string> &, const std::string &_title, const std::string &_description = NULL);141 virtual ~StringTextQuery();142 virtual bool handle();143 };144 145 class TextDialog::StringsTextQuery : public Dialog::TQuery<std::vector<std::string> > {146 public:147 StringsTextQuery(Parameter<std::vector<std::string> > &, const std::string &_title, const std::string &_description = NULL);148 virtual ~StringsTextQuery();149 virtual bool handle();150 };151 152 class TextDialog::UnsignedIntTextQuery : public Dialog::TQuery<unsigned int> {153 public:154 UnsignedIntTextQuery(Parameter<unsigned int> &, const std::string &_title, const std::string &_description = NULL);155 virtual ~UnsignedIntTextQuery();156 virtual bool handle();157 };158 159 class TextDialog::UnsignedIntsTextQuery : public Dialog::TQuery<std::vector<unsigned int> > {160 public:161 UnsignedIntsTextQuery(Parameter<std::vector<unsigned int> > &, const std::string &_title, const std::string &_description = NULL);162 virtual ~UnsignedIntsTextQuery();163 virtual bool handle();164 };165 166 class TextDialog::VectorTextQuery : public Dialog::TQuery<Vector> {167 public:168 VectorTextQuery(Parameter<Vector> &, const std::string &_title, const std::string &_description = NULL);169 virtual ~VectorTextQuery();170 virtual bool handle();171 };172 173 class TextDialog::VectorsTextQuery : public Dialog::TQuery<std::vector<Vector> > {174 public:175 VectorsTextQuery(Parameter<std::vector<Vector> > &, const std::string &_title, const std::string &_description = NULL);176 virtual ~VectorsTextQuery();177 virtual bool handle();178 };179 47 180 48 #endif /* TEXTQUERY_HPP_ */ -
src/UIElements/TextUI/TextDialog.hpp
r043598 r37a67f 33 33 34 34 virtual void queryEmpty(const std::string ="", const std::string = ""); 35 virtual void queryBoolean(Parameter<bool> &, const std::string ="", const std::string = ""); 36 virtual void queryInt(Parameter<int> &, const std::string ="", const std::string = ""); 37 virtual void queryInts(Parameter<std::vector<int> > &, const std::string ="", const std::string = ""); 38 virtual void queryUnsignedInt(Parameter<unsigned int> &, const std::string ="", const std::string = ""); 39 virtual void queryUnsignedInts(Parameter<std::vector<unsigned int> > &, const std::string ="", const std::string = ""); 40 virtual void queryString(Parameter<std::string> &, const std::string ="", const std::string = ""); 41 virtual void queryStrings(Parameter<std::vector<std::string> > &, const std::string ="", const std::string = ""); 42 virtual void queryDouble(Parameter<double> &, const std::string ="", const std::string = ""); 43 virtual void queryDoubles(Parameter<std::vector<double> > &, const std::string ="", const std::string = ""); 44 virtual void queryAtom(Parameter<const atom *> &, const std::string = "",std::string = ""); 45 virtual void queryAtoms(Parameter<std::vector<const atom *> > &, const std::string = "",std::string = ""); 46 virtual void queryMolecule(Parameter<const molecule *> &, const std::string = "",std::string = ""); 47 virtual void queryMolecules(Parameter<std::vector<const molecule *> > &, const std::string = "",std::string = ""); 48 virtual void queryVector(Parameter<Vector> &, const std::string ="", const std::string = ""); 49 virtual void queryVectors(Parameter<std::vector<Vector> > &, const std::string ="", const std::string = ""); 50 virtual void queryRealSpaceMatrix(Parameter<RealSpaceMatrix> &, const std::string ="", const std::string = ""); 51 virtual void queryElement(Parameter<const element *> &, const std::string ="", const std::string = ""); 52 virtual void queryElements(Parameter<std::vector<const element *> > &, const std::string ="", const std::string = ""); 53 virtual void queryFile(Parameter<boost::filesystem::path> &, const std::string ="", const std::string = ""); 54 virtual void queryFiles(Parameter<std::vector<boost::filesystem::path> > &, const std::string ="", const std::string = ""); 55 virtual void queryKeyValuePair(Parameter<KeyValuePair> &, const std::string ="", const std::string = ""); 56 virtual void queryKeyValuePairs(Parameter< std::vector<KeyValuePair> > &, const std::string ="", const std::string = ""); 35 36 /** With the following boost::preprocessor code we generate virtual function 37 * definitions for all desired query types in the abstract class Dialog. 38 */ 39 #include "UIElements/GlobalListOfParameterQueries.hpp" 40 #include "UIElements/Dialog_impl_pre.hpp" 41 42 #include <boost/preprocessor/facilities/empty.hpp> 43 44 // iterate over all parameter query types 45 #if defined GLOBALLISTOFPARAMETERQUERIES_Token && defined GLOBALLISTOFPARAMETERQUERIES_Type 46 #define SUFFIX BOOST_PP_EMPTY() 47 #define BOOST_PP_LOCAL_MACRO(n) dialog_declaration(~, n, GLOBALLISTOFPARAMETERQUERIES_Token, GLOBALLISTOFPARAMETERQUERIES_Type) 48 #define BOOST_PP_LOCAL_LIMITS (0, MAXPARAMETERTOKENS-1) 49 #include BOOST_PP_LOCAL_ITERATE() 50 #undef dialog_declaration 51 #undef SUFFIX 52 #endif 53 54 #include "Dialog_impl_undef.hpp" 55 /* End of preprocessor code piece */ 57 56 58 57 protected: 59 // specialized stuff for text queries 60 // all placed into Query/TextQuery.hpp 61 // !please adhere to alphabetical ordering! 62 class AtomTextQuery; 63 class AtomsTextQuery; 64 class BooleanTextQuery; 65 class DoubleTextQuery; 66 class DoublesTextQuery; 67 class ElementTextQuery; 68 class ElementsTextQuery; 58 69 59 class EmptyTextQuery; 70 class FileTextQuery; 71 class FilesTextQuery; 72 class IntTextQuery; 73 class IntsTextQuery; 74 class KeyValuePairTextQuery; 75 class KeyValuePairsTextQuery; 76 class MoleculeTextQuery; 77 class MoleculesTextQuery; 78 class RealSpaceMatrixTextQuery; 79 class StringTextQuery; 80 class StringsTextQuery; 81 class UnsignedIntTextQuery; 82 class UnsignedIntsTextQuery; 83 class VectorTextQuery; 84 class VectorsTextQuery; 60 61 /** With the following boost::preprocessor code we generate forward declarations 62 * of query class for all desired query types in the Qt specialization class of 63 * Dialog. 64 */ 65 #include "UIElements/GlobalListOfParameterQueries.hpp" 66 #include "UIElements/Dialog_impl_pre.hpp" 67 68 #include <boost/preprocessor/facilities/empty.hpp> 69 70 // iterate over all parameter query types for forward declarations 71 #if defined GLOBALLISTOFPARAMETERQUERIES_Token && defined GLOBALLISTOFPARAMETERQUERIES_Type 72 #define BOOST_PP_LOCAL_MACRO(n) forward_declaration(~, n, GLOBALLISTOFPARAMETERQUERIES_Token, TextQuery) 73 #define BOOST_PP_LOCAL_LIMITS (0, MAXPARAMETERTOKENS-1) 74 #include BOOST_PP_LOCAL_ITERATE() 75 #undef forward_declaration 76 #endif 77 78 #include "Dialog_impl_undef.hpp" 79 /* End of preprocessor code piece */ 80 85 81 }; 86 82
Note:
See TracChangeset
for help on using the changeset viewer.