Enlightenment CVS committal

Author  : handyande
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_utils.h e_utils.c e_border.c e_int_menus.c 


Log Message:
Add some e_utils integration, more to come - should help folk use the handy apps
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_utils.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- e_utils.h   30 Apr 2005 04:21:55 -0000      1.6
+++ e_utils.h   5 Jun 2005 15:02:42 -0000       1.7
@@ -11,6 +11,8 @@
 EAPI void e_util_wakeup(void);
 EAPI void e_util_env_set(const char *var, const char *val);
 EAPI E_Zone *e_util_zone_current_get(E_Manager *man);
+EAPI int  e_util_utils_installed(void);
+EAPI int  e_util_app_installed(char *app);
 
 #endif
 #endif
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_utils.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- e_utils.c   3 Jun 2005 19:10:25 -0000       1.7
+++ e_utils.c   5 Jun 2005 15:02:42 -0000       1.8
@@ -113,3 +113,29 @@
    _e_util_dummy_timer = NULL;
    return 0;
 }
+
+int
+e_util_utils_installed(void)
+{
+   return e_util_app_installed("emblem");
+}
+
+int
+e_util_app_installed(char *app)
+{
+   char *cmd, *tmp;
+   int   ret, len;
+
+   if (!app)
+     return 0;
+
+   cmd = "which %s > /dev/null 2>&1";
+   len = strlen(cmd) + strlen(app) - 1; // -1 is -2 for "%s" and +1 for "\0"
+   tmp = malloc(len);
+   snprintf(tmp, len, cmd, app);
+   
+   ret = system(tmp);
+   free(tmp);
+   return (ret == 0);
+}
+
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.c,v
retrieving revision 1.241
retrieving revision 1.242
diff -u -3 -r1.241 -r1.242
--- e_border.c  4 Jun 2005 16:31:43 -0000       1.241
+++ e_border.c  5 Jun 2005 15:02:42 -0000       1.242
@@ -4277,43 +4277,46 @@
                                                           
"widgets/border/default/sendto"),
                             "widgets/border/default/sendto");
 
-   mi = e_menu_item_new(m);
-   e_menu_item_separator_set(mi, 1);
-
-   a = e_app_window_name_class_find(bd->client.icccm.name,
-                                   bd->client.icccm.class);
-
-   if (a)
+   if (e_util_app_installed("emblem"))
      {
        mi = e_menu_item_new(m);
-       e_menu_item_label_set(mi, _("Edit Icon"));
-       e_menu_item_callback_set(mi, _e_border_menu_cb_icon_edit, a->path);
-       e_menu_item_icon_edje_set(mi, a->path, "icon");
-     }
-   else if (bd->client.icccm.class) /* icons with no class useless to borders 
*/
-     {
-       static char buf[PATH_MAX + 50];
-       char *name, *homedir;
-       int i, l;
-
-       buf[0] = '\0';
-       /* generate a reasonable file name from the window class */
-       /* FIXME - I think there could be duplicates - how better to do this? */
-       name = strdup(bd->client.icccm.class);
-       l = strlen(name);
-       for (i = 0; i < l; i++)
+       e_menu_item_separator_set(mi, 1);
+
+       a = e_app_window_name_class_find(bd->client.icccm.name,
+                                        bd->client.icccm.class);
+
+       if (a)
          {
-            if (name[i] == ' ') name[i] = '_';
+            mi = e_menu_item_new(m);
+            e_menu_item_label_set(mi, _("Edit Icon"));
+            e_menu_item_callback_set(mi, _e_border_menu_cb_icon_edit, a->path);
+            e_menu_item_icon_edje_set(mi, a->path, "icon");
          }
-       /* previously this could be null, but it will exist now */
-       homedir = e_user_homedir_get();
+       else if (bd->client.icccm.class) /* icons with no class useless to 
borders */
+         {
+            static char buf[PATH_MAX + 50];
+            char *name, *homedir;
+            int i, l;
+
+            buf[0] = '\0';
+            /* generate a reasonable file name from the window class */
+            /* FIXME - I think there could be duplicates - how better to do 
this? */
+            name = strdup(bd->client.icccm.class);
+            l = strlen(name);
+            for (i = 0; i < l; i++)
+              {
+                if (name[i] == ' ') name[i] = '_';
+              }
+            /* previously this could be null, but it will exist now */
+            homedir = e_user_homedir_get();
 
-       snprintf(buf, sizeof(buf),
-                "--win-class \"%s\" %s/.e/e/applications/all/%s.eapp",
-                bd->client.icccm.class, homedir, name);
-       mi = e_menu_item_new(m);
-       e_menu_item_label_set(mi, _("Create Icon"));
-       e_menu_item_callback_set(mi, _e_border_menu_cb_icon_edit, buf);
+            snprintf(buf, sizeof(buf),
+                     "--win-class \"%s\" %s/.e/e/applications/all/%s.eapp",
+                     bd->client.icccm.class, homedir, name);
+            mi = e_menu_item_new(m);
+            e_menu_item_label_set(mi, _("Create Icon"));
+            e_menu_item_callback_set(mi, _e_border_menu_cb_icon_edit, buf);
+         }
      }
 
    if (key)
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_menus.c,v
retrieving revision 1.64
retrieving revision 1.65
diff -u -3 -r1.64 -r1.65
--- e_int_menus.c       2 Jun 2005 09:49:07 -0000       1.64
+++ e_int_menus.c       5 Jun 2005 15:02:43 -0000       1.65
@@ -19,6 +19,7 @@
 /* local subsystem functions */
 static void _e_int_menus_main_del_hook       (void *obj);
 static void _e_int_menus_main_about          (void *data, E_Menu *m, 
E_Menu_Item *mi);
+static void _e_int_menus_main_run            (void *data, E_Menu *m, 
E_Menu_Item*mi);
 static void _e_int_menus_main_restart        (void *data, E_Menu *m, 
E_Menu_Item *mi);
 static void _e_int_menus_main_exit           (void *data, E_Menu *m, 
E_Menu_Item *mi);
 static void _e_int_menus_apps_scan           (E_Menu *m);
@@ -122,6 +123,13 @@
    e_menu_item_icon_edje_set(mi, s, "e");
    IF_FREE(s);
    e_menu_item_callback_set(mi, _e_int_menus_main_about, NULL);
+
+   if (e_util_app_installed("exige"))
+     {
+       mi = e_menu_item_new(m);
+       e_menu_item_label_set(mi, _("Run Command"));
+       e_menu_item_callback_set(mi, _e_int_menus_main_run, NULL);
+     }
    
    mi = e_menu_item_new(m);
    e_menu_item_separator_set(mi, 1);
@@ -250,6 +258,15 @@
 }
 
 static void
+_e_int_menus_main_run(void *data, E_Menu *m, E_Menu_Item *mi)
+{
+   Ecore_Exe *exe;
+
+   exe = ecore_exe_run("exige", NULL);
+   if (exe) ecore_exe_free(exe);
+}
+
+static void
 _e_int_menus_main_restart(void *data, E_Menu *m, E_Menu_Item *mi)
 {
    restart = 1;




-------------------------------------------------------
This SF.Net email is sponsored by: NEC IT Guy Games.  How far can you shotput
a projector? How fast can you ride your desk chair down the office luge track?
If you want to score the big prize, get to know the little guy.  
Play to win an NEC 61" plasma display: http://www.necitguy.com/?r=20
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to