Just want to say: Good idea :-)
\\troback
On Sun, 26 Nov 2006 11:10:49 -0500 (EST)
Enlightenment CVS <[EMAIL PROTECTED]> wrote:
> Enlightenment CVS committal
>
> Author : devilhorns
> Project : e17
> Module : apps/e
>
> Dir : e17/apps/e/src/bin
>
>
> Modified Files:
> e_configure.h e_configure.c
>
>
> Log Message:
> Redo Config Panel as per conversation with raster, using 2 lists now.
>
> ===================================================================
> RCS file: /cvs/e/e17/apps/e/src/bin/e_configure.h,v
> retrieving revision 1.6
> retrieving revision 1.7
> diff -u -3 -r1.6 -r1.7
> --- e_configure.h 27 Mar 2006 14:46:26 -0000 1.6
> +++ e_configure.h 26 Nov 2006 16:10:48 -0000 1.7
> @@ -1,6 +1,10 @@
> #ifdef E_TYPEDEFS
>
> typedef struct _E_Configure E_Configure;
> +typedef struct _E_Configure_CB E_Configure_CB;
> +
> +typedef struct _E_Configure_Category E_Configure_Category;
> +typedef struct _E_Configure_Item E_Configure_Item;
>
> #else
> #ifndef E_CONFIGURE_H
> @@ -8,23 +12,46 @@
>
> #define E_CONFIGURE_TYPE 0xE0b01014
>
> -struct _E_Configure
> +struct _E_Configure
> {
> - E_Object e_obj_inherit;
> -
> + E_Object e_obj_inherit;
> +
> E_Container *con;
> - E_Win *win;
> - Evas *evas;
> + E_Win *win;
> + Evas *evas;
> Evas_Object *edje;
> - Evas_Object *ilist;
> +
> + Evas_Object *o_list;
> + Evas_Object *cat_list;
> + Evas_Object *item_list;
> Evas_Object *close;
>
> - Evas_List *cblist;
> + Evas_List *cats;
> +};
> +
> +struct _E_Configure_CB
> +{
> + E_Configure *eco;
> + E_Config_Dialog *(*func) (E_Container *con);
> +};
> +
> +struct _E_Configure_Category
> +{
> + E_Configure *eco;
> + const char *label;
> +
> + Evas_List *items;
> +};
> +
> +struct _E_Configure_Item
> +{
> + E_Configure_CB *cb;
> +
> + const char *label;
> + const char *icon;
> };
>
> 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)); -EAPI void e_configure_header_item_add(E_Configure
> *eco, char *icon, char *label);
> -
> +
> #endif
> #endif
> ===================================================================
> RCS file: /cvs/e/e17/apps/e/src/bin/e_configure.c,v
> retrieving revision 1.72
> retrieving revision 1.73
> diff -u -3 -r1.72 -r1.73
> --- e_configure.c 16 Nov 2006 17:44:20 -0000 1.72
> +++ e_configure.c 26 Nov 2006 16:10:48 -0000 1.73
> @@ -1,242 +1,318 @@
> #include "e.h"
>
> -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_free(E_Configure *eco);
> 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);
> static void _e_configure_cb_close(void *data, void *data2);
> +static E_Configure_Category *_e_configure_category_add(E_Configure
> *eco, char *label, char *icon); +static void
> _e_configure_category_cb(void *data); +static E_Configure_Item
> *_e_configure_item_add(E_Configure_Category *cat, char *label, char
> *icon, E_Config_Dialog *(*func) (E_Container *con)); +static void
> _e_configure_item_cb(void *data); static E_Configure *_e_configure =
> NULL;
> EAPI E_Configure *
> -e_configure_show(E_Container *con)
> +e_configure_show(E_Container *con)
> {
> E_Configure *eco;
> + E_Configure_Category *cat;
> E_Manager *man;
> Evas_Coord ew, eh, mw, mh;
> -
> - if (_e_configure)
> +
> + if (_e_configure)
> {
> - E_Zone *z;
> + E_Zone *z, *z2;
>
> eco = _e_configure;
> z = e_util_zone_current_get(e_manager_current_get());
> - e_border_uniconify(eco->win->border);
> + z2 = eco->win->border->zone;
> e_win_show(eco->win);
> e_win_raise(eco->win);
> - if (z->container == eco->win->border->zone->container)
> + if (z->container == z2->container)
> e_border_desk_set(eco->win->border, e_desk_current_get(z));
> - else
> + else
> {
> if (!eco->win->border->sticky)
> e_desk_show(eco->win->border->desk);
> -
> ecore_x_pointer_warp(eco->win->border->zone->container->win,
> - eco->win->border->zone->x +
> (eco->win->border->zone->w / 2),
> - eco->win->border->zone->y +
> (eco->win->border->zone->h / 2));
> + ecore_x_pointer_warp(z2->container->win,
> + z2->x + (z2->w / 2), z2->y +
> (z2->h / 2)); }
> e_border_unshade(eco->win->border, E_DIRECTION_DOWN);
> return NULL;
> }
>
> - if (!con)
> + if (!con)
> {
> man = e_manager_current_get();
> if (!man) return NULL;
> con = e_container_current_get(man);
> - if (!con) con = e_container_number_get(man, 0);
> + if (!con)
> + con = e_container_number_get(man, 0);
> if (!con) return NULL;
> }
> -
> +
> 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)
> + eco->win = e_win_new(con);
> + if (!eco->win)
> {
> free(eco);
> return NULL;
> }
> eco->win->data = eco;
> -
> eco->con = con;
> + eco->evas = e_win_evas_get(eco->win);
>
> e_win_title_set(eco->win, _("Enlightenment Configuration"));
> e_win_name_class_set(eco->win, "E", "_configure");
> e_win_dialog_set(eco->win, 1);
> - 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_resize_callback_set(eco->win, _e_configure_cb_resize);
> e_win_centered_set(eco->win, 1);
> -
> +
> eco->edje = edje_object_add(eco->evas);
> - e_theme_edje_object_set(eco->edje, "base/theme/configure",
> - "e/widgets/configure/main");
> -
> - /* 24 */
> - eco->ilist = e_widget_ilist_add(eco->evas, 32, 32, NULL);
> - e_widget_ilist_selector_set(eco->ilist, 1);
> - e_widget_min_size_get(eco->ilist, &mw, &mh);
> - edje_extern_object_min_size_set(eco->ilist, mw, mh);
> - edje_object_part_swallow(eco->edje, "e.swallow.content",
> eco->ilist);
> - edje_object_part_text_set(eco->edje, "title", _("Configuration
> Panel")); -
> - /* add items here */
> - e_configure_header_item_add(eco, "enlightenment/appearance",
> _("Appearance"));
> - e_configure_standard_item_add(eco, "enlightenment/background",
> _("Wallpaper"), e_int_config_wallpaper);
> - e_configure_standard_item_add(eco, "enlightenment/themes",
> _("Theme"), e_int_config_theme);
> - e_configure_standard_item_add(eco, "enlightenment/colors",
> _("Colors"), e_int_config_color_classes);
> - e_configure_standard_item_add(eco, "enlightenment/fonts",
> _("Fonts"), e_int_config_fonts);
> - e_configure_standard_item_add(eco, "enlightenment/windows",
> _("Borders"), e_int_config_borders);
> - e_configure_standard_item_add(eco, "enlightenment/icon_theme",
> _("Icon Theme"), e_int_config_icon_themes);
> - e_configure_standard_item_add(eco, "enlightenment/mouse",
> _("Mouse Cursor"), e_int_config_cursor);
> - e_configure_standard_item_add(eco, "enlightenment/windows",
> _("Window Display"), e_int_config_window_display);
> - e_configure_standard_item_add(eco, "enlightenment/transitions",
> _("Transitions"), e_int_config_transitions);
> - e_configure_standard_item_add(eco, "enlightenment/shelf",
> _("Shelves"), e_int_config_shelf);
> -
> - e_configure_header_item_add(eco, "enlightenment/screen_setup",
> _("Screen"));
> - e_configure_standard_item_add(eco, "enlightenment/desktops",
> _("Virtual Desktops"), e_int_config_desks);
> - e_configure_standard_item_add(eco,
> "enlightenment/screen_resolution", _("Screen Resolution"),
> e_int_config_display);
> - e_configure_standard_item_add(eco, "enlightenment/desklock",
> _("Screen Lock"), e_int_config_desklock);
> -
> - e_configure_header_item_add(eco, "enlightenment/behavior",
> _("Behavior"));
> - e_configure_standard_item_add(eco, "enlightenment/focus",
> _("Window Focus"), e_int_config_focus);
> - e_configure_standard_item_add(eco, "enlightenment/keys", _("Key
> Bindings"), e_int_config_keybindings);
> - e_configure_standard_item_add(eco, "enlightenment/mouse_clean",
> _("Mouse Bindings"), e_int_config_mousebindings);
> - e_configure_standard_item_add(eco, "enlightenment/menus",
> _("Menus"), e_int_config_menus);
> -
> - e_configure_header_item_add(eco, "enlightenment/misc",
> _("Miscellaneous"));
> + e_theme_edje_object_set(eco->edje, "base/theme/configure",
> "e/widgets/configure/main"); +
> + eco->o_list = e_widget_list_add(eco->evas, 0, 1);
> + edje_object_part_swallow(eco->edje, "e.swallow.content",
> eco->o_list); +
> + /* Category List */
> + eco->cat_list = e_widget_ilist_add(eco->evas, 32, 32, NULL);
> + e_widget_list_object_append(eco->o_list, eco->cat_list, 1, 1,
> 0.5);
> +
> + /* Item List */
> + eco->item_list = e_widget_ilist_add(eco->evas, 32, 32, NULL);
> + e_widget_list_object_append(eco->o_list, eco->item_list, 1, 1,
> 0.5);
> +
> + /* Add "Categories" & "Items" Here */
> + cat = _e_configure_category_add(eco, _("Appearance"),
> "enlightenment/appearance");
> + _e_configure_item_add(cat, _("Wallpaper"),
> "enlightenment/background", e_int_config_wallpaper);
> + _e_configure_item_add(cat, _("Theme"), "enlightenment/themes",
> e_int_config_theme);
> + _e_configure_item_add(cat, _("Colors"), "enlightenment/colors",
> e_int_config_color_classes);
> + _e_configure_item_add(cat, _("Fonts"), "enlightenment/fonts",
> e_int_config_fonts);
> + _e_configure_item_add(cat, _("Borders"), "enlightenment/windows",
> e_int_config_borders);
> + _e_configure_item_add(cat, _("Icon Theme"),
> "enlightenment/icon_theme", e_int_config_icon_themes);
> + _e_configure_item_add(cat, _("Mouse Cursor"),
> "enlightenment/mouse", e_int_config_cursor);
> + _e_configure_item_add(cat, _("Window Display"),
> "enlightenment/windows", e_int_config_window_display);
> + _e_configure_item_add(cat, _("Transitions"),
> "enlightenment/transitions", e_int_config_transitions);
> + _e_configure_item_add(cat, _("Shelves"), "enlightenment/shelf",
> e_int_config_shelf); +
> + /* Preselect "Appearance" */
> + e_widget_ilist_selected_set(eco->cat_list, 0);
> + _e_configure_category_cb(cat);
> +
> + cat = _e_configure_category_add(eco, _("Screen"),
> "enlightenment/screen_setup");
> + _e_configure_item_add(cat, _("Virtual Desktops"),
> "enlightenment/desktops", e_int_config_desks);
> + _e_configure_item_add(cat, _("Screen Resolution"),
> "enlightenment/screen_resolution", e_int_config_display);
> + _e_configure_item_add(cat, _("Screen Lock"),
> "enlightenment/desklock", e_int_config_desklock); +
> + cat = _e_configure_category_add(eco, _("Behavior"),
> "enlightenment/behavior");
> + _e_configure_item_add(cat, _("Window Focus"),
> "enlightenment/focus", e_int_config_focus);
> + _e_configure_item_add(cat, _("Key Bindings"),
> "enlightenment/keys", e_int_config_keybindings);
> + _e_configure_item_add(cat, _("Mouse Bindings"),
> "enlightenment/mouse_clean", e_int_config_mousebindings);
> + _e_configure_item_add(cat, _("Menus"), "enlightenment/menus",
> e_int_config_menus); +
> + cat = _e_configure_category_add(eco, _("Miscellaneous"),
> "enlightenment/misc"); #ifdef ENABLE_FAVORITES
> - e_configure_standard_item_add(eco, "enlightenment/applications",
> _("Application Menus"), e_int_config_apps);
> + _e_configure_item_add(cat, _("Application Menus"),
> "enlightenment/applications", e_int_config_apps); #else
> - e_configure_standard_item_add(eco, "enlightenment/applications",
> _("Applications Menu"), e_int_config_apps);
> + _e_configure_item_add(cat, _("Applications Menu"),
> "enlightenment/applications", e_int_config_apps); #endif
> - e_configure_standard_item_add(eco, "enlightenment/performance",
> _("Performance"), e_int_config_performance);
> - e_configure_standard_item_add(eco, "enlightenment/configuration",
> _("Configuration Dialogs"), e_int_config_cfgdialogs);
> - e_configure_standard_item_add(eco, "enlightenment/intl",
> _("Language Settings"), e_int_config_intl);
> -
> - e_configure_header_item_add(eco, "enlightenment/advanced",
> _("Advanced"));
> - e_configure_standard_item_add(eco, "enlightenment/startup",
> _("Startup"), e_int_config_startup);
> - e_configure_standard_item_add(eco, "enlightenment/winlist",
> _("Window List"), e_int_config_winlist);
> - e_configure_standard_item_add(eco,
> "enlightenment/window_manipulation", _("Window Manipulation"),
> e_int_config_window_manipulation);
> - e_configure_standard_item_add(eco, "enlightenment/run", _("Run
> Command"), e_int_config_exebuf);
> - e_configure_standard_item_add(eco, "enlightenment/directories",
> _("Search Directories"), e_int_config_paths);
> - e_configure_standard_item_add(eco, "enlightenment/e", _("File
> Associations"), e_int_config_mime);
> + _e_configure_item_add(cat, _("Performance"),
> "enlightenment/performance", e_int_config_performance);
> + _e_configure_item_add(cat, _("Configuration Dialogs"),
> "enlightenment/configuration", e_int_config_cfgdialogs);
> + _e_configure_item_add(cat, _("Language Settings"),
> "enlightenment/intl", e_int_config_intl); +
> + cat = _e_configure_category_add(eco, _("Advanced"),
> "enlightenment/advanced");
> + _e_configure_item_add(cat, _("Startup"), "enlightenment/startup",
> e_int_config_startup);
> + _e_configure_item_add(cat, _("Window List"),
> "enlightenment/winlist", e_int_config_winlist);
> + _e_configure_item_add(cat, _("Window Manipulation"),
> "enlightenment/window_manipulation",
> e_int_config_window_manipulation);
> + _e_configure_item_add(cat, _("Run Command"), "enlightenment/run",
> e_int_config_exebuf);
> + _e_configure_item_add(cat, _("Search Directories"),
> "enlightenment/directories", e_int_config_paths);
> + _e_configure_item_add(cat, _("File Associations"),
> "enlightenment/e", e_int_config_mime);
> - e_configure_header_item_add(eco, "enlightenment/extensions",
> _("Extensions"));
> - e_configure_standard_item_add(eco, "enlightenment/modules",
> _("Modules"), e_int_config_modules);
> -
> - /* FIXME: we should have a way for modules to hook in here and
> add their
> - * own entries
> + cat = _e_configure_category_add(eco, _("Extensions"),
> "enlightenment/extensions");
> + _e_configure_item_add(cat, _("Modules"), "enlightenment/modules",
> e_int_config_modules); +
> + /* FIXME: we should have a way for modules to hook in here and
> add their own entries
> *
> - * e_configure_header_item_add(eco,
> "enlightenment/extension_config", _("Extension Configuration"));
> + * cat = _e_configure_category_add(eco, _("Extension
> Configuration"), "enlightenment/extension_config"); */
>
> - eco->close = e_widget_button_add(eco->evas, _("Close"), NULL,
> _e_configure_cb_close, eco, NULL);
> + /* Resize the "Category" list */
> + e_widget_min_size_get(eco->cat_list, &mw, &mh);
> + edje_extern_object_min_size_set(eco->cat_list, mw, mh);
> +
> + /* Close Button */
> + eco->close = e_widget_button_add(eco->evas, _("Close"), NULL,
> + _e_configure_cb_close, eco,
> NULL); e_widget_min_size_get(eco->close, &mw, &mh);
> edje_extern_object_min_size_set(eco->close, mw, mh);
> edje_object_part_swallow(eco->edje, "e.swallow.button",
> eco->close); -
> +
> 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);
>
> - evas_object_show(eco->ilist);
> - evas_object_show(eco->close);
> evas_object_show(eco->edje);
> -
> e_win_show(eco->win);
> eco->win->border->internal_icon =
> evas_stringshare_add("enlightenment/configuration");
> - e_widget_focus_set(eco->ilist, 1);
> - e_widget_ilist_go(eco->ilist);
> -
> - _e_configure = eco;
> + e_widget_focus_set(eco->cat_list, 1);
> + e_widget_ilist_go(eco->cat_list);
>
> + _e_configure = eco;
> return eco;
> }
>
> -EAPI void
> -e_configure_standard_item_add(E_Configure *eco, char *icon, char
> *label, E_Config_Dialog *(*func) (E_Container *con)) -{
> - 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); -}
> -
> -EAPI void
> -e_configure_header_item_add(E_Configure *eco, char *icon, char
> *label) -{
> - Evas_Object *o;
> -
> - o = edje_object_add(eco->evas);
> - e_util_edje_icon_set(o, icon);
> - e_widget_ilist_header_append(eco->ilist, o, label);
> -}
> -
> -/* local subsystem functions */
> -static void
> -_e_configure_free(E_Configure *eco)
> +static void
> +_e_configure_free(E_Configure *eco)
> {
> _e_configure = NULL;
> - while (eco->cblist)
> + while (eco->cats)
> {
> - free(eco->cblist->data);
> - eco->cblist = evas_list_remove_list(eco->cblist,
> eco->cblist);
> + E_Configure_Category *cat;
> +
> + cat = eco->cats->data;
> + if (!cat) continue;
> + if (cat->label)
> + evas_stringshare_del(cat->label);
> +
> + while (cat->items)
> + {
> + E_Configure_Item *ci;
> +
> + ci = cat->items->data;
> + if (!ci) continue;
> + if (ci->label)
> + evas_stringshare_del(ci->label);
> + if (ci->icon)
> + evas_stringshare_del(ci->icon);
> + if (ci->cb)
> + free(ci->cb);
> + cat->items = evas_list_remove_list(cat->items,
> cat->items);
> + E_FREE(ci);
> + }
> + eco->cats = evas_list_remove_list(eco->cats, eco->cats);
> + E_FREE(cat);
> }
> evas_object_del(eco->edje);
> - evas_object_del(eco->ilist);
> e_object_del(E_OBJECT(eco->win));
> free(eco);
> }
>
> -static void
> -_e_configure_cb_del_req(E_Win *win)
> +static void
> +_e_configure_cb_del_req(E_Win *win)
> {
> E_Configure *eco;
> -
> +
> eco = win->data;
> - if (eco) e_object_del(E_OBJECT(eco));
> + if (!eco) return;
> + e_object_del(E_OBJECT(eco));
> }
>
> -static void
> -_e_configure_cb_resize(E_Win *win)
> +static void
> +_e_configure_cb_resize(E_Win *win)
> {
> - Evas_Coord w, h;
> E_Configure *eco;
> -
> - ecore_evas_geometry_get(win->ecore_evas, NULL, NULL, &w, &h);
> + Evas_Coord w, h;
> +
> eco = win->data;
> + if (!eco) return;
> + ecore_evas_geometry_get(win->ecore_evas, NULL, NULL, &w, &h);
> evas_object_resize(eco->edje, w, h);
> }
>
> -static void
> -_e_configure_cb_standard(void *data)
> +static void
> +_e_configure_cb_close(void *data, void *data2)
> {
> - E_Configure_CB *ecocb;
> + E_Configure *eco;
>
> - ecocb = data;
> - ecocb->func(ecocb->eco->con);
> + eco = data;
> + if (!eco) return;
> + e_object_del(E_OBJECT(eco));
> }
>
> -static void
> -_e_configure_cb_close(void *data, void *data2)
> +static E_Configure_Category *
> +_e_configure_category_add(E_Configure *eco, char *label, char *icon)
> {
> + Evas_Object *o = NULL;
> + E_Configure_Category *cat;
> +
> + if (!eco) return NULL;
> + if (!label) return NULL;
> +
> + cat = E_NEW(E_Configure_Category, 1);
> + cat->eco = eco;
> + cat->label = evas_stringshare_add(label);
> + if (icon)
> + {
> + o = edje_object_add(eco->evas);
> + e_util_edje_icon_set(o, icon);
> + }
> + eco->cats = evas_list_append(eco->cats, cat);
> +
> + e_widget_ilist_append(eco->cat_list, o, label,
> _e_configure_category_cb, cat, NULL);
> + return cat;
> +}
> +
> +static void
> +_e_configure_category_cb(void *data)
> +{
> + E_Configure_Category *cat;
> E_Configure *eco;
> + Evas_List *l;
>
> - eco = data;
> - if (eco) e_object_del(E_OBJECT(eco));
> + cat = data;
> + if (!cat) return;
> + eco = cat->eco;
> +
> + e_widget_ilist_clear(eco->item_list);
> + for (l = cat->items; l; l = l->next)
> + {
> + E_Configure_Item *ci;
> + Evas_Object *o = NULL;
> +
> + ci = l->data;
> + if (!ci) continue;
> + if (ci->icon)
> + {
> + o = edje_object_add(eco->evas);
> + e_util_edje_icon_set(o, ci->icon);
> + }
> + e_widget_ilist_append(eco->item_list, o, ci->label,
> _e_configure_item_cb, ci, NULL);
> + }
> + e_widget_ilist_go(eco->item_list);
> +}
> +
> +static E_Configure_Item *
> +_e_configure_item_add(E_Configure_Category *cat, char *label, char
> *icon, E_Config_Dialog *(*func) (E_Container *con)) +{
> + E_Configure_Item *ci;
> + E_Configure_CB *cb;
> +
> + if (!cat) return NULL;
> + if (!label) return NULL;
> +
> + ci = E_NEW(E_Configure_Item, 1);
> + cb = E_NEW(E_Configure_CB, 1);
> + cb->eco = cat->eco;
> + cb->func = func;
> + ci->cb = cb;
> + ci->label = evas_stringshare_add(label);
> + if (icon)
> + ci->icon = evas_stringshare_add(icon);
> + cat->items = evas_list_append(cat->items, ci);
> + return ci;
> +}
> +
> +static void
> +_e_configure_item_cb(void *data)
> +{
> + E_Configure_Item *ci;
> + E_Configure_CB *cb;
> +
> + ci = data;
> + if (!ci) return;
> + cb = ci->cb;
> + cb->func(cb->eco->con);
> }
>
>
>
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to
> share your opinions on IT & business topics through brief surveys -
> and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> _______________________________________________ enlightenment-cvs
> mailing list [email protected]
> https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs
--
============================================
Microsoft is not the answer.
Microsoft is the question.
And 'No' is the answer!
--------------------------------------------
Anders Trobäck
http://www.troback.com
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel