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

Reply via email to