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); } --
