diff options
Diffstat (limited to 'src/lib/edje/edje_legacy.c')
-rw-r--r-- | src/lib/edje/edje_legacy.c | 158 |
1 files changed, 157 insertions, 1 deletions
diff --git a/src/lib/edje/edje_legacy.c b/src/lib/edje/edje_legacy.c index 5b11f5dc49..f26ec2b584 100644 --- a/src/lib/edje/edje_legacy.c +++ b/src/lib/edje/edje_legacy.c @@ -495,7 +495,7 @@ edje_object_part_text_item_list_get(const Eo *obj EINA_UNUSED, const char *part) return NULL; } -EOLIAN Eina_Bool +EAPI Eina_Bool edje_object_part_text_item_geometry_get(const Eo *obj EINA_UNUSED, const char *part, const char *item, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch) { Edje_Real_Part *rp; @@ -513,3 +513,159 @@ edje_object_part_text_item_geometry_get(const Eo *obj EINA_UNUSED, const char *p return EINA_FALSE; } + +EAPI void +edje_object_text_insert_filter_callback_add(Eo *obj EINA_UNUSED, const char *part, Edje_Text_Filter_Cb func, void *data) +{ + Edje_Text_Insert_Filter_Callback *cb; + Edje *ed; + + ed = efl_data_scope_get(obj, EDJE_OBJECT_CLASS); + + if ((!ed) || (!part)) return; + cb = calloc(1, sizeof(Edje_Text_Insert_Filter_Callback)); + cb->part = eina_stringshare_add(part); + cb->func = func; + cb->data = (void *)data; + ed->text_insert_filter_callbacks = + eina_list_append(ed->text_insert_filter_callbacks, cb); +} + +EAPI void * +edje_object_text_insert_filter_callback_del(Eo *obj EINA_UNUSED, const char *part, Edje_Text_Filter_Cb func) +{ + Edje_Text_Insert_Filter_Callback *cb; + Eina_List *l; + Edje *ed; + + ed = efl_data_scope_get(obj, EDJE_OBJECT_CLASS); + + if ((!ed) || (!part)) return NULL; + EINA_LIST_FOREACH(ed->text_insert_filter_callbacks, l, cb) + { + if ((!strcmp(cb->part, part)) && (cb->func == func)) + { + void *data = cb->data; + ed->text_insert_filter_callbacks = + eina_list_remove_list(ed->text_insert_filter_callbacks, l); + eina_stringshare_del(cb->part); + free(cb); + return data; + } + } + + return NULL; +} + +EAPI void * +edje_object_text_insert_filter_callback_del_full(Eo *obj EINA_UNUSED, const char *part, Edje_Text_Filter_Cb func, void *data) +{ + Edje_Text_Insert_Filter_Callback *cb; + Eina_List *l; + Edje *ed; + + ed = efl_data_scope_get(obj, EDJE_OBJECT_CLASS); + + if ((!ed) || (!part)) return NULL; + EINA_LIST_FOREACH(ed->text_insert_filter_callbacks, l, cb) + { + if ((!strcmp(cb->part, part)) && (cb->func == func) && + (cb->data == data)) + { + void *tmp = cb->data; + ed->text_insert_filter_callbacks = + eina_list_remove_list(ed->text_insert_filter_callbacks, l); + eina_stringshare_del(cb->part); + free(cb); + return tmp; + } + } + + return NULL; +} + +EAPI void +edje_object_text_markup_filter_callback_add(Eo *obj EINA_UNUSED, const char *part, Edje_Markup_Filter_Cb func, void *data) +{ + Edje_Markup_Filter_Callback *cb; + Edje *ed; + + ed = efl_data_scope_get(obj, EDJE_OBJECT_CLASS); + + if ((!ed) || (!part)) return; + cb = calloc(1, sizeof(Edje_Markup_Filter_Callback)); + cb->part = eina_stringshare_add(part); + cb->func = func; + cb->data = (void *)data; + ed->markup_filter_callbacks = + eina_list_append(ed->markup_filter_callbacks, cb); +} + +EAPI void * +edje_object_text_markup_filter_callback_del(Eo *obj EINA_UNUSED, const char *part, Edje_Markup_Filter_Cb func) +{ + Edje_Markup_Filter_Callback *cb; + Eina_List *l; + Edje *ed; + + ed = efl_data_scope_get(obj, EDJE_OBJECT_CLASS); + + if ((!ed) || (!part)) return NULL; + EINA_LIST_FOREACH(ed->markup_filter_callbacks, l, cb) + { + if ((!strcmp(cb->part, part)) && (cb->func == func)) + { + void *data = cb->data; + ed->markup_filter_callbacks = + eina_list_remove_list(ed->markup_filter_callbacks, l); + eina_stringshare_del(cb->part); + free(cb); + return data; + } + } + + return NULL; +} + +EAPI void * +edje_object_text_markup_filter_callback_del_full(Eo *obj EINA_UNUSED, const char *part, Edje_Markup_Filter_Cb func, void *data) +{ + Edje_Markup_Filter_Callback *cb; + Eina_List *l; + Edje *ed; + + ed = efl_data_scope_get(obj, EDJE_OBJECT_CLASS); + + if ((!ed) || (!part)) return NULL; + EINA_LIST_FOREACH(ed->markup_filter_callbacks, l, cb) + { + if ((!strcmp(cb->part, part)) && (cb->func == func) && + (cb->data == data)) + { + void *tmp = cb->data; + ed->markup_filter_callbacks = + eina_list_remove_list(ed->markup_filter_callbacks, l); + eina_stringshare_del(cb->part); + free(cb); + return tmp; + } + } + + return NULL; +} + +EAPI void +edje_object_part_text_user_insert(const Eo *obj, const char *part, const char *text) +{ + Edje_Real_Part *rp; + Edje *ed; + + ed = efl_data_scope_get(obj, EDJE_OBJECT_CLASS); + + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(&ed, part); + if (!rp) return; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + _edje_entry_user_insert(rp, text); +} + |