diff --git a/src/bin/widget_option.c b/src/bin/widget_option.c index 2840ee4..9ad1b79 100644 --- a/src/bin/widget_option.c +++ b/src/bin/widget_option.c @@ -308,6 +308,25 @@ _widget_option_genlist_create(Evas_Object *box) } // popup +struct _Popup_Orient +{ + const char *name; + Elm_Popup_Orient orient; +}; + +struct _Popup_Orient _popup_orient[ELM_POPUP_ORIENT_LAST] = +{ + { "Top", ELM_POPUP_ORIENT_TOP }, + { "Center", ELM_POPUP_ORIENT_CENTER }, + { "Bottom", ELM_POPUP_ORIENT_BOTTOM }, + { "Left", ELM_POPUP_ORIENT_LEFT }, + { "Right", ELM_POPUP_ORIENT_RIGHT }, + { "Top Left", ELM_POPUP_ORIENT_TOP_LEFT }, + { "Top Right", ELM_POPUP_ORIENT_TOP_RIGHT }, + { "Bottom Left", ELM_POPUP_ORIENT_BOTTOM_LEFT }, + { "Bottom Right", ELM_POPUP_ORIENT_BOTTOM_RIGHT } +}; + static void _popup_button_changed_cb(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED) @@ -344,18 +363,20 @@ _popup_content_changed_cb(void *data EINA_UNUSED, } static void -_popup_orient_changed_cb(void *data EINA_UNUSED, - Evas_Object *obj, +_popup_orient_changed_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED) { - wod->pop_orient = elm_radio_value_get(obj); + wod->pop_orient = (int)(uintptr_t)data; gui_preview_update(); + + elm_object_text_set(obj, _popup_orient[wod->pop_orient].name); } static void _widget_option_popup_create(Evas_Object *box) { Evas_Object *o = NULL, *rdg = NULL; + int i = 0; // number of buttons WIDGET_OPTION_LABEL_ADD(" < Number of Buttons > "); @@ -397,26 +418,20 @@ _widget_option_popup_create(Evas_Object *box) WIDGET_OPTION_SEPARATOR_ADD(); // orient set - WIDGET_OPTION_LABEL_ADD(" < Orient Set > "); - WIDGET_OPTION_RADIO_ADD("Top", 0, _popup_orient_changed_cb); - rdg = o; - WIDGET_OPTION_RADIO_ADD("Center", 1, _popup_orient_changed_cb); - elm_radio_group_add(o, rdg); - WIDGET_OPTION_RADIO_ADD("Bottom", 2, _popup_orient_changed_cb); - elm_radio_group_add(o, rdg); - WIDGET_OPTION_RADIO_ADD("Left", 3, _popup_orient_changed_cb); - elm_radio_group_add(o, rdg); - WIDGET_OPTION_RADIO_ADD("Right", 4, _popup_orient_changed_cb); - elm_radio_group_add(o, rdg); - WIDGET_OPTION_RADIO_ADD("Top Left", 5, _popup_orient_changed_cb); - elm_radio_group_add(o, rdg); - WIDGET_OPTION_RADIO_ADD("Top Right", 6, _popup_orient_changed_cb); - elm_radio_group_add(o, rdg); - WIDGET_OPTION_RADIO_ADD("Bottom Left", 7, _popup_orient_changed_cb); - elm_radio_group_add(o, rdg); - WIDGET_OPTION_RADIO_ADD("Bottom Right", 8, _popup_orient_changed_cb); - elm_radio_group_add(o, rdg); - elm_radio_value_set(rdg, wod->pop_orient); + WIDGET_OPTION_LABEL_ADD(" < Popup Orient > "); + + o = elm_hoversel_add(box); + WEIGHT(o, EVAS_HINT_EXPAND, 0.0); ALIGN(o, 0.0, 0.0); + elm_hoversel_hover_parent_set(o, gd->win); + elm_object_text_set(o, _popup_orient[wod->pop_orient].name); + for (i = 0; i < ELM_POPUP_ORIENT_LAST; i++) + { + elm_hoversel_item_add(o, _popup_orient[i].name, NULL, ELM_ICON_NONE, + _popup_orient_changed_cb, + (void *)(uintptr_t)_popup_orient[i].orient); + } + elm_box_pack_end(box, o); + evas_object_show(o); } // progressbar