Enlightenment CVS committal Author : raster Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_configure.c e_configure.h e_ilist.c e_ilist.h e_int_menus.c e_widget_ilist.c e_widget_ilist.h Log Message: working on ma configuration panel biatches =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_configure.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- e_configure.c 14 Oct 2005 10:00:59 -0000 1.10 +++ e_configure.c 12 Nov 2005 05:27:58 -0000 1.11 @@ -1,17 +1,22 @@ #include "e.h" -static void _e_configure_gui_hide(E_Win *win); -static void _e_configure_apps_load(E_Configure *app); -static void _e_configure_apps_unload(E_Configure *app); +typedef struct _E_Configure_CB E_Configure_CB; + +struct _E_Configure_CB +{ + E_Configure *eco; + E_Config_Dialog *(*func) (E_Container *con); +}; + static void _e_configure_free(E_Configure *app); -static void _e_configure_apps_click(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _e_configure_cb_del_req(E_Win *win); static void _e_configure_cb_resize(E_Win *win); +static void _e_configure_cb_standard(void *data); - E_Configure * e_configure_show(E_Container *con) { - E_Configure *app; + E_Configure *eco; E_Manager *man; Evas_Coord w, h, ew, eh; @@ -23,185 +28,111 @@ if (!con) con = e_container_number_get(man, 0); if (!con) return NULL; } - app = E_OBJECT_ALLOC(E_Configure, E_CONFIGURE_TYPE, _e_configure_free); - if (!app) return NULL; - app->win = e_win_new(con); - if (!app->win) + + eco = E_OBJECT_ALLOC(E_Configure, E_CONFIGURE_TYPE, _e_configure_free); + if (!eco) return NULL; + eco->win = e_win_new(con); + if (!eco->win) { - free(app); + free(eco); return NULL; } + eco->win->data = eco; - app->con = con; + eco->con = con; - e_win_delete_callback_set(app->win, _e_configure_gui_hide); - e_win_title_set(app->win, _("Enlightenment Configuration")); - e_win_name_class_set(app->win, "E", "_configure"); - app->evas = e_win_evas_get(app->win); - ecore_evas_data_set(app->win->ecore_evas, "App", app); - e_win_resize_callback_set(app->win, _e_configure_cb_resize); - e_win_centered_set(app->win, 1); + e_win_title_set(eco->win, _("Enlightenment Configuration")); + e_win_name_class_set(eco->win, "E", "_configure"); + eco->evas = e_win_evas_get(eco->win); + e_win_delete_callback_set(eco->win, _e_configure_cb_del_req); + e_win_resize_callback_set(eco->win, _e_configure_cb_resize); + e_win_centered_set(eco->win, 1); - app->edje = edje_object_add(app->evas); - - e_theme_edje_object_set(app->edje, "base/theme/configure", "widgets/configure/main"); - - app->box = e_box_add(app->evas); - - e_box_homogenous_set (app->box, 0); - - app->apps = e_app_new(PACKAGE_DATA_DIR "/config-apps", 0); - app->icons = NULL; - app->app_ref = NULL; - _e_configure_apps_load(app); - - e_box_orientation_set(app->box, 1); - e_box_align_set(app->box, 0.0, 0.0); - - edje_object_size_min_calc (app->edje, &ew, &eh); - e_box_min_size_get(app->box, &w, &h); - - if (ew > w ) - w = ew; - if (eh > h) - h = eh; - - edje_extern_object_min_size_set(app->box, w, h); - e_win_size_base_set (app->win, w , h + eh); - e_win_size_min_set (app->win, w, h + eh); - e_win_resize(app->win, w, h + eh); - - edje_object_part_swallow(app->edje, "icon_swallow", app->box); - evas_object_show(app->box); - - evas_object_show(app->edje); + eco->edje = edje_object_add(eco->evas); + e_theme_edje_object_set(eco->edje, "base/theme/configure", + "widgets/configure/main"); + + eco->ilist = e_widget_ilist_add(eco->evas, 48, 48, NULL); + e_widget_ilist_selector_set(eco->ilist, 1); + edje_object_part_swallow(eco->edje, "item", eco->ilist); + edje_object_part_text_set(eco->edje, "title", _("Configuration Panel")); + + /* add items here */ + e_configure_standard_item_add(eco, "enlightenment/e", _("Focus Settings"), e_int_config_focus); + /* FIXME: we should have a way for modules to hook in here and add their + * own entries + */ + + edje_object_size_min_calc(eco->edje, &ew, &eh); + e_win_resize(eco->win, ew, eh); + e_win_size_min_set(eco->win, ew, eh); - e_win_show(app->win); + evas_object_show(eco->ilist); + evas_object_show(eco->edje); - - return app; -} + e_win_show(eco->win); -static void -_e_configure_cb_resize(E_Win *win) -{ - Evas_Coord w, h; - E_Configure *app; - - if (win) - { - ecore_evas_geometry_get(win->ecore_evas, NULL, NULL, &w, &h); - - app = (E_Configure *)ecore_evas_data_get(win->ecore_evas, "App"); - evas_object_resize(app->edje, w, h); - } + e_widget_focus_set(eco->ilist, 1); + e_widget_ilist_go(eco->ilist); + + return eco; } - - -static void -_e_configure_gui_hide(E_Win *win) +void +e_configure_standard_item_add(E_Configure *eco, char *icon, char *label, E_Config_Dialog *(*func) (E_Container *con)) { - E_Configure *app; - - app = (E_Configure *) ecore_evas_data_get(win->ecore_evas, "App"); - if (app) - { - _e_configure_apps_unload(app); - - edje_object_part_unswallow(app->edje, app->box); - evas_object_del(app->box); - evas_object_del(app->edje); - e_object_del(E_OBJECT(app->win)); - } + Evas_Object *o; + E_Configure_CB *ecocb; + + o = edje_object_add(eco->evas); + e_util_edje_icon_set(o, icon); + ecocb = E_NEW(E_Configure_CB, 1); + ecocb->eco = eco; + ecocb->func = func; + eco->cblist = evas_list_append(eco->cblist, ecocb); + e_widget_ilist_append(eco->ilist, o, label, _e_configure_cb_standard, ecocb, NULL); } +/* local subsystem functions */ static void -_e_configure_apps_load(E_Configure *app) +_e_configure_free(E_Configure *eco) { - E_App *a; - Evas_List *l; - Evas_Object *o, *icon; - Evas_Coord w, h; - - if (!app->apps) return; - e_app_subdir_scan(app->apps, 0); - for (l = app->apps->subapps; l; l = l->next) + while (eco->cblist) { - a = l->data; - e_object_ref(E_OBJECT(a)); - app->app_ref = evas_list_append(app->app_ref, a); - - o = edje_object_add(app->evas); - e_theme_edje_object_set(o, "base/theme/configure", "widgets/configure/icon"); - icon = edje_object_add(app->evas); - edje_object_file_set(icon, a->path, "icon"); - - edje_extern_object_min_size_set(icon, 48, 48); - - edje_object_part_swallow(o, "icon_swallow", icon); - edje_object_part_text_set(o, "title", a->name); - evas_object_show(icon); - - edje_object_size_min_calc (o, &w, &h); - edje_extern_object_min_size_set (o, w, h); - e_box_pack_end(app->box, o); - e_box_pack_options_set(o, - 1, 0, /* fill */ - 1, 0, /* expand */ - 0.0, 0.0, /* align */ - w, h, /* min */ - 999, 999 //172, 72 /* max */ - ); - - evas_object_show(o); - app->icons = evas_list_append(app->icons, o); - edje_object_signal_callback_add(o, "clicked", "", - _e_configure_apps_click, a); + free(eco->cblist->data); + eco->cblist = evas_list_remove_list(eco->cblist, eco->cblist); } + evas_object_del(eco->edje); + evas_object_del(eco->ilist); + e_object_del(E_OBJECT(eco->win)); + free(eco); } static void -_e_configure_apps_unload(E_Configure *app) +_e_configure_cb_del_req(E_Win *win) { - E_App *a; + E_Configure *eco; -/* while(app->icons) - { - icon = evas_list_data(app->icons); -// FIXME unswallow icon and free - - app->icons = evas_list_remove(app->icons, icon); - evas_object_del(icon); - }*/ - while (app->app_ref) - { - a = evas_list_data(app->app_ref); - - app->app_ref = evas_list_remove(app->app_ref, a); - e_object_unref(E_OBJECT(a)); - } + eco = win->data; + if (eco) e_object_del(E_OBJECT(eco)); } static void -_e_configure_apps_click(void *data, Evas_Object *obj, const char *emission, const char *source) +_e_configure_cb_resize(E_Win *win) { - E_App *a; - - a = data; - if (a) - { - Ecore_Exe *exe; - - exe = ecore_exe_run(a->exe, NULL); - if (exe) ecore_exe_free(exe); - } + Evas_Coord w, h; + E_Configure *eco; + + ecore_evas_geometry_get(win->ecore_evas, NULL, NULL, &w, &h); + eco = win->data; + evas_object_resize(eco->edje, w, h); } static void -_e_configure_free(E_Configure *app) +_e_configure_cb_standard(void *data) { - _e_configure_apps_unload(app); - e_object_del(E_OBJECT(app->win)); - free(app); + E_Configure_CB *ecocb; + + ecocb = data; + ecocb->func(ecocb->eco->con); } =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_configure.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- e_configure.h 20 Sep 2005 13:12:25 -0000 1.3 +++ e_configure.h 12 Nov 2005 05:27:58 -0000 1.4 @@ -16,13 +16,13 @@ E_Win *win; Evas *evas; Evas_Object *edje; - Evas_Object *box; - E_App *apps; - Evas_List *icons; - Evas_List *app_ref; + Evas_Object *ilist; + + Evas_List *cblist; }; -E_Configure *e_configure_show(E_Container *con); - +EAPI E_Configure *e_configure_show(E_Container *con); +EAPI void e_configure_standard_item_add(E_Configure *eco, char *icon, char *label, E_Config_Dialog *(*func) (E_Container *con)); + #endif #endif =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_ilist.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- e_ilist.c 6 Nov 2005 05:48:50 -0000 1.4 +++ e_ilist.c 12 Nov 2005 05:27:58 -0000 1.5 @@ -18,6 +18,7 @@ Evas_List *items; int selected; Evas_Coord icon_w, icon_h; + unsigned char selector : 1; }; struct _E_Smart_Item @@ -32,6 +33,7 @@ /* local subsystem functions */ static void _e_smart_event_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info); +static void _e_smart_event_mouse_up(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _e_smart_event_key_down(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _e_smart_reconfigure(E_Smart_Data *sd); static void _e_smart_add(Evas_Object *obj); @@ -125,13 +127,9 @@ mw, mh, /* min */ 99999, 99999 /* max */ ); - if (sd->selected == (evas_list_count(sd->items) - 1)) - { - edje_object_signal_emit(si->base_obj, "active", ""); - if (si->func) si->func(si->data, si->data2); - } evas_object_lower(si->base_obj); evas_object_event_callback_add(si->base_obj, EVAS_CALLBACK_MOUSE_DOWN, _e_smart_event_mouse_down, si); + evas_object_event_callback_add(si->base_obj, EVAS_CALLBACK_MOUSE_UP, _e_smart_event_mouse_up, si); evas_object_show(si->base_obj); } @@ -153,7 +151,10 @@ { evas_object_raise(si->base_obj); edje_object_signal_emit(si->base_obj, "active", ""); - if (si->func) si->func(si->data, si->data2); + if (!sd->selector) + { + if (si->func) si->func(si->data, si->data2); + } } } @@ -211,6 +212,20 @@ e_box_min_size_get(sd->box_obj, w, h); } +void +e_ilist_selector_set(Evas_Object *obj, int selector) +{ + API_ENTRY return; + sd->selector = selector; +} + +int +e_ilist_selector_get(Evas_Object *obj) +{ + API_ENTRY return 0; + return sd->selector; +} + /* local subsystem functions */ static void _e_smart_event_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info) @@ -232,6 +247,24 @@ } } +static void +_e_smart_event_mouse_up(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + Evas_Event_Mouse_Up *ev; + E_Smart_Item *si; + + si = data; + ev = event_info; + if (si->sd->selector) + { + si = evas_list_nth(si->sd->items, si->sd->selected); + if (si) + { + if (si->func) si->func(si->data, si->data2); + } + } +} + static void _e_smart_event_key_down(void *data, Evas *e, Evas_Object *obj, void *event_info) { @@ -254,6 +287,17 @@ n = e_ilist_select_get(sd->smart_obj); e_ilist_select_set(sd->smart_obj, n + 1); } + else if ((!strcmp(ev->keyname, "Return")) || + (!strcmp(ev->keyname, "space"))) + { + E_Smart_Item *si; + + si = evas_list_nth(sd->items, sd->selected); + if (si) + { + if (si->func) si->func(si->data, si->data2); + } + } } static void @@ -282,6 +326,8 @@ sd->icon_w = 24; sd->icon_h = 24; + sd->selected = -1; + sd->box_obj = e_box_add(evas_object_evas_get(obj)); e_box_align_set(sd->box_obj, 0.0, 0.0); e_box_homogenous_set(sd->box_obj, 0); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_ilist.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- e_ilist.h 6 Nov 2005 05:48:50 -0000 1.3 +++ e_ilist.h 12 Nov 2005 05:27:58 -0000 1.4 @@ -15,6 +15,8 @@ EAPI void *e_ilist_select_data2_get (Evas_Object *obj); EAPI void e_ilist_selected_geometry_get (Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h); EAPI void e_ilist_min_size_get (Evas_Object *obj, Evas_Coord *w, Evas_Coord *h); +EAPI void e_ilist_selector_set (Evas_Object *obj, int selector); +EAPI int e_ilist_selector_get (Evas_Object *obj); #endif #endif =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_menus.c,v retrieving revision 1.111 retrieving revision 1.112 diff -u -3 -r1.111 -r1.112 --- e_int_menus.c 27 Oct 2005 10:19:43 -0000 1.111 +++ e_int_menus.c 12 Nov 2005 05:27:58 -0000 1.112 @@ -36,7 +36,6 @@ static void _e_int_menus_config_pre_cb (void *data, E_Menu *m); static void _e_int_menus_config_free_hook (void *obj); static void _e_int_menus_config_item_cb (void *data, E_Menu *m, E_Menu_Item *mi); -static void _e_int_menus_config_generic_cb (void *data, E_Menu *m, E_Menu_Item *mi); static void _e_int_menus_clients_pre_cb (void *data, E_Menu *m); static void _e_int_menus_clients_free_hook (void *obj); static void _e_int_menus_clients_item_cb (void *data, E_Menu *m, E_Menu_Item *mi); @@ -633,10 +632,6 @@ e_menu_item_callback_set(mi, _e_int_menus_config_item_cb, NULL); mi = e_menu_item_new(m); - e_menu_item_label_set(mi, _("Focus Settings")); - e_menu_item_callback_set(mi, _e_int_menus_config_generic_cb, "focus"); - - mi = e_menu_item_new(m); e_menu_item_label_set(mi, _("Eap Editor")); e_menu_item_callback_set(mi, _e_int_menus_eapedit_item_cb, NULL); @@ -669,12 +664,6 @@ } static void -_e_int_menus_config_generic_cb(void *data, E_Menu *m, E_Menu_Item *mi) -{ - if (!strcmp((char *)data, "focus")) e_int_config_focus(m->zone->container); -} - -static void _e_int_menus_clients_pre_cb(void *data, E_Menu *m) { E_Menu_Item *mi; =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_widget_ilist.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- e_widget_ilist.c 11 Nov 2005 04:26:25 -0000 1.3 +++ e_widget_ilist.c 12 Nov 2005 05:27:58 -0000 1.4 @@ -99,6 +99,15 @@ } void +e_widget_ilist_selector_set(Evas_Object *obj, int selector) +{ + E_Widget_Data *wd; + + wd = e_widget_data_get(obj); + e_ilist_selector_set(wd->o_ilist, selector); +} + +void e_widget_ilist_go(Evas_Object *obj) { E_Widget_Data *wd; =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_widget_ilist.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- e_widget_ilist.h 11 Nov 2005 04:26:25 -0000 1.2 +++ e_widget_ilist.h 12 Nov 2005 05:27:58 -0000 1.3 @@ -9,6 +9,7 @@ EAPI Evas_Object *e_widget_ilist_add(Evas *evas, int icon_w, int icon_h, char **value); EAPI void e_widget_ilist_append(Evas_Object *obj, Evas_Object *icon, char *label, void (*func) (void *data), void *data, char *val); EAPI void e_widget_ilist_select_set(Evas_Object *obj, int n); +EAPI void e_widget_ilist_selector_set(Evas_Object *obj, int selector); EAPI void e_widget_ilist_go(Evas_Object *obj); #endif ------------------------------------------------------- SF.Net email is sponsored by: Tame your development challenges with Apache's Geronimo App Server. Download it for free - -and be entered to win a 42" plasma tv or your very own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs