diff options
Diffstat (limited to 'src/lib/efl/interfaces/efl_model.eo')
-rw-r--r-- | src/lib/efl/interfaces/efl_model.eo | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/src/lib/efl/interfaces/efl_model.eo b/src/lib/efl/interfaces/efl_model.eo new file mode 100644 index 0000000000..a920e15eec --- /dev/null +++ b/src/lib/efl/interfaces/efl_model.eo @@ -0,0 +1,156 @@ +struct Efl.Model.Property_Event { + changed_properties: array<const(char) *> *; [[List of changed properties]] + invalidated_properties: array<const(char) *> *; [[Removed properties identified by name]] +} + +interface Efl.Model () +{ + legacy_prefix: null; + eo_prefix: efl_model; + methods { + @property properties { + get { + [[Get properties from model. + + properties_get is due to provide callers a way the fetch the + current properties implemented/used by the model. The event + EFL_MODEL_EVENT_PROPERTIES_CHANGE will be raised to notify + listeners of any modifications in the properties. + + See also \@ref EFL_MODEL_EVENT_PROPERTIES_CHANGE. + + @since 1.14 + ]] + } + values { + properties: const(array<const(char)*>)*; [[array of current properties]] + } + } + property_set { + [[Set a property value of a given property name. + + The caller must ensure to call at least efl_model_prop_list + before being able to see/set properties. This function sets + a new property value into given property name. Once the + operation is completed the concrete implementation should + raise EFL_MODEL_EVENT_PROPERTIES_CHANGE event in order to + notify listeners of the new value of the property. + + If the model doesn't have the property then there are two + possibilities, either raise an error or create the new + property in model + + See @.property_get, \@ref EFL_MODEL_EVENT_PROPERTIES_CHANGE + + @since 1.14 + ]] + params { + @in property: const(char)*; [[Property name]] + @in value: const(generic_value)*; [[New value]] + @inout promise: promise<generic_value>*; [[Promise returning the recorded value or error]] + } + } + property_get { + [[Retrieve the value of a given property name. + + At this point the caller is free to get values from properties. + The event EFL_MODEL_EVENT_PROPERTIES_CHANGE may be raised to + notify listeners of the property/value. + + See @.properties.get, \@ref EFL_MODEL_EVENT_PROPERTIES_CHANGE + + @since 1.14 + ]] + params { + @in property: const(char)*; [[Property name]] + @inout value: promise<generic_value>*; [[Promise of the value that was got]] + } + } + children_slice_get { + [[Get children slice OR full range. + + children_slice_get behaves in two different ways, it may + provide the slice if both $start AND $count are non-zero + OR full range otherwise. + + Since 'slice' is a range, for example if we have 20 childs a + slice could be the range from 3(start) to 4(count), see: + + child 0 [no] + child 1 [no] + child 2 [yes] + child 3 [yes] + child 4 [yes] + child 5 [yes] + child 6 [no] + child 7 [no] + + Optionally the user can call children_count_get to know the + number of children so a valid range can be known in advance. + + See @.children_count_get + + @since 1.14 + ]] + params { + @in start: uint; [[Range begin - start from here. If start and + count are 0 slice is ignored.]] + @in count: uint; [[Range size. If count and start are 0 slice is + ignored.]] + @inout promise: promise<accessor<list<Eo.Base*>*>*>*; [[Promise of the children]] + } + } + children_count_get { + [[Get children count. + + When efl_model_load is completed efl_model_coildren_count_get + can be use to get the number of children. children_count_get + can also be used before calling children_slice_get so a valid + range is known. Event EFL_MODEL_CHILDREN_COUNT_CHANGED is + emitted when count is finished. + + See also @.children_slice_get. + + @since 1.14 + ]] + params { + @inout promise: promise<uint>*; + } + } + child_add { + [[Add a new child. + + Add a new child, possibly dummy, depending on the implementation, + of a internal keeping. When the child is effectively + added the event \@ref EFL_MODEL_EVENT_CHILD_ADD is then raised + and the new child is kept along with other children. + + @since 1.14 + ]] + return: Eo.Base *; + } + child_del { + [[Remove a child. + + Remove a child of a internal keeping. When the child is effectively + removed the event \@ref EFL_MODEL_EVENT_CHILD_REMOVED is then + raised to give a chance for listeners to perform any cleanup + and/or update references. + + @since 1.14 + ]] + params { + @in child: Eo.Base*; [[Child to be removed]] + } + } + } + + events { + properties,changed: Efl.Model.Property_Event; [[Event dispatched when + properties list is + available.]] + child,added; [[Event dispatched when new child is added.]] + child,removed; [[Event dispatched when child is removed.]] + children,count,changed; [[Event dispatched when children count is finished.]] + } +} |