rimmed pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=58855a11d0cd162435d384ca077e5c7db738fb17
commit 58855a11d0cd162435d384ca077e5c7db738fb17 Author: Andrii Kroitor <[email protected]> Date: Fri Jun 10 10:19:19 2016 +0300 update State after changes in resource manager --- src/bin/common/signals.h | 1 + src/bin/editor/editor_part.c | 3 ++- src/bin/editor/editor_states.c | 9 +++++--- src/bin/project_manager/group_manager.c | 21 +++++++++-------- src/bin/project_manager/group_manager.h | 2 +- src/bin/project_manager/resource_manager.c | 6 ++--- src/bin/ui/property/property_group.c | 6 ++++- src/bin/ui/tabs.c | 9 +++++--- src/bin/ui/workspace/group_navigator.c | 29 +++++++++++++++++++---- src/bin/ui/workspace/workspace.c | 37 +++++++++++++++++------------- src/bin/ui/workspace/workspace.h | 12 +++++++--- 11 files changed, 89 insertions(+), 46 deletions(-) diff --git a/src/bin/common/signals.h b/src/bin/common/signals.h index 858878d..3425e63 100644 --- a/src/bin/common/signals.h +++ b/src/bin/common/signals.h @@ -185,6 +185,7 @@ typedef struct { typedef struct { const char *part_name; const char *state_name; + double state_value; } Editor_State; /** * emited when state is added in editor. diff --git a/src/bin/editor/editor_part.c b/src/bin/editor/editor_part.c index 9f4f246..a6fa4b6 100644 --- a/src/bin/editor/editor_part.c +++ b/src/bin/editor/editor_part.c @@ -1146,7 +1146,8 @@ editor_part_selected_state_set(Evas_Object *edit_object, Change *change, Eina_Bo if (!_editor_signals_blocked) { event_info.part_name = eina_stringshare_add(part_name); - event_info.state_name = eina_stringshare_printf("%s %.2f", state_name, state_val); + event_info.state_name = eina_stringshare_add(state_name); + event_info.state_value = state_val; evas_object_smart_callback_call(ap.win, SIGNAL_EDITOR_PART_STATE_SELECTED, &event_info); eina_stringshare_del(event_info.part_name); eina_stringshare_del(event_info.state_name); diff --git a/src/bin/editor/editor_states.c b/src/bin/editor/editor_states.c index 6302087..261cc63 100644 --- a/src/bin/editor/editor_states.c +++ b/src/bin/editor/editor_states.c @@ -759,7 +759,8 @@ editor_state_add(Evas_Object *edit_object, Change *change, Eina_Bool merge __UNU _editor_project_changed(); event_info.part_name = eina_stringshare_add(part_name); - event_info.state_name = eina_stringshare_printf("%s %.2f", state_name, state_val); + event_info.state_name = eina_stringshare_add(state_name); + event_info.state_value = state_val; if (!_editor_signals_blocked) evas_object_smart_callback_call(ap.win, SIGNAL_EDITOR_STATE_ADDED, (void *)&event_info); eina_stringshare_del(event_info.part_name); eina_stringshare_del(event_info.state_name); @@ -801,7 +802,8 @@ editor_state_copy(Evas_Object *edit_object, Change *change, Eina_Bool merge __UN return false; _editor_project_changed(); event_info.part_name = eina_stringshare_add(part_name); - event_info.state_name = eina_stringshare_printf("%s %.2f", state_name, state_val); + event_info.state_name = eina_stringshare_add(state_name); + event_info.state_value = state_val; if (!_editor_signals_blocked) evas_object_smart_callback_call(ap.win, SIGNAL_EDITOR_STATE_ADDED, (void *)&event_info); eina_stringshare_del(event_info.part_name); eina_stringshare_del(event_info.state_name); @@ -819,7 +821,8 @@ editor_state_del(Evas_Object *edit_object, Change *change, Eina_Bool merge __UNU assert(edit_object != NULL); event_info.part_name = eina_stringshare_add(part_name); - event_info.state_name = eina_stringshare_printf("%s %.2f", state_name, state_val); + event_info.state_name = eina_stringshare_add(state_name); + event_info.state_value = state_val; if (!_editor_signals_blocked) evas_object_smart_callback_call(ap.win, SIGNAL_EDITOR_STATE_DELETED, (void *)&event_info); if (change) { diff --git a/src/bin/project_manager/group_manager.c b/src/bin/project_manager/group_manager.c index 15e7daf..1c68073 100644 --- a/src/bin/project_manager/group_manager.c +++ b/src/bin/project_manager/group_manager.c @@ -413,24 +413,20 @@ gm_group_used_fonts_get(const char *edj, const char *group) } State * -gm_state_add(Project *pro, Part *part, const char *state_name) +gm_state_add(Project *pro, Part *part, const char *state_name, double state_value) { Resource *resource, request; State *state; - Eina_Stringshare *parsed_state_name, *image_name, *name; - double val; + Eina_Stringshare *image_name, *name; Eina_List *tween_list, *l; assert(pro != NULL); assert(part != NULL); assert(state_name != NULL); - state_name_split(state_name, &parsed_state_name, &val); - - state = (State *) resource_add(parsed_state_name, RESOURCE_TYPE_STATE); - state->val = val; + state = (State *) resource_add(state_name, RESOURCE_TYPE_STATE); + state->val = state_value; state->part = part; - eina_stringshare_del(parsed_state_name); resource_insert(&part->states, (Resource *)state); @@ -528,7 +524,8 @@ gm_part_add(Project *pro, Group *group, const char *part_name) Resource *resource, request; Part *part; Eina_List *states, *l; - Eina_Stringshare *state_name, *group_name, *item_name; + Eina_Stringshare *state_name, *parsed_state_name, *group_name, *item_name; + double val; assert(pro != NULL); assert(group != NULL); @@ -541,7 +538,11 @@ gm_part_add(Project *pro, Group *group, const char *part_name) resource_insert(&group->parts, (Resource *)part); states = edje_edit_part_states_list_get(group->edit_object, part_name); EINA_LIST_FOREACH(states, l, state_name) - gm_state_add(pro, part, state_name); + { + state_name_split(state_name, &parsed_state_name, &val); + gm_state_add(pro, part, parsed_state_name, val); + eina_stringshare_del(parsed_state_name); + } edje_edit_string_list_free(states); if ((part->type == EDJE_PART_TYPE_TABLE) || diff --git a/src/bin/project_manager/group_manager.h b/src/bin/project_manager/group_manager.h index df9ba80..3a893f5 100644 --- a/src/bin/project_manager/group_manager.h +++ b/src/bin/project_manager/group_manager.h @@ -56,7 +56,7 @@ Eina_List * gm_group_used_fonts_get(const char *edj, const char *group); State * -gm_state_add(Project *pro, Part *part, const char *state_name); +gm_state_add(Project *pro, Part *part, const char *state_name, double state_value); Part * gm_part_add(Project *pro, Group *group, Eina_Stringshare *part_name); diff --git a/src/bin/project_manager/resource_manager.c b/src/bin/project_manager/resource_manager.c index f049061..483300a 100644 --- a/src/bin/project_manager/resource_manager.c +++ b/src/bin/project_manager/resource_manager.c @@ -113,7 +113,7 @@ resource_cmp(Resource *res1, Resource *res2) return 0; } - return strcmp(res1->name, res2->name); + return cmp; } Resource * @@ -204,10 +204,10 @@ resource_remove(Eina_List **list, const Resource *res) case RESOURCE_TYPE_TAG: case RESOURCE_TYPE_COLORCLASS: case RESOURCE_TYPE_ITEM: - l_del = eina_list_search_sorted_list(res->used_in, (Eina_Compare_Cb)resource_cmp, res); + l_del = eina_list_search_sorted_list(*list, (Eina_Compare_Cb)resource_cmp, res); break; case RESOURCE_TYPE_PART: - l_del = eina_list_search_unsorted_list(res->used_in, (Eina_Compare_Cb)resource_cmp, res); + l_del = eina_list_search_unsorted_list(*list, (Eina_Compare_Cb)resource_cmp, res); break; case RESOURCE_TYPE_NONE: break; diff --git a/src/bin/ui/property/property_group.c b/src/bin/ui/property/property_group.c index 57e439a..9459ae1 100644 --- a/src/bin/ui/property/property_group.c +++ b/src/bin/ui/property/property_group.c @@ -1431,7 +1431,11 @@ _update_cb(Property_Attribute *pa, Property_Action *action) property_entry_set(action->control, group_pd.group->name); break; case ATTRIBUTE_STATE_NAME: - property_entry_set(action->control, group_pd.part->current_state->name); + str_val1 = eina_stringshare_printf("%s %.2f", + group_pd.part->current_state->name, + group_pd.part->current_state->val); + property_entry_set(action->control, str_val1); + eina_stringshare_del(str_val1); break; case ATTRIBUTE_PROGRAM_NAME: property_entry_set(action->control, PROGRAM_ARGS); diff --git a/src/bin/ui/tabs.c b/src/bin/ui/tabs.c index 8f52aea..190f599 100644 --- a/src/bin/ui/tabs.c +++ b/src/bin/ui/tabs.c @@ -497,7 +497,8 @@ _editor_part_state_selected_cb(void *data __UNUSED__, assert(tabs.current_group != NULL); assert(tabs.current_workspace != NULL); - workspace_part_state_select(tabs.current_workspace, editor_state->part_name, editor_state->state_name); + workspace_part_state_select(tabs.current_workspace, editor_state->part_name, + editor_state->state_name, editor_state->state_value); } static void @@ -623,7 +624,8 @@ _editor_state_added_cb(void *data __UNUSED__, assert(tabs.current_group != NULL); assert(tabs.current_workspace != NULL); - workspace_part_state_add(tabs.current_workspace, editor_state->part_name, editor_state->state_name); + workspace_part_state_add(tabs.current_workspace, editor_state->part_name, + editor_state->state_name, editor_state->state_value); } static void @@ -637,7 +639,8 @@ _editor_state_deleted_cb(void *data __UNUSED__, assert(tabs.current_group != NULL); assert(tabs.current_workspace != NULL); - workspace_part_state_del(tabs.current_workspace, editor_state->part_name, editor_state->state_name); + workspace_part_state_del(tabs.current_workspace, editor_state->part_name, + editor_state->state_name, editor_state->state_value); } static void diff --git a/src/bin/ui/workspace/group_navigator.c b/src/bin/ui/workspace/group_navigator.c index a5efb48..4c6cdcb 100644 --- a/src/bin/ui/workspace/group_navigator.c +++ b/src/bin/ui/workspace/group_navigator.c @@ -122,6 +122,24 @@ _resource_label_get(void *data, } static char * +_state_resource_label_get(void *data, + Evas_Object *obj __UNUSED__, + const char *pr __UNUSED__) +{ + char * ret; + State *res= data; + Eina_Stringshare *label; + + assert(res != NULL); + assert(res->name != NULL); + + label = eina_stringshare_printf("%s %.2f", res->name, res->val); + ret = strdup(label); + eina_stringshare_del(label); + return ret; +} + +static char * _item_caption_label_get(void *data, Evas_Object *obj __UNUSED__, const char *pr) @@ -557,7 +575,7 @@ _expanded_cb(void *data, EINA_LIST_FOREACH(part->states, l, state) { /* default state should be listed first */ - if ((first_item) || (strcmp(state->name, "default 0.00") != 0)) + if ((first_item) || ((strcmp(state->name, "default") != 0) || (state->val != 0))) { elm_genlist_item_append(pl->genlist, (state->part->current_state == state) ? pl->itc_state_selected : pl->itc_state, @@ -758,7 +776,8 @@ _selected_cb(void *data, /* enabling or disabling del button */ if ((itc == pl->itc_item_caption) || (((itc == pl->itc_state) || (itc == pl->itc_state_selected)) && - (!strcmp(((State *)elm_object_item_data_get(glit))->name, "default 0.00")))) + (!strcmp(((State *)elm_object_item_data_get(glit))->name, "default")) && + (((State *)elm_object_item_data_get(glit))->val == 0))) elm_object_disabled_set(pl->btn_del, true); else elm_object_disabled_set(pl->btn_del, false); @@ -1845,7 +1864,7 @@ _state_del(Part_List *pl, state = elm_object_item_data_get(glit); assert(state != NULL); - assert(strcmp(state->name, "default 0.00")); /* default state can't be deleted */ + assert((strcmp(state->name, "default") || (state->val != 0))); /* default state can't be deleted */ msg = eina_stringshare_printf(_("deleted state \"%s\" %.2f"), state->name, state->val); change = change_add(msg); @@ -2236,11 +2255,11 @@ group_navigator_add(Evas_Object *parent, Group *group) pl->itc_state = elm_genlist_item_class_new(); pl->itc_state->item_style = "state"; - pl->itc_state->func.text_get = _resource_label_get; + pl->itc_state->func.text_get = _state_resource_label_get; pl->itc_state_selected = elm_genlist_item_class_new(); pl->itc_state_selected->item_style = "state_selected"; - pl->itc_state_selected->func.text_get = _resource_label_get; + pl->itc_state_selected->func.text_get = _state_resource_label_get; pl->itc_item = elm_genlist_item_class_new(); pl->itc_item->item_style = "item"; diff --git a/src/bin/ui/workspace/workspace.c b/src/bin/ui/workspace/workspace.c index c23259a..abd5026 100644 --- a/src/bin/ui/workspace/workspace.c +++ b/src/bin/ui/workspace/workspace.c @@ -1392,7 +1392,8 @@ workspace_part_item_del(Evas_Object *obj, void workspace_part_state_add(Evas_Object *obj, Eina_Stringshare *part_name, - Eina_Stringshare *state_name) + Eina_Stringshare *state_name, + double state_val) { Part *part; Resource request; @@ -1406,28 +1407,30 @@ workspace_part_state_add(Evas_Object *obj, part = (Part *)resource_get(wd->group->parts, &request); group_navigator_part_select(wd->group_navi, part); - state = gm_state_add(ap.project, part, state_name); + state = gm_state_add(ap.project, part, state_name, state_val); group_navigator_part_state_add(wd->group_navi, part, state); } void workspace_part_state_select(Evas_Object *obj, Eina_Stringshare *part_name, - Eina_Stringshare *state_name) + Eina_Stringshare *state_name, + double state_val) { Part *part; - Resource request; - State *state; + Resource part_request; + State *state, request; WS_DATA_GET(obj); assert(part_name != NULL); assert(state_name != NULL); - request.resource_type = RESOURCE_TYPE_PART; - request.name = part_name; - part = (Part *)resource_get(wd->group->parts, &request); + part_request.resource_type = RESOURCE_TYPE_PART; + part_request.name = part_name; + part = (Part *)resource_get(wd->group->parts, &part_request); request.resource_type = RESOURCE_TYPE_STATE; request.name = state_name; - state = (State *)resource_get(part->states, &request); + request.val = state_val; + state = (State *)resource_get(part->states, (Resource *)&request); groupview_hard_update(wd->normal.content); group_navigator_part_state_select(wd->group_navi, state); @@ -1436,21 +1439,23 @@ workspace_part_state_select(Evas_Object *obj, void workspace_part_state_del(Evas_Object *obj, Eina_Stringshare *part_name, - Eina_Stringshare *state_name) + Eina_Stringshare *state_name, + double state_val) { Part *part; - Resource request; - State *state; + Resource part_request; + State *state, request; WS_DATA_GET(obj); assert(part_name != NULL); assert(state_name != NULL); - request.resource_type = RESOURCE_TYPE_PART; - request.name = part_name; - part = (Part *)resource_get(wd->group->parts, &request); + part_request.resource_type = RESOURCE_TYPE_PART; + part_request.name = part_name; + part = (Part *)resource_get(wd->group->parts, &part_request); request.resource_type = RESOURCE_TYPE_STATE; request.name = state_name; - state = (State *)resource_get(part->states, &request); + request.val = state_val; + state = (State *)resource_get(part->states, (Resource *)&request); group_navigator_part_select(wd->group_navi, part); group_navigator_part_state_del(wd->group_navi, part, state); diff --git a/src/bin/ui/workspace/workspace.h b/src/bin/ui/workspace/workspace.h index 001361e..a350641 100644 --- a/src/bin/ui/workspace/workspace.h +++ b/src/bin/ui/workspace/workspace.h @@ -158,13 +158,15 @@ workspace_group_data_add(Evas_Object *obj, Eina_Stringshare *group_data_name); * @param obj The workspace object. * @param part_name name of part * @param state_name name of selected part_state + * @param state_value value of selected part_state * * @ingroup Workspace */ void workspace_part_state_select(Evas_Object *obj, Eina_Stringshare *part_name, - Eina_Stringshare *state_name); + Eina_Stringshare *state_name, + double state_value); /** * Add new part state to group_edit and group_navigator. * Part should be already added to edit_object. @@ -172,13 +174,15 @@ workspace_part_state_select(Evas_Object *obj, * @param obj The workspace object. * @param part_name name of part * @param state_name name of added part_state + * @param state_value value of added part_state * * @ingroup Workspace */ void workspace_part_state_add(Evas_Object *obj, Eina_Stringshare *part_name, - Eina_Stringshare *state_name); + Eina_Stringshare *state_name, + double state_value); /** * Add new part item to group_edit and group_navigator. @@ -202,13 +206,15 @@ workspace_part_item_del(Evas_Object *obj, * @param obj The workspace object. * @param part_name name of part * @param state_name name of deleted part_state + * @param state_value value of deleted part_state * * @ingroup Workspace */ void workspace_part_state_del(Evas_Object *obj, Eina_Stringshare *part_name, - Eina_Stringshare *state_name); + Eina_Stringshare *state_name, + double state_value); /** * Del part from group_edit and group_navigator. --
