Enlightenment CVS committal Author : onefang Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_fm.c e_fm.h e_int_config_apps.c Log Message: * Right clicking on an application on the left hand side of the All Applications dialog now includes "Edit Application" menu item. * Needed to pass the file info from e_fm so we know which app was right clicked on. There is probably a better way to do this, and raster says this callback method is just quick'n'dirty'n'temporary. =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_fm.c,v retrieving revision 1.46 retrieving revision 1.47 diff -u -3 -r1.46 -r1.47 --- e_fm.c 30 Aug 2006 15:17:04 -0000 1.46 +++ e_fm.c 30 Aug 2006 23:20:03 -0000 1.47 @@ -38,7 +38,7 @@ } regions; struct { struct { - void (*func) (void *data, Evas_Object *obj, E_Menu *m); + void (*func) (void *data, Evas_Object *obj, E_Menu *m, E_Fm2_Icon_Info *info); void *data; } start, end; } icon_menu; @@ -487,7 +487,7 @@ } EAPI void -e_fm2_icon_menu_start_extend_callback_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, E_Menu *m), void *data) +e_fm2_icon_menu_start_extend_callback_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, E_Menu *m, E_Fm2_Icon_Info *info), void *data) { E_Fm2_Smart_Data *sd; @@ -500,7 +500,7 @@ } EAPI void -e_fm2_icon_menu_end_extend_callback_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, E_Menu *m), void *data) +e_fm2_icon_menu_end_extend_callback_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, E_Menu *m, E_Fm2_Icon_Info *info), void *data) { E_Fm2_Smart_Data *sd; @@ -2571,7 +2571,7 @@ if (sd->icon_menu.start.func) { - sd->icon_menu.start.func(sd->icon_menu.start.data, sd->obj, mn); + sd->icon_menu.start.func(sd->icon_menu.start.data, sd->obj, mn, &(ic->info)); mi = e_menu_item_new(mn); e_menu_item_separator_set(mi, 1); } @@ -2652,7 +2652,7 @@ if (sd->icon_menu.end.func) { - sd->icon_menu.end.func(sd->icon_menu.end.data, sd->obj, mn); + sd->icon_menu.end.func(sd->icon_menu.end.data, sd->obj, mn, &(ic->info)); mi = e_menu_item_new(mn); e_menu_item_separator_set(mi, 1); } =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_fm.h,v retrieving revision 1.16 retrieving revision 1.17 diff -u -3 -r1.16 -r1.17 --- e_fm.h 30 Aug 2006 14:45:33 -0000 1.16 +++ e_fm.h 30 Aug 2006 23:20:03 -0000 1.17 @@ -113,8 +113,8 @@ EAPI Evas_List *e_fm2_all_list_get(Evas_Object *obj); EAPI void e_fm2_select_set(Evas_Object *obj, const char *file, int select); EAPI void e_fm2_file_show(Evas_Object *obj, const char *file); -EAPI void e_fm2_icon_menu_start_extend_callback_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, E_Menu *m), void *data); -EAPI void e_fm2_icon_menu_end_extend_callback_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, E_Menu *m), void *data); +EAPI void e_fm2_icon_menu_start_extend_callback_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, E_Menu *m, E_Fm2_Icon_Info *info), void *data); +EAPI void e_fm2_icon_menu_end_extend_callback_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, E_Menu *m, E_Fm2_Icon_Info *info), void *data); EAPI void e_fm2_pan_set(Evas_Object *obj, Evas_Coord x, Evas_Coord y); EAPI void e_fm2_pan_get(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y); =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_int_config_apps.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- e_int_config_apps.c 30 Aug 2006 14:49:00 -0000 1.9 +++ e_int_config_apps.c 30 Aug 2006 23:20:03 -0000 1.10 @@ -14,8 +14,6 @@ * * These things require support from e_fm - * DND from left side to righ side, and to ibar etc. - * fm right click menu of eap/.desktop brings up eap editor. - * Display contents of .order files on right side. * Stop user from deleting standard directories on right side. * Stop user from creating new directories on left side. */ @@ -29,6 +27,7 @@ struct _E_Config_Dialog_Data { E_Config_Dialog *cfd; + E_Fm2_Icon_Info *info; int state; struct { Evas_Object *o_fm_all; @@ -185,13 +184,103 @@ } static void +_cb_files_edited(void *data, E_Menu *m, E_Menu_Item *mi) +{ + E_Config_Dialog_Data *cfdata; + E_Fm2_Icon_Info *info; + const char *realpath; + char buf[4096]; + E_App *a; + + cfdata = data; + if (!cfdata->gui.o_fm_all) return; + if (!cfdata->info) return; + info = cfdata->info; + + realpath = e_fm2_real_path_get(cfdata->gui.o_fm_all); + + if (info->pseudo_link) + snprintf(buf, sizeof(buf), "%s/%s", info->link, info->file); + else + snprintf(buf, sizeof(buf), "%s/%s", realpath, info->file); + + if (ecore_file_is_dir(buf)) return; + a = e_app_new(buf, 0); + if (a) + e_eap_edit_show(cfdata->cfd->con, a); +} + +static void +_cb_files_add_edited(void *data, Evas_Object *obj, E_Menu *m, E_Fm2_Icon_Info *info) +{ + E_Config_Dialog_Data *cfdata; + E_Menu_Item *mi; + + cfdata = data; + /* We need to get this info data to the menu callback, all this is created on the fly when user right clicks. */ + cfdata->info = info; + mi = e_menu_item_new(m); + e_menu_item_label_set(mi, _("Edit Application")); + e_menu_item_callback_set(mi, _cb_files_edited, cfdata); +} + +static void _cb_button_delete_left(void *data1, void *data2) { + E_Config_Dialog_Data *cfdata; + Evas_List *selected; + E_Fm2_Icon_Info *ici; + const char *realpath; + char buf[4096]; + E_App *a; + + cfdata = data1; + if (!cfdata->gui.o_fm_all) return; + + selected = e_fm2_selected_list_get(cfdata->gui.o_fm_all); + if (!selected) return; + ici = selected->data; + realpath = e_fm2_real_path_get(cfdata->gui.o_fm_all); + if (!strcmp(realpath, "/")) + snprintf(buf, sizeof(buf), "/%s", ici->file); + else + snprintf(buf, sizeof(buf), "%s/%s", realpath, ici->file); + evas_list_free(selected); + if (ecore_file_is_dir(buf)) return; +printf("DELETING LEFT APPLICATION %s\n", buf); +// FIXME: find parent, so that e_app_remove can do the right thing. +// a = e_app_new(buf, 0); +// if (a) +// e_app_remove(a); + e_fm2_refresh(cfdata->gui.o_fm_all); } static void _cb_button_delete_right(void *data1, void *data2) { + E_Config_Dialog_Data *cfdata; + Evas_List *selected; + E_Fm2_Icon_Info *ici; + const char *realpath; + char buf[4096]; + E_App *a; + + cfdata = data1; + if (!cfdata->gui.o_fm) return; + + selected = e_fm2_selected_list_get(cfdata->gui.o_fm); + if (!selected) return; + ici = selected->data; + realpath = e_fm2_real_path_get(cfdata->gui.o_fm); + if (!strcmp(realpath, "/")) + snprintf(buf, sizeof(buf), "/%s", ici->file); + else + snprintf(buf, sizeof(buf), "%s/%s", realpath, ici->file); + evas_list_free(selected); +// if (ecore_file_is_dir(buf)) return; +printf("DELETING RIGHT APPLICATION %s\n", buf); +// FIXME: find parent .order, so that e_app_remove can do the right thing. + e_fm2_refresh(cfdata->gui.o_fm); } static void @@ -235,12 +324,18 @@ if ((a) && (parent)) e_app_append(a, parent); } + e_fm2_refresh(cfdata->gui.o_fm); } static void _cb_button_regen(void *data1, void *data2) { + E_Config_Dialog_Data *cfdata; + + cfdata = data1; e_fdo_menu_to_order(); + if (cfdata->gui.o_fm_all) e_fm2_refresh(cfdata->gui.o_fm_all); + if (cfdata->gui.o_fm) e_fm2_refresh(cfdata->gui.o_fm); } @@ -293,6 +388,7 @@ e_fm2_config_set(mt, &fmc_all); evas_object_smart_callback_add(mt, "selected", _cb_files_selected, cfdata); + e_fm2_icon_menu_start_extend_callback_set(mt, _cb_files_add_edited, cfdata); snprintf(path_all, sizeof(path_all), "%s/.e/e/applications/all", homedir); e_fm2_path_set(cfdata->gui.o_fm_all, path_all, "/"); ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs