Enlightenment CVS committal Author : raster Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_gadcon.c e_gadcon.h e_int_shelf_config.c e_theme.c e_theme.h Log Message: ou can choose shelf styles now - finally. added 2 more styles (gold and invisible). themes can provide as many styles as u like. =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_gadcon.c,v retrieving revision 1.21 retrieving revision 1.22 diff -u -3 -r1.21 -r1.22 --- e_gadcon.c 23 Apr 2006 13:20:57 -0000 1.21 +++ e_gadcon.c 29 Apr 2006 03:51:27 -0000 1.22 @@ -484,9 +484,9 @@ { gcc->o_frame = gc->frame_request.func(gc->frame_request.data, gcc, style); + gcc->style = evas_stringshare_add(style); if (gcc->o_frame) { - gcc->inset = 1; edje_object_size_min_calc(gcc->o_frame, &(gcc->pad.w), &(gcc->pad.h)); gcc->o_box = e_box_add(gcc->gadcon->evas); @@ -811,15 +811,30 @@ } static void -_e_gadcon_client_cb_menu_inset(void *data, E_Menu *m, E_Menu_Item *mi) +_e_gadcon_client_cb_menu_style_plain(void *data, E_Menu *m, E_Menu_Item *mi) { E_Gadcon_Client *gcc; E_Gadcon *gc; gcc = data; gc = gcc->gadcon; - if (gcc->inset) gcc->inset = 0; - else gcc->inset = 1; + if (gcc->style) evas_stringshare_del(gcc->style); + gcc->style = NULL; + _e_gadcon_client_save(gcc); + e_gadcon_unpopulate(gc); + e_gadcon_populate(gc); +} + +static void +_e_gadcon_client_cb_menu_style_inset(void *data, E_Menu *m, E_Menu_Item *mi) +{ + E_Gadcon_Client *gcc; + E_Gadcon *gc; + + gcc = data; + gc = gcc->gadcon; + if (gcc->style) evas_stringshare_del(gcc->style); + gcc->style = evas_stringshare_add("inset"); _e_gadcon_client_save(gcc); e_gadcon_unpopulate(gc); e_gadcon_populate(gc); @@ -870,17 +885,38 @@ EAPI void e_gadcon_client_util_menu_items_append(E_Gadcon_Client *gcc, E_Menu *menu, int flags) { + E_Menu *mn; E_Menu_Item *mi; E_OBJECT_CHECK(gcc); E_OBJECT_TYPE_CHECK(gcc, E_GADCON_CLIENT_TYPE); + mn = e_menu_new(); + + mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, _("Plain")); + e_util_menu_item_edje_icon_set(mi, "enlightenment/plain"); + e_menu_item_radio_group_set(mi, 1); + e_menu_item_radio_set(mi, 1); + if (!gcc->style) e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _e_gadcon_client_cb_menu_style_plain, gcc); + + mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, _("Inset")); + e_util_menu_item_edje_icon_set(mi, "enlightenment/plain"); + e_menu_item_radio_group_set(mi, 1); + e_menu_item_radio_set(mi, 1); + if ((gcc->style) && (!strcmp(gcc->style, "inset"))) + e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _e_gadcon_client_cb_menu_style_inset, gcc); + + /***/ + mi = e_menu_item_new(menu); - e_menu_item_label_set(mi, _("Inset appearance")); - e_util_menu_item_edje_icon_set(mi, "enlightenment/inset"); - e_menu_item_check_set(mi, 1); - if (gcc->o_frame) e_menu_item_toggle_set(mi, 1); - e_menu_item_callback_set(mi, _e_gadcon_client_cb_menu_inset, gcc); + e_menu_item_label_set(mi, _("Appearance")); + e_util_menu_item_edje_icon_set(mi, "enlightenment/appearance"); + e_menu_item_submenu_set(mi, mn); + e_object_del(E_OBJECT(mn)); mi = e_menu_item_new(menu); e_menu_item_label_set(mi, _("Automatically scroll contents")); @@ -989,6 +1025,7 @@ evas_stringshare_del(gcc->id); if (gcc->scroll_timer) ecore_timer_del(gcc->scroll_timer); if (gcc->scroll_animator) ecore_animator_del(gcc->scroll_animator); + if (gcc->style) evas_stringshare_del(gcc->style); free(gcc); } @@ -1136,8 +1173,8 @@ cf_gcc->autoscroll = gcc->autoscroll; if (cf_gcc->style) evas_stringshare_del(cf_gcc->style); cf_gcc->style = NULL; - if (gcc->inset) - cf_gcc->style = evas_stringshare_add("inset"); + if (gcc->style) + cf_gcc->style = evas_stringshare_add(gcc->style); cf_gcc->resizable = gcc->resizable; ok++; break; @@ -1165,8 +1202,8 @@ cf_gcc->autoscroll = gcc->autoscroll; if (cf_gcc->style) evas_stringshare_del(cf_gcc->style); cf_gcc->style = NULL; - if (gcc->inset) - cf_gcc->style = evas_stringshare_add("inset"); + if (gcc->style) + cf_gcc->style = evas_stringshare_add(gcc->style); cf_gcc->resizable = gcc->resizable; cf_gc->clients = evas_list_append(cf_gc->clients, cf_gcc); ok++; =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_gadcon.h,v retrieving revision 1.15 retrieving revision 1.16 diff -u -3 -r1.15 -r1.16 --- e_gadcon.h 23 Apr 2006 13:20:57 -0000 1.15 +++ e_gadcon.h 29 Apr 2006 03:51:27 -0000 1.16 @@ -105,14 +105,14 @@ struct { Evas_Coord w, h; } pad, min, aspect; - unsigned char inset : 1; - unsigned char autoscroll : 1; - unsigned char resizable : 1; Ecore_Timer *scroll_timer; Ecore_Animator *scroll_animator; double scroll_pos; double scroll_wanted; E_Menu *menu; + char *style; + unsigned char autoscroll : 1; + unsigned char resizable : 1; unsigned char moving : 1; unsigned char resizing : 1; =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_int_shelf_config.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- e_int_shelf_config.c 23 Apr 2006 06:56:22 -0000 1.1 +++ e_int_shelf_config.c 29 Apr 2006 03:51:27 -0000 1.2 @@ -4,7 +4,7 @@ #include "e.h" /* PROTOTYPES - same all the time */ -//typedef struct _CFBorder CFBorder; +typedef struct _CFStyle CFStyle; static void *_create_data(E_Config_Dialog *cfd); static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata); @@ -22,13 +22,14 @@ int fit_size; int size; int layering; + Evas_List *cfslist; }; -//struct _CFBorder -//{ -// E_Config_Dialog_Data *cfdata; -// const char *bordername; -//}; +struct _CFStyle +{ + E_Config_Dialog_Data *cfdata; + const char *style; +}; /* a nice easy setup function that does the dirty work */ EAPI void @@ -101,6 +102,11 @@ /* Free the cfdata */ cfdata->es->config_dialog = NULL; if (cfdata->style) free(cfdata->style); + while (cfdata->cfslist) + { + E_FREE(cfdata->cfslist->data); + cfdata->cfslist = evas_list_remove_list(cfdata->cfslist, cfdata->cfslist); + } free(cfdata); } @@ -138,7 +144,7 @@ zone = cfdata->es->zone; id = cfdata->es->id; cfdata->es->config_dialog = NULL; - e_object_del(cfdata->es); + e_object_del(E_OBJECT(cfdata->es)); cfdata->es = e_shelf_zone_new(zone, cfdata->escfg->name, cfdata->escfg->style, cfdata->escfg->popup, @@ -160,12 +166,17 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata) { /* generate the core widget layout for a basic dialog */ - Evas_Object *o, *of, *ob; + Evas_Object *o, *o2, *of, *ob, *oi, *oj; E_Radio_Group *rg; + Evas_Coord wmw, wmh; + Evas_List *styles, *l; int sel, n; - + CFStyle *cfs; + /* FIXME: this is just raw config now - it needs UI improvments */ - o = e_widget_list_add(evas, 0, 0); + o = e_widget_list_add(evas, 1, 1); + + o2 = e_widget_list_add(evas, 0, 0); of = e_widget_framelist_add(evas, _("Stacking"), 0); rg = e_widget_radio_group_new(&(cfdata->layering)); @@ -175,7 +186,7 @@ e_widget_framelist_object_append(of, ob); ob = e_widget_radio_add(evas, _("Above Everything"), 2, rg); e_widget_framelist_object_append(of, ob); - e_widget_list_object_append(o, of, 1, 1, 0.5); + e_widget_list_object_append(o2, of, 1, 1, 0.5); of = e_widget_framelist_add(evas, _("Size"), 0); ob = e_widget_check_add(evas, _("Shrink length fit contents"), &(cfdata->fit_along)); @@ -186,7 +197,7 @@ e_widget_framelist_object_append(of, ob); ob = e_widget_slider_add(evas, 1, 0, _("%3.0f pixels"), 4, 200, 4, 0, NULL, &(cfdata->size), 200); e_widget_framelist_object_append(of, ob); - e_widget_list_object_append(o, of, 1, 1, 0.5); + e_widget_list_object_append(o2, of, 1, 1, 0.5); of = e_widget_framelist_add(evas, _("Layout"), 0); rg = e_widget_radio_group_new(&(cfdata->orient)); @@ -214,7 +225,41 @@ e_widget_framelist_object_append(of, ob); ob = e_widget_radio_add(evas, _("Right Bottom"), E_GADCON_ORIENT_CORNER_RB, rg); e_widget_framelist_object_append(of, ob); - e_widget_list_object_append(o, of, 1, 1, 0.5); + e_widget_list_object_append(o2, of, 1, 1, 0.5); + + e_widget_list_object_append(o, o2, 1, 1, 0.5); + + oi = e_widget_ilist_add(evas, 128, 20, &(cfdata->style)); + + sel = 0; + styles = e_theme_shelf_list(); + + for (n = 0, l = styles; l; l = l->next, n++) + { + char buf[4096]; + + cfs = E_NEW(CFStyle, 1); + cfs->cfdata = cfdata; + cfs->style = "default"; + cfdata->cfslist = evas_list_append(cfdata->cfslist, cfs); + ob = e_livethumb_add(evas); + e_livethumb_vsize_set(ob, 256, 40); + oj = edje_object_add(e_livethumb_evas_get(ob)); + snprintf(buf, sizeof(buf), "shelf/%s/base", + (char *)l->data); + e_theme_edje_object_set(oj, "base/theme/shelf", buf); + e_livethumb_thumb_set(ob, oj); + e_widget_ilist_append(oi, ob, (char *)l->data, NULL, NULL, l->data); + if (!strcmp(cfdata->es->style, (char *)l->data)) + sel = n; + } + e_widget_min_size_get(oi, &wmw, &wmh); + e_widget_min_size_set(oi, wmw, 250); + + e_widget_ilist_go(oi); + e_widget_ilist_selected_set(oi, sel); + + e_widget_list_object_append(o, oi, 1, 1, 0.5); return o; } =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_theme.c,v retrieving revision 1.21 retrieving revision 1.22 diff -u -3 -r1.21 -r1.22 --- e_theme.c 2 Mar 2006 12:03:48 -0000 1.21 +++ e_theme.c 29 Apr 2006 03:51:27 -0000 1.22 @@ -25,6 +25,7 @@ static Evas_List *categories = NULL; static Evas_List *transitions = NULL; static Evas_List *borders = NULL; +static Evas_List *shelfs = NULL; /* externally accessible functions */ @@ -51,6 +52,7 @@ /* Find transitions */ transitions = _e_theme_collection_items_find("base/theme/transitions", "transitions"); borders = _e_theme_collection_items_find("base/theme/borders", "widgets/border"); + shelfs = _e_theme_collection_items_find("base/theme/shelf", "shelf"); return 1; } @@ -118,6 +120,11 @@ evas_stringshare_del(borders->data); borders = evas_list_remove_list(borders, borders); } + while (shelfs) + { + evas_stringshare_del(shelfs->data); + shelfs = evas_list_remove_list(shelfs, shelfs); + } return 1; } @@ -421,6 +428,25 @@ e_theme_border_list(void) { return borders; +} + +EAPI int +e_theme_shelf_find(const char *shelf) +{ + Evas_List *l; + + for (l = shelfs; l; l = l->next) + { + if (!strcmp(shelf, l->data)) + return 1; + } + return 0; +} + +EAPI Evas_List * +e_theme_shelf_list(void) +{ + return shelfs; } /* local subsystem functions */ =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_theme.h,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- e_theme.h 2 Mar 2006 12:03:48 -0000 1.8 +++ e_theme.h 29 Apr 2006 03:51:27 -0000 1.9 @@ -24,6 +24,8 @@ EAPI Evas_List *e_theme_transition_list(void); EAPI int e_theme_border_find(const char *border); EAPI Evas_List *e_theme_border_list(void); +EAPI int e_theme_shelf_find(const char *shelf); +EAPI Evas_List *e_theme_shelf_list(void); #endif #endif ------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs