The data controller widget is created by reflecting over the given
data type. You can use ControlledBy as a UDA on a struct or
just let it create things automatically.
Unlike dialog, this uses real-time updating of the data and
you add it to another window yourself.
The way it works is any public members are given a widget based
on their data type, and public methods trigger an action button
if no relevant parameters or a dialog action if it does have
parameters, similar to the menu facility.
If you change data programmatically, without going through the
DataControllerWidget methods, you will have to tell it something
has changed and it needs to redraw. This is done with the invalidate
method.
The data controller widget is created by reflecting over the given data type. You can use ControlledBy as a UDA on a struct or just let it create things automatically.
Unlike dialog, this uses real-time updating of the data and you add it to another window yourself.
The way it works is any public members are given a widget based on their data type, and public methods trigger an action button if no relevant parameters or a dialog action if it does have parameters, similar to the menu facility.
If you change data programmatically, without going through the DataControllerWidget methods, you will have to tell it something has changed and it needs to redraw. This is done with the invalidate method.