rimmed pushed a commit to branch master.

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

commit 9839fa8bdc54aeb839a9bf61397b62609bf01ae7
Author: Andrii Kroitor <an.kroi...@samsung.com>
Date:   Tue Nov 17 11:11:22 2015 +0200

    group_navigator: use editor API for state deletion
---
 src/bin/ui/group_navigator.c | 61 +++++++++++++++++++++++++++++++++++++-------
 1 file changed, 52 insertions(+), 9 deletions(-)

diff --git a/src/bin/ui/group_navigator.c b/src/bin/ui/group_navigator.c
index f0b5c44..a49e240 100644
--- a/src/bin/ui/group_navigator.c
+++ b/src/bin/ui/group_navigator.c
@@ -809,11 +809,10 @@ _state_del(Part_List *pl,
            Elm_Object_Item *glit)
 {
    State *state;
-   const Elm_Genlist_Item_Class* itc;
-   const Eina_List *subitems;
-   Elm_Object_Item *default_glit;
    Eina_Stringshare *part_name, *state_name;
    double state_val;
+   Eina_Stringshare *msg;
+   Change *change;
 
    assert(pl != NULL);
    assert(pl->selected_part_item != NULL);
@@ -824,9 +823,57 @@ _state_del(Part_List *pl,
    assert(state != NULL);
    assert(strcmp(state->name, "default 0.00")); /* default state can't be 
deleted */
 
-   /* "default 0.0" is always first in states list */
+   msg = eina_stringshare_printf(_("deleted state \"%s\" %.2f"), 
state->parsed_name, state->parsed_val);
+   change = change_add(msg);
+   eina_stringshare_del(msg);
+   part_name = eina_stringshare_ref(state->part->name);
+   state_name = eina_stringshare_ref(state->parsed_name);
+   state_val = state->parsed_val;
+   editor_state_del(pl->group->edit_object, change, false, part_name, 
state_name, state_val);
+   eina_stringshare_del(part_name);
+   eina_stringshare_del(state_name);
+   history_change_add(pl->group->history, change);
+}
+
+static void
+_editor_state_deleted_cb(void *data,
+                         Evas_Object *obj __UNUSED__,
+                         void *event_info)
+{
+   Part_List *pl = data;
+   const Editor_State *editor_state = event_info;
+   const Elm_Genlist_Item_Class* itc;
+   Part_ *part;
+   State *state = NULL;
+   Elm_Object_Item *glit;
+   Elm_Object_Item *default_glit;
+   const Eina_List *subitems;
+   const Eina_List *l;
+
+   assert(pl != NULL);
+   assert(editor_state != NULL);
+
+   part = elm_object_item_data_get(pl->selected_part_item);
+   if (strcmp(editor_state->part_name, part->name))
+     {
+        part = pm_resource_unsorted_get(part->group->parts, 
editor_state->part_name);
+        group_navigator_part_select(pl->layout, part);
+     }
+   elm_genlist_item_expanded_set(pl->selected_part_item, true);
+
    subitems = elm_genlist_item_subitems_get(pl->selected_part_item);
+   /* "default 0.0" is always first in states list */
    default_glit = eina_list_data_get(subitems);
+   EINA_LIST_FOREACH(subitems, l, glit)
+     {
+        state = elm_object_item_data_get(glit);
+        if (!strcmp(state->name, editor_state->state_name))
+          break;
+        else
+          state = NULL;
+     }
+
+   assert(state != NULL);
 
    /* resetting state */
    itc = elm_genlist_item_item_class_get(glit);
@@ -835,12 +882,7 @@ _state_del(Part_List *pl,
 
    elm_object_item_del(glit);
    elm_genlist_item_selected_set(default_glit, true);
-   part_name = state->part->name;
-   state_name = eina_stringshare_ref(state->parsed_name);
-   state_val = state->parsed_val;
    gm_state_del(ap.project, state);
-   edje_edit_state_del(pl->group->edit_object, part_name, state_name, 
state_val);
-   eina_stringshare_del(state_name);
 }
 
 static void
@@ -995,6 +1037,7 @@ group_navigator_add(Group *group)
    pl->name_validator = elm_validator_regexp_new(NAME_REGEX, NULL);
 
    evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_STATE_ADDED, 
_editor_state_added_cb, pl);
+   evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_STATE_DELETED, 
_editor_state_deleted_cb, pl);
 
    TODO("Add deletion callback and free resources");
    return pl->layout;

-- 


Reply via email to