Enlightenment CVS committal Author : raster Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_eap_editor.c e_eap_editor.h Log Message: brian's selector =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_eap_editor.c,v retrieving revision 1.83 retrieving revision 1.84 diff -u -3 -r1.83 -r1.84 --- e_eap_editor.c 19 May 2007 03:29:08 -0000 1.83 +++ e_eap_editor.c 30 Jun 2007 06:43:12 -0000 1.84 @@ -36,10 +36,16 @@ static Evas_Object *_e_desktop_edit_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *data); static Evas_Object *_e_desktop_edit_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *data); static void _e_desktop_editor_cb_icon_select(void *data1, void *data2); -static void _e_desktop_edit_select_cb(void *data, Evas_Object *obj); +static void _e_desktop_edit_cb_icon_select_destroy(void *obj); static void _e_desktop_edit_cb_icon_select_ok(void *data, E_Dialog *dia); static void _e_desktop_edit_cb_icon_select_cancel(void *data, E_Dialog *dia); static void _e_desktop_editor_icon_update(E_Config_Dialog_Data *cfdata); +static void _e_desktop_editor_cb_exec_select(void *data1, void *data2); +static void _e_desktop_edit_cb_exec_select_destroy(void *obj); +static void _e_desktop_edit_cb_exec_select_ok(void *data, E_Dialog *dia); +static void _e_desktop_edit_cb_exec_select_cancel(void *data, E_Dialog *dia); +static void _e_desktop_editor_exec_update(E_Config_Dialog_Data *cfdata); +static void _e_desktop_edit_select_cb(void *data, Evas_Object *obj); #define IFADD(src, dst) if (src) dst = evas_stringshare_add(src); else dst = NULL #define IFDEL(src) if (src) evas_stringshare_del(src); src = NULL; @@ -465,10 +471,14 @@ e_widget_frametable_object_append(o, e_widget_label_add(evas, _("Executable")), 0, 1, 1, 1, 1, 1, 1, 1); - e_widget_frametable_object_append(o, e_widget_entry_add(evas, &(cfdata->exec)), + editor->entry_widget = e_widget_entry_add(evas, &(cfdata->exec)); + e_widget_frametable_object_append(o, editor->entry_widget, 1, 1, 1, 1, 1, 1, 1, 1); - + e_widget_frametable_object_append(o, e_widget_button_add(evas, "...", NULL, + _e_desktop_editor_cb_exec_select, cfdata, editor), + 2, 1, 1, 1, + 1, 1, 1, 1); e_widget_frametable_object_append(o, e_widget_label_add(evas, _("Comment")), 0, 2, 1, 1, 1, 1, 1, 1); @@ -563,10 +573,11 @@ editor = data2; cfdata = data1; - if (editor->fsel_dia) return; + if (editor->icon_fsel_dia) return; dia = e_dialog_new(cfdata->editor->cfd->con, "E", "_eap_icon_select_dialog"); if (!dia) return; + e_object_del_attach_func_set(E_OBJECT(dia), _e_desktop_edit_cb_icon_select_destroy); e_dialog_title_set(dia, _("Select an Icon")); dia->data = cfdata; @@ -591,7 +602,7 @@ } evas_object_show(o); - editor->fsel = o; + editor->icon_fsel = o; e_widget_min_size_get(o, &mw, &mh); e_dialog_content_set(dia, o, mw, mh); @@ -602,7 +613,61 @@ e_win_centered_set(dia->win, 1); e_dialog_show(dia); e_win_resize(dia->win, 475, 341); - editor->fsel_dia = dia; + editor->icon_fsel_dia = dia; +} + +static void +_e_desktop_editor_cb_exec_select(void *data1, void *data2) +{ + E_Config_Dialog_Data *cfdata; + E_Dialog *dia; + Evas_Object *o; + Evas_Coord mw, mh; + E_Desktop_Edit *editor; + char *dir = NULL; + + editor = data2; + cfdata = data1; + + if (editor->exec_fsel_dia) return; + + dia = e_dialog_new(cfdata->editor->cfd->con, "E", "_eap_exec_select_dialog"); + if (!dia) return; + e_object_del_attach_func_set(E_OBJECT(dia), _e_desktop_edit_cb_exec_select_destroy); + e_dialog_title_set(dia, _("Select an Executable")); + dia->data = cfdata; + + /* absolute path to exe */ + if (cfdata->exec) + dir = ecore_file_get_dir(cfdata->exec); + + if (dir) + { + o = e_widget_fsel_add(dia->win->evas, dir, "/", NULL, NULL, + _e_desktop_edit_select_cb, cfdata, + NULL, cfdata, 1); + free(dir); + } + else + { + o = e_widget_fsel_add(dia->win->evas, "~/", "/", NULL, NULL, + _e_desktop_edit_select_cb, cfdata, + NULL, cfdata, 1); + } + + evas_object_show(o); + editor->exec_fsel = 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, _e_desktop_edit_cb_exec_select_ok, cfdata); + e_dialog_button_add(dia, _("Cancel"), NULL, _e_desktop_edit_cb_exec_select_cancel, cfdata); + e_dialog_resizable_set(dia, 1); + e_win_centered_set(dia->win, 1); + e_dialog_show(dia); + e_win_resize(dia->win, 475, 341); + editor->exec_fsel_dia = dia; } static void @@ -614,13 +679,23 @@ } static void +_e_desktop_edit_cb_icon_select_destroy(void *obj) +{ + E_Dialog *dia = obj; + E_Config_Dialog_Data *cfdata = dia->data; + + e_object_unref(E_OBJECT(dia)); + _e_desktop_edit_cb_icon_select_cancel(cfdata, NULL); +} + +static void _e_desktop_edit_cb_icon_select_ok(void *data, E_Dialog *dia) { E_Config_Dialog_Data *cfdata; const char *file; cfdata = data; - file = e_widget_fsel_selection_path_get(cfdata->editor->fsel); + file = e_widget_fsel_selection_path_get(cfdata->editor->icon_fsel); IFFREE(cfdata->icon); IFDUP(file, cfdata->icon); @@ -634,8 +709,8 @@ E_Config_Dialog_Data *cfdata; cfdata = data; - e_util_defer_object_del(E_OBJECT(dia)); - cfdata->editor->fsel_dia = NULL; + if (dia) e_util_defer_object_del(E_OBJECT(dia)); + cfdata->editor->icon_fsel_dia = NULL; _e_desktop_editor_icon_update(cfdata); } @@ -649,4 +724,50 @@ /* NB this takes care of freeing any previous icon object */ e_widget_button_icon_set(cfdata->editor->img_widget, o); +} + +static void +_e_desktop_edit_cb_exec_select_destroy(void *obj) +{ + E_Dialog *dia = obj; + E_Config_Dialog_Data *cfdata = dia->data; + + e_object_unref(E_OBJECT(dia)); + _e_desktop_edit_cb_exec_select_cancel(cfdata, NULL); +} + +static void +_e_desktop_edit_cb_exec_select_ok(void *data, E_Dialog *dia) +{ + E_Config_Dialog_Data *cfdata; + const char *file; + + cfdata = data; + file = e_widget_fsel_selection_path_get(cfdata->editor->exec_fsel); + + IFFREE(cfdata->exec); + IFDUP(file, cfdata->exec); + + _e_desktop_edit_cb_exec_select_cancel(data, dia); +} + +static void +_e_desktop_edit_cb_exec_select_cancel(void *data, E_Dialog *dia) +{ + E_Config_Dialog_Data *cfdata; + + cfdata = data; + if (dia) e_util_defer_object_del(E_OBJECT(dia)); + cfdata->editor->exec_fsel_dia = NULL; + _e_desktop_editor_exec_update(cfdata); +} + +static void +_e_desktop_editor_exec_update(E_Config_Dialog_Data *cfdata) +{ + Evas_Object *o; + + if (!cfdata->editor->entry_widget) return; + + e_widget_entry_text_set(cfdata->editor->entry_widget, cfdata->exec); } =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_eap_editor.h,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- e_eap_editor.h 13 Apr 2007 01:36:05 -0000 1.10 +++ e_eap_editor.h 30 Jun 2007 06:43:12 -0000 1.11 @@ -21,8 +21,11 @@ Evas_Object *img; Evas_Object *img_widget; - Evas_Object *fsel; - E_Dialog *fsel_dia; + Evas_Object *icon_fsel; + E_Dialog *icon_fsel_dia; + Evas_Object *entry_widget; + Evas_Object *exec_fsel; + E_Dialog *exec_fsel_dia; //int img_set; char *tmp_image_path; ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs