Configurators quickly builds GUI dialogs to modify a given DynamicType object. More...
Classes | |
class | CLAM::ConfigurationGetter< Configuration, Builder > |
A DynamicType attribute visitor that builds a widget for each attribute using a user interface builder. More... | |
class | CLAM::ConfigurationSetter< Configuration, Builder > |
A DynamicType attribute visitor that takes the attribute values from an a 'Builder' which implements the RetrieveValue. More... |
Configurators quickly builds GUI dialogs to modify a given DynamicType object.
They use DynamicType's introspection features to build a dialog for a given graphic toolkit. Qt and FLTK suported at the moment but it would be easy to extend to other toolkits by provident a new Configurator Object.
Their usage is extremely simple. For example, to show a Qt configurator dialog.
CLAM::QTConfigurator dialog; dialog.SetConfig(myDinamicType); dialog.show();
For FLTK you can achieve nearly the same by doing:
CLAM::FLTKConfigurator * configurator = new CLAM::FLTKConfigurator;
configurator->SetConfig(myDynamicType);
configurator->show();
A given configurator overloads the AddWidget and RetrieveValue for every type it wants to deal diferently. ConfigurationGetter and ConfigurationSetter classes are visitors that calls those methods for every attribute on the DynamicType.
If you want a different widget for a given type you can extend the standard Configurator and add your AddWidget/RetrieveValue overloads.
If you want a configurator that would support a given toolkit, just take the QTConfigurator or the FLTKConfigurator as an example and implement your own configurator.