diff --git a/gnome/src/config/hooks-config.c b/gnome/src/config/hooks-config.c index cfbc79e44d4a2d766132089f63c85e2a8370784f..5a8ee8b292fb804d604440a16d06f5885255fa3a 100644 --- a/gnome/src/config/hooks-config.c +++ b/gnome/src/config/hooks-config.c @@ -32,11 +32,12 @@ #include "gtk2_wrappers.h" #include "str_utils.h" #include "hooks-config.h" +#include "eel-gconf-extensions.h" #include "dbus.h" URLHook_Config *_urlhook_config; -GtkWidget *field, *command, *prefix; +GtkWidget *field, *command, *prefix, *url; void hooks_load_parameters(URLHook_Config** settings) { @@ -94,6 +95,8 @@ void hooks_save_parameters(void) // Decrement the reference count g_hash_table_unref(params); + eel_gconf_set_string(MESSAGING_URL_COMMAND, gtk_entry_get_text(GTK_ENTRY(url))); + } static void sip_enabled_cb(GtkWidget *widget) @@ -193,6 +196,21 @@ GtkWidget* create_hooks_settings() gtk_entry_set_text(GTK_ENTRY(prefix), _urlhook_config->phone_number_prefix); gtk_widget_set_sensitive(GTK_WIDGET(prefix), gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widg))); gtk_table_attach(GTK_TABLE(table), prefix, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 10); + + gnome_main_section_new_with_table(_("Messaging"), &frame, &table, 4, 2); + gtk_box_pack_start(GTK_BOX(ret), frame, FALSE, FALSE, 0); + gtk_widget_show(frame); + + label = gtk_label_new_with_mnemonic(_("Open URL in")); + url = gtk_entry_new(); + gchar *url_command = eel_gconf_get_string(MESSAGING_URL_COMMAND); + if (strlen(url_command)) + gtk_entry_set_text(GTK_ENTRY(url),url_command); + else + gtk_entry_set_text(GTK_ENTRY(url), "xdg-open"); + gtk_label_set_mnemonic_widget(GTK_LABEL(label), url); + gtk_table_attach(GTK_TABLE(table), label, 0, 1, 4, 5, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 10); + gtk_table_attach(GTK_TABLE(table), url , 1, 2, 4, 5, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 10); gtk_widget_show_all(ret); diff --git a/gnome/src/eel-gconf-extensions.h b/gnome/src/eel-gconf-extensions.h index 40eab1ccfdbdbc294d00ce3170e64323297fd7b4..43422018d36c128a7cb55f61b4ab91dace10be05 100644 --- a/gnome/src/eel-gconf-extensions.h +++ b/gnome/src/eel-gconf-extensions.h @@ -54,6 +54,7 @@ BEGIN_EXTERN_C #define POPUP_ON_CALL CONF_PREFIX "/state/popup" #define HISTORY_ENABLED CONF_PREFIX "/state/history" #define INSTANT_MESSAGING_ENABLED CONF_PREFIX "/state/instant_messaging" +#define MESSAGING_URL_COMMAND CONF_PREFIX "/hook/url_command" #define EEL_GCONF_UNDEFINED_CONNECTION 0 diff --git a/gnome/src/messaging/Makefile.am b/gnome/src/messaging/Makefile.am index 6ed62c990d8e0510ba7f06dae9319a0e4073ef77..e5f558ba18c9042f1b86ba8caf9a1cda9680ed9a 100644 --- a/gnome/src/messaging/Makefile.am +++ b/gnome/src/messaging/Makefile.am @@ -4,8 +4,8 @@ noinst_LTLIBRARIES = libmessaging.la libmessaging_la_SOURCES = message_tab.c message_tab.h -libmessaging_la_LDFLAGS = +libmessaging_la_LDFLAGS = $(GCONF_LDFLAGS) $(GTK_LDFLAGS) $(GLIB_LDFLAGS) $(DBUSGLIB_LDFLAGS) -libmessaging_la_LIBADD = @GTK_LIBS@ @GLIB_LIBS@ +libmessaging_la_LIBADD = @GTK_LIBS@ @GLIB_LIBS@ $(GCONF_LIBS) $(DBUSGLIB_LIBS) -libmessaging_la_CFLAGS = @GTK_CFLAGS@ @GLIB_CFLAGS@ @DBUSGLIB_CFLAGS@ +libmessaging_la_CFLAGS = @GTK_CFLAGS@ @GLIB_CFLAGS@ @DBUSGLIB_CFLAGS@ $(GCONF_CFLAGS) diff --git a/gnome/src/messaging/message_tab.c b/gnome/src/messaging/message_tab.c index 71884793177651a0759fc65d7554fde76f7b1097..9e1bc98ed937a2361ced5ad2c599dd6f2df6da80 100644 --- a/gnome/src/messaging/message_tab.c +++ b/gnome/src/messaging/message_tab.c @@ -32,6 +32,7 @@ #include "../dbus/dbus.h" #include <glib.h> #include "../mainwindow.h" +#include "eel-gconf-extensions.h" #include <string.h> static GtkWidget *tab_box = NULL ; @@ -195,8 +196,11 @@ on_clicked(GtkTextBuffer *textbuffer UNUSED, GtkTextIter *location UNUSED, GtkTe start_link = NULL; end_link = NULL; if (strlen(text)) { - const gchar* argv[3] = {"x-www-browser",text,(char*)NULL}; - g_spawn_async(NULL,(gchar**)argv,NULL,G_SPAWN_SEARCH_PATH|G_SPAWN_STDOUT_TO_DEV_NULL|G_SPAWN_STDERR_TO_DEV_NULL,NULL,NULL,NULL,NULL); + gchar* url_command = eel_gconf_get_string(MESSAGING_URL_COMMAND); + if (!strlen(url_command)) + url_command = "xdg-open"; + const gchar* argv[3] = {url_command,text,(char*)NULL}; + g_spawn_async(NULL,(gchar**)argv,NULL,G_SPAWN_SEARCH_PATH|G_SPAWN_STDOUT_TO_DEV_NULL|G_SPAWN_STDERR_TO_DEV_NULL,NULL,NULL,NULL,NULL); } } }