diff --git a/data/themes/default_shelf.edc b/data/themes/default_shelf.edc index ec3b454ed..b37e6250a 100644 --- a/data/themes/default_shelf.edc +++ b/data/themes/default_shelf.edc @@ -1,6 +1,8 @@ images { image: "e17_shelf_bg_h.png" COMP; image: "e17_shelf_bg_v.png" COMP; + image: "e17_shelf_bg2_h.png" COMP; + image: "e17_shelf_bg2_v.png" COMP; image: "e17_ibar_bg_h.png" COMP; image: "e17_ibar_over_h.png" COMP; } @@ -491,3 +493,616 @@ group { } } } + + + + + + + + + + + + + + + + + + + + + + + +group { + name: "shelf/gold/base"; + data { + // this tells e the border is shaped + item: "shaped" "1"; + } + parts { + part { + name: "base"; + mouse_events: 0; + description { + state: "default" 0.0; + image { + normal: "e17_shelf_bg2_h.png"; + border: 19 19 9 9; + } + fill { + origin { + offset: 0 -6; + } + size { + offset: 0 6; + } + } + } + description { + state: "top_left" 0.0; + inherit: "default" 0.0; + fill { + origin { + offset: -16 -6; + } + size { + offset: 16 6; + } + } + } + description { + state: "top_right" 0.0; + inherit: "default" 0.0; + fill { + origin { + offset: 0 -6; + } + size { + offset: 16 6; + } + } + } + description { + state: "bottom" 0.0; + inherit: "default" 0.0; + fill { + origin { + offset: 0 0; + } + size { + offset: 0 6; + } + } + } + description { + state: "bottom_left" 0.0; + inherit: "default" 0.0; + fill { + origin { + offset: -16 0; + } + size { + offset: 16 6; + } + } + } + description { + state: "bottom_right" 0.0; + inherit: "default" 0.0; + fill { + origin { + offset: 0 0; + } + size { + offset: 16 6; + } + } + } + description { + state: "left" 0.0; + image { + normal: "e17_shelf_bg2_v.png"; + border: 9 9 19 19; + } + fill { + origin { + offset: -6 0; + } + size { + offset: 6 0; + } + } + } + description { + state: "left_top" 0.0; + image { + normal: "e17_shelf_bg2_v.png"; + border: 9 9 19 19; + } + fill { + origin { + offset: -6 -16; + } + size { + offset: 6 16; + } + } + } + description { + state: "left_bottom" 0.0; + image { + normal: "e17_shelf_bg2_v.png"; + border: 9 9 19 19; + } + fill { + origin { + offset: -6 0; + } + size { + offset: 6 16; + } + } + } + description { + state: "right" 0.0; + image { + normal: "e17_shelf_bg2_v.png"; + border: 9 9 19 19; + } + fill { + origin { + offset: 0 0; + } + size { + offset: 6 0; + } + } + } + description { + state: "right_top" 0.0; + image { + normal: "e17_shelf_bg2_v.png"; + border: 9 9 19 19; + } + fill { + origin { + offset: 0 -16; + } + size { + offset: 6 16; + } + } + } + description { + state: "right_bottom" 0.0; + image { + normal: "e17_shelf_bg2_v.png"; + border: 9 9 19 19; + } + fill { + origin { + offset: 0 0; + } + size { + offset: 6 16; + } + } + } + } + part { + name: "items"; + mouse_events: 0; + type: SWALLOW; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 18 2; + } + rel2 { + relative: 1.0 1.0; + offset: -19 -3; + } + } + description { + state: "top_left" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 2 2; + } + rel2 { + relative: 1.0 1.0; + offset: -19 -3; + } + } + description { + state: "top_right" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 18 2; + } + rel2 { + relative: 1.0 1.0; + offset: -3 -3; + } + } + description { + state: "bottom" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 18 2; + } + rel2 { + relative: 1.0 1.0; + offset: -19 -3; + } + } + description { + state: "bottom_left" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 2 2; + } + rel2 { + relative: 1.0 1.0; + offset: -19 -3; + } + } + description { + state: "bottom_right" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 18 2; + } + rel2 { + relative: 1.0 1.0; + offset: -3 -3; + } + } + description { + state: "left" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 2 18; + } + rel2 { + relative: 1.0 1.0; + offset: -3 -19; + } + } + description { + state: "left_top" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 2 2; + } + rel2 { + relative: 1.0 1.0; + offset: -3 -19; + } + } + description { + state: "left_bottom" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 2 18; + } + rel2 { + relative: 1.0 1.0; + offset: -3 -3; + } + } + description { + state: "right" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 2 18; + } + rel2 { + relative: 1.0 1.0; + offset: -3 -19; + } + } + description { + state: "right_top" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 2 2; + } + rel2 { + relative: 1.0 1.0; + offset: -3 -19; + } + } + description { + state: "right_bottom" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 2 18; + } + rel2 { + relative: 1.0 1.0; + offset: -3 -3; + } + } + } + } + programs { + program { + name: "orient1"; + signal: "set_orientation"; + source: "top"; + action: STATE_SET "default" 0.0; + target: "base"; + target: "items"; + } + program { + name: "orient2"; + signal: "set_orientation"; + source: "top_left"; + action: STATE_SET "top_left" 0.0; + target: "base"; + target: "items"; + } + program { + name: "orient3"; + signal: "set_orientation"; + source: "top_right"; + action: STATE_SET "top_right" 0.0; + target: "base"; + target: "items"; + } + program { + name: "orient4"; + signal: "set_orientation"; + source: "bottom"; + action: STATE_SET "bottom" 0.0; + target: "base"; + target: "items"; + } + program { + name: "orient5"; + signal: "set_orientation"; + source: "bottom_left"; + action: STATE_SET "bottom_left" 0.0; + target: "base"; + target: "items"; + } + program { + name: "orient6"; + signal: "set_orientation"; + source: "bottom_right"; + action: STATE_SET "bottom_right" 0.0; + target: "base"; + target: "items"; + } + program { + name: "orient7"; + signal: "set_orientation"; + source: "left"; + action: STATE_SET "left" 0.0; + target: "base"; + target: "items"; + } + program { + name: "orient8"; + signal: "set_orientation"; + source: "left_top"; + action: STATE_SET "left_top" 0.0; + target: "base"; + target: "items"; + } + program { + name: "orient9"; + signal: "set_orientation"; + source: "left_bottom"; + action: STATE_SET "left_bottom" 0.0; + target: "base"; + target: "items"; + } + program { + name: "orient10"; + signal: "set_orientation"; + source: "right"; + action: STATE_SET "right" 0.0; + target: "base"; + target: "items"; + } + program { + name: "orient11"; + signal: "set_orientation"; + source: "right_top"; + action: STATE_SET "right_top" 0.0; + target: "base"; + target: "items"; + } + program { + name: "orient12"; + signal: "set_orientation"; + source: "right_bottom"; + action: STATE_SET "right_bottom" 0.0; + target: "base"; + target: "items"; + } + } +} +group { + name: "shelf/gold/inset"; + parts { + part { + name: "background"; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + to: "overlay"; + } + rel2 { + to: "overlay"; + } + image { + normal: "e17_ibar_bg_h.png"; + border: 6 6 6 6; + } + fill { + smooth: 0; + } + } + } + part { + name: "items_clip"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + to: "background"; + offset: 4 4; + } + rel2 { + to: "background"; + offset: -5 -5; + } + color: 255 255 255 255; + } + } + part { + name: "items"; + type: SWALLOW; + mouse_events: 0; + clip_to: "items_clip"; + description { + state: "default" 0.0; + rel1 { + offset: 4 4; + } + rel2 { + offset: -5 -5; + } + color: 0 0 0 0; + } + } + part { + name: "overlay"; + mouse_events: 0; + description { + state: "default" 0.0; + image { + normal: "e17_ibar_over_h.png"; + border: 13 13 13 13; + middle: 0; + } + fill { + smooth: 0; + } + } + } + } +} + + + + + + + + + + + + + + +group { + name: "shelf/invisible/base"; + data { + // this tells e the border is shaped + item: "shaped" "1"; + } + parts { + part { + name: "items"; + mouse_events: 0; + type: SWALLOW; + description { + state: "default" 0.0; + } + } + } +} +group { + name: "shelf/invisible/inset"; + parts { + part { + name: "background"; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + to: "overlay"; + } + rel2 { + to: "overlay"; + } + image { + normal: "e17_ibar_bg_h.png"; + border: 6 6 6 6; + } + fill { + smooth: 0; + } + } + } + part { + name: "items_clip"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + to: "background"; + offset: 4 4; + } + rel2 { + to: "background"; + offset: -5 -5; + } + color: 255 255 255 255; + } + } + part { + name: "items"; + type: SWALLOW; + mouse_events: 0; + clip_to: "items_clip"; + description { + state: "default" 0.0; + rel1 { + offset: 4 4; + } + rel2 { + offset: -5 -5; + } + color: 0 0 0 0; + } + } + part { + name: "overlay"; + mouse_events: 0; + description { + state: "default" 0.0; + image { + normal: "e17_ibar_over_h.png"; + border: 13 13 13 13; + middle: 0; + } + fill { + smooth: 0; + } + } + } + } +} diff --git a/data/themes/images/Makefile.am b/data/themes/images/Makefile.am index 76036e655..afeaff048 100644 --- a/data/themes/images/Makefile.am +++ b/data/themes/images/Makefile.am @@ -421,4 +421,6 @@ e17_border3b.png \ e17_border5b.png \ e17_border7b.png \ e17_shelf_bg_h.png \ -e17_shelf_bg_v.png +e17_shelf_bg_v.png \ +e17_shelf_bg2_h.png \ +e17_shelf_bg2_v.png diff --git a/data/themes/images/e17_shelf_bg2_h.png b/data/themes/images/e17_shelf_bg2_h.png new file mode 100644 index 000000000..e897ccb35 Binary files /dev/null and b/data/themes/images/e17_shelf_bg2_h.png differ diff --git a/data/themes/images/e17_shelf_bg2_v.png b/data/themes/images/e17_shelf_bg2_v.png new file mode 100644 index 000000000..fc776fc36 Binary files /dev/null and b/data/themes/images/e17_shelf_bg2_v.png differ diff --git a/src/bin/e_gadcon.c b/src/bin/e_gadcon.c index c2a36eb10..a7851f1be 100644 --- a/src/bin/e_gadcon.c +++ b/src/bin/e_gadcon.c @@ -484,9 +484,9 @@ e_gadcon_client_new(E_Gadcon *gc, char *name, char *id, char *style, Evas_Object { 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 @@ e_gadcon_client_resizable_set(E_Gadcon_Client *gcc, int resizable) } 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 @@ _e_gadcon_client_cb_menu_edit(void *data, E_Menu *m, E_Menu_Item *mi) 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 @@ _e_gadcon_client_free(E_Gadcon_Client *gcc) 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 @@ _e_gadcon_client_save(E_Gadcon_Client *gcc) 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 @@ _e_gadcon_client_save(E_Gadcon_Client *gcc) 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++; diff --git a/src/bin/e_gadcon.h b/src/bin/e_gadcon.h index e6e8aaa2d..1a1019145 100644 --- a/src/bin/e_gadcon.h +++ b/src/bin/e_gadcon.h @@ -105,14 +105,14 @@ struct _E_Gadcon_Client 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; diff --git a/src/bin/e_int_shelf_config.c b/src/bin/e_int_shelf_config.c index 1fe701165..fd08fcdbc 100644 --- a/src/bin/e_int_shelf_config.c +++ b/src/bin/e_int_shelf_config.c @@ -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 @@ struct _E_Config_Dialog_Data 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_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) /* 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 @@ _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) 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 @@ static Evas_Object * _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 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf 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 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf 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 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf 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; } diff --git a/src/bin/e_theme.c b/src/bin/e_theme.c index 7922b7e4d..ece0ba39d 100644 --- a/src/bin/e_theme.c +++ b/src/bin/e_theme.c @@ -25,6 +25,7 @@ static Evas_Hash *group_cache = NULL; 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 @@ e_theme_init(void) /* 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 @@ e_theme_shutdown(void) 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; } @@ -423,6 +430,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 */ static Evas_Bool diff --git a/src/bin/e_theme.h b/src/bin/e_theme.h index 31839cfd0..bb4e23781 100644 --- a/src/bin/e_theme.h +++ b/src/bin/e_theme.h @@ -24,6 +24,8 @@ EAPI int e_theme_transition_find(const char *transition); 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