rimmed pushed a commit to branch master.

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

commit c500e83ccd3d1e8c2ada9508e03ca86c417ce077
Author: Vitalii Vorobiov <[email protected]>
Date:   Tue Sep 6 19:04:11 2016 +0300

    resource_manager2: add new group as resource
    
    ALL dependencies copied as well together with group's resources when group 
added
    as a copy
---
 src/bin/resource_manager/resource_manager_build.c  | 66 +++++++++++++---------
 src/bin/resource_manager/resource_manager_load.c   | 18 ++++--
 .../resource_manager/resource_manager_private.h    |  9 +++
 src/bin/resource_manager/resource_manager_react.c  | 29 ++++++----
 4 files changed, 78 insertions(+), 44 deletions(-)

diff --git a/src/bin/resource_manager/resource_manager_build.c 
b/src/bin/resource_manager/resource_manager_build.c
index 41d5ca5..d134413 100644
--- a/src/bin/resource_manager/resource_manager_build.c
+++ b/src/bin/resource_manager/resource_manager_build.c
@@ -233,15 +233,48 @@ _program_dependency_load(Project *pro, Group2 *group, 
Program2 *program)
 }
 
 void
+_group_dependency_load(Project *pro, Group2 *group)
+{
+   Resource2 *used;
+   Part2 *part;
+   Program2 *program;
+   Eina_Stringshare *main_group_name;
+   Eina_List *l;
+
+   _resource_group_edit_object_load(pro, group, 
evas_object_evas_get(pro->global_object));
+   if (edje_edit_group_alias_is(group->edit_object, group->common.name))
+     {
+        main_group_name = edje_edit_group_aliased_get(group->edit_object, 
group->common.name);
+        used = resource_manager_find(pro->RM.groups, main_group_name);
+        _resource_usage_resource_add((Resource2 *)group, used);
+
+        edje_edit_string_free(main_group_name);
+
+        group->main_group = (Group2 *)used;
+        group->main_group->aliases = 
eina_list_append(group->main_group->aliases, group);
+     }
+   else
+     {
+        EINA_LIST_FOREACH(group->parts, l, part)
+          {
+             _part_dependency_load(pro, group, part);
+          }
+        EINA_LIST_FOREACH(group->programs, l, program)
+          {
+             _program_dependency_load(pro, group, program);
+          }
+     }
+   _resource_group_edit_object_unload(group);
+}
+
+void
 _resource_dependency_load(Project *pro)
 {
    Group2 *group;
    Resource2 *res, *used;
-   Part2 *part;
-   Program2 *program;
-   Eina_Stringshare *main_group_name, *set_image_name;
+   Eina_Stringshare *set_image_name;
    Eina_List *set_images;
-   Eina_List *l1, *l2, *l;
+   Eina_List *l1, *l2;
 
    /* image_set */
    EINA_LIST_FOREACH(pro->RM.image_sets, l1, res)
@@ -258,29 +291,6 @@ _resource_dependency_load(Project *pro)
    /* groups */
    EINA_LIST_FOREACH(pro->RM.groups, l1, group)
      {
-        _resource_group_edit_object_load(pro, group, 
evas_object_evas_get(pro->global_object));
-        if (edje_edit_group_alias_is(group->edit_object, group->common.name))
-          {
-             main_group_name = edje_edit_group_aliased_get(group->edit_object, 
group->common.name);
-             used = resource_manager_find(pro->RM.groups, main_group_name);
-             _resource_usage_resource_add((Resource2 *)group, used);
-
-             edje_edit_string_free(main_group_name);
-
-             group->main_group = (Group2 *)used;
-             group->main_group->aliases = 
eina_list_append(group->main_group->aliases, group);
-          }
-        else
-          {
-             EINA_LIST_FOREACH(group->parts, l, part)
-               {
-                  _part_dependency_load(pro, group, part);
-               }
-             EINA_LIST_FOREACH(group->programs, l, program)
-               {
-                  _program_dependency_load(pro, group, program);
-               }
-          }
-        _resource_group_edit_object_unload(group);
+        _group_dependency_load(pro, group);
      }
 }
diff --git a/src/bin/resource_manager/resource_manager_load.c 
b/src/bin/resource_manager/resource_manager_load.c
index cf799e6..cb91468 100644
--- a/src/bin/resource_manager/resource_manager_load.c
+++ b/src/bin/resource_manager/resource_manager_load.c
@@ -636,6 +636,19 @@ _group_load(Project *pro, Group2 *group)
    _resource_group_edit_object_unload(group);
 }
 
+Group2 *
+_gm_group_add(Project *pro, Eina_Stringshare *group_name)
+{
+   Group2 *res;
+
+   res = mem_calloc(1, sizeof(Group2));
+   res->common.type = RESOURCE2_TYPE_GROUP;
+   res->common.name = eina_stringshare_add(group_name);
+   pro->RM.groups = eina_list_append(pro->RM.groups, res);
+
+   return res;
+}
+
 void
 _gm_groups_load(Project *pro)
 {
@@ -655,10 +668,7 @@ _gm_groups_load(Project *pro)
    EINA_LIST_FOREACH(collections, l, group_name)
      {
         if (!strcmp(group_name, EFLETE_INTERNAL_GROUP_NAME)) continue;
-        res = mem_calloc(1, sizeof(Group2));
-        res->common.type = RESOURCE2_TYPE_GROUP;
-        res->common.name = eina_stringshare_add(group_name);
-        pro->RM.groups = eina_list_append(pro->RM.groups, res);
+        _gm_group_add(pro, group_name);
      }
    edje_file_collection_list_free(collections);
 
diff --git a/src/bin/resource_manager/resource_manager_private.h 
b/src/bin/resource_manager/resource_manager_private.h
index b2bf1fc..a3d92a2 100644
--- a/src/bin/resource_manager/resource_manager_private.h
+++ b/src/bin/resource_manager/resource_manager_private.h
@@ -82,6 +82,12 @@ _gm_group_data_add(Project *pro,
 Program2 *
 _program_load(Group2 *group, Eina_Stringshare *program_name);
 
+Group2 *
+_gm_group_add(Project *pro, Eina_Stringshare *group_name);
+
+void
+_group_load(Project *pro, Group2 *group);
+
 void
 _gm_groups_load(Project *project);
 
@@ -106,6 +112,9 @@ void
 _program_dependency_load(Project *pro, Group2 *group, Program2 *program);
 
 void
+_group_dependency_load(Project *pro, Group2 *group);
+
+void
 _resource_dependency_load(Project *pro);
 
 /* REACTION TO EDITOR AND EDJE EDIT */
diff --git a/src/bin/resource_manager/resource_manager_react.c 
b/src/bin/resource_manager/resource_manager_react.c
index 5e89fa5..da1c4a8 100644
--- a/src/bin/resource_manager/resource_manager_react.c
+++ b/src/bin/resource_manager/resource_manager_react.c
@@ -602,21 +602,26 @@ _editor_part_item_restacked_cb(void *data,
 }
 
 static void
-_group_add(void *data __UNUSED__,
-           Evas_Object *obj __UNUSED__,
-           void *event_info)
+_editor_group_add_cb(void *data,
+                     Evas_Object *obj __UNUSED__,
+                     void *event_info)
 {
    Eina_Stringshare *group_name = (Eina_Stringshare *)event_info;
-   printf("New Group added [%s]\n", group_name);
+   Project *pro = (Project *)data;
+   Group2 *group;
+
+   group = _gm_group_add(pro, group_name);
+   _group_load(pro, group);
+   _group_dependency_load(pro, group);
 }
 
 static void
-_group_del(void *data __UNUSED__,
-           Evas_Object *obj __UNUSED__,
-           void *event_info)
+_editor_group_del_cb(void *data __UNUSED__,
+                     Evas_Object *obj __UNUSED__,
+                     void *event_info)
 {
    Eina_Stringshare *group_name = (Eina_Stringshare *)event_info;
-   printf("Group deleted [%s]\n", group_name);
+   printf("ugh [%s] \n", group_name);
 }
 
 /* INITIAL FUNCTIONS */
@@ -656,8 +661,8 @@ _resource_callbacks_register(Project *project)
    evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_GROUP_DATA_DELETED, 
_editor_group_data_deleted_cb, project);
    evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_ATTRIBUTE_CHANGED, 
_property_attribute_changed, project);
    evas_object_smart_callback_add(ap.win, 
SIGNAL_EDITOR_RESOURCE_ATTRIBUTE_CHANGED, _property_resource_attribute_changed, 
project);
-   evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_GROUP_ADDED, 
_group_add, project);
-   evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_GROUP_DELETED, 
_group_del, project);
+   evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_GROUP_ADDED, 
_editor_group_add_cb, project);
+   evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_GROUP_DELETED, 
_editor_group_del_cb, project);
 }
 
 void
@@ -692,6 +697,6 @@ _resource_callbacks_unregister(Project *project)
    evas_object_smart_callback_del_full(ap.win, 
SIGNAL_EDITOR_GROUP_DATA_DELETED, _editor_group_data_deleted_cb, project);
    evas_object_smart_callback_del_full(ap.win, 
SIGNAL_EDITOR_ATTRIBUTE_CHANGED, _property_attribute_changed, project);
    evas_object_smart_callback_del_full(ap.win, 
SIGNAL_EDITOR_RESOURCE_ATTRIBUTE_CHANGED, _property_resource_attribute_changed, 
project);
-   evas_object_smart_callback_del_full(ap.win, SIGNAL_EDITOR_GROUP_ADDED, 
_group_add, project);
-   evas_object_smart_callback_del_full(ap.win, SIGNAL_EDITOR_GROUP_DELETED, 
_group_del, project);
+   evas_object_smart_callback_del_full(ap.win, SIGNAL_EDITOR_GROUP_ADDED, 
_editor_group_add_cb, project);
+   evas_object_smart_callback_del_full(ap.win, SIGNAL_EDITOR_GROUP_DELETED, 
_editor_group_del_cb, project);
 }

-- 


Reply via email to