Added "Add App To Launcher" menu item for adding apps to ibar from window
authorChristopher Michael <cpmichael1@comcast.net>
Mon, 16 Oct 2006 02:34:38 +0000 (02:34 +0000)
committerChristopher Michael <cpmichael1@comcast.net>
Mon, 16 Oct 2006 02:34:38 +0000 (02:34 +0000)
menu.

SVN revision: 26641

src/bin/e_int_border_menu.c

index 4f39177..08603b7 100644 (file)
@@ -16,6 +16,7 @@ static void _e_border_menu_cb_maximize_horizontally(void *data, E_Menu *m, E_Men
 static void _e_border_menu_cb_unmaximize(void *data, E_Menu *m, E_Menu_Item *mi);
 static void _e_border_menu_cb_shade(void *data, E_Menu *m, E_Menu_Item *mi);
 static void _e_border_menu_cb_icon_edit(void *data, E_Menu *m, E_Menu_Item *mi);
+static void _e_border_menu_cb_icon_add(void *data, E_Menu *m, E_Menu_Item *mi);
 static void _e_border_menu_cb_prop(void *data, E_Menu *m, E_Menu_Item *mi);
 static void _e_border_menu_cb_stick(void *data, E_Menu *m, E_Menu_Item *mi);
 static void _e_border_menu_cb_on_top(void *data, E_Menu *m, E_Menu_Item *mi);
@@ -289,6 +290,10 @@ e_int_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y, int key, Ecore_
             e_menu_item_label_set(mi, _("Create Icon"));
             e_menu_item_callback_set(mi, _e_border_menu_cb_icon_edit, bd);
          }
+       mi = e_menu_item_new(m);
+       e_menu_item_label_set(mi, _("Add App To Launcher"));
+       e_util_menu_item_edje_icon_set(mi, "enlightenment/applications");
+       e_menu_item_callback_set(mi, _e_border_menu_cb_icon_add, bd);
      }
    
    mi = e_menu_item_new(m);
@@ -627,6 +632,41 @@ _e_border_menu_cb_icon_edit(void *data, E_Menu *m, E_Menu_Item *mi)
      }
 }
 
+static void 
+_e_border_menu_cb_icon_add(void *data, E_Menu *m, E_Menu_Item *mi)
+{
+   E_App *a, *bar_apps;
+   E_Border *bd;
+   Evas_List *l;
+   char buf[4096];
+   int found = 0;
+   
+   bd = data;
+   a = bd->app;
+   if (!a)
+     return;
+   
+   snprintf(buf, sizeof(buf), "%s/.e/e/applications/bar/default", e_user_homedir_get());
+   bar_apps = e_app_new(buf, 0);
+   if (bar_apps)
+     e_app_subdir_scan(bar_apps, 0);
+   for (l = bar_apps->subapps; l; l = l->next) 
+     {
+       E_App *ap;
+       
+       ap = l->data;
+       if (!ap) continue;
+       if (!e_app_valid_exe_get(ap)) continue;
+       if (!strcmp(ap->name, a->name)) 
+         {
+            found = 1;
+            break;
+         }
+     }
+   if (!found)
+     e_app_list_append(a, bar_apps);
+}
+
 static void
 _e_border_menu_cb_prop(void *data, E_Menu *m, E_Menu_Item *mi)
 {