rimmed pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=649c528ab5b3aef5380d1813cfc987fba90714b4
commit 649c528ab5b3aef5380d1813cfc987fba90714b4 Author: Mykyta Biliavskyi <m.biliavs...@samsung.com> Date: Tue Jan 17 17:09:42 2017 +0200 Editor: add proxy for edje_edit_image_set_set API. Added signal SIGNAL_EDITOR_IMAGE_SET_IMAGE_DEL for make possible communication between resource manager and editor modules. This signal will be emmited when image will be deleted from image set. Implemented editor API and resource manager reaction. --- src/bin/common/signals.h | 7 ++++ src/bin/editor/editor.h | 3 ++ src/bin/editor/editor_top_level.c | 40 +++++++++++++++++++++++ src/bin/resource_manager/resource_manager_react.c | 18 ++++++++++ 4 files changed, 68 insertions(+) diff --git a/src/bin/common/signals.h b/src/bin/common/signals.h index 956c712..0959130 100644 --- a/src/bin/common/signals.h +++ b/src/bin/common/signals.h @@ -595,6 +595,13 @@ typedef struct { */ #define SIGNAL_EDITOR_IMAGE_SET_IMAGE_ADD "SIGNAL_EDITOR_IMAGE_SET_IMAGE_ADD" +/** + * emited on delete image from image set + * eventinfo - Image_Set_Change struct + * + * @ingroup Window + */ +#define SIGNAL_EDITOR_IMAGE_SET_IMAGE_DEL "SIGNAL_EDITOR_IMAGE_SET_IMAGE_DEL" /** * emited when textblock style is added. diff --git a/src/bin/editor/editor.h b/src/bin/editor/editor.h index d190cc2..c67cac4 100644 --- a/src/bin/editor/editor.h +++ b/src/bin/editor/editor.h @@ -298,6 +298,9 @@ Eina_Bool editor_image_set_image_add(Evas_Object *obj, const char *image_set_name, const char *image, Eina_Bool notify) EINA_WARN_UNUSED_RESULT; Eina_Bool +editor_image_set_image_del(Evas_Object *obj, const char *image_set_name, const char *image, Eina_Bool notify) EINA_WARN_UNUSED_RESULT; + +Eina_Bool editor_image_set_image_border_left_set(Evas_Object *obj, const char *name, int position, int l) EINA_WARN_UNUSED_RESULT; Eina_Bool diff --git a/src/bin/editor/editor_top_level.c b/src/bin/editor/editor_top_level.c index 50d8298..dde9251 100644 --- a/src/bin/editor/editor_top_level.c +++ b/src/bin/editor/editor_top_level.c @@ -122,6 +122,46 @@ editor_image_set_image_add(Evas_Object *obj, const char *image_set_name, const c return true; } +Eina_Bool +editor_image_set_image_del(Evas_Object *obj, const char *image_set_name, const char *image_name, Eina_Bool notify) +{ + assert(obj != NULL); + assert(image_set_name != NULL); + + Image_Set_Change send; + Eina_List *images = NULL, *l = NULL; + int pos = 0; + const char *name = NULL; + + images = edje_edit_image_set_images_list_get(obj, image_set_name); + EINA_LIST_FOREACH(images, l, name) + { + if (!strcmp(image_name, name)) + break; + pos++; + } + + + if (!edje_edit_image_set_image_del(obj, image_set_name, pos)) + return false; + + if (!editor_save_all(obj)) + return false; + _editor_project_changed(); + + if (notify) + { + send.set_name = eina_stringshare_add(image_set_name); + send.image_position = pos; + send.image_name = eina_stringshare_add(image_name); + evas_object_smart_callback_call(ap.win, SIGNAL_EDITOR_IMAGE_SET_IMAGE_DEL, &send); + eina_stringshare_del(send.set_name); + eina_stringshare_del(send.image_name); + } + + return true; +} + inline static Eina_Bool _image_set_image_attribute_save(Evas_Object *obj, Editor_Attribute_Resource_Change *send) { diff --git a/src/bin/resource_manager/resource_manager_react.c b/src/bin/resource_manager/resource_manager_react.c index 0f06b62..1423386 100644 --- a/src/bin/resource_manager/resource_manager_react.c +++ b/src/bin/resource_manager/resource_manager_react.c @@ -680,6 +680,22 @@ _image_set_image_add(void *data, } static void +_image_set_image_del(void *data, + Evas_Object *obj __UNUSED__, + void *ei) +{ + Image_Set2 *image_set_res; + Image2 *image_res; + Image_Set_Change *change = (Image_Set_Change *)ei; + Project *pro = (Project *)data; + + image_set_res = (Image_Set2 *)resource_manager_find(pro->RM.image_sets, change->set_name); + image_res = (Image2 *)resource_manager_find(pro->RM.images, change->image_name); + + _resource_usage_resource_del((Resource2 *)image_set_res, (Resource2 *)image_res); +} + +static void _style_added(void *data, Evas_Object *obj __UNUSED__, void *ei) @@ -986,6 +1002,7 @@ _resource_callbacks_register(Project *project) evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_IMAGE_SET_ADDED, _image_set_added, project); evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_IMAGE_SET_DELETED, _image_set_deleted, project); evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_IMAGE_SET_IMAGE_ADD, _image_set_image_add, project); + evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_IMAGE_SET_IMAGE_DEL, _image_set_image_del, project); evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_STYLE_ADDED, _style_added, project); evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_STYLE_DELETED, _style_deleted, project); evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_STYLE_TAG_CHANGED, _style_changed, project); @@ -1024,6 +1041,7 @@ _resource_callbacks_unregister(Project *project) evas_object_smart_callback_del_full(ap.win, SIGNAL_EDITOR_IMAGE_SET_ADDED, _image_set_added, project); evas_object_smart_callback_del_full(ap.win, SIGNAL_EDITOR_IMAGE_SET_DELETED, _image_set_deleted, project); evas_object_smart_callback_del_full(ap.win, SIGNAL_EDITOR_IMAGE_SET_IMAGE_ADD, _image_set_image_add, project); + evas_object_smart_callback_del_full(ap.win, SIGNAL_EDITOR_IMAGE_SET_IMAGE_DEL, _image_set_image_del, project); evas_object_smart_callback_del_full(ap.win, SIGNAL_EDITOR_STYLE_ADDED, _style_added, project); evas_object_smart_callback_del_full(ap.win, SIGNAL_EDITOR_STYLE_DELETED, _style_deleted, project); evas_object_smart_callback_del_full(ap.win, SIGNAL_EDITOR_STYLE_TAG_CHANGED, _style_changed, project); --