X-Git-Url: https://git.street.me.uk/andy/viking.git/blobdiff_plain/0da89d90b4c50bb129bc1e0dc38f05d553312138..3f31bec4a6927651bc562e8b21aa0c7354328e1b:/src/util.c diff --git a/src/util.c b/src/util.c index 92457b82..7814fc29 100644 --- a/src/util.c +++ b/src/util.c @@ -17,20 +17,26 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ + /* + * Ideally dependencies should just be on Glib, Gtk, + * see vikutils for things that further depend on other Viking types + */ #ifdef HAVE_CONFIG_H #include "config.h" #endif -#ifdef WINDOWS -#include -#endif - +#include #include #include #include "util.h" #include "dialog.h" +#ifdef WINDOWS +#include +#endif + +/* #ifndef WINDOWS static gboolean spawn_command_line_async(const gchar * cmd, const gchar * arg) @@ -48,53 +54,45 @@ static gboolean spawn_command_line_async(const gchar * cmd, return status; } #endif +*/ + +// Annoyingly gtk_show_uri() doesn't work so resort to ShellExecute method +// (non working at least in our Windows build with GTK+2.24.10 on Windows 7) void open_url(GtkWindow *parent, const gchar * url) { #ifdef WINDOWS ShellExecute(NULL, NULL, (char *) url, NULL, ".\\", 0); -#else /* WINDOWS */ - const gchar *browsers[] = { - "xdg-open", "gnome-open", "kfmclient openURL", - "sensible-browser", "firefox", "epiphany", - "iceweasel", "seamonkey", "galeon", "mozilla", - "opera", "konqueror", "netscape", "links -g", - "chromium-browser", "chromium", "chrome", - "safari", "camino", "omniweb", "icab", - NULL - }; - gint i=0; - - const gchar *browser = g_getenv("BROWSER"); - if (browser == NULL || browser[0] == '\0') { - /* $BROWSER not set -> use first entry */ - browser = browsers[i++]; +#else + GError *error = NULL; + gtk_show_uri ( gtk_widget_get_screen (GTK_WIDGET(parent)), url, GDK_CURRENT_TIME, &error ); + if ( error ) { + a_dialog_error_msg_extra ( parent, _("Could not launch web browser. %s"), error->message ); + g_error_free ( error ); } - do { - if (spawn_command_line_async(browser, url)) { - return; - } - - browser = browsers[i++]; - } while(browser); - - a_dialog_error_msg ( parent, _("Could not launch web browser.") ); -#endif /* WINDOWS */ +#endif } void new_email(GtkWindow *parent, const gchar * address) { gchar *uri = g_strdup_printf("mailto:%s", address); + GError *error = NULL; + gtk_show_uri ( gtk_widget_get_screen (GTK_WIDGET(parent)), uri, GDK_CURRENT_TIME, &error ); + if ( error ) { + a_dialog_error_msg_extra ( parent, _("Could not create new email. %s"), error->message ); + g_error_free ( error ); + } + /* #ifdef WINDOWS ShellExecute(NULL, NULL, (char *) uri, NULL, ".\\", 0); -#else /* WINDOWS */ +#else if (!spawn_command_line_async("xdg-email", uri)) a_dialog_error_msg ( parent, _("Could not create new email.") ); -#endif /* WINDOWS */ +#endif + */ g_free(uri); uri = NULL; } - gchar *uri_escape(gchar *str) { gchar *esc_str = g_malloc(3*strlen(str));