rimmed pushed a commit to branch master.

http://git.enlightenment.org/tools/eflete.git/commit/?id=8995164f4fc94c9d167183236676395ad4efca55

commit 8995164f4fc94c9d167183236676395ad4efca55
Author: Mykyta Biliavskyi <m.biliavs...@samsung.com>
Date:   Tue Jan 17 17:02:30 2017 +0200

    Editor: add proxy for edje_edit_image_set_set API.
    
    Added signal SIGNAL_EDITOR_IMAGE_SET_DELETED for make possible
    communication between resource manager and editor modules.
    This signal will be emmited when new image set will be delete.
    Enhanced Resource manager internal API. Added _resource_image_set_del
    function, that correctly delete image set. This function take care about
    any relative resources.
---
 src/bin/common/signals.h                           | 10 ++++
 src/bin/editor/editor.h                            |  3 +
 src/bin/editor/editor_top_level.c                  | 18 ++++++
 src/bin/resource_manager/resource_manager_free.c   | 70 ++++++++++++++++++++++
 .../resource_manager/resource_manager_private.h    | 10 +++-
 src/bin/resource_manager/resource_manager_react.c  | 16 +++++
 6 files changed, 125 insertions(+), 2 deletions(-)

diff --git a/src/bin/common/signals.h b/src/bin/common/signals.h
index 5ac1004..71ac08c 100644
--- a/src/bin/common/signals.h
+++ b/src/bin/common/signals.h
@@ -573,6 +573,16 @@ typedef struct {
  * @ingroup Window
  */
 #define SIGNAL_EDITOR_IMAGE_SET_ADDED "SIGNAL_EDITOR_IMAGE_SET_ADDED"
+
+/**
+ * emited when image set deleted.
+ * eventinfo - image set name.
+ *
+ * @ingroup Window
+ */
+#define SIGNAL_EDITOR_IMAGE_SET_DELETED "SIGNAL_EDITOR_IMAGE_SET_DELETED"
+
+
 /**
  * emited when textblock style is added.
  * eventinfo - NULL
diff --git a/src/bin/editor/editor.h b/src/bin/editor/editor.h
index 144c869..1bbe0d6 100644
--- a/src/bin/editor/editor.h
+++ b/src/bin/editor/editor.h
@@ -292,6 +292,9 @@ Eina_Bool
 editor_image_set_add(Evas_Object *obj, const char *name, Eina_Bool notify) 
EINA_WARN_UNUSED_RESULT;
 
 Eina_Bool
+editor_image_set_del(Evas_Object *obj, const char *name, 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 e0bf277..953ba79 100644
--- a/src/bin/editor/editor_top_level.c
+++ b/src/bin/editor/editor_top_level.c
@@ -76,6 +76,24 @@ editor_image_set_add(Evas_Object *obj, const char *name, 
Eina_Bool notify)
    return true;
 }
 
+Eina_Bool
+editor_image_set_del(Evas_Object *obj, const char *name, Eina_Bool notify)
+{
+   assert(obj != NULL);
+   assert(name != NULL);
+
+   if (!edje_edit_image_set_del(obj, name))
+     return false;
+
+   if (!editor_save_all(obj))
+     return false;
+   _editor_project_changed();
+
+   if (notify)
+     evas_object_smart_callback_call(ap.win, SIGNAL_EDITOR_IMAGE_SET_DELETED, 
(void *)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_free.c 
b/src/bin/resource_manager/resource_manager_free.c
index 3edd13c..9b28139 100644
--- a/src/bin/resource_manager/resource_manager_free.c
+++ b/src/bin/resource_manager/resource_manager_free.c
@@ -139,6 +139,76 @@ _resource_image_del(Project *pro, Image2 *res_image)
 }
 
 void
+_resource_image_set_del(Project *pro, Image_Set2 *res_image_set)
+{
+   Eina_List *l, *images;
+   Resource2 *res;
+   State2 *state;
+   Image_Set2 *image_set;
+   int idx;
+
+   Eina_Bool is_opened = false;
+
+   EINA_LIST_FOREACH(res_image_set->common.used_in, l, res)
+     {
+        if (res->common.type == RESOURCE2_TYPE_STATE)
+          {
+             state = (State2 *)res;
+             if (res_image_set->common.name == state->normal)
+               {
+                  if (!state->part->group->edit_object)
+                    {
+                       is_opened = true;
+                       resource_group_edit_object_load(pro,
+                                                       state->part->group,
+                                                       
evas_object_evas_get(ap.win));
+                    }
+                  
CRIT_ON_FAIL(editor_state_image_set(state->part->group->edit_object,
+                                                      NULL,
+                                                      false,
+                                                      true,
+                                                      state->part->common.name,
+                                                      state->common.name,
+                                                      state->val,
+                                                      
EFLETE_DUMMY_IMAGE_NAME));
+                  if (is_opened)
+                    resource_group_edit_object_unload(state->part->group);
+                  eina_stringshare_del(state->normal);
+                  state->normal = 
eina_stringshare_add(EFLETE_DUMMY_IMAGE_NAME);
+               }
+             else
+               {
+                  /* NOT WORKING FOR NOW SINCE TWEEN ALREADY DELETED SOMEHOW
+                  
CRIT_ON_FAIL(editor_state_tween_del(state->part->group->edit_object,
+                                                      NULL,
+                                                      false,
+                                                      true,
+                                                      state->part->common.name,
+                                                      state->common.name,
+                                                      state->val,
+                                                      res_image->common.name));
+                   */
+                  state->tweens = eina_list_remove(state->tweens, 
res_image_set);
+               }
+          }
+        else if (res->common.type == RESOURCE2_TYPE_IMAGE_SET)
+          {
+             image_set = (Image_Set2 *)res;
+
+             TODO("Make editor_image_set_image_del");
+             images = edje_edit_image_set_images_list_get(pro->global_object,
+                                                          
image_set->common.name);
+             idx = eina_list_data_idx(images, (void 
*)res_image_set->common.name);
+             edje_edit_image_set_image_del(pro->global_object,
+                                           image_set->common.name,
+                                           idx);
+             edje_edit_string_list_free(images);
+          }
+     }
+   _resource_image_set_free(pro, res_image_set);
+}
+
+void
 _resource_tone_free(Project *pro, Tone2 *res)
 {
    pro->RM.tones = eina_list_remove(pro->RM.tones, res);
diff --git a/src/bin/resource_manager/resource_manager_private.h 
b/src/bin/resource_manager/resource_manager_private.h
index fa8d81e..0de2644 100644
--- a/src/bin/resource_manager/resource_manager_private.h
+++ b/src/bin/resource_manager/resource_manager_private.h
@@ -175,6 +175,12 @@ void
 _resource_image_del(Project *pro, Image2 *res_image);
 
 void
+_resource_image_set_free(Project *pro, Image_Set2 *res);
+
+void
+_resource_image_set_del(Project *pro, Image_Set2 *res_image);
+
+void
 _resource_tone_free(Project *pro, Tone2 *res);
 
 void
@@ -203,8 +209,8 @@ _resource_style_del(Project *pro, Style2 *res_style);
 
 /***** NOT IMPLEMENTED YET BUT NEED FREEING ***********/
 
-void
-_resource_image_set_free(Project *pro, Image_Set2 *res);
+//void
+//_resource_image_set_free(Project *pro, Image_Set2 *res);
 
 void
 _resource_font_free(Project *pro, Font2 *res);
diff --git a/src/bin/resource_manager/resource_manager_react.c 
b/src/bin/resource_manager/resource_manager_react.c
index 501c767..8b106ac 100644
--- a/src/bin/resource_manager/resource_manager_react.c
+++ b/src/bin/resource_manager/resource_manager_react.c
@@ -651,6 +651,20 @@ _image_set_added(void *data,
 }
 
 static void
+_image_set_deleted(void *data,
+             Evas_Object *obj __UNUSED__,
+             void *ei)
+{
+   Image_Set2 *res;
+   const char *name = (const char *)ei;
+   Project *project = (Project *)data;
+
+
+   res = (Image_Set2 *)resource_manager_find(project->RM.image_sets, name);
+   _resource_image_set_del(project, res);
+}
+
+static void
 _style_added(void *data,
              Evas_Object *obj __UNUSED__,
              void *ei)
@@ -955,6 +969,7 @@ _resource_callbacks_register(Project *project)
    evas_object_smart_callback_add(ap.win,  SIGNAL_EDITOR_IMAGE_ADDED, 
_image_added, project);
    evas_object_smart_callback_add(ap.win,  SIGNAL_EDITOR_IMAGE_DELETED, 
image_deleted, 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_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);
@@ -991,6 +1006,7 @@ _resource_callbacks_unregister(Project *project)
    evas_object_smart_callback_del_full(ap.win,  SIGNAL_EDITOR_IMAGE_ADDED, 
_image_added, project);
    evas_object_smart_callback_del_full(ap.win,  SIGNAL_EDITOR_IMAGE_DELETED, 
image_deleted, 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_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);

-- 


Reply via email to