From 1b6a226a81e0917c2a71bfdf3e5c4eb6b14d5658 Mon Sep 17 00:00:00 2001 From: Mike Massonnet Date: Mon, 24 May 2010 22:39:19 +0200 Subject: [PATCH] =?UTF-8?q?Display=20only=20installed=20programs=20in=20th?= =?UTF-8?q?e=20=E2=80=9CExecute=E2=80=9D=20menu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/process-window.c | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/src/process-window.c b/src/process-window.c index f1e7687..37c8d87 100644 --- a/src/process-window.c +++ b/src/process-window.c @@ -191,19 +191,39 @@ menu_execute_append_item (GtkMenu *menu, gchar *title, gchar *command, gchar *ic g_signal_connect_swapped (mi, "activate", G_CALLBACK (execute_command), command); } +static gboolean +program_exists (gchar *program) +{ + gchar *program_path = g_find_program_in_path (program); + if (program_path == NULL) + return FALSE; + g_free (program_path); + return TRUE; +} + static void show_menu_execute_task (XtmProcessWindow *window) { - // TODO check if xfrun4, xfce4-appfinder, etc are installed and pull them in the menu static GtkWidget *menu = NULL; if (menu == NULL) { menu = gtk_menu_new (); - menu_execute_append_item (GTK_MENU (menu), _("Run Program..."), "xfrun4", "system-run"); - menu_execute_append_item (GTK_MENU (menu), _("Application Finder"), "xfce4-appfinder", "xfce4-appfinder"); - menu_execute_append_item (GTK_MENU (menu), _("Terminal emulator"), "exo-open --launch TerminalEmulator", "terminal"); - menu_execute_append_item (GTK_MENU (menu), _("XTerm"), "xterm -fg grey -bg black", "terminal"); + /* Find a runner program */ + if (program_exists ("xfrun4")) + menu_execute_append_item (GTK_MENU (menu), _("Run Program..."), "xfrun4", "system-run"); + else if (program_exists ("gmrun")) + menu_execute_append_item (GTK_MENU (menu), _("Run Program..."), "gmrun", "system-run"); + else if (program_exists ("gexec")) + menu_execute_append_item (GTK_MENU (menu), _("Run Program..."), "gexec", "system-run"); + /* Find an applications list program */ + if (program_exists ("xfce4-appfinder")) + menu_execute_append_item (GTK_MENU (menu), _("Application Finder"), "xfce4-appfinder", "xfce4-appfinder"); + /* Find a terminal emulator */ + if (program_exists ("exo-open")) + menu_execute_append_item (GTK_MENU (menu), _("Terminal emulator"), "exo-open --launch TerminalEmulator", "terminal"); + else if (program_exists ("xterm")) + menu_execute_append_item (GTK_MENU (menu), _("XTerm"), "xterm -fg grey -bg black", "terminal"); gtk_widget_show_all (menu); }