summaryrefslogtreecommitdiff
path: root/src/lib/edje/edje_legacy.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/edje/edje_legacy.c')
-rw-r--r--src/lib/edje/edje_legacy.c158
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);
+}
+