aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mail/ChangeLog5
-rw-r--r--mail/em-popup.c39
2 files changed, 17 insertions, 27 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog
index f407aa6629..f84ca8f964 100644
--- a/mail/ChangeLog
+++ b/mail/ChangeLog
@@ -1,3 +1,8 @@
+2005-02-22 Marco Pesenti Gritti <marco@gnome.org>
+
+ * mail/em-popup.c: (emp_apps_open_in), (emp_standard_menu_factory):
+ Use gnome-vfs API to launch external applications
+
2005-02-22 Not Zed <NotZed@Ximian.com>
** See bug #40515
diff --git a/mail/em-popup.c b/mail/em-popup.c
index 9672b4b362..ecda95612c 100644
--- a/mail/em-popup.c
+++ b/mail/em-popup.c
@@ -40,6 +40,7 @@
#include <libgnome/gnome-url.h>
#include <libgnomevfs/gnome-vfs-mime.h>
+#include <libgnomevfs/gnome-vfs-utils.h>
#include <libgnome/gnome-i18n.h>
#include "em-popup.h"
@@ -567,32 +568,16 @@ emp_apps_open_in(EPopup *ep, EPopupItem *item, void *data)
path = em_utils_temp_save_part(target->target.widget, target->part);
if (path) {
GnomeVFSMimeApplication *app = item->user_data;
- int douri = (app->expects_uris == GNOME_VFS_MIME_APPLICATION_ARGUMENT_TYPE_URIS);
- char *command;
+ char *uri;
+ GList *uris = NULL;
- if (app->requires_terminal) {
- char *term, *args = NULL;
- GConfClient *gconf;
-
- gconf = gconf_client_get_default ();
- if ((term = gconf_client_get_string (gconf, "/desktop/gnome/applications/terminal/exec", NULL)))
- args = gconf_client_get_string (gconf, "/desktop/gnome/applications/terminal/exec_arg", NULL);
- g_object_unref (gconf);
-
- if (term == NULL)
- return;
-
- command = g_strdup_printf ("%s%s%s %s %s%s &", term, args ? " " : "", args ? args : "",
- app->command, douri ? "file://" : "", path);
- g_free (term);
- g_free (args);
- } else {
- command = g_strdup_printf ("%s %s%s &", app->command, douri ? "file://" : "", path);
- }
-
- /* FIXME: Do not use system here */
- system(command);
- g_free(command);
+ uri = gnome_vfs_get_uri_from_local_path(path);
+ uris = g_list_append(uris, uri);
+
+ gnome_vfs_mime_application_launch(app, uris);
+
+ g_free(uri);
+ g_list_free(uris);
g_free(path);
}
}
@@ -642,7 +627,7 @@ emp_standard_menu_factory(EPopup *emp, void *data)
break; }
case EM_POPUP_TARGET_PART: {
EMPopupTargetPart *t = (EMPopupTargetPart *)emp->target;
- GList *apps = gnome_vfs_mime_get_short_list_applications(t->mime_type);
+ GList *apps = gnome_vfs_mime_get_all_applications(t->mime_type);
/* FIXME: use the snoop_part stuff from em-format.c */
if (apps == NULL && strcmp(t->mime_type, "application/octet-stream") == 0) {
@@ -657,7 +642,7 @@ emp_standard_menu_factory(EPopup *emp, void *data)
else
name_type = gnome_vfs_mime_type_from_name(filename);
if (name_type)
- apps = gnome_vfs_mime_get_short_list_applications(name_type);
+ apps = gnome_vfs_mime_get_all_applications(name_type);
}
}