static void _fill_list(E_Config_Dialog_Data *cfdata) { Evas *evas; Evas_Coord w; Efreet_Menu *menu, *entry; char buf[4096]; snprintf(buf, sizeof(buf), "%s/.e/e/applications/menu/favorite.menu", e_user_homedir_get()); menu = efreet_menu_parse(buf); if (!menu->entries) return; evas = evas_object_evas_get(cfdata->o_list); evas_event_freeze(evas); edje_freeze(); e_widget_ilist_freeze(cfdata->o_list); ecore_list_goto_first(menu->entries); while ((entry = ecore_list_next(menu->entries))) { Evas_Object *icon = NULL; const char *file; if (entry->type != EFREET_MENU_ENTRY_DESKTOP) continue; if (entry->icon) { if (entry->icon[0] == '/') file = entry->icon; else file = efreet_icon_path_find(e_config->icon_theme, entry->icon, "24x24"); icon = e_icon_add(evas); e_icon_file_set(icon, file); e_icon_fill_inside_set(icon, 1); } e_widget_ilist_append(cfdata->o_list, icon, entry->name, _list_cb_selected, cfdata, NULL); } if (entry) efreet_menu_free(entry); if (menu) efreet_menu_free(menu); e_widget_ilist_go(cfdata->o_list); e_widget_min_size_get(cfdata->o_list, &w, NULL); e_widget_min_size_set(cfdata->o_list, w, 200); e_widget_ilist_thaw(cfdata->o_list); edje_thaw(); evas_event_thaw(evas); } static void _list_cb_selected(void *data) { E_Config_Dialog_Data *cfdata; Efreet_Desktop *desk; const char *name; cfdata = data; e_widget_disabled_set(cfdata->o_del, 0); name = e_widget_ilist_selected_label_get(cfdata->o_list); printf("Name: %s\n", name); desk = efreet_util_desktop_name_find(name); if (!desk) return; printf("Desk: %s\n", desk->orig_path); }