qcubed/framework — pull request #536 by spekary (2014-11-23 23:53:03+00:00)
Title: feature-MetaControlDesigner

This feature lets you right click on a control, and popup a dialog that will let you edit all the aspects of that control, including the type of control, its name, all the QControl options, and all options specific to the control. All this information goes into the generated meta control base. It makes the meta controls much more useful as a code generation tool, and a code separation tool.

This is a pretty extensive change in the framework, and includes:
1. A dialog that interacts with the user to allow the setting of the various options. These options are stored in a new codegen_options.json file that is in the configuration directory.
2. Changes to the templates, controls codegen process so that the options are read from the settings file, and all controls generate their own code for each type of relationship, including a normal column type, forward and reverse relationships, and many-to-many relationships. This is particularly important to allowing plugin controls and custom controls to be included in the codegen process.
3. A mechanism for allowing controls, including user custom controls and plugin controls, to register themselves to notify the dialog that they can be chosen as a control type for a particular type of column or reference.
4. Unit tests that now exercise the meta controls, and verify that data is moved into and out of the controls properly through the generated code.
5. A variety of small fixes I encountered on the way.

User documentation is in the changes to the MetaControl example page, which is included. More extensive developer doc will be included in the wiki once this gets into the core.