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

Reply via email to