efl/src/lib/efl/interfaces/efl_model.eo

159 lines
5.7 KiB
Plaintext

struct Efl.Model_Property_Event {
[[EFL model property event data structure]]
changed_properties: array<string>; [[List of changed properties]]
invalidated_properties: array<string>; [[Removed properties identified by name]]
}
interface Efl.Model ()
{
[[Efl model interface]]
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_CHANGED will be raised to notify
listeners of any modifications in the properties.
See also \@ref EFL_MODEL_EVENT_PROPERTIES_CHANGED.
@since 1.14
]]
}
values {
properties: array<string>; [[Array of current properties]]
}
}
@property 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_CHANGED 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_CHANGED
@since 1.14
]]
return: ptr(Eina.Future); [[Return an error in case the property could not be set, the value that was set otherwise.]]
}
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_CHANGED may be raised to
notify listeners of the property/value.
See @.properties.get, \@ref EFL_MODEL_EVENT_PROPERTIES_CHANGED
@since 1.14
]]
}
keys {
property: string; [[Property name]]
}
values {
value: any_value_ptr; [[Property value]]
}
}
children_slice_get {
[[Get children slice OR full range.
children_slice_get behaves in two different ways, it may
provide the slice if $count is 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) with 4(count), see:
child 0 [no]
child 1 [no]
child 2 [no]
child 3 [yes]
child 4 [yes]
child 5 [yes]
child 6 [yes]
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.]]
@in count: uint; [[Range size. If count is 0, start is
ignored.]]
}
return: ptr(Eina.Future); [[Array of childrens]]
}
@property children_count {
get {
[[Get children count.
When efl_model_load is completed efl_model_coildren_count_get
can be used 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
]]
}
values {
count: uint; [[Current known children count]]
}
}
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_ADDED is then raised
and the new child is kept along with other children.
@since 1.14
]]
return: Efl.Object; [[Child object]]
}
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: Efl.Object; [[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.]]
}
}