Enlightenment CVS committal Author : raster Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_fm.c e_module.h Log Message: module version bump. fm right click menu lets tou create directories and refresh a view manually now. =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_fm.c,v retrieving revision 1.27 retrieving revision 1.28 diff -u -3 -r1.27 -r1.28 --- e_fm.c 12 Aug 2006 14:19:03 -0000 1.27 +++ e_fm.c 13 Aug 2006 05:33:15 -0000 1.28 @@ -20,6 +20,7 @@ Evas_Coord x, y, w, h; Evas_Object *obj; Evas_Object *clip; + Evas_Object *underlay; Evas_Object *overlay; const char *dev; const char *path; @@ -45,6 +46,8 @@ Ecore_Job *resize_job; Ecore_Job *refresh_job; DIR *dir; + E_Menu *menu; + E_Entry_Dialog *entry_dialog; unsigned char iconlist_changed : 1; E_Fm2_Config *config; @@ -122,6 +125,9 @@ static void _e_fm2_cb_icon_mouse_up(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _e_fm2_cb_icon_mouse_move(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _e_fm2_cb_icon_thumb_gen(void *data, Evas_Object *obj, void *event_info); +static void _e_fm2_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info); +static void _e_fm2_cb_mouse_up(void *data, Evas *e, Evas_Object *obj, void *event_info); +static void _e_fm2_cb_mouse_move(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _e_fm2_cb_scroll_job(void *data); static void _e_fm2_cb_resize_job(void *data); static int _e_fm2_cb_icon_sort(void *data1, void *data2); @@ -141,8 +147,15 @@ static void _e_fm2_smart_clip_set(Evas_Object *obj, Evas_Object * clip); static void _e_fm2_smart_clip_unset(Evas_Object *obj); -static void _e_fm2_menu_action_display(E_Fm2_Icon *ic, Evas_Object *obj, unsigned int timestamp); +static void _e_fm2_menu(Evas_Object *obj, unsigned int timestamp); static void _e_fm2_menu_post_cb(void *data, E_Menu *m); +static void _e_fm2_icon_menu(E_Fm2_Icon *ic, Evas_Object *obj, unsigned int timestamp); +static void _e_fm2_icon_menu_post_cb(void *data, E_Menu *m); +static void _e_fm2_refresh(void *data, E_Menu *m, E_Menu_Item *mi); +static void _e_fm2_new_directory(void *data, E_Menu *m, E_Menu_Item *mi); +static void _e_fm2_new_directory_delete_cb(void *obj); +static void _e_fm2_new_directory_yes_cb(char *text, void *data); +static void _e_fm2_new_directory_no_cb(char *text, void *data); static void _e_fm2_file_rename(void *data, E_Menu *m, E_Menu_Item *mi); static void _e_fm2_file_rename_delete_cb(void *obj); static void _e_fm2_file_rename_yes_cb(char *text, void *data); @@ -1493,7 +1506,7 @@ */ p = strchr(ic->info.mime, '/'); if (p) p++; - else p = ic->info.mime; + else p = (char *)ic->info.mime; snprintf(buf, sizeof(buf), "icons/fileman/%s", p); ic->obj_icon = edje_object_add(evas_object_evas_get(ic->sd->obj)); if (!e_theme_edje_object_set(ic->obj_icon, "base/theme/fileman", @@ -1743,10 +1756,7 @@ ic = data; ev = event_info; - if ((ev->button == 1) && (ev->flags & EVAS_BUTTON_TRIPLE_CLICK)) - { - } - else if ((ev->button == 1) && (ev->flags & EVAS_BUTTON_DOUBLE_CLICK)) + if ((ev->button == 1) && (ev->flags & EVAS_BUTTON_DOUBLE_CLICK)) { /* if its a directory && open dirs in-place is set then change the dir * to be the dir + file */ @@ -1867,10 +1877,11 @@ char buf[4096]; snprintf(buf, sizeof(buf), "%s/%s", ic->sd->realpath, ic->info.file); - if (ecore_file_can_write(buf)) + if ((ecore_file_can_write(buf)) || + (ecore_file_can_write(ic->sd->realpath))) { - _e_fm2_menu_action_display(ic, obj, ev->timestamp); - evas_event_feed_mouse_up(evas_object_evas_get(obj), ev->button, + _e_fm2_icon_menu(ic, ic->sd->obj, ev->timestamp); + evas_event_feed_mouse_up(evas_object_evas_get(ic->sd->obj), ev->button, EVAS_BUTTON_NONE, ev->timestamp, NULL); } } @@ -1923,6 +1934,42 @@ } static void +_e_fm2_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + Evas_Event_Mouse_Down *ev; + E_Fm2_Smart_Data *sd; + + sd = data; + ev = event_info; + if (ev->button == 3) + { + _e_fm2_menu(sd->obj, ev->timestamp); + evas_event_feed_mouse_up(evas_object_evas_get(sd->obj), ev->button, + EVAS_BUTTON_NONE, ev->timestamp, NULL); + } +} + +static void +_e_fm2_cb_mouse_up(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + Evas_Event_Mouse_Up *ev; + E_Fm2_Smart_Data *sd; + + sd = data; + ev = event_info; +} + +static void +_e_fm2_cb_mouse_move(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + Evas_Event_Mouse_Move *ev; + E_Fm2_Smart_Data *sd; + + sd = data; + ev = event_info; +} + +static void _e_fm2_cb_scroll_job(void *data) { E_Fm2_Smart_Data *sd; @@ -2161,6 +2208,16 @@ evas_object_smart_member_add(sd->clip, obj); evas_object_color_set(sd->clip, 255, 255, 255, 255); + sd->underlay = evas_object_rectangle_add(evas_object_evas_get(obj)); + evas_object_clip_set(sd->underlay, sd->clip); + evas_object_smart_member_add(sd->underlay, obj); + evas_object_color_set(sd->underlay, 0, 0, 0, 0); + evas_object_show(sd->underlay); + + evas_object_event_callback_add(sd->underlay, EVAS_CALLBACK_MOUSE_DOWN, _e_fm2_cb_mouse_down, sd); + evas_object_event_callback_add(sd->underlay, EVAS_CALLBACK_MOUSE_UP, _e_fm2_cb_mouse_up, sd); + evas_object_event_callback_add(sd->underlay, EVAS_CALLBACK_MOUSE_MOVE, _e_fm2_cb_mouse_move, sd); + sd->overlay = edje_object_add(evas_object_evas_get(obj)); evas_object_clip_set(sd->overlay, sd->clip); e_theme_edje_object_set(sd->overlay, "base/theme/fileman", @@ -2185,6 +2242,17 @@ _e_fm2_queue_free(obj); _e_fm2_regions_free(obj); _e_fm2_icons_free(obj); + if (sd->menu) + { + e_menu_post_deactivate_callback_set(sd->menu, NULL, NULL); + e_object_del(E_OBJECT(sd->menu)); + sd->menu = NULL; + } + if (sd->entry_dialog) + { + e_object_del(E_OBJECT(sd->entry_dialog)); + sd->entry_dialog = NULL; + } if (sd->scroll_job) ecore_job_del(sd->scroll_job); if (sd->resize_job) ecore_job_del(sd->resize_job); if (sd->refresh_job) ecore_job_del(sd->refresh_job); @@ -2194,6 +2262,7 @@ sd->dev = sd->path = sd->realpath = NULL; if (sd->config) _e_fm2_config_free(sd->config); + evas_object_del(sd->underlay); evas_object_del(sd->overlay); evas_object_del(sd->clip); free(sd); @@ -2209,6 +2278,7 @@ if ((sd->x == x) && (sd->y == y)) return; sd->x = x; sd->y = y; + evas_object_move(sd->underlay, sd->x, sd->y); evas_object_move(sd->overlay, sd->x, sd->y); evas_object_move(sd->clip, sd->x - OVERCLIP, sd->y - OVERCLIP); _e_fm2_obj_icons_place(sd); @@ -2227,6 +2297,7 @@ if (h != sd->h) hch = 1; sd->w = w; sd->h = h; + evas_object_resize(sd->underlay, sd->w, sd->h); evas_object_resize(sd->overlay, sd->w, sd->h); evas_object_resize(sd->clip, sd->w + (OVERCLIP * 2), sd->h + (OVERCLIP * 2)); @@ -2294,7 +2365,81 @@ } static void -_e_fm2_menu_action_display(E_Fm2_Icon *ic, Evas_Object *obj, unsigned int timestamp) +_e_fm2_menu(Evas_Object *obj, unsigned int timestamp) +{ + E_Fm2_Smart_Data *sd; + E_Menu *mn; + E_Menu_Item *mi; + E_Manager *man; + E_Container *con; + E_Zone *zone; + int x, y; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; + + mn = e_menu_new(); + e_menu_category_set(mn, "fileman/action"); + + mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, _("Refresh View")); + e_menu_item_icon_edje_set(mi, + (char *)e_theme_edje_file_get("base/theme/fileman", + "fileman/button/refresh"), + "fileman/button/refresh"); + e_menu_item_callback_set(mi, _e_fm2_refresh, sd); + + if (ecore_file_can_write(sd->realpath)) + { + mi = e_menu_item_new(mn); + e_menu_item_separator_set(mi, 1); + + mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, _("New Directory")); + e_menu_item_icon_edje_set(mi, + (char *)e_theme_edje_file_get("base/theme/fileman", + "fileman/button/new_dir"), + "fileman/button/new_dir"); + e_menu_item_callback_set(mi, _e_fm2_new_directory, sd); + } + + man = e_manager_current_get(); + if (!man) + { + e_object_del(E_OBJECT(mn)); + return; + } + con = e_container_current_get(man); + if (!con) + { + e_object_del(E_OBJECT(mn)); + return; + } + ecore_x_pointer_xy_get(con->win, &x, &y); + zone = e_util_zone_current_get(man); + if (!zone) + { + e_object_del(E_OBJECT(mn)); + return; + } + sd->menu = mn; + e_menu_post_deactivate_callback_set(mn, _e_fm2_menu_post_cb, sd); + e_menu_activate_mouse(mn, zone, + x, y, 1, 1, + E_MENU_POP_DIRECTION_DOWN, timestamp); +} + +static void +_e_fm2_menu_post_cb(void *data, E_Menu *m) +{ + E_Fm2_Smart_Data *sd; + + sd = data; + sd->menu = NULL; +} + +static void +_e_fm2_icon_menu(E_Fm2_Icon *ic, Evas_Object *obj, unsigned int timestamp) { E_Fm2_Smart_Data *sd; E_Menu *mn; @@ -2310,6 +2455,28 @@ e_menu_category_set(mn, "fileman/action"); mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, _("Refresh View")); + e_menu_item_icon_edje_set(mi, + (char *)e_theme_edje_file_get("base/theme/fileman", + "fileman/button/refresh"), + "fileman/button/refresh"); + e_menu_item_callback_set(mi, _e_fm2_refresh, ic->sd); + + mi = e_menu_item_new(mn); + e_menu_item_separator_set(mi, 1); + + mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, _("New Directory")); + e_menu_item_icon_edje_set(mi, + (char *)e_theme_edje_file_get("base/theme/fileman", + "fileman/button/new_dir"), + "fileman/button/new_dir"); + e_menu_item_callback_set(mi, _e_fm2_new_directory, ic->sd); + + mi = e_menu_item_new(mn); + e_menu_item_separator_set(mi, 1); + + mi = e_menu_item_new(mn); e_menu_item_label_set(mi, _("Delete")); e_menu_item_icon_edje_set(mi, (char *)e_theme_edje_file_get("base/theme/fileman", @@ -2345,21 +2512,114 @@ return; } ic->menu = mn; - e_menu_post_deactivate_callback_set(mn, _e_fm2_menu_post_cb, ic); + e_menu_post_deactivate_callback_set(mn, _e_fm2_icon_menu_post_cb, ic); e_menu_activate_mouse(mn, zone, x, y, 1, 1, E_MENU_POP_DIRECTION_DOWN, timestamp); } static void -_e_fm2_menu_post_cb(void *data, E_Menu *m) +_e_fm2_icon_menu_post_cb(void *data, E_Menu *m) { E_Fm2_Icon *ic; ic = data; ic->menu = NULL; } - + +static void +_e_fm2_refresh(void *data, E_Menu *m, E_Menu_Item *mi) +{ + E_Fm2_Smart_Data *sd; + + sd = data; + if (sd->refresh_job) ecore_job_del(sd->refresh_job); + sd->refresh_job = ecore_job_add(_e_fm2_refresh_job_cb, sd->obj); +} + +static void +_e_fm2_new_directory(void *data, E_Menu *m, E_Menu_Item *mi) +{ + E_Fm2_Smart_Data *sd; + E_Manager *man; + E_Container *con; + + sd = data; + if (sd->entry_dialog) return; + + man = e_manager_current_get(); + if (!man) return; + con = e_container_current_get(man); + if (!con) return; + + sd->entry_dialog = e_entry_dialog_show(_("Create a new Directory"), "enlightenment/e", + _("New Directory Name:"), + "", NULL, NULL, + _e_fm2_new_directory_yes_cb, + _e_fm2_new_directory_no_cb, sd); + E_OBJECT(sd->entry_dialog)->data = sd; + e_object_del_attach_func_set(E_OBJECT(sd->entry_dialog), _e_fm2_new_directory_delete_cb); +} + +static void +_e_fm2_new_directory_delete_cb(void *obj) +{ + E_Fm2_Smart_Data *sd; + + sd = E_OBJECT(obj)->data; + sd->entry_dialog = NULL; +} + +static void +_e_fm2_new_directory_yes_cb(char *text, void *data) +{ + E_Fm2_Smart_Data *sd; + E_Dialog *dialog; + E_Manager *man; + E_Container *con; + char buf[PATH_MAX]; + char error[PATH_MAX + 256]; + + sd = data; + sd->entry_dialog = NULL; + if ((text) && (text[0])) + { + snprintf(buf, sizeof(buf), "%s/%s", sd->realpath, text); + + if (!ecore_file_mkdir(buf)) + { + man = e_manager_current_get(); + if (!man) return; + con = e_container_current_get(man); + if (!con) return; + + dialog = e_dialog_new(con); + e_dialog_button_add(dialog, _("OK"), NULL, NULL, NULL); + e_dialog_button_focus_num(dialog, 1); + e_dialog_title_set(dialog, _("Error")); + snprintf(error, PATH_MAX + 256, + _("Could not create directory:<br>" + "<hilight>%s</hilight>"), + text); + e_dialog_text_set(dialog, error); + e_win_centered_set(dialog->win, 1); + e_dialog_show(dialog); + return; + } + if (sd->refresh_job) ecore_job_del(sd->refresh_job); + sd->refresh_job = ecore_job_add(_e_fm2_refresh_job_cb, sd->obj); + } +} + +static void +_e_fm2_new_directory_no_cb(char *text, void *data) +{ + E_Fm2_Smart_Data *sd; + + sd = data; + sd->entry_dialog = NULL; +} + static void _e_fm2_file_rename(void *data, E_Menu *m, E_Menu_Item *mi) { @@ -2378,7 +2638,7 @@ if (!con) return; snprintf(text, PATH_MAX + 256, - _("Rename %s to"), + _("Rename %s to:"), ic->info.file); ic->entry_dialog = e_entry_dialog_show(_("Rename File"), "enlightenment/e", text, ic->info.file, NULL, NULL, @@ -2409,7 +2669,7 @@ char error[PATH_MAX + 256]; ic = data; - ic->dialog = NULL; + ic->entry_dialog = NULL; if ((text) && (strcmp(text, ic->info.file))) { snprintf(newpath, PATH_MAX, "%s/%s", ic->sd->realpath, text); @@ -2427,7 +2687,7 @@ e_dialog_button_focus_num(dialog, 1); e_dialog_title_set(dialog, _("Error")); snprintf(error, PATH_MAX + 256, - _("Could not rename from <b>%s</b> to <b>%s</b>"), + _("Could not rename from <hilight>%s</hilight> to <hilight>%s</hilight>"), ic->info.file, text); e_dialog_text_set(dialog, error); e_win_centered_set(dialog->win, 1); @@ -2445,7 +2705,7 @@ E_Fm2_Icon *ic; ic = data; - ic->dialog = NULL; + ic->entry_dialog = NULL; } static void @@ -2474,8 +2734,8 @@ e_dialog_title_set(dialog, _("Confirm Delete")); snprintf(text, PATH_MAX + 256, _("Are you sure you want to delete <br>" - "<b>%s/%s</b> ?"), - ic->sd->realpath, ic->info.file); + "<hilight>%s</hilight> ?"), + ic->info.file); e_dialog_text_set(dialog, text); e_win_centered_set(dialog->win, 1); e_dialog_show(dialog); @@ -2504,7 +2764,8 @@ ic->dialog = NULL; snprintf(path, PATH_MAX, "%s/%s", ic->sd->realpath, ic->info.file); - + + /* FIXME: recursive rm might block - need to get smart */ if (!(ecore_file_recursive_rm(path))) { char text[PATH_MAX + 256]; @@ -2520,7 +2781,8 @@ e_dialog_button_focus_num(dialog, 1); e_dialog_title_set(dialog, _("Error")); snprintf(text, PATH_MAX + 256, - _("Could not delete <br><b>%s</b>"), path); + _("Could not delete <br>" + "<hilight>%s</hilight>"), path); e_dialog_text_set(dialog, text); e_win_centered_set(dialog->win, 1); e_dialog_show(dialog); =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_module.h,v retrieving revision 1.15 retrieving revision 1.16 diff -u -3 -r1.15 -r1.16 --- e_module.h 30 Jul 2006 19:34:05 -0000 1.15 +++ e_module.h 13 Aug 2006 05:33:15 -0000 1.16 @@ -3,7 +3,7 @@ */ #ifdef E_TYPEDEFS -#define E_MODULE_API_VERSION 4 +#define E_MODULE_API_VERSION 5 typedef struct _E_Module E_Module; typedef struct _E_Module_Api E_Module_Api; ------------------------------------------------------------------------- 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