diff --git a/TODO b/TODO index cfc653ee1..4ed4ec26a 100644 --- a/TODO +++ b/TODO @@ -8,8 +8,6 @@ Some of the things (in very short form) that need to be done to E17... BUGS / FIXES ------------------------------------------------------------------------------- -* BUG: pager dnd is broken when shelf below (in desktop canvas) and @ of rows - is > 1. * BUG: ghost windows happen if windows close when on another desktop or if windows are very short-lived * BUG: k3b has minimization issues when burning cds (it tries to unminimize @@ -59,7 +57,8 @@ Some of the things (in very short form) that need to be done to E17... disabled) * shelf gui config is ugly and badly arranged * ibar should support creating and deleting bar dirs -* need to port/rewrite ibox to gadcon +* ibox labels need to be optional +* ibar labels need to be selected (name, generic, etc.) ]]] [[[ diff --git a/data/themes/default_radio.edc b/data/themes/default_radio.edc index f8762d661..9471af742 100644 --- a/data/themes/default_radio.edc +++ b/data/themes/default_radio.edc @@ -191,3 +191,234 @@ group { } } } + +group { + name: "widgets/radio_icon"; + parts { + part { + name: "outline"; + mouse_events: 0; + description { + state: "default" 0.0; + min: 16 16; + max: 16 16; + align: 0.0 0.5; + fixed: 1 1; + rel1 { + relative: 0.0 0.0; + offset: 2 2; + } + rel2 { + relative: 0.0 1.0; + offset: 2 -3; + } + image { + normal: "e17_menu_radio1.png"; + } + } + description { + state: "disabled" 0.0; + inherit: "default" 0.0; + image { + normal: "e17_menu_radio0.png"; + } + } + } + part { + name: "item1"; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + rel1 { + to: "outline"; + relative: 0.0 0.0; + offset: 0 0; + } + rel2 { + to: "outline"; + relative: 1.0 1.0; + offset: -1 -1; + } + image { + normal: "e17_menu_radio2.png"; + } + } + description { + state: "active" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { + name: "icon_swallow"; + type: SWALLOW; + mouse_events: 0; + clip_to: "icon_clip"; + description { + state: "default" 0.0; + min: 16 16; + rel1 { + to_x: "outline"; + relative: 1.0 0.0; + offset: 2 2; + } + rel2 { + to_y: "label"; + relative: 1.0 0.0; + offset: -2 -2; + } + } + } + part { + name: "icon_clip"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + min: 16 16; + rel1 { + to: "icon_swallow"; + } + rel2 { + to: "icon_swallow"; + } + color: 255 255 255 255; + } + description { + state: "disabled" 0.0; + inherit: "default" 0.0; + color: 255 255 255 128; + } + } + part { + name: "label"; + type: TEXT; + effect: SHADOW; + mouse_events: 0; + description { + state: "default" 0.0; + min: 16 16; + rel1 { + to_x: "outline"; + relative: 1.0 1.0; + offset: 2 -2; + } + rel2 { + relative: 1.0 1.0; + offset: -2 -2; + } + color: 0 0 0 255; + color3: 255 255 255 128; + text { + text: "Radio Button"; + font: "Edje-Vera"; + size: 10; + min: 1 1; + align: 0.5 0.5; + text_class: "radio_button"; + } + } + description { + state: "disabled" 0.0; + inherit: "default" 0.0; + color: 0 0 0 128; + color3: 255 255 255 64; + } + } + part { + name: "event"; + type: RECT; + description { + state: "default" 0.0; + color: 0 0 0 0; + } + description { + state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + part { + name: "focus"; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + color: 255 255 255 0; + image { + normal: "focus.png"; + border: 7 7 7 7; + middle: 0; + } + fill { + smooth: 0; + } + } + description { + state: "focused" 0.0; + inherit: "default" 0.0; + visible: 1; + color: 255 255 255 255; + } + } + } + programs { + program { + name: "turn_on1"; + signal: "toggle_on"; + source: ""; + action: STATE_SET "active" 0.0; + target: "item1"; + } + program { + name: "turn_off1"; + signal: "toggle_off"; + source: ""; + action: STATE_SET "default" 0.0; + target: "item1"; + } + program { + name: "click"; + signal: "mouse,down,1"; + source: "event"; + action: SIGNAL_EMIT "toggled" "on"; + } + program { + name: "focus_in"; + signal: "focus_in"; + source: ""; + action: STATE_SET "focused" 0.0; + transition: DECELERATE 0.2; + target: "focus"; + } + program { + name: "focus_out"; + signal: "focus_out"; + source: ""; + action: STATE_SET "default" 0.0; + transition: ACCELERATE 0.5; + target: "focus"; + } + program { + name: "disable"; + signal: "disabled"; + source: ""; + action: STATE_SET "disabled" 0.0; + target: "outline"; + target: "event"; + target: "label"; + target: "icon_clip"; + } + program { + name: "enable"; + signal: "enabled"; + source: ""; + action: STATE_SET "default" 0.0; + target: "outline"; + target: "event"; + target: "label"; + target: "icon_clip"; + } + } +} diff --git a/src/bin/e_config.c b/src/bin/e_config.c index 6bde7802b..5fb9e7709 100644 --- a/src/bin/e_config.c +++ b/src/bin/e_config.c @@ -572,7 +572,7 @@ e_config_init(void) e_config->winlist_pos_min_h = 0; e_config->winlist_pos_max_w = 320; e_config->winlist_pos_max_h = 320; - e_config->maximize_policy = E_MAXIMIZE_FULLSCREEN; + e_config->maximize_policy = E_MAXIMIZE_SMART; e_config->allow_manip = 0; e_config->kill_if_close_not_possible = 1; e_config->kill_process = 1; diff --git a/src/bin/e_int_shelf_config.c b/src/bin/e_int_shelf_config.c index 651628ed0..d6e005826 100644 --- a/src/bin/e_int_shelf_config.c +++ b/src/bin/e_int_shelf_config.c @@ -181,6 +181,38 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf e_widget_framelist_object_append(of, ob); e_widget_list_object_append(o2, of, 1, 1, 0.5); + of = e_widget_frametable_add(evas, _("Layout"), 1); + rg = e_widget_radio_group_new(&(cfdata->orient)); + ob = e_widget_radio_icon_add(evas, _("Left"), "enlightenment/e", 32, 32, E_GADCON_ORIENT_LEFT, rg); + e_widget_frametable_object_append(of, ob, 0, 2, 1, 1, 1, 1, 1, 1); + ob = e_widget_radio_icon_add(evas, _("Right"), "enlightenment/e", 32, 32, E_GADCON_ORIENT_RIGHT, rg); + e_widget_frametable_object_append(of, ob, 4, 2, 1, 1, 1, 1, 1, 1); + ob = e_widget_radio_icon_add(evas, _("Top"), "enlightenment/e", 32, 32, E_GADCON_ORIENT_TOP, rg); + e_widget_frametable_object_append(of, ob, 2, 0, 1, 1, 1, 1, 1, 1); + ob = e_widget_radio_icon_add(evas, _("Bottom"), "enlightenment/e", 32, 32, E_GADCON_ORIENT_BOTTOM, rg); + e_widget_frametable_object_append(of, ob, 2, 4, 1, 1, 1, 1, 1, 1); + ob = e_widget_radio_icon_add(evas, _("Corner"), "enlightenment/e", 32, 32, E_GADCON_ORIENT_CORNER_TL, rg); + e_widget_frametable_object_append(of, ob, 1, 0, 1, 1, 1, 1, 1, 1); + ob = e_widget_radio_icon_add(evas, _("Corner"), "enlightenment/e", 32, 32, E_GADCON_ORIENT_CORNER_TR, rg); + e_widget_frametable_object_append(of, ob, 3, 0, 1, 1, 1, 1, 1, 1); + ob = e_widget_radio_icon_add(evas, _("Corner"), "enlightenment/e", 32, 32, E_GADCON_ORIENT_CORNER_BL, rg); + e_widget_frametable_object_append(of, ob, 1, 4, 1, 1, 1, 1, 1, 1); + ob = e_widget_radio_icon_add(evas, _("Corner"), "enlightenment/e", 32, 32, E_GADCON_ORIENT_CORNER_BR, rg); + e_widget_frametable_object_append(of, ob, 3, 4, 1, 1, 1, 1, 1, 1); + ob = e_widget_radio_icon_add(evas, _("Corner"), "enlightenment/e", 32, 32, E_GADCON_ORIENT_CORNER_LT, rg); + e_widget_frametable_object_append(of, ob, 0, 1, 1, 1, 1, 1, 1, 1); + ob = e_widget_radio_icon_add(evas, _("Corner"), "enlightenment/e", 32, 32, E_GADCON_ORIENT_CORNER_RT, rg); + e_widget_frametable_object_append(of, ob, 4, 1, 1, 1, 1, 1, 1, 1); + ob = e_widget_radio_icon_add(evas, _("Corner"), "enlightenment/e", 32, 32, E_GADCON_ORIENT_CORNER_LB, rg); + e_widget_frametable_object_append(of, ob, 0, 3, 1, 1, 1, 1, 1, 1); + ob = e_widget_radio_icon_add(evas, _("Corner"), "enlightenment/e", 32, 32, E_GADCON_ORIENT_CORNER_RB, rg); + e_widget_frametable_object_append(of, ob, 4, 3, 1, 1, 1, 1, 1, 1); + e_widget_list_object_append(o2, of, 1, 1, 0.5); + + e_widget_list_object_append(o, o2, 1, 1, 0.5); + + o2 = e_widget_list_add(evas, 0, 0); + of = e_widget_framelist_add(evas, _("Size"), 0); ob = e_widget_check_add(evas, _("Shrink to Content Size"), &(cfdata->fit_along)); e_widget_framelist_object_append(of, ob); @@ -188,42 +220,10 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf // e_widget_framelist_object_append(of, ob); ob = e_widget_label_add(evas, _("Shelf Size")); e_widget_framelist_object_append(of, ob); - ob = e_widget_slider_add(evas, 1, 0, _("%3.0f pixels"), 4, 120, 4, 0, NULL, &(cfdata->size), 200); + ob = e_widget_slider_add(evas, 1, 0, _("%3.0f pixels"), 4, 120, 4, 0, NULL, &(cfdata->size), 100); e_widget_framelist_object_append(of, ob); 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)); - ob = e_widget_radio_add(evas, _("Left"), E_GADCON_ORIENT_LEFT, rg); - e_widget_framelist_object_append(of, ob); - ob = e_widget_radio_add(evas, _("Right"), E_GADCON_ORIENT_RIGHT, rg); - e_widget_framelist_object_append(of, ob); - ob = e_widget_radio_add(evas, _("Top"), E_GADCON_ORIENT_TOP, rg); - e_widget_framelist_object_append(of, ob); - ob = e_widget_radio_add(evas, _("Bottom"), E_GADCON_ORIENT_BOTTOM, rg); - e_widget_framelist_object_append(of, ob); - ob = e_widget_radio_add(evas, _("Top Left"), E_GADCON_ORIENT_CORNER_TL, rg); - e_widget_framelist_object_append(of, ob); - ob = e_widget_radio_add(evas, _("Top Right"), E_GADCON_ORIENT_CORNER_TR, rg); - e_widget_framelist_object_append(of, ob); - ob = e_widget_radio_add(evas, _("Bottom Left"), E_GADCON_ORIENT_CORNER_BL, rg); - e_widget_framelist_object_append(of, ob); - ob = e_widget_radio_add(evas, _("Bottom Right"), E_GADCON_ORIENT_CORNER_BR, rg); - e_widget_framelist_object_append(of, ob); - ob = e_widget_radio_add(evas, _("Left Top"), E_GADCON_ORIENT_CORNER_LT, rg); - e_widget_framelist_object_append(of, ob); - ob = e_widget_radio_add(evas, _("Right Top"), E_GADCON_ORIENT_CORNER_RT, rg); - e_widget_framelist_object_append(of, ob); - ob = e_widget_radio_add(evas, _("Left Bottom"), E_GADCON_ORIENT_CORNER_LB, rg); - 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(o2, of, 1, 1, 0.5); - - e_widget_list_object_append(o, o2, 1, 1, 0.5); - - o2 = e_widget_list_add(evas, 0, 0); - of = e_widget_framelist_add(evas, _("Styles"), 0); oi = e_widget_ilist_add(evas, 128, 20, &(cfdata->style)); @@ -246,7 +246,7 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf sel = n; } e_widget_min_size_get(oi, &wmw, &wmh); - e_widget_min_size_set(oi, wmw, 250); + e_widget_min_size_set(oi, wmw, 150); e_widget_ilist_go(oi); e_widget_ilist_selected_set(oi, sel); diff --git a/src/bin/e_widget_radio.c b/src/bin/e_widget_radio.c index 069820c04..0920707b4 100644 --- a/src/bin/e_widget_radio.c +++ b/src/bin/e_widget_radio.c @@ -14,6 +14,7 @@ struct _E_Widget_Data { E_Radio_Group *group; Evas_Object *o_radio; + Evas_Object *o_icon; int valnum; }; @@ -79,6 +80,62 @@ e_widget_radio_add(Evas *evas, char *label, int valnum, E_Radio_Group *group) return obj; } + +EAPI Evas_Object * +e_widget_radio_icon_add(Evas *evas, char *label, char *icon, int icon_w, int icon_h, int valnum, E_Radio_Group *group) +{ + Evas_Object *obj, *o, *o2; + E_Widget_Data *wd; + Evas_Coord mw, mh; + + obj = e_widget_add(evas); + + e_widget_del_hook_set(obj, _e_wid_del_hook); + e_widget_focus_hook_set(obj, _e_wid_focus_hook); + e_widget_activate_hook_set(obj, _e_wid_activate_hook); + e_widget_disable_hook_set(obj, _e_wid_disable_hook); + wd = calloc(1, sizeof(E_Widget_Data)); + wd->group = group; + wd->valnum = valnum; + e_widget_data_set(obj, wd); + + o = edje_object_add(evas); + wd->o_radio = o; + e_theme_edje_object_set(o, "base/theme/widgets", + "widgets/radio_icon"); + edje_object_signal_callback_add(o, "toggled", "*", _e_wid_signal_cb1, obj); + edje_object_part_text_set(o, "label", label); + evas_object_show(o); + + if (icon) + { + o2 = edje_object_add(evas); + wd->o_icon = o2; + e_util_edje_icon_set(o2, icon); + edje_extern_object_min_size_set(o2, icon_w, icon_h); + edje_object_part_swallow(wd->o_radio, "icon_swallow", o2); + evas_object_show(o2); + e_widget_sub_object_add(obj, o2); + } + + edje_object_size_min_calc(o, &mw, &mh); + e_widget_min_size_set(obj, mw, mh); + if ((wd->group) && (wd->group->valptr)) + { + if (*(wd->group->valptr) == valnum) edje_object_signal_emit(o, "toggle_on", ""); + } + if (wd->group) + { + wd->group->radios = evas_list_append(wd->group->radios, obj); + } + + e_widget_sub_object_add(obj, o); + evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, _e_wid_focus_steal, obj); + e_widget_resize_object_set(obj, o); + + return obj; +} + EAPI void e_widget_radio_toggle_set(Evas_Object *obj, int toggle) { diff --git a/src/bin/e_widget_radio.h b/src/bin/e_widget_radio.h index 7def6f9e7..7a35f49a8 100644 --- a/src/bin/e_widget_radio.h +++ b/src/bin/e_widget_radio.h @@ -10,6 +10,7 @@ typedef struct _E_Radio_Group E_Radio_Group; EAPI E_Radio_Group *e_widget_radio_group_new(int *val); EAPI Evas_Object *e_widget_radio_add(Evas *evas, char *label, int valnum, E_Radio_Group *group); +EAPI Evas_Object *e_widget_radio_icon_add(Evas *evas, char *label, char *icon, int icon_w, int icon_h, int valnum, E_Radio_Group *group); EAPI void e_widget_radio_toggle_set(Evas_Object *obj, int toggle); #endif