Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Fixes #377
This WIP and currently meant as RFC.This PR adds support for data bindings in the form of special GObjects that just store one value.
The interesting part is, that these objects have - similar to factories - a
guard()method that creates an RAII guard.This guard implements
DerefandDerefMutfor the actual data type you want to access, which makes it more convenient than using getter and setter methods.For objects and widgets with a property that describes their state it is made even easier to connect a binding.
For example,
ToggleButtonhas an "active" bool property that indicates whether the button is active or not.This will most likely be the information you want, so a special trait provides the
with_binding()constructor method to directly bind the state to the binding.Check out the data_binding example to get a better idea of what I'm talking about :)
CC @Ayush1325
Checklist