}
EOLIAN static void
-_efl_ui_text_edje_object_signal_emit(Eo *obj EINA_UNUSED, Efl_Ui_Text_Data *sd, const char *emission, const char *source)
+_efl_ui_text_elm_layout_signal_emit(Eo *obj EINA_UNUSED, Efl_Ui_Text_Data *sd, const char *emission, const char *source)
{
/* always pass to both edje objs */
edje_object_signal_emit(sd->entry_edje, emission, source);
}
EOLIAN static void
-_efl_ui_text_edje_object_signal_callback_add(Eo *obj, Efl_Ui_Text_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
+_efl_ui_text_elm_layout_signal_callback_add (Eo *obj, Efl_Ui_Text_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
{
Evas_Object *ro;
wd->resize_obj = sd->entry_edje;
- edje_obj_signal_callback_add
+ elm_obj_layout_signal_callback_add
(eo_super(obj, MY_CLASS), emission, source, func_cb, data);
if (sd->scr_edje)
{
wd->resize_obj = sd->scr_edje;
- edje_obj_signal_callback_add
- (eo_super(obj, MY_CLASS), emission, source, func_cb, data);
+ elm_obj_layout_signal_callback_add
+ (eo_super(obj, MY_CLASS), emission, source, func_cb, data);
}
wd->resize_obj = ro;
}
EOLIAN static void *
-_efl_ui_text_edje_object_signal_callback_del(Eo *obj, Efl_Ui_Text_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
+_efl_ui_text_elm_layout_signal_callback_del(Eo *obj, Efl_Ui_Text_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb)
{
Evas_Object *ro;
- void *data_ptr;
+ void *data = NULL;
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
wd->resize_obj = sd->entry_edje;
- data_ptr = edje_obj_signal_callback_del
- (eo_super(obj, MY_CLASS), emission, source, func_cb, data);
+ data = elm_obj_layout_signal_callback_del
+ (eo_super(obj, MY_CLASS), emission, source, func_cb);
if (sd->scr_edje)
{
wd->resize_obj = sd->scr_edje;
- data_ptr = edje_obj_signal_callback_del
- (eo_super(obj, MY_CLASS), emission, source, func_cb, data);
+ data = elm_obj_layout_signal_callback_del
+ (eo_super(obj, MY_CLASS), emission, source, func_cb);
}
wd->resize_obj = ro;
- return data_ptr;
+ return data;
}
#if 0
class Efl.Ui.Text (Elm.Layout, Elm.Interface_Scrollable, Efl.Ui.Clickable,
Elm.Interface.Atspi.Text, Elm.Interface.Atspi.Text.Editable, Efl.File,
- Efl.Ui.Selectable, Efl.Ui.Scrollable, Efl.Ui.Text.Interactive,
- Edje.Object)
+ Efl.Ui.Selectable, Efl.Ui.Scrollable, Efl.Ui.Text.Interactive)
{
methods {
@property scrollable {
Efl.Canvas.Group.group_del;
Efl.Canvas.Group.group_show;
Efl.Canvas.Group.group_hide;
- Edje.Object.signal_callback_add;
- Edje.Object.signal_callback_del;
- Edje.Object.signal_emit;
Elm.Widget.activate;
Elm.Widget.focus_direction_manager_is;
Elm.Widget.theme_apply;
Elm.Layout.theme_enable;
Elm.Layout.sizing_eval;
Elm.Layout.text.get;
+ Elm.Layout.signal_callback_add;
+ Elm.Layout.signal_callback_del;
+ Elm.Layout.signal_emit;
Elm.Layout.text.set;
Elm.Layout.content_aliases.get;
Elm.Interface_Scrollable.policy.set;
}
EOLIAN static void
-_elm_naviframe_edje_object_signal_emit(Eo *obj, Elm_Naviframe_Data *sd EINA_UNUSED, const char *emission, const char *source)
+_elm_naviframe_elm_layout_signal_emit(Eo *obj, Elm_Naviframe_Data *sd EINA_UNUSED, const char *emission, const char *source)
{
Elm_Object_Item *eo_top_it;
if (!eo_top_it) return;
ELM_NAVIFRAME_ITEM_DATA_GET(eo_top_it, top_it);
- edje_obj_signal_emit(VIEW(top_it), emission, source);
+ elm_obj_layout_signal_emit(VIEW(top_it), emission, source);
}
/* content/text smart functions proxying things to the top item, which
}
EOLIAN static void
-_elm_popup_edje_object_signal_emit(Eo *obj EINA_UNUSED, Elm_Popup_Data *sd, const char *emission, const char *source)
+_elm_popup_elm_layout_signal_emit(Eo *obj EINA_UNUSED, Elm_Popup_Data *sd, const char *emission, const char *source)
{
- edje_obj_signal_emit(sd->main_layout, emission, source);
+ elm_layout_signal_emit(sd->main_layout, emission, source);
}
EOLIAN static Eina_Bool
}
EOLIAN static void
-_elm_entry_edje_object_signal_emit(Eo *obj EINA_UNUSED, Elm_Entry_Data *sd, const char *emission, const char *source)
+_elm_entry_elm_layout_signal_emit(Eo *obj EINA_UNUSED, Elm_Entry_Data *sd, const char *emission, const char *source)
{
/* always pass to both edje objs */
edje_object_signal_emit(sd->entry_edje, emission, source);
}
EOLIAN static void
-_elm_entry_edje_object_signal_callback_add(Eo *obj, Elm_Entry_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
+_elm_entry_elm_layout_signal_callback_add (Eo *obj, Elm_Entry_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
{
Evas_Object *ro;
wd->resize_obj = sd->entry_edje;
- edje_obj_signal_callback_add
+ elm_obj_layout_signal_callback_add
(eo_super(obj, MY_CLASS), emission, source, func_cb, data);
if (sd->scr_edje)
{
wd->resize_obj = sd->scr_edje;
- edje_obj_signal_callback_add
- (eo_super(obj, MY_CLASS), emission, source, func_cb, data);
+ elm_obj_layout_signal_callback_add
+ (eo_super(obj, MY_CLASS), emission, source, func_cb, data);
}
wd->resize_obj = ro;
}
EOLIAN static void *
-_elm_entry_edje_object_signal_callback_del(Eo *obj, Elm_Entry_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
+_elm_entry_elm_layout_signal_callback_del(Eo *obj, Elm_Entry_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb)
{
Evas_Object *ro;
- void *data_ptr;
+ void *data = NULL;
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
wd->resize_obj = sd->entry_edje;
- data_ptr = edje_obj_signal_callback_del
- (eo_super(obj, MY_CLASS), emission, source, func_cb, data);
+ data = elm_obj_layout_signal_callback_del
+ (eo_super(obj, MY_CLASS), emission, source, func_cb);
if (sd->scr_edje)
{
wd->resize_obj = sd->scr_edje;
- data_ptr = edje_obj_signal_callback_del
- (eo_super(obj, MY_CLASS), emission, source, func_cb, data);
+ data = elm_obj_layout_signal_callback_del
+ (eo_super(obj, MY_CLASS), emission, source, func_cb);
}
wd->resize_obj = ro;
- return data_ptr;
+ return data;
}
static Eina_Bool
class Elm.Entry (Elm.Layout, Elm.Interface_Scrollable, Efl.Ui.Clickable,
Elm.Interface.Atspi.Text, Elm.Interface.Atspi.Text.Editable, Efl.File,
- Efl.Ui.Selectable, Efl.Ui.Scrollable, Edje.Object)
+ Efl.Ui.Selectable, Efl.Ui.Scrollable)
{
legacy_prefix: elm_entry;
eo_prefix: elm_obj_entry;
Efl.Canvas.Group.group_del;
Efl.Canvas.Group.group_show;
Efl.Canvas.Group.group_hide;
- Edje.Object.signal_callback_add;
- Edje.Object.signal_callback_del;
- Edje.Object.signal_emit;
Elm.Widget.activate;
Elm.Widget.focus_direction_manager_is;
Elm.Widget.theme_apply;
Elm.Layout.theme_enable;
Elm.Layout.sizing_eval;
Elm.Layout.text.get;
+ Elm.Layout.signal_callback_add;
+ Elm.Layout.signal_callback_del;
+ Elm.Layout.signal_emit;
Elm.Layout.text.set;
Elm.Layout.content_aliases.get;
Elm.Interface_Scrollable.policy.set;
/* has to be there *before* parent's smart_add() */
edje = edje_object_add(evas_object_evas_get(obj));
- eo_composite_attach(obj, edje);
elm_widget_resize_object_set(obj, edje, EINA_TRUE);
efl_canvas_group_add(eo_super(obj, MY_CLASS));
return EINA_FALSE;
}
-EAPI void
-elm_layout_signal_emit(Evas_Object *obj, const char *emission, const char *source)
+EOLIAN static void
+_elm_layout_signal_emit(Eo *obj, Elm_Layout_Smart_Data *_pd EINA_UNUSED, const char *emission, const char *source)
{
- edje_obj_signal_emit(obj, emission, source);
-}
+ ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
-EAPI void
-elm_layout_signal_callback_add(Evas_Object *obj,
- const char *emission, const char *source,
- Edje_Signal_Cb func_cb, void *data)
-{
- edje_obj_signal_callback_add(obj, emission, source, func_cb, data);
+ edje_object_signal_emit(wd->resize_obj, emission, source);
}
EOLIAN static void
-_elm_layout_edje_object_signal_callback_add(Eo *obj, Elm_Layout_Smart_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
+_elm_layout_signal_callback_add(Eo *obj, Elm_Layout_Smart_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
{
Edje_Signal_Data *esd;
sd->edje_signals = eina_list_append(sd->edje_signals, esd);
edje_object_signal_callback_add
- (wd->resize_obj, emission, source, _edje_signal_callback, esd);
+ (wd->resize_obj, emission, source,
+ _edje_signal_callback, esd);
}
-EAPI void *
-elm_layout_signal_callback_del(Evas_Object *obj,
- const char *emission, const char *source,
- Edje_Signal_Cb func_cb)
+EOLIAN static void*
+_elm_layout_signal_callback_del(Eo *obj, Elm_Layout_Smart_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb)
{
- return edje_obj_signal_callback_del(obj, emission, source, func_cb, NULL);
-}
-
-EOLIAN static void *
-_elm_layout_edje_object_signal_callback_del(Eo *obj, Elm_Layout_Smart_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data EINA_UNUSED)
-{
- Edje_Signal_Data *esd;
+ Edje_Signal_Data *esd = NULL;
+ void *data = NULL;
Eina_List *l;
- void *data_ptr;
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
sd->edje_signals = eina_list_remove_list(sd->edje_signals, l);
eina_stringshare_del(esd->emission);
eina_stringshare_del(esd->source);
- data_ptr = esd->data;
+ data = esd->data;
+
+ edje_object_signal_callback_del_full
+ (wd->resize_obj, emission, source,
+ _edje_signal_callback, esd);
- edje_obj_signal_callback_del
- (wd->resize_obj, emission, source, _edje_signal_callback, esd);
free(esd);
- return data_ptr; /* stop at 1st match */
+ return data; /* stop at 1st match */
+
}
}
return wd->resize_obj;
}
-EAPI const char *
-elm_layout_data_get(const Evas_Object *obj, const char *key)
+EOLIAN static const char*
+_elm_layout_data_get(const Eo *obj, Elm_Layout_Smart_Data *_pd EINA_UNUSED, const char *key)
{
- return edje_obj_data_get(obj, key);
+ ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
+
+ return edje_object_data_get(wd->resize_obj, key);
}
/* layout's sizing evaluation is deferred. evaluation requests are
evas_object_smart_changed(obj);
}
-EAPI int
-elm_layout_freeze(Evas_Object *obj)
-{
- return edje_obj_freeze(obj);
-}
-
EOLIAN static int
-_elm_layout_edje_object_freeze(Eo *obj, Elm_Layout_Smart_Data *sd)
+_elm_layout_freeze(Eo *obj, Elm_Layout_Smart_Data *_pd EINA_UNUSED)
{
+ ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, 1);
+ ELM_LAYOUT_DATA_GET(obj, sd);
+
if ((sd->frozen)++ != 0) return sd->frozen;
- edje_obj_freeze(eo_super(obj, MY_CLASS));
+ edje_object_freeze(wd->resize_obj);
return 1;
}
-EAPI int
-elm_layout_thaw(Evas_Object *obj)
-{
- return edje_obj_thaw(obj);
-}
-
EOLIAN static int
-_elm_layout_edje_object_thaw(Eo *obj, Elm_Layout_Smart_Data *sd)
+_elm_layout_thaw(Eo *obj, Elm_Layout_Smart_Data *_pd EINA_UNUSED)
{
+ ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, 0);
+ ELM_LAYOUT_DATA_GET(obj, sd);
+
if (--(sd->frozen) != 0) return sd->frozen;
- edje_obj_thaw(eo_super(obj, MY_CLASS));
+ edje_object_thaw(wd->resize_obj);
- _elm_layout_sizing_eval(obj, sd);
+ elm_obj_layout_sizing_eval(obj);
return 0;
}
real_part: string; [[Target part name for the alias set on Elm.Layout_Part_Proxies_Description::real_part. An example of usage would be "default" on that field, with "elm.content.swallow" on this one]]
}
-class Elm.Layout (Elm.Widget, Efl.Part, Efl.Container, Efl.File, Edje.Object)
+class Elm.Layout (Elm.Widget, Efl.Part, Efl.Container, Efl.File)
{
legacy_prefix: elm_layout;
eo_prefix: elm_obj_layout;
@in part_name: string; [[A part from loaded edje group.]]
}
}
+ freeze {
+ [[Freezes the Elementary layout object.
+
+ This function puts all changes on hold. Successive freezes will
+ nest, requiring an equal number of thaws.
+
+ See also @.thaw.
+ ]]
+ return: int; [[The frozen state or 0 on error.]]
+ }
theme_enable {
legacy: null;
return: bool;
text: string @nullable; [[The text to set.]]
}
}
+ signal_callback_add {
+ [[Add a callback for a (Edje) signal emitted by a layout widget's
+ underlying Edje object.
+
+ This function connects a callback function to a signal emitted by
+ the underlying Edje object of $obj. Globs are accepted in either
+ the emission or source strings.
+ ]]
+ params {
+ @in emission: string; [[The signal's name string.]]
+ @in source: string; [[The signal's source string.]]
+ @in func: Edje.Signal_Cb; [[The callback function to be executed
+ when the signal is emitted.]]
+ @in data: void_ptr @optional; [[A pointer to data to pass in to the
+ callback function.]]
+ }
+ }
part_cursor_set {
[[Sets a specific cursor for an edje part.]]
return: bool; [[$true on success or $false on failure, that may be
legacy: null;
return: bool;
}
+ data_get @const {
+ [[Get the edje data from the given layout.
+
+ This function fetches data specified inside the edje theme of
+ this layout. This function return NULL if data is not found.
+
+ In EDC this comes from a data block within the group block that
+ $obj was loaded from.
+ ]]
+ /* FIXME-doc
+ @code
+ collections {
+ group {
+ name: "a_group";
+ data {
+ item: "key1" "value1";
+ item: "key2" "value2";
+ }
+ }
+ }
+ @endcode
+ */
+ return: string; [[The edje data string.]]
+ params {
+ @in key: string; [[The data key.]]
+ }
+ }
+ signal_callback_del {
+ [[Remove a signal-triggered callback from a given layout widget.
+
+ This function removes the last callback attached to a signal
+ emitted by the undelying Edje object of $obj, with parameters
+ $emission, $source and $func matching exactly those passed to a
+ previous call to @.signal_callback_add. The data pointer that
+ was passed to this call will be returned.
+ ]]
+ return: void_ptr; [[The data pointer of the signal callback (passed on
+ @.signal_callback_add) or $null on errors.]]
+ params {
+ @in emission: string; [[The signal's name string.]]
+ @in source: string; [[The signal's source string.]]
+ @in func: Edje.Signal_Cb; [[The callback function being executed
+ when the signal was emitted.]]
+ }
+ }
+ thaw {
+ [[Thaws the Elementary object.
+
+ This function thaws the given Edje object and the Elementary
+ sizing calc.
+
+ Note: If sucessives freezes were done, an equal number of
+ thaws will be required.
+
+ See also @.freeze.
+ ]]
+ return: int; [[The frozen state or 0 if the object is not frozen or on error.]]
+ }
+ signal_emit {
+ [[Send a (Edje) signal to a given layout widget's underlying Edje
+ object.
+
+ This function sends a signal to the underlying Edje object of
+ $obj. An Edje program on that Edje object's definition can
+ respond to a signal by specifying matching 'signal' and
+ 'source' fields.
+ ]]
+ params {
+ @in emission: string; [[The signal's name string.]]
+ @in source: string; [[The signal's source string.]]
+ }
+ }
part_cursor_unset {
[[Unsets a cursor previously set with @.part_cursor_set.]]
return: bool;
Efl.Container.content.get;
Efl.Container.content_unset;
Efl.Part.part;
- Edje.Object.freeze;
- Edje.Object.thaw;
- Edje.Object.signal_callback_add;
- Edje.Object.signal_callback_del;
}
events {
theme,changed;
-class Elm.Naviframe (Elm.Layout, Elm.Interface.Atspi_Widget_Action, Edje.Object)
+class Elm.Naviframe (Elm.Layout, Elm.Interface.Atspi_Widget_Action)
{
legacy_prefix: elm_naviframe;
eo_prefix: elm_obj_naviframe;
Efl.Canvas.Group.group_del;
Efl.Canvas.Group.group_show;
Efl.Canvas.Group.group_add;
- Edje.Object.signal_emit;
Elm.Widget.focus_direction;
Elm.Widget.focus_next_manager_is;
Elm.Widget.focus_direction_manager_is;
Elm.Widget.event;
Elm.Layout.text.set;
Elm.Layout.text.get;
+ Elm.Layout.signal_emit;
Elm.Layout.sizing_eval;
Elm.Interface.Atspi_Widget_Action.elm_actions.get;
Efl.Part.part;
}
-class Elm.Popup (Elm.Layout, Elm.Interface.Atspi_Widget_Action, Edje.Object)
+class Elm.Popup (Elm.Layout, Elm.Interface.Atspi_Widget_Action)
{
legacy_prefix: elm_popup;
eo_prefix: elm_obj_popup;
Eo.Base.constructor;
Efl.Canvas.Group.group_del;
Efl.Canvas.Group.group_add;
- Edje.Object.signal_emit;
Elm.Widget.focus_direction;
Elm.Widget.focus_next_manager_is;
Elm.Widget.theme_apply;
Elm.Layout.text.set;
Elm.Layout.text.get;
Elm.Layout.sizing_eval;
+ Elm.Layout.signal_emit;
Elm.Interface.Atspi_Widget_Action.elm_actions.get;
Elm.Interface.Atspi_Accessible.state_set.get;
Efl.Part.part;
}
END_TEST
-START_TEST(elm_layout_edje_attach)
-{
- char buf[PATH_MAX];
- Evas_Object *win, *layout;
- const Evas_Object *part;
- int r, g, b, a;
-
- elm_init(1, NULL);
- win = elm_win_add(NULL, "layout", ELM_WIN_BASIC);
-
- layout = eo_add(ELM_LAYOUT_CLASS, win);
- snprintf(buf, sizeof(buf), "%s/objects/test.edj", ELM_TEST_DATA_DIR);
- edje_object_file_set(layout, buf, "layout_edje");
- evas_object_show(layout);
-
- edje_object_color_class_set(layout, "red", 255, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0);
- part = edje_object_part_object_get(layout, "red");
- evas_object_color_get(part, &r, &g, &b, &a);
- fail_if((r != 255) || (g != 0) || (b != 0) || (a != 255));
-
- edje_object_signal_emit(layout, "change", "test");
- edje_object_message_signal_process(layout);
- part = edje_object_part_object_get(layout, "blue");
- evas_object_color_get(part, &r, &g, &b, &a);
- fail_if((r != 0) || (g != 0) || (b != 255) || (a != 255));
-
- elm_shutdown();
-}
-END_TEST
-
void elm_test_layout(TCase *tc)
{
tcase_add_test(tc, elm_atspi_role_get);
tcase_add_test(tc, elm_layout_swallows);
- tcase_add_test(tc, elm_layout_edje_attach);
}