diff --git a/src/bin/inspect.c b/src/bin/inspect.c index 3de56d7..01bbb6d 100644 --- a/src/bin/inspect.c +++ b/src/bin/inspect.c @@ -53,6 +53,8 @@ static Eina_Hash *_item_infos_hash = NULL; static Eina_Bool _show_only_diffs = EINA_FALSE; static Eina_List *_comp_vvs = NULL; +static Eina_List *_modified_units = NULL; + static const char * _action_name_get(Exactness_Action *act) { @@ -887,6 +889,37 @@ _comp_gl_selected_cb(void *data EINA_UNUSED, Evas_Object *gl EINA_UNUSED, void * } } +static void +_scn_item_remove(void *data, Evas_Object *menu EINA_UNUSED, void *item EINA_UNUSED) +{ + Eo *glit = data; + Exactness_Unit *unit = efl_key_data_get(efl_parent_get(glit), "unit"); + Exactness_Action *act = elm_object_item_data_get(glit); + unit->actions = eina_list_remove(unit->actions, act); + if (!eina_list_data_find(_modified_units, unit)) + _modified_units = eina_list_append(_modified_units, unit); + efl_del(glit); +} + +static void +_gl_clicked_right_cb(void *data, Evas_Object *gl, void *event_info) +{ + int x = 0, y = 0; + Eo *win = data, *menu; + Elm_Object_Item *glit = event_info; + + if (elm_genlist_item_item_class_get(glit) == _scn_itc) + { + elm_genlist_item_selected_set(glit, EINA_TRUE); + evas_pointer_canvas_xy_get(evas_object_evas_get(gl), &x, &y); + + menu = elm_menu_add(win); + elm_menu_move(menu, x, y); + elm_menu_item_add(menu, NULL, NULL, "Remove", _scn_item_remove, glit); + efl_gfx_entity_visible_set(menu, EINA_TRUE); + } +} + static void _gui_unit_display(Exactness_Unit *unit1, Exactness_Unit *unit2) { @@ -906,6 +939,8 @@ _gui_unit_display(Exactness_Unit *unit1, Exactness_Unit *unit2) evas_object_smart_callback_add(gl1, "contract,request", _gl_contract_request_cb, NULL); evas_object_smart_callback_add(gl1, "expanded", _gl_expanded_cb, NULL); evas_object_smart_callback_add(gl1, "contracted", _gl_contracted_cb, NULL); + if (!unit2) + evas_object_smart_callback_add(gl1, "clicked,right", _gl_clicked_right_cb, elm_win_get(_main_box)); if (unit2) { @@ -1127,6 +1162,7 @@ static const Ecore_Getopt optdesc = { int main(int argc, char *argv[]) { + Eina_List *units_filenames = NULL; const char *ext = NULL; char *output = NULL; Exactness_Unit *unit = NULL; @@ -1250,6 +1286,7 @@ main(int argc, char *argv[]) if (!strcmp(ext, ".exu")) { Exactness_Unit *ex_unit = exactness_unit_file_read(argv[arg]); + units_filenames = eina_list_append(units_filenames, argv[arg]); _units = eina_list_append(_units, ex_unit); } else if (!strcmp(ext, ".rec")) @@ -1459,6 +1496,16 @@ main(int argc, char *argv[]) } if (need_compare) _gui_unit_display(unit1, unit2); elm_run(); + EINA_LIST_FREE(_modified_units, unit) + { + int i = 0; + EINA_LIST_FOREACH(_units, itr, unit2) + { + if (unit2 == unit) break; + i++; + } + exactness_unit_file_write(unit, eina_list_nth(units_filenames, i)); + } } end: