Continue working on the eap editor and file dialog.

- add hilite propagation (single click file, press ok is now the same as double clicking the file directly)
- eap editor saves new eaps if you give them a path, simple <-> advanced doesnt relay the info between each other yet.

Going to try to do a bit every night.


SVN revision: 18849
This commit is contained in:
codewarrior 2005-12-05 22:20:34 +00:00 committed by codewarrior
parent 3607af9f4f
commit 34566645fd
12 changed files with 156 additions and 14 deletions

View File

@ -44,6 +44,7 @@ static int _e_eap_edit_advanced_apply_data(E_Config_Dialog *cfd, void
static Evas_Object *_e_eap_edit_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, void *data); static Evas_Object *_e_eap_edit_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, void *data);
static Evas_Object *_e_eap_edit_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, void *data); static Evas_Object *_e_eap_edit_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, void *data);
static void _e_eap_edit_select_cb(Evas_Object *obj, char *file, void *data); static void _e_eap_edit_select_cb(Evas_Object *obj, char *file, void *data);
static void _e_eap_edit_hilite_cb(Evas_Object *obj, char *file, void *data);
#define IFDUP(src, dst) if (src) dst = strdup(src); else dst = NULL #define IFDUP(src, dst) if (src) dst = strdup(src); else dst = NULL
@ -242,6 +243,7 @@ _e_eap_edit_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, void *data)
editor->img_widget = e_widget_iconsel_add(evas, editor->img, 48, 48, editor->img_widget = e_widget_iconsel_add(evas, editor->img, 48, 48,
&(cfdata->image)); &(cfdata->image));
e_widget_iconsel_select_callback_add(editor->img_widget, _e_eap_edit_select_cb, editor); e_widget_iconsel_select_callback_add(editor->img_widget, _e_eap_edit_select_cb, editor);
e_widget_iconsel_hilite_callback_add(editor->img_widget, _e_eap_edit_hilite_cb, editor);
e_widget_frametable_object_append(o, editor->img_widget, e_widget_frametable_object_append(o, editor->img_widget,
0, 0, 1, 1, 0, 0, 1, 1,
1, 1, 1, 1); 1, 1, 1, 1);
@ -400,3 +402,13 @@ _e_eap_edit_select_cb(Evas_Object *obj, char *file, void *data)
printf("selected: %s\n", file); printf("selected: %s\n", file);
} }
void
_e_eap_edit_hilite_cb(Evas_Object *obj, char *file, void *data)
{
E_App_Edit *editor;
// editor = data;
printf("hilited: %s\n", file);
}

View File

@ -10,6 +10,7 @@ static void _e_file_dialog_button1_click(void *data, E_Dialog *dia);
static void _e_file_dialog_button2_click(void *data, E_Dialog *dia); static void _e_file_dialog_button2_click(void *data, E_Dialog *dia);
static void _e_file_dialog_free(E_File_Dialog *dia); static void _e_file_dialog_free(E_File_Dialog *dia);
static void _e_file_dialog_file_select_cb(Evas_Object *obj, char *file, void *data); static void _e_file_dialog_file_select_cb(Evas_Object *obj, char *file, void *data);
static void _e_file_dialog_file_hilite_cb(Evas_Object *obj, char *file, void *data);
E_File_Dialog * E_File_Dialog *
e_file_dialog_new(E_Container *con) e_file_dialog_new(E_Container *con)
@ -41,6 +42,7 @@ e_file_dialog_new(E_Container *con)
dia->con = con; dia->con = con;
dia->file = NULL; dia->file = NULL;
dia->select_func = NULL; dia->select_func = NULL;
dia->hilite_func = NULL;
dia->select_data = NULL; dia->select_data = NULL;
evas = dia->dia->win->evas; evas = dia->dia->win->evas;
@ -55,6 +57,7 @@ e_file_dialog_new(E_Container *con)
fm = e_widget_fileman_add(evas, &(dia->file)); fm = e_widget_fileman_add(evas, &(dia->file));
e_widget_fileman_select_callback_add(fm, _e_file_dialog_file_select_cb, dia); e_widget_fileman_select_callback_add(fm, _e_file_dialog_file_select_cb, dia);
e_widget_fileman_hilite_callback_add(fm, _e_file_dialog_file_hilite_cb, dia);
e_widget_list_object_append(ol, fm, 1, 1, 0.0); e_widget_list_object_append(ol, fm, 1, 1, 0.0);
e_widget_min_size_get(ol, &w, &h); e_widget_min_size_get(ol, &w, &h);
@ -86,6 +89,13 @@ e_file_dialog_select_callback_add(E_File_Dialog *dia, void (*func)(E_File_Dialog
dia->select_data = data; dia->select_data = data;
} }
void
e_file_dialog_hilite_callback_add(E_File_Dialog *dia, void (*func)(E_File_Dialog *dia, char *file, void *data), void *data)
{
dia->hilite_func = func;
dia->hilite_data = data;
}
/* local subsystem functions */ /* local subsystem functions */
static void static void
@ -96,7 +106,7 @@ _e_file_dialog_button1_click(void *data, E_Dialog *edia)
dia = data; dia = data;
if(dia->select_func && dia->file) if(dia->select_func && dia->file)
dia->select_func(dia, dia->file, dia->select_data); dia->select_func(dia, dia->file, dia->select_data);
_e_file_dialog_free(dia); _e_file_dialog_free(dia);
} }
static void static void
@ -114,14 +124,26 @@ _e_file_dialog_file_select_cb(Evas_Object *obj, char *file, void *data)
if(dia->select_func) if(dia->select_func)
dia->select_func(dia, file, dia->select_data); dia->select_func(dia, file, dia->select_data);
printf("e_file_dialog: %s\n", file); printf("e_file_dialog (select) : %s\n", file);
} }
static void
_e_file_dialog_file_hilite_cb(Evas_Object *obj, char *file, void *data)
{
E_File_Dialog *dia;
dia = data;
if(dia->hilite_func)
dia->hilite_func(dia, file, dia->hilite_data);
printf("e_file_dialog (hilite) : %s\n", file);
}
static void static void
_e_file_dialog_free(E_File_Dialog *dia) _e_file_dialog_free(E_File_Dialog *dia)
{ {
e_object_unref(E_OBJECT(dia->dia)); e_object_unref(E_OBJECT(dia->dia));
E_FREE(dia->file); E_FREE(dia->file);
free(dia); //free(dia);
} }

View File

@ -22,12 +22,15 @@ struct _E_File_Dialog
void (*select_func)(E_File_Dialog *dia, char *file, void *data); void (*select_func)(E_File_Dialog *dia, char *file, void *data);
void *select_data; void *select_data;
void (*hilite_func)(E_File_Dialog *dia, char *file, void *data);
void *hilite_data;
}; };
EAPI E_File_Dialog *e_file_dialog_new (E_Container *con); EAPI E_File_Dialog *e_file_dialog_new (E_Container *con);
EAPI void e_file_dialog_show (E_File_Dialog *dia); EAPI void e_file_dialog_show (E_File_Dialog *dia);
EAPI void e_file_dialog_title_set (E_File_Dialog *dia, const char *title); EAPI void e_file_dialog_title_set (E_File_Dialog *dia, const char *title);
EAPI void e_file_dialog_select_callback_add(E_File_Dialog *dia, void (*func)(E_File_Dialog *dia, char *file, void *data), void *data); EAPI void e_file_dialog_select_callback_add(E_File_Dialog *dia, void (*func)(E_File_Dialog *dia, char *file, void *data), void *data);
EAPI void e_file_dialog_hilite_callback_add(E_File_Dialog *dia, void (*func)(E_File_Dialog *dia, char *file, void *data), void *data);
#endif #endif
#endif #endif

