diff --git a/data/themes/default_entry.edc b/data/themes/default_entry.edc index 00e2c9562..1bf8c5ef6 100644 --- a/data/themes/default_entry.edc +++ b/data/themes/default_entry.edc @@ -11,14 +11,6 @@ group { name: "entry"; description { state: "default" 0.0; - rel1 { - relative: 0.0 0.5; - offset: 0 -9; - } - rel2 { - relative: 1.0 0.5; - offset: -1 8; - } image { normal: "entry.png"; border: 8 8 8 8; @@ -38,14 +30,6 @@ group { state: "default" 0.0; visible: 0; color: 255 255 255 0; - rel1 { - relative: 0.0 0.5; - offset: 0 -9; - } - rel2 { - relative: 1.0 0.5; - offset: -1 8; - } image { normal: "entry_focus.png"; border: 8 8 8 8; @@ -70,7 +54,7 @@ group { } rel2 { relative: 1.0 1.0; - offset: -5 -3; + offset: -5 -4; to: "entry"; } } diff --git a/src/bin/Makefile.am b/src/bin/Makefile.am index 51fa6adec..38f27b41d 100644 --- a/src/bin/Makefile.am +++ b/src/bin/Makefile.am @@ -165,7 +165,8 @@ e_int_border_prop.h \ e_entry_dialog.h \ e_fm.h \ e_widget_scrollframe.h \ -e_sha1.h +e_sha1.h \ +e_widget_fsel.h enlightenment_src = \ e_user.c \ @@ -307,6 +308,7 @@ e_entry_dialog.c \ e_fm.c \ e_widget_scrollframe.c \ e_sha1.c \ +e_widget_fsel.c \ $(ENLIGHTENMENTHEADERS) enlightenment_SOURCES = \ diff --git a/src/bin/e_entry.c b/src/bin/e_entry.c index 697509503..7f4627263 100644 --- a/src/bin/e_entry.c +++ b/src/bin/e_entry.c @@ -30,6 +30,8 @@ struct _E_Entry_Smart_Data Evas_Object *entry_object; Evas_Object *edje_object; + Evas_Coord minw, minh; + void (*change_func) (void *data, Evas_Object *entry, char *key); void *change_data; }; @@ -315,6 +317,12 @@ e_editable_text_cursor_hide(Evas_Object *object) _e_editable_text_cursor_visibility_update(object); } +EAPI void +e_editable_text_min_size_get(Evas_Object *object, Evas_Coord *mw, Evas_Coord *mh) +{ + +} + EAPI Evas_Object * e_entry_add(Evas *evas) { @@ -489,6 +497,17 @@ e_entry_unfocus(Evas_Object *entry) edje_object_signal_emit(sd->edje_object, "focus_out", ""); } +EAPI void +e_entry_min_size_get(Evas_Object *entry, Evas_Coord *mw, Evas_Coord *mh) +{ + E_Entry_Smart_Data *sd; + + if ((!entry) || !(sd = evas_object_smart_data_get(entry))) + return; + if (mw) *mw = sd->minw; + if (mh) *mh = sd->minh; +} + /************************** * * Private functions @@ -521,6 +540,7 @@ _e_editable_text_size_update(Evas_Object *object) evas_object_textblock_size_native_get(sd->text_object, &w, &h); evas_object_resize(sd->text_object, w, h); + evas_object_resize(object, w, h); } /* Updates the cursor position: to be called when the cursor or the object are moved */ @@ -541,7 +561,7 @@ _e_editable_text_cursor_position_update(Evas_Object *object) if (_e_editable_text_is_empty(object)) { evas_object_move(sd->cursor_object, tx, ty); - evas_object_resize(sd->cursor_object, 1, oh); + evas_object_resize(sd->cursor_object, 1, th); return; } else if (sd->cursor_at_the_end) @@ -709,7 +729,8 @@ _e_editable_text_smart_del(Evas_Object *object) } /* Called when the object is moved */ -static void _e_editable_text_smart_move(Evas_Object *object, Evas_Coord x, Evas_Coord y) +static void +_e_editable_text_smart_move(Evas_Object *object, Evas_Coord x, Evas_Coord y) { E_Editable_Text_Smart_Data *sd; @@ -844,7 +865,8 @@ _e_entry_smart_add(Evas_Object *object) { Evas *evas; E_Entry_Smart_Data *sd; - + Evas_Coord w = 0, h = 0; + if ((!object) || !(evas = evas_object_evas_get(object))) return; @@ -854,19 +876,22 @@ _e_entry_smart_add(Evas_Object *object) sd->change_func = NULL; sd->change_data = NULL; - sd->entry_object = e_editable_text_add(evas); - evas_object_smart_member_add(sd->entry_object, object); - + evas_object_smart_data_set(object, sd); sd->edje_object = edje_object_add(evas); e_theme_edje_object_set(sd->edje_object, "base/theme/widgets", "widgets/entry"); - - edje_object_part_swallow(sd->edje_object, "text_area", sd->entry_object); evas_object_smart_member_add(sd->edje_object, object); - evas_object_smart_data_set(object, sd); - + sd->entry_object = e_editable_text_add(evas); + e_editable_text_text_set(sd->entry_object, " "); + evas_object_geometry_get(sd->entry_object, NULL, NULL, &w, &h); + edje_extern_object_min_size_set(sd->entry_object, w, h); + edje_object_part_swallow(sd->edje_object, "text_area", sd->entry_object); + edje_object_size_min_calc(sd->edje_object, &w, &h); + sd->minw = w; + sd->minh = h; + evas_object_event_callback_add(object, EVAS_CALLBACK_KEY_DOWN, _e_entry_key_down_cb, NULL); } @@ -899,11 +924,14 @@ static void _e_entry_smart_resize(Evas_Object *object, Evas_Coord w, Evas_Coord h) { E_Entry_Smart_Data *sd; + Evas_Coord x, y; if ((!object) || !(sd = evas_object_smart_data_get(object))) return; - evas_object_resize(sd->edje_object, w, h); + evas_object_geometry_get(object, &x, &y, NULL, NULL); + evas_object_move(sd->edje_object, x, y + ((h - sd->minh) / 2)); + evas_object_resize(sd->edje_object, w, sd->minh); } static void diff --git a/src/bin/e_entry.h b/src/bin/e_entry.h index 9d788fdb0..6fc7a9225 100644 --- a/src/bin/e_entry.h +++ b/src/bin/e_entry.h @@ -47,7 +47,7 @@ EAPI void e_entry_cursor_hide(Evas_Object *object); EAPI void e_entry_change_handler_set(Evas_Object *object, void (*func)(void *data, Evas_Object *entry, char *key), void *data); EAPI void e_entry_focus(Evas_Object *object); EAPI void e_entry_unfocus(Evas_Object *object); -EAPI void e_entry_password_set(Evas_Object *object, int pw); +EAPI void e_entry_min_size_get(Evas_Object *object, Evas_Coord *mw, Evas_Coord *mh); #endif #endif diff --git a/src/bin/e_file_selector.c b/src/bin/e_file_selector.c index adad06687..e58b88843 100644 --- a/src/bin/e_file_selector.c +++ b/src/bin/e_file_selector.c @@ -3,6 +3,9 @@ */ #include "e.h" +/* FIXME: this code is destined for death - replaced by e_fm.c that already can + * do this stuff */ + /*- DESCRIPTION -*/ /* This is a list of files in a scrollbable container. When a file is selected * this object will return the file name. diff --git a/src/bin/e_fm.c b/src/bin/e_fm.c index 89b344cc4..6acbe4ccd 100644 --- a/src/bin/e_fm.c +++ b/src/bin/e_fm.c @@ -511,7 +511,15 @@ _e_fm2_dev_path_map(const char *dev, const char *path) /* maybe make part of the device mappings config? */ /* FIXME: add code for finding nfs shares, smb shares etc. */ /* maybe make part of the device mappings config? */ - + + /* strip out excess multiple slashes */ + s = buf; + while (*s) + { + if ((s[0] == '/') && (s[1] == '/')) strcpy(s, s + 1); + s++; + } + /* strip out slashes at the end - unless its just "/" */ len = strlen(buf); while ((len > 1) && (buf[len - 1] == '/')) { @@ -1583,6 +1591,7 @@ _e_fm2_cb_icon_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_inf _e_fm2_icon_deselect(ic); else _e_fm2_icon_select(ic); + evas_object_smart_callback_call(ic->sd->obj, "selection_change", NULL); if ((!(S_ISDIR(ic->info.statinfo.st_mode)) || (ic->sd->config->view.no_subdir_jump)) && (ic->sd->config->view.single_click) diff --git a/src/bin/e_includes.h b/src/bin/e_includes.h index be7545f8a..d34b30d46 100644 --- a/src/bin/e_includes.h +++ b/src/bin/e_includes.h @@ -141,3 +141,4 @@ #include "e_fm.h" #include "e_widget_scrollframe.h" #include "e_sha1.h" +#include "e_widget_framelist.h" diff --git a/src/bin/e_test.c b/src/bin/e_test.c index eca033993..25ad91061 100644 --- a/src/bin/e_test.c +++ b/src/bin/e_test.c @@ -753,6 +753,36 @@ _e_test_internal(E_Container *con) e_dialog_show(dia); e_win_resize(dia->win, 400, 300); +} +#elif 0 +static void +_e_test_cb_selected(void *data, Evas_Object *obj, void *event_info) +{ + printf("SELECTED!\n"); +} + +static void +_e_test_internal(E_Container *con) +{ + E_Dialog *dia; + Evas_Object *o; + Evas_Coord mw, mh; + + dia = e_dialog_new(con); + e_dialog_title_set(dia, "A Test Dialog"); + + o = e_widget_fsel_add(dia->win->evas, "~/", "/", NULL, NULL); + evas_object_show(o); + e_widget_min_size_get(o, &mw, &mh); + e_dialog_content_set(dia, o, mw, mh); + + /* buttons at the bottom */ + e_dialog_button_add(dia, "OK", NULL, NULL, NULL); + e_dialog_resizable_set(dia, 1); + e_win_centered_set(dia->win, 1); + e_dialog_show(dia); + e_win_resize(dia->win, 400, 300); + } #else static void diff --git a/src/bin/e_widget_entry.c b/src/bin/e_widget_entry.c index 3450074a7..eb90846c3 100644 --- a/src/bin/e_widget_entry.c +++ b/src/bin/e_widget_entry.c @@ -121,10 +121,8 @@ e_widget_entry_add(Evas *evas, char **val) o = e_entry_add(evas); wd->o_entry = o; - e_theme_edje_object_set(o, "base/theme/widgets", - "widgets/entry"); evas_object_show(o); - edje_object_size_min_calc(o, &mw, &mh); + e_entry_min_size_get(o, &mw, &mh); e_widget_min_size_set(obj, mw, mh); if (*(wd->valptr)) diff --git a/src/bin/e_widget_framelist.c b/src/bin/e_widget_framelist.c index 2c25ef9e4..0231bfe78 100644 --- a/src/bin/e_widget_framelist.c +++ b/src/bin/e_widget_framelist.c @@ -6,91 +6,265 @@ typedef struct _E_Widget_Data E_Widget_Data; struct _E_Widget_Data { - Evas_Object *o_frame, *o_box; + Evas_Object *o_table; + Evas_Object *o_table2; + Evas_Object *o_up_button; + Evas_Object *o_favorites_frame; + Evas_Object *o_favorites_fm; + Evas_Object *o_files_frame; + Evas_Object *o_files_fm; + Evas_Object *o_entry; + char *entry_text; }; static void _e_wid_del_hook(Evas_Object *obj); /* local subsystem functions */ +static void +_e_wid_fsel_button_up(void *data1, void *data2) +{ + E_Widget_Data *wd; + + wd = data1; + e_fm2_parent_go(wd->o_files_fm); + e_widget_scrollframe_child_pos_set(wd->o_files_frame, 0, 0); +} + +static void +_e_wid_fsel_favorites_files_changed(void *data, Evas_Object *obj, void *event_info) +{ + E_Widget_Data *wd; + Evas_List *icons, *l; + E_Fm2_Icon_Info *ici; + const char *realpath; + char *p1, *p2; + + wd = data; + icons = e_fm2_all_list_get(wd->o_favorites_fm); + if (!icons) return; + realpath = e_fm2_real_path_get(wd->o_files_fm); + p1 = ecore_file_realpath(realpath); + if (!p1) goto done; + for (l = icons; l; l = l->next) + { + ici = l->data; + if (ici->link) + { + p2 = ecore_file_realpath(ici->link); + if (p2) + { + if (!strcmp(p1, p2)) + { + e_fm2_select_set(wd->o_favorites_fm, ici->file, 1); + E_FREE(p2); + goto done; + } + E_FREE(p2); + } + } + } + done: + E_FREE(p1); + evas_list_free(icons); +} + +static void +_e_wid_fsel_favorites_selected(void *data, Evas_Object *obj, void *event_info) +{ + E_Widget_Data *wd; + Evas_List *selected; + E_Fm2_Icon_Info *ici; + + wd = data; + selected = e_fm2_selected_list_get(wd->o_favorites_fm); + if (!selected) return; + ici = selected->data; + if ((ici->link) && (ici->mount)) + e_fm2_path_set(wd->o_files_fm, (char *)ici->link, "/"); + else if (ici->link) + e_fm2_path_set(wd->o_files_fm, NULL, (char *)ici->link); + evas_list_free(selected); + e_widget_scrollframe_child_pos_set(wd->o_files_frame, 0, 0); +} + +static void +_e_wid_fsel_files_changed(void *data, Evas_Object *obj, void *event_info) +{ + E_Widget_Data *wd; + + wd = data; + if (!e_fm2_has_parent_get(wd->o_files_fm)) + e_widget_disabled_set(wd->o_up_button, 1); + else + e_widget_disabled_set(wd->o_up_button, 0); +} + +static void +_e_wid_fsel_files_selection_change(void *data, Evas_Object *obj, void *event_info) +{ + E_Widget_Data *wd; + Evas_List *selected; + E_Fm2_Icon_Info *ici; + + wd = data; + selected = e_fm2_selected_list_get(wd->o_files_fm); + if (!selected) return; + ici = selected->data; + e_widget_entry_text_set(wd->o_entry, ici->file); + evas_list_free(selected); +} + +static void +_e_wid_fsel_files_selected(void *data, Evas_Object *obj, void *event_info) +{ + E_Widget_Data *wd; + Evas_List *selected; + E_Fm2_Icon_Info *ici; + char buf[4096]; + + wd = data; + selected = e_fm2_selected_list_get(wd->o_files_fm); + if (!selected) return; + ici = selected->data; + snprintf(buf, sizeof(buf), "%s/%s", + e_fm2_real_path_get(wd->o_files_fm), ici->file); + printf("SELECTED!!!! %s\n", buf); + evas_list_free(selected); +} /* externally accessible functions */ EAPI Evas_Object * -e_widget_framelist_add(Evas *evas, char *label, int horiz) +e_widget_fsel_add(Evas *evas, char *dev, char *path, char *selected, char *filter) { Evas_Object *obj, *o; E_Widget_Data *wd; Evas_Coord mw = 0, mh = 0; + E_Fm2_Config fmc; obj = e_widget_add(evas); e_widget_del_hook_set(obj, _e_wid_del_hook); wd = calloc(1, sizeof(E_Widget_Data)); e_widget_data_set(obj, wd); - - o = edje_object_add(evas); - wd->o_frame = o; - e_theme_edje_object_set(o, "base/theme/widgets", - "widgets/frame"); - edje_object_part_text_set(o, "label", label); - evas_object_show(o); + + o = e_widget_table_add(evas, 0); + wd->o_table = o; e_widget_sub_object_add(obj, o); e_widget_resize_object_set(obj, o); - o = e_box_add(evas); - wd->o_box = o; - e_box_orientation_set(o, horiz); - e_box_homogenous_set(o, 0); - edje_object_part_swallow(wd->o_frame, "items", o); + o = e_widget_table_add(evas, 0); + wd->o_table2 = o; e_widget_sub_object_add(obj, o); - evas_object_show(o); - edje_object_size_min_calc(wd->o_frame, &mw, &mh); + o = e_widget_button_add(evas, _("Go up a Directory"), NULL, + _e_wid_fsel_button_up, wd, NULL); + wd->o_up_button = o; + e_widget_sub_object_add(obj, o); + e_widget_table_object_append(wd->o_table2, o, 1, 0, 1, 1, 0, 0, 1, 0); + + o = e_fm2_add(evas); + wd->o_favorites_fm = o; + e_widget_sub_object_add(obj, o); + memset(&fmc, 0, sizeof(E_Fm2_Config)); + fmc.view.mode = E_FM2_VIEW_MODE_LIST; + fmc.view.open_dirs_in_place = 1; + fmc.view.selector = 1; + fmc.view.single_click = 1; + fmc.view.no_subdir_jump = 1; + fmc.icon.list.w = 24; + fmc.icon.list.h = 24; + fmc.icon.fixed.w = 1; + fmc.icon.fixed.h = 1; + fmc.icon.extension.show = 0; + fmc.list.sort.no_case = 1; + fmc.list.sort.dirs.first = 0; + fmc.list.sort.dirs.last = 0; + fmc.selection.single = 1; + fmc.selection.windows_modifiers = 0; + e_fm2_config_set(o, &fmc); + e_fm2_path_set(o, "favorites", "/"); + evas_object_smart_callback_add(o, "files_changed", + _e_wid_fsel_favorites_files_changed, wd); + evas_object_smart_callback_add(o, "selected", + _e_wid_fsel_favorites_selected, wd); + + o = e_widget_scrollframe_pan_add(evas, wd->o_favorites_fm, + e_fm2_pan_set, + e_fm2_pan_get, + e_fm2_pan_max_get, + e_fm2_pan_child_size_get); + wd->o_favorites_frame = o; + e_widget_sub_object_add(obj, o); + e_widget_min_size_set(o, 128, 128); + e_widget_table_object_append(wd->o_table2, o, 0, 1, 1, 1, 0, 1, 0, 1); + + o = e_fm2_add(evas); + wd->o_files_fm = o; + e_widget_sub_object_add(obj, o); + memset(&fmc, 0, sizeof(E_Fm2_Config)); + fmc.view.mode = E_FM2_VIEW_MODE_LIST; + fmc.view.open_dirs_in_place = 1; + fmc.view.selector = 1; + fmc.view.single_click = 0; + fmc.view.no_subdir_jump = 0; + fmc.icon.list.w = 24; + fmc.icon.list.h = 24; + fmc.icon.fixed.w = 1; + fmc.icon.fixed.h = 1; + fmc.icon.extension.show = 0; + fmc.list.sort.no_case = 1; + fmc.list.sort.dirs.first = 1; + fmc.list.sort.dirs.last = 0; + fmc.selection.single = 1; + fmc.selection.windows_modifiers = 0; + e_fm2_config_set(o, &fmc); + e_fm2_path_set(o, dev, path); + evas_object_smart_callback_add(o, "changed", + _e_wid_fsel_files_changed, wd); + evas_object_smart_callback_add(o, "selection_change", + _e_wid_fsel_files_selection_change, wd); + evas_object_smart_callback_add(o, "selected", + _e_wid_fsel_files_selected, wd); + + o = e_widget_scrollframe_pan_add(evas, wd->o_files_fm, + e_fm2_pan_set, + e_fm2_pan_get, + e_fm2_pan_max_get, + e_fm2_pan_child_size_get); + wd->o_files_frame = o; + e_widget_sub_object_add(obj, o); + e_widget_min_size_set(o, 128, 128); + e_widget_table_object_append(wd->o_table2, o, 1, 1, 1, 1, 1, 1, 1, 1); + + o = e_widget_entry_add(evas, &(wd->entry_text)); + wd->o_entry = o; + e_widget_sub_object_add(obj, o); + + e_widget_table_object_append(wd->o_table, wd->o_table2, + 0, 0, 1, 1, 1, 1, 1, 1); + e_widget_table_object_append(wd->o_table, wd->o_entry, + 0, 1, 1, 1, 1, 0, 1, 0); + + e_widget_min_size_get(wd->o_table, &mw, &mh); e_widget_min_size_set(obj, mw, mh); + evas_object_show(wd->o_up_button); + evas_object_show(wd->o_favorites_frame); + evas_object_show(wd->o_favorites_fm); + evas_object_show(wd->o_files_frame); + evas_object_show(wd->o_files_fm); + evas_object_show(wd->o_entry); + evas_object_show(wd->o_table2); + evas_object_show(wd->o_table); return obj; } -EAPI void -e_widget_framelist_object_append(Evas_Object *obj, Evas_Object *sobj) -{ - E_Widget_Data *wd; - Evas_Coord mw = 0, mh = 0; - - wd = e_widget_data_get(obj); - - e_box_pack_end(wd->o_box, sobj); - e_widget_min_size_get(sobj, &mw, &mh); - e_box_pack_options_set(sobj, - 1, 1, /* fill */ - 1, 0, /* expand */ - 0.5, 0.5, /* align */ - mw, mh, /* min */ - 99999, 99999 /* max */ - ); - e_box_min_size_get(wd->o_box, &mw, &mh); - edje_extern_object_min_size_set(wd->o_box, mw, mh); - edje_object_part_swallow(wd->o_frame, "items", wd->o_box); - edje_object_size_min_calc(wd->o_frame, &mw, &mh); - e_widget_min_size_set(obj, mw, mh); - e_widget_sub_object_add(obj, sobj); - evas_object_show(sobj); -} - -EAPI void -e_widget_framelist_content_align_set(Evas_Object *obj, double halign, double valign) -{ - E_Widget_Data *wd; - - wd = e_widget_data_get(obj); - e_box_align_set(wd->o_box, halign, valign); -} - - static void _e_wid_del_hook(Evas_Object *obj) { E_Widget_Data *wd; wd = e_widget_data_get(obj); + E_FREE(wd->entry_text); free(wd); } diff --git a/src/bin/e_widget_framelist.h b/src/bin/e_widget_framelist.h index cab6b3bb6..784865d31 100644 --- a/src/bin/e_widget_framelist.h +++ b/src/bin/e_widget_framelist.h @@ -3,12 +3,10 @@ */ #ifdef E_TYPEDEFS #else -#ifndef E_WIDGET_FRAMELIST_H -#define E_WIDGET_FRAMELIST_H +#ifndef E_WIDGET_FSEL_H +#define E_WIDGET_FSEL_H -EAPI Evas_Object *e_widget_framelist_add(Evas *evas, char *label, int horiz); -EAPI void e_widget_framelist_object_append(Evas_Object *obj, Evas_Object *sobj); -EAPI void e_widget_framelist_content_align_set(Evas_Object *obj, double halign, double valign); +EAPI Evas_Object *e_widget_fsel_add(Evas *evas, char *dev, char *path, char *selected, char *filter); #endif #endif diff --git a/src/bin/e_widget_fsel.c b/src/bin/e_widget_fsel.c new file mode 100644 index 000000000..2c25ef9e4 --- /dev/null +++ b/src/bin/e_widget_fsel.c @@ -0,0 +1,96 @@ +/* + * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 + */ +#include "e.h" + +typedef struct _E_Widget_Data E_Widget_Data; +struct _E_Widget_Data +{ + Evas_Object *o_frame, *o_box; +}; + +static void _e_wid_del_hook(Evas_Object *obj); + +/* local subsystem functions */ + +/* externally accessible functions */ +EAPI Evas_Object * +e_widget_framelist_add(Evas *evas, char *label, int horiz) +{ + Evas_Object *obj, *o; + E_Widget_Data *wd; + Evas_Coord mw = 0, mh = 0; + + obj = e_widget_add(evas); + + e_widget_del_hook_set(obj, _e_wid_del_hook); + wd = calloc(1, sizeof(E_Widget_Data)); + e_widget_data_set(obj, wd); + + o = edje_object_add(evas); + wd->o_frame = o; + e_theme_edje_object_set(o, "base/theme/widgets", + "widgets/frame"); + edje_object_part_text_set(o, "label", label); + evas_object_show(o); + e_widget_sub_object_add(obj, o); + e_widget_resize_object_set(obj, o); + + o = e_box_add(evas); + wd->o_box = o; + e_box_orientation_set(o, horiz); + e_box_homogenous_set(o, 0); + edje_object_part_swallow(wd->o_frame, "items", o); + e_widget_sub_object_add(obj, o); + evas_object_show(o); + + edje_object_size_min_calc(wd->o_frame, &mw, &mh); + e_widget_min_size_set(obj, mw, mh); + + return obj; +} + +EAPI void +e_widget_framelist_object_append(Evas_Object *obj, Evas_Object *sobj) +{ + E_Widget_Data *wd; + Evas_Coord mw = 0, mh = 0; + + wd = e_widget_data_get(obj); + + e_box_pack_end(wd->o_box, sobj); + e_widget_min_size_get(sobj, &mw, &mh); + e_box_pack_options_set(sobj, + 1, 1, /* fill */ + 1, 0, /* expand */ + 0.5, 0.5, /* align */ + mw, mh, /* min */ + 99999, 99999 /* max */ + ); + e_box_min_size_get(wd->o_box, &mw, &mh); + edje_extern_object_min_size_set(wd->o_box, mw, mh); + edje_object_part_swallow(wd->o_frame, "items", wd->o_box); + edje_object_size_min_calc(wd->o_frame, &mw, &mh); + e_widget_min_size_set(obj, mw, mh); + e_widget_sub_object_add(obj, sobj); + evas_object_show(sobj); +} + +EAPI void +e_widget_framelist_content_align_set(Evas_Object *obj, double halign, double valign) +{ + E_Widget_Data *wd; + + wd = e_widget_data_get(obj); + e_box_align_set(wd->o_box, halign, valign); +} + + +static void +_e_wid_del_hook(Evas_Object *obj) +{ + E_Widget_Data *wd; + + wd = e_widget_data_get(obj); + free(wd); +} diff --git a/src/bin/e_widget_fsel.h b/src/bin/e_widget_fsel.h new file mode 100644 index 000000000..cab6b3bb6 --- /dev/null +++ b/src/bin/e_widget_fsel.h @@ -0,0 +1,14 @@ +/* + * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 + */ +#ifdef E_TYPEDEFS +#else +#ifndef E_WIDGET_FRAMELIST_H +#define E_WIDGET_FRAMELIST_H + +EAPI Evas_Object *e_widget_framelist_add(Evas *evas, char *label, int horiz); +EAPI void e_widget_framelist_object_append(Evas_Object *obj, Evas_Object *sobj); +EAPI void e_widget_framelist_content_align_set(Evas_Object *obj, double halign, double valign); + +#endif +#endif