rimmed pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=d2cdef13acd255cc28377b4e32e806159dd27ad5
commit d2cdef13acd255cc28377b4e32e806159dd27ad5 Author: Andrii Kroitor <[email protected]> Date: Fri May 27 12:02:49 2016 +0300 workspace: add group_data rename support --- src/bin/ui/tabs.c | 18 ++++++++++++++ src/bin/ui/workspace/group_navigator.c | 45 ++++++++++++++++++++++++++++++++++ src/bin/ui/workspace/group_navigator.h | 2 ++ src/bin/ui/workspace/workspace.c | 10 ++++++++ src/bin/ui/workspace/workspace.h | 11 +++++++++ 5 files changed, 86 insertions(+) diff --git a/src/bin/ui/tabs.c b/src/bin/ui/tabs.c index 25c9340..cad534a 100644 --- a/src/bin/ui/tabs.c +++ b/src/bin/ui/tabs.c @@ -410,6 +410,23 @@ _part_renamed(void *data __UNUSED__, } static void +_group_data_renamed(void *data __UNUSED__, + Evas_Object *obj __UNUSED__, + void *ei) +{ + Rename *ren = ei; + Resource *group_data; + + assert(tabs.current_group != NULL); + assert(tabs.current_workspace != NULL); + assert(ren != NULL); + + group_data = pm_resource_get(tabs.current_group->data_items, ren->old_name); + gm_group_data_rename(ap.project, tabs.current_group, group_data, ren->new_name); + workspace_group_navigator_update_group_data(tabs.current_workspace, group_data); +} + +static void _editor_saved(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *ei __UNUSED__) @@ -940,6 +957,7 @@ tabs_add(void) evas_object_smart_callback_add(ap.win, SIGNAL_DEMO_SIGNAL_SEND, _demo_send_signal, NULL); evas_object_smart_callback_add(ap.win, SIGNAL_PART_RENAMED, _part_renamed, NULL); + evas_object_smart_callback_add(ap.win, SIGNAL_GROUP_DATA_RENAMED, _group_data_renamed, NULL); evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_SAVED, _editor_saved, NULL); evas_object_smart_callback_add(ap.win, SIGNAL_PROJECT_OPENED, _project_opened, NULL); evas_object_smart_callback_add(ap.win, SIGNAL_PROJECT_CLOSED, _project_closed, NULL); diff --git a/src/bin/ui/workspace/group_navigator.c b/src/bin/ui/workspace/group_navigator.c index d0b2532..3292d70 100644 --- a/src/bin/ui/workspace/group_navigator.c +++ b/src/bin/ui/workspace/group_navigator.c @@ -1563,6 +1563,33 @@ _part_item_find(Part_List *pl, Part *part) return part_item; } +static Elm_Object_Item * +_group_data_item_find(Part_List *pl, Resource *group_data) +{ + Elm_Object_Item *group_data_item; + const Eina_List *group_data_items; + Resource *pr; + + assert(pl != NULL); + assert(group_data != NULL); + + elm_genlist_item_expanded_set(pl->data_caption_item, true); + group_data_items = elm_genlist_item_subitems_get(pl->data_caption_item); + + group_data_item = eina_list_data_get(group_data_items); + pr = elm_object_item_data_get(group_data_item); + while (pr != group_data) + { + group_data_items = eina_list_next(group_data_items); + group_data_item = eina_list_data_get(group_data_items); + pr = elm_object_item_data_get(group_data_item); + + assert(pr != NULL); + } + assert(group_data_item != NULL); + return group_data_item; +} + static void _select_next_part(Part_List *pl, Eina_Bool reverse) { @@ -2185,6 +2212,24 @@ group_navigator_part_update(Evas_Object *obj, Part *part) } void +group_navigator_group_data_update(Evas_Object *obj, Resource *group_data) +{ + Elm_Object_Item *group_data_item; + Part_List *pl = evas_object_data_get(obj, GROUP_NAVIGATOR_DATA); + + assert(pl != NULL); + assert(group_data != NULL); + + if (elm_genlist_item_expanded_get(pl->data_caption_item)) + { + group_data_item = _group_data_item_find(pl, group_data); + assert(group_data_item != NULL); + + elm_genlist_item_update(group_data_item); + } +} + +void group_navigator_add_part_request(Evas_Object *obj) { _on_menu_add_part_clicked(NULL, obj, NULL); diff --git a/src/bin/ui/workspace/group_navigator.h b/src/bin/ui/workspace/group_navigator.h index a1381af..cdfbea3 100644 --- a/src/bin/ui/workspace/group_navigator.h +++ b/src/bin/ui/workspace/group_navigator.h @@ -65,6 +65,8 @@ group_navigator_part_select(Evas_Object *obj, Part *part); void group_navigator_part_update(Evas_Object *obj, Part *part); +void +group_navigator_group_data_update(Evas_Object *obj, Resource *group_data); void group_navigator_part_state_select(Evas_Object *obj, State *state); diff --git a/src/bin/ui/workspace/workspace.c b/src/bin/ui/workspace/workspace.c index 633125a..e39e018 100644 --- a/src/bin/ui/workspace/workspace.c +++ b/src/bin/ui/workspace/workspace.c @@ -1211,6 +1211,16 @@ workspace_group_navigator_update_part(Evas_Object *obj, Part *part) group_navigator_part_update(wd->group_navi, part); } +void +workspace_group_navigator_update_group_data(Evas_Object *obj, Resource *group_data) +{ + WS_DATA_GET(obj); + + assert(group_data != NULL); + + group_navigator_group_data_update(wd->group_navi, group_data); +} + Eina_Bool workspace_edit_object_recalc(Evas_Object *obj __UNUSED__) { diff --git a/src/bin/ui/workspace/workspace.h b/src/bin/ui/workspace/workspace.h index a010759..145c75b 100644 --- a/src/bin/ui/workspace/workspace.h +++ b/src/bin/ui/workspace/workspace.h @@ -70,6 +70,17 @@ void workspace_group_navigator_update_part(Evas_Object *obj, Part *part); /** + * Update group_data info in group_data list + * + * @param obj The workspace object. + * @param group_data Resource to be updated. + * + * @ingroup Workspace + */ +void +workspace_group_navigator_update_group_data(Evas_Object *obj, Resource *group_data); + +/** * Update the parts attributes, with recalculation. * * @paramaram obj The workspace object. --