View File

@ -25,6 +25,7 @@ struct _E_Smart_Data
Evas_Coord x, y, w, h; /* coords */ Evas_Coord x, y, w, h; /* coords */
void (*func) (Evas_Object *obj, char *file, void *data); /* selection cb */ void (*func) (Evas_Object *obj, char *file, void *data); /* selection cb */
void (*func_hilite) (Evas_Object *obj, char *file, void *data); /* selection cb */
void *func_data; /* selection cb data */ void *func_data; /* selection cb data */
}; };
@ -40,6 +41,7 @@ static void _e_smart_clip_set(Evas_Object *obj, Evas_Object * clip);
static void _e_smart_clip_unset(Evas_Object *obj); static void _e_smart_clip_unset(Evas_Object *obj);
static void _e_smart_init(void); static void _e_smart_init(void);
static void _e_file_selector_selected_cb(Evas_Object *obj, char *file, void *data); static void _e_file_selector_selected_cb(Evas_Object *obj, char *file, void *data);
static void _e_file_selector_hilited_cb(Evas_Object *obj, char *file, void *data);
static void _e_file_selector_scroll_set(Evas_Object *obj, Evas_Coord x, Evas_Coord y); static void _e_file_selector_scroll_set(Evas_Object *obj, Evas_Coord x, Evas_Coord y);
static void _e_file_selector_scroll_get(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y); static void _e_file_selector_scroll_get(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y);
static void _e_file_selector_scroll_max_get(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y); static void _e_file_selector_scroll_max_get(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y);
@ -80,10 +82,11 @@ e_file_selector_view_get(Evas_Object *obj)
} }
void void
e_file_selector_callback_add(Evas_Object *obj, void (*func) (Evas_Object *obj, char *file, void *data), void *data) e_file_selector_callback_add(Evas_Object *obj, void (*func) (Evas_Object *obj, char *file, void *data), void (*func_hilite) (Evas_Object *obj, char *file, void *data), void *data)
{ {
API_ENTRY return; API_ENTRY return;
sd->func = func; sd->func = func;
sd->func_hilite = func_hilite;
sd->func_data = data; sd->func_data = data;
} }
@ -128,6 +131,7 @@ _e_smart_add(Evas_Object *obj)
sd->h = 0; sd->h = 0;
sd->parent = obj; sd->parent = obj;
sd->func = NULL; sd->func = NULL;
sd->func_hilite = NULL;
sd->func_data = NULL; sd->func_data = NULL;
sd->view = E_FILE_SELECTOR_ICONVIEW; sd->view = E_FILE_SELECTOR_ICONVIEW;
@ -143,7 +147,7 @@ _e_smart_add(Evas_Object *obj)
e_fm_dir_set(sd->files, home); e_fm_dir_set(sd->files, home);
E_FREE(home); E_FREE(home);
e_fm_selector_enable(sd->files, _e_file_selector_selected_cb, sd); e_fm_selector_enable(sd->files, _e_file_selector_selected_cb, _e_file_selector_hilited_cb, sd);
evas_object_smart_member_add(sd->files, obj); evas_object_smart_member_add(sd->files, obj);
e_scrollframe_extern_pan_set(sd->frame, sd->files, e_scrollframe_extern_pan_set(sd->frame, sd->files,
@ -231,6 +235,15 @@ _e_file_selector_selected_cb(Evas_Object *obj, char *file, void *data)
sd->func(sd->parent, file, sd->func_data); sd->func(sd->parent, file, sd->func_data);
} }
_e_file_selector_hilited_cb(Evas_Object *obj, char *file, void *data)
{
E_Smart_Data *sd;
sd = data;
if(sd->func_hilite)
sd->func_hilite(sd->parent, file, sd->func_data);
}
/* never need to touch this */ /* never need to touch this */
static void static void

View File

@ -18,7 +18,7 @@ enum E_File_Selector_View
EAPI Evas_Object *e_file_selector_add(Evas *evas); EAPI Evas_Object *e_file_selector_add(Evas *evas);
EAPI void e_file_selector_view_set(Evas_Object *object, int view); EAPI void e_file_selector_view_set(Evas_Object *object, int view);
EAPI int e_file_selector_view_get(Evas_Object *object); EAPI int e_file_selector_view_get(Evas_Object *object);
EAPI void e_file_selector_callback_add(Evas_Object *obj, void (*func) (Evas_Object *obj, char *file, void *data), void *data); EAPI void e_file_selector_callback_add(Evas_Object *obj, void (*func) (Evas_Object *obj, char *file, void *data), void (*hilite_func) (Evas_Object *obj, char *file, void *data), void *data);
#endif #endif
#endif #endif

View File

@ -152,7 +152,7 @@ e_fileman_selector_enable(E_Fileman *fileman, void (*func)(E_Fileman *fileman, c
{ {
fileman->selector.func = func; fileman->selector.func = func;
fileman->selector.data = data; fileman->selector.data = data;
e_fm_selector_enable(fileman->smart, _e_fileman_selector_cb, fileman); e_fm_selector_enable(fileman->smart, _e_fileman_selector_cb, NULL, fileman);
} }
void void

View File

@ -180,6 +180,7 @@ struct _E_Fm_Smart_Data
int is_selector; int is_selector;
void (*selector_func) (Evas_Object *object, char *file, void *data); void (*selector_func) (Evas_Object *object, char *file, void *data);
void *selector_data; void *selector_data;
void (*selector_hilite_func) (Evas_Object *object, char *file, void *data);
Evas_Coord x, y, w, h; Evas_Coord x, y, w, h;
@ -301,6 +302,7 @@ static int _e_fm_files_sort_modtime_cb (void *d1, void *d2);
static int _e_fm_files_sort_layout_name_cb (void *d1, void *d2); static int _e_fm_files_sort_layout_name_cb (void *d1, void *d2);
static void _e_fm_selector_send_file (E_Fm_Icon *icon); static void _e_fm_selector_send_file (E_Fm_Icon *icon);
static void _e_fm_selector_send_hilite_file (E_Fm_Icon *icon);
static char *_e_fm_dir_meta_dir_id(char *dir); static char *_e_fm_dir_meta_dir_id(char *dir);
static int _e_fm_dir_meta_load(E_Fm_Smart_Data *sd); static int _e_fm_dir_meta_load(E_Fm_Smart_Data *sd);
@ -548,7 +550,7 @@ e_fm_thaw(Evas_Object *object)
} }
void void
e_fm_selector_enable(Evas_Object *object, void (*func)(Evas_Object *object, char *file, void *data), void *data) e_fm_selector_enable(Evas_Object *object, void (*func)(Evas_Object *object, char *file, void *data), void (*hilite_func)(Evas_Object *object, char *file, void *data), void *data)
{ {
E_Fm_Smart_Data *sd; E_Fm_Smart_Data *sd;
@ -558,6 +560,7 @@ e_fm_selector_enable(Evas_Object *object, void (*func)(Evas_Object *object, char
sd->is_selector = 1; sd->is_selector = 1;
sd->selector_func = func; sd->selector_func = func;
sd->selector_data = data; sd->selector_data = data;
sd->selector_hilite_func = hilite_func;
} }
/* This isnt working yet */ /* This isnt working yet */
@ -2195,6 +2198,9 @@ _e_fm_icon_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info
} }
else else
{ {
if(icon->sd->is_selector && icon->file->type == E_FM_FILE_TYPE_FILE)
_e_fm_selector_send_hilite_file(icon);
if(icon->sd->win) if(icon->sd->win)
{ {
icon->sd->drag.start = 1; icon->sd->drag.start = 1;
@ -3227,6 +3233,12 @@ _e_fm_selector_send_file(E_Fm_Icon *icon)
icon->sd->selector_func(icon->sd->object, strdup(icon->file->path), icon->sd->selector_data); icon->sd->selector_func(icon->sd->object, strdup(icon->file->path), icon->sd->selector_data);
} }
static void
_e_fm_selector_send_hilite_file(E_Fm_Icon *icon)
{
icon->sd->selector_hilite_func(icon->sd->object, strdup(icon->file->path), icon->sd->selector_data);
}
static char * static char *
_e_fm_dir_meta_dir_id(char *dir) _e_fm_dir_meta_dir_id(char *dir)
{ {

View File

@ -43,7 +43,7 @@ EAPI void e_fm_geometry_virtual_get(Evas_Object *object, Evas_C
EAPI void e_fm_reconfigure_callback_add(Evas_Object *object, void (*func)(void *data, Evas_Object *obj, E_Event_Fm_Reconfigure *ev), void *data); EAPI void e_fm_reconfigure_callback_add(Evas_Object *object, void (*func)(void *data, Evas_Object *obj, E_Event_Fm_Reconfigure *ev), void *data);
EAPI int e_fm_freeze(Evas_Object *freeze); EAPI int e_fm_freeze(Evas_Object *freeze);
EAPI int e_fm_thaw(Evas_Object *freeze); EAPI int e_fm_thaw(Evas_Object *freeze);
EAPI void e_fm_selector_enable(Evas_Object *object, void (*func)(Evas_Object *object, char *file, void *data), void *data); EAPI void e_fm_selector_enable(Evas_Object *object, void (*func)(Evas_Object *object, char *file, void *data), void (*hilite_func)(Evas_Object *object, char *file, void *data), void *data);
EAPI void e_fm_background_set(Evas_Object *object, Evas_Object *bg); EAPI void e_fm_background_set(Evas_Object *object, Evas_Object *bg);
EAPI Evas_Object *e_fm_icon_create(void *data); EAPI Evas_Object *e_fm_icon_create(void *data);

View File

@ -643,6 +643,8 @@ _e_icon_canvas_tile_hide(E_Icon_Canvas_Tile *t)
void void
_e_icon_canvas_tile_pack(E_Icon_Canvas_Tile *t, E_Icon_Canvas_Item *li) _e_icon_canvas_tile_pack(E_Icon_Canvas_Tile *t, E_Icon_Canvas_Item *li)
{ {
if(!t)
return;
t->items = evas_list_append(t->items, li); t->items = evas_list_append(t->items, li);
li->tile = t; li->tile = t;
if(t->visible) if(t->visible)

View File

@ -16,11 +16,14 @@ struct _E_Widget_Data
char **valptr; char **valptr;
void (*select_func) (Evas_Object *obj, char *file, void *data); void (*select_func) (Evas_Object *obj, char *file, void *data);
void *select_data; void *select_data;
void (*hilite_func) (Evas_Object *obj, char *file, void *data);
void *hilite_data;
}; };
static void _e_wid_del_hook(Evas_Object *obj); static void _e_wid_del_hook(Evas_Object *obj);
static void _e_wid_focus_steal(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _e_wid_focus_steal(void *data, Evas *e, Evas_Object *obj, void *event_info);
static void _e_wid_fileman_selected_cb(Evas_Object *obj, char *file, void *data); static void _e_wid_fileman_selected_cb(Evas_Object *obj, char *file, void *data);
static void _e_wid_fileman_hilited_cb(Evas_Object *obj, char *file, void *data);
/* local subsystem functions */ /* local subsystem functions */
@ -49,13 +52,36 @@ _e_wid_fileman_selected_cb(Evas_Object *obj, char *file, void *data)
/* this is crashing, see why */ /* this is crashing, see why */
#if 0 #if 0
E_FREE(*(wd->valptr)); E_FREE(*(wd->valptr));
*(wd->valptr) = strdup(file); #endif
#endif if(wd->valptr)
*(wd->valptr) = strdup(file);
if (wd->select_func) if (wd->select_func)
wd->select_func(wd->wid, file, wd->select_data); wd->select_func(wd->wid, file, wd->select_data);
printf("e_widget_fileman: %s\n", file); printf("e_widget_fileman (selected) : %s\n", file);
}
static void
_e_wid_fileman_hilited_cb(Evas_Object *obj, char *file, void *data)
{
E_Widget_Data *wd;
wd = data;
/* this is crashing, see why */
#if 0
E_FREE(*(wd->valptr));
#endif
if(wd->valptr)
*(wd->valptr) = strdup(file);
if (wd->hilite_func)
wd->hilite_func(wd->wid, file, wd->select_data);
printf("e_widget_fileman (hilited): %s\n", file);
} }
/* externally accessible functions */ /* externally accessible functions */
@ -76,7 +102,7 @@ e_widget_fileman_add(Evas *evas, char **val)
e_widget_data_set(obj, wd); e_widget_data_set(obj, wd);
wd->o_fm = e_file_selector_add(evas); wd->o_fm = e_file_selector_add(evas);
e_file_selector_callback_add(wd->o_fm, _e_wid_fileman_selected_cb, wd); e_file_selector_callback_add(wd->o_fm, _e_wid_fileman_selected_cb, _e_wid_fileman_hilited_cb, wd);
evas_object_show(wd->o_fm); evas_object_show(wd->o_fm);
evas_object_resize(wd->o_fm, 300, 200); evas_object_resize(wd->o_fm, 300, 200);
e_widget_min_size_set(obj, 300, 200); e_widget_min_size_set(obj, 300, 200);
@ -98,3 +124,13 @@ e_widget_fileman_select_callback_add(Evas_Object *obj, void (*func) (Evas_Object
wd->select_func = func; wd->select_func = func;
wd->select_data = data; wd->select_data = data;
} }
void
e_widget_fileman_hilite_callback_add(Evas_Object *obj, void (*func) (Evas_Object *obj, char *file, void *data), void *data)
{
E_Widget_Data *wd;
wd = e_widget_data_get(obj);
wd->hilite_func = func;
wd->hilite_data = data;
}

View File

@ -21,6 +21,8 @@ struct _E_Widget_Data
void (*select_func) (Evas_Object *obj, char *file, void *data); void (*select_func) (Evas_Object *obj, char *file, void *data);
void *select_data; void *select_data;
void (*hilite_func) (Evas_Object *obj, char *file, void *data);
void *hilite_data;
}; };
static void _e_wid_del_hook(Evas_Object *obj); static void _e_wid_del_hook(Evas_Object *obj);
@ -31,6 +33,7 @@ static void _e_wid_disable_hook(Evas_Object *obj);
static void _e_wid_signal_cb1(void *data, Evas_Object *obj, const char *emission, const char *source); static void _e_wid_signal_cb1(void *data, Evas_Object *obj, const char *emission, const char *source);
static void _e_wid_focus_steal(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _e_wid_focus_steal(void *data, Evas *e, Evas_Object *obj, void *event_info);
static void _e_wid_select_cb(E_File_Dialog *dia, char *file, void *data); static void _e_wid_select_cb(E_File_Dialog *dia, char *file, void *data);
static void _e_wid_hilite_cb(E_File_Dialog *dia, char *file, void *data);
/* local subsystem functions */ /* local subsystem functions */
@ -53,6 +56,8 @@ e_widget_iconsel_add(Evas *evas, Evas_Object *icon, Evas_Coord minw, Evas_Coord
wd->valptr = file; wd->valptr = file;
wd->select_func = NULL; wd->select_func = NULL;
wd->select_data = NULL; wd->select_data = NULL;
wd->hilite_func = NULL;
wd->hilite_data = NULL;
wd->obj = obj; wd->obj = obj;
e_widget_data_set(obj, wd); e_widget_data_set(obj, wd);
@ -108,7 +113,9 @@ e_widget_iconsel_add_from_file(Evas *evas, char *icon, Evas_Coord minw, Evas_Coo
wd = calloc(1, sizeof(E_Widget_Data)); wd = calloc(1, sizeof(E_Widget_Data));
wd->valptr = file; wd->valptr = file;
wd->select_func = NULL; wd->select_func = NULL;
wd->select_data = NULL; wd->select_data = NULL;
wd->hilite_func = NULL;
wd->hilite_data = NULL;
wd->obj = obj; wd->obj = obj;
e_widget_data_set(obj, wd); e_widget_data_set(obj, wd);
@ -152,6 +159,16 @@ e_widget_iconsel_select_callback_add(Evas_Object *obj, void (*func)(Evas_Object
wd->select_data = data; wd->select_data = data;
} }
void
e_widget_iconsel_hilite_callback_add(Evas_Object *obj, void (*func)(Evas_Object *obj, char *file, void *data), void *data)
{
E_Widget_Data *wd;
wd = e_widget_data_get(obj);
wd->hilite_func = func;
wd->hilite_data = data;
}
static void static void
_e_wid_del_hook(Evas_Object *obj) _e_wid_del_hook(Evas_Object *obj)
{ {
@ -191,6 +208,7 @@ _e_wid_activate_hook(Evas_Object *obj)
if (!dia) return; if (!dia) return;
e_file_dialog_title_set(dia, "Select File"); e_file_dialog_title_set(dia, "Select File");
e_file_dialog_select_callback_add(dia, _e_wid_select_cb, wd); e_file_dialog_select_callback_add(dia, _e_wid_select_cb, wd);
e_file_dialog_hilite_callback_add(dia, _e_wid_hilite_cb, wd);
e_file_dialog_show(dia); e_file_dialog_show(dia);
} }
@ -265,3 +283,26 @@ _e_wid_select_cb(E_File_Dialog *dia, char *file, void *data)
*(wd->valptr) = strdup(file); *(wd->valptr) = strdup(file);
e_object_del(E_OBJECT(dia)); e_object_del(E_OBJECT(dia));
} }
static void
_e_wid_hilite_cb(E_File_Dialog *dia, char *file, void *data)
{
E_Widget_Data *wd;
char *ext;
wd = data;
ext = strrchr(file, '.');
if (!ext) return;
if ((strcasecmp(ext, ".png")) &&
(strcasecmp(ext, ".jpg")) &&
(strcasecmp(ext, ".jpeg")))
return;
if (wd->hilite_func)
wd->hilite_func(wd->obj, file, wd->select_data);
//e_icon_file_set(wd->o_icon, file);
E_FREE(*(wd->valptr));
*(wd->valptr) = strdup(file);
}

View File

@ -9,6 +9,7 @@
EAPI Evas_Object *e_widget_iconsel_add(Evas *evas, Evas_Object *icon, Evas_Coord minw, Evas_Coord minh, char **file); EAPI Evas_Object *e_widget_iconsel_add(Evas *evas, Evas_Object *icon, Evas_Coord minw, Evas_Coord minh, char **file);
EAPI Evas_Object *e_widget_iconsel_add_from_file(Evas *evas, char *icon, Evas_Coord minw, Evas_Coord minh, char **file); EAPI Evas_Object *e_widget_iconsel_add_from_file(Evas *evas, char *icon, Evas_Coord minw, Evas_Coord minh, char **file);
EAPI void e_widget_iconsel_select_callback_add(Evas_Object *obj, void (*func)(Evas_Object *obj, char *file, void *data), void *data); EAPI void e_widget_iconsel_select_callback_add(Evas_Object *obj, void (*func)(Evas_Object *obj, char *file, void *data), void *data);
EAPI void e_widget_iconsel_hilite_callback_add(Evas_Object *obj, void (*func)(Evas_Object *obj, char *file, void *data), void *data);
#endif #endif
#endif #endif