diff options
author | Sjoerd Simons <sjoerd.simons@collabora.co.uk> | 2009-08-22 00:37:48 +0800 |
---|---|---|
committer | Sjoerd Simons <sjoerd.simons@collabora.co.uk> | 2009-08-22 00:37:48 +0800 |
commit | 84e30dab1428affe335ef904377d07f8b5fdeb66 (patch) | |
tree | fee9c8ec124a2b5804f6bb4ee31772db56a6e374 /libempathy-gtk | |
parent | fd8e9c5dc2584055177c7a79021cdd53ca431c22 (diff) | |
parent | 3803736b4326d4bc00d58ccd25f910907f0b4521 (diff) | |
download | gsoc2013-empathy-84e30dab1428affe335ef904377d07f8b5fdeb66.tar gsoc2013-empathy-84e30dab1428affe335ef904377d07f8b5fdeb66.tar.gz gsoc2013-empathy-84e30dab1428affe335ef904377d07f8b5fdeb66.tar.bz2 gsoc2013-empathy-84e30dab1428affe335ef904377d07f8b5fdeb66.tar.lz gsoc2013-empathy-84e30dab1428affe335ef904377d07f8b5fdeb66.tar.xz gsoc2013-empathy-84e30dab1428affe335ef904377d07f8b5fdeb66.tar.zst gsoc2013-empathy-84e30dab1428affe335ef904377d07f8b5fdeb66.zip |
Merge back from master
Diffstat (limited to 'libempathy-gtk')
-rw-r--r-- | libempathy-gtk/empathy-audio-sink.c | 10 | ||||
-rw-r--r-- | libempathy-gtk/empathy-audio-src.c | 12 | ||||
-rw-r--r-- | libempathy-gtk/empathy-chat.c | 25 | ||||
-rw-r--r-- | libempathy-gtk/empathy-conf.h | 2 | ||||
-rw-r--r-- | libempathy-gtk/empathy-contact-list-view.c | 8 | ||||
-rw-r--r-- | libempathy-gtk/empathy-contact-list-view.h | 1 | ||||
-rw-r--r-- | libempathy-gtk/empathy-contact-widget.c | 4 | ||||
-rw-r--r-- | libempathy-gtk/empathy-location-manager.c | 48 | ||||
-rw-r--r-- | libempathy-gtk/empathy-presence-chooser.c | 27 | ||||
-rw-r--r-- | libempathy-gtk/empathy-share-my-desktop.c | 2 | ||||
-rw-r--r-- | libempathy-gtk/empathy-status-preset-dialog.ui | 4 | ||||
-rw-r--r-- | libempathy-gtk/empathy-theme-adium.c | 60 | ||||
-rw-r--r-- | libempathy-gtk/empathy-ui-utils.c | 23 | ||||
-rw-r--r-- | libempathy-gtk/empathy-ui-utils.h | 2 |
14 files changed, 156 insertions, 72 deletions
diff --git a/libempathy-gtk/empathy-audio-sink.c b/libempathy-gtk/empathy-audio-sink.c index 55f64e828..1d2169593 100644 --- a/libempathy-gtk/empathy-audio-sink.c +++ b/libempathy-gtk/empathy-audio-sink.c @@ -204,7 +204,15 @@ empathy_audio_sink_finalize (GObject *object) GstElement * empathy_audio_sink_new (void) { - return GST_ELEMENT (g_object_new (EMPATHY_TYPE_GST_AUDIO_SINK, NULL)); + static gboolean registered = FALSE; + + if (!registered) { + if (!gst_element_register (NULL, "empathyaudiosink", + GST_RANK_NONE, EMPATHY_TYPE_GST_AUDIO_SINK)) + return NULL; + registered = TRUE; + } + return gst_element_factory_make ("empathyaudiosink", NULL); } void diff --git a/libempathy-gtk/empathy-audio-src.c b/libempathy-gtk/empathy-audio-src.c index 0497439bf..a3416f2ea 100644 --- a/libempathy-gtk/empathy-audio-src.c +++ b/libempathy-gtk/empathy-audio-src.c @@ -343,7 +343,15 @@ out: GstElement * empathy_audio_src_new (void) { - return GST_ELEMENT (g_object_new (EMPATHY_TYPE_GST_AUDIO_SRC, NULL)); + static gboolean registered = FALSE; + + if (!registered) { + if (!gst_element_register (NULL, "empathyaudiosrc", + GST_RANK_NONE, EMPATHY_TYPE_GST_AUDIO_SRC)) + return NULL; + registered = TRUE; + } + return gst_element_factory_make ("empathyaudiosrc", NULL); } void @@ -375,3 +383,5 @@ empathy_audio_src_get_volume (EmpathyGstAudioSrc *src) return volume; } + + diff --git a/libempathy-gtk/empathy-chat.c b/libempathy-gtk/empathy-chat.c index d52d7af93..9096beeae 100644 --- a/libempathy-gtk/empathy-chat.c +++ b/libempathy-gtk/empathy-chat.c @@ -401,9 +401,18 @@ chat_send (EmpathyChat *chat, if (msg[0] == '/' && !g_str_has_prefix (msg, "/me") && !g_str_has_prefix (msg, "/say")) { - empathy_chat_view_append_event (chat->view, - _("Unsupported command")); - return; + /* Also allow messages with two slashes before the first space, + * so it is possible to send an /unix/path */ + int slash_count = 0, i; + for (i = 0; msg[i] && msg[i] != ' ' && slash_count < 2; i++) { + if (msg[i] == '/') + slash_count++; + } + if (slash_count == 1) { + empathy_chat_view_append_event (chat->view, + _("Unsupported command")); + return; + } } /* We can send the message */ @@ -1183,7 +1192,10 @@ build_part_message (guint reason, break; case TP_CHANNEL_GROUP_CHANGE_REASON_KICKED: if (actor_name != NULL) { - g_string_append_printf (s, _("%s was kicked by %s"), + /* translators: reverse the order of these arguments + * if the kicked should come before the kicker in your locale. + */ + g_string_append_printf (s, _("%1$s was kicked by %2$s"), name, actor_name); } else { g_string_append_printf (s, _("%s was kicked"), name); @@ -1191,7 +1203,10 @@ build_part_message (guint reason, break; case TP_CHANNEL_GROUP_CHANGE_REASON_BANNED: if (actor_name != NULL) { - g_string_append_printf (s, _("%s was banned by %s"), + /* translators: reverse the order of these arguments + * if the banned should come before the banner in your locale. + */ + g_string_append_printf (s, _("%1$s was banned by %2$s"), name, actor_name); } else { g_string_append_printf (s, _("%s was banned"), name); diff --git a/libempathy-gtk/empathy-conf.h b/libempathy-gtk/empathy-conf.h index 2383a7edf..d8e34f6b9 100644 --- a/libempathy-gtk/empathy-conf.h +++ b/libempathy-gtk/empathy-conf.h @@ -78,7 +78,7 @@ struct _EmpathyConfClass { #define EMPATHY_PREFS_CONTACTS_SORT_CRITERIUM EMPATHY_PREFS_PATH "/contacts/sort_criterium" #define EMPATHY_PREFS_HINTS_CLOSE_MAIN_WINDOW EMPATHY_PREFS_PATH "/hints/close_main_window" #define EMPATHY_PREFS_SALUT_ACCOUNT_CREATED EMPATHY_PREFS_PATH "/accounts/salut_created" -#define EMPATHY_PREFS_USE_NM EMPATHY_PREFS_PATH "/use_nm" +#define EMPATHY_PREFS_USE_CONN EMPATHY_PREFS_PATH "/use_conn" #define EMPATHY_PREFS_AUTOCONNECT EMPATHY_PREFS_PATH "/autoconnect" #define EMPATHY_PREFS_IMPORT_ASKED EMPATHY_PREFS_PATH "/import_asked" #define EMPATHY_PREFS_FILE_TRANSFER_DEFAULT_FOLDER EMPATHY_PREFS_PATH "/file_transfer/default_folder" diff --git a/libempathy-gtk/empathy-contact-list-view.c b/libempathy-gtk/empathy-contact-list-view.c index 2ff27b130..dcbbb18bf 100644 --- a/libempathy-gtk/empathy-contact-list-view.c +++ b/libempathy-gtk/empathy-contact-list-view.c @@ -364,6 +364,7 @@ contact_list_view_drag_motion (GtkWidget *widget, gboolean is_row; gboolean is_different = FALSE; gboolean cleanup = TRUE; + int action = 0; is_row = gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (widget), x, @@ -382,6 +383,13 @@ contact_list_view_drag_motion (GtkWidget *widget, cleanup &= FALSE; } + if (context->actions == GDK_ACTION_COPY) { + action = context->suggested_action; + } else if (context->actions & GDK_ACTION_MOVE) { + action = GDK_ACTION_MOVE; + } + gdk_drag_status (context, action, time); + if (!is_different && !cleanup) { return TRUE; } diff --git a/libempathy-gtk/empathy-contact-list-view.h b/libempathy-gtk/empathy-contact-list-view.h index 6666cfbb7..17de5239b 100644 --- a/libempathy-gtk/empathy-contact-list-view.h +++ b/libempathy-gtk/empathy-contact-list-view.h @@ -29,6 +29,7 @@ #include <gtk/gtk.h> #include <libempathy/empathy-contact.h> +#include <libempathy/empathy-enum-types.h> #include "empathy-contact-list-store.h" #include "empathy-contact-menu.h" diff --git a/libempathy-gtk/empathy-contact-widget.c b/libempathy-gtk/empathy-contact-widget.c index 5b2e2de91..d6f806360 100644 --- a/libempathy-gtk/empathy-contact-widget.c +++ b/libempathy-gtk/empathy-contact-widget.c @@ -600,6 +600,10 @@ contact_widget_contact_setup (EmpathyContactWidget *information) PANGO_WRAP_WORD_CHAR); gtk_label_set_line_wrap (GTK_LABEL (information->label_status), TRUE); + + if (!(information->flags & EMPATHY_CONTACT_WIDGET_FOR_TOOLTIP)) + gtk_label_set_selectable (GTK_LABEL (information->label_status), TRUE); + gtk_box_pack_start (GTK_BOX (information->hbox_presence), information->label_status, TRUE, TRUE, 0); gtk_widget_show (information->label_status); diff --git a/libempathy-gtk/empathy-location-manager.c b/libempathy-gtk/empathy-location-manager.c index 278af72f2..2018b5c5a 100644 --- a/libempathy-gtk/empathy-location-manager.c +++ b/libempathy-gtk/empathy-location-manager.c @@ -21,6 +21,10 @@ #include "config.h" +/* Needed for trunc */ +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#include <math.h> #include <string.h> #include <time.h> @@ -63,7 +67,6 @@ typedef struct { GeoclueAddress *gc_address; gboolean reduce_accuracy; - gdouble reduce_value; EmpathyAccountManager *account_manager; /* The idle id for publish_on_idle func */ @@ -194,13 +197,13 @@ publish_location (EmpathyLocationManager *location_manager, if (!conn) return; - if (force_publication == FALSE) + if (!force_publication) { if (!empathy_conf_get_bool (conf, EMPATHY_PREFS_LOCATION_PUBLISH, &can_publish)) return; - if (can_publish == FALSE) + if (!can_publish) return; } @@ -312,7 +315,8 @@ address_changed_cb (GeoclueAddress *address, { GValue *new_value; /* Discard street information if reduced accuracy is on */ - if (priv->reduce_accuracy && strcmp (key, EMPATHY_LOCATION_STREET) == 0) + if (priv->reduce_accuracy && + !tp_strdiff (key, EMPATHY_LOCATION_STREET)) continue; new_value = tp_g_value_slice_new_string (value); @@ -368,7 +372,11 @@ position_changed_cb (GeocluePosition *position, if (fields & GEOCLUE_POSITION_FIELDS_LONGITUDE) { - longitude += priv->reduce_value; + + if (priv->reduce_accuracy) + /* Truncate at 1 decimal place */ + longitude = trunc (longitude * 10.0) / 10.0; + new_value = tp_g_value_slice_new_double (longitude); g_hash_table_insert (priv->location, g_strdup (EMPATHY_LOCATION_LON), new_value); @@ -381,7 +389,10 @@ position_changed_cb (GeocluePosition *position, if (fields & GEOCLUE_POSITION_FIELDS_LATITUDE) { - latitude += priv->reduce_value; + if (priv->reduce_accuracy) + /* Truncate at 1 decimal place */ + latitude = trunc (latitude * 10.0) / 10.0; + new_value = tp_g_value_slice_new_double (latitude); g_hash_table_replace (priv->location, g_strdup (EMPATHY_LOCATION_LAT), new_value); @@ -535,15 +546,15 @@ publish_cb (EmpathyConf *conf, DEBUG ("Publish Conf changed"); - if (empathy_conf_get_bool (conf, key, &can_publish) == FALSE) + if (!empathy_conf_get_bool (conf, key, &can_publish)) return; - if (can_publish == TRUE) + if (can_publish) { - if (priv->geoclue_is_setup == FALSE) + if (!priv->geoclue_is_setup) setup_geoclue (manager); /* if still not setup than the init failed */ - if (priv->geoclue_is_setup == FALSE) + if (!priv->geoclue_is_setup) return; geoclue_address_get_address_async (priv->gc_address, @@ -577,11 +588,11 @@ resource_cb (EmpathyConf *conf, if (!empathy_conf_get_bool (conf, key, &resource_enabled)) return; - if (strcmp (key, EMPATHY_PREFS_LOCATION_RESOURCE_NETWORK) == 0) + if (!tp_strdiff (key, EMPATHY_PREFS_LOCATION_RESOURCE_NETWORK)) resource = GEOCLUE_RESOURCE_NETWORK; - if (strcmp (key, EMPATHY_PREFS_LOCATION_RESOURCE_CELL) == 0) + if (!tp_strdiff (key, EMPATHY_PREFS_LOCATION_RESOURCE_CELL)) resource = GEOCLUE_RESOURCE_CELL; - if (strcmp (key, EMPATHY_PREFS_LOCATION_RESOURCE_GPS) == 0) + if (!tp_strdiff (key, EMPATHY_PREFS_LOCATION_RESOURCE_GPS)) resource = GEOCLUE_RESOURCE_GPS; if (resource_enabled) @@ -609,17 +620,6 @@ accuracy_cb (EmpathyConf *conf, return; priv->reduce_accuracy = enabled; - if (enabled) - { - GRand *rand = g_rand_new_with_seed (time (NULL)); - priv->reduce_value = g_rand_double_range (rand, -0.25, 0.25); - g_rand_free (rand); - } - else - { - priv->reduce_value = 0.0; - } - if (!priv->geoclue_is_setup) return; diff --git a/libempathy-gtk/empathy-presence-chooser.c b/libempathy-gtk/empathy-presence-chooser.c index 69b031c05..ba36e091c 100644 --- a/libempathy-gtk/empathy-presence-chooser.c +++ b/libempathy-gtk/empathy-presence-chooser.c @@ -35,6 +35,7 @@ #include <telepathy-glib/util.h> +#include <libempathy/empathy-connectivity.h> #include <libempathy/empathy-idle.h> #include <libempathy/empathy-utils.h> #include <libempathy/empathy-status-presets.h> @@ -98,6 +99,9 @@ typedef enum { typedef struct { EmpathyIdle *idle; + EmpathyConnectivity *connectivity; + + gulong state_change_signal_id; gboolean editing_status; int block_set_editing; @@ -710,6 +714,14 @@ presence_chooser_entry_focus_out_cb (EmpathyPresenceChooser *chooser, } static void +presence_chooser_connectivity_state_change (EmpathyConnectivity *connectivity, + gboolean new_online, + EmpathyPresenceChooser *chooser) +{ + gtk_widget_set_sensitive (GTK_WIDGET (chooser), new_online); +} + +static void empathy_presence_chooser_init (EmpathyPresenceChooser *chooser) { EmpathyPresenceChooserPriv *priv = G_TYPE_INSTANCE_GET_PRIVATE (chooser, @@ -780,6 +792,14 @@ empathy_presence_chooser_init (EmpathyPresenceChooser *chooser) /* FIXME: this string sucks */ gtk_widget_set_tooltip_text (GTK_WIDGET (chooser), _("Set your presence and current status")); + + priv->connectivity = empathy_connectivity_dup_singleton (); + priv->state_change_signal_id = g_signal_connect (priv->connectivity, + "state-change", + G_CALLBACK (presence_chooser_connectivity_state_change), + chooser); + presence_chooser_connectivity_state_change (priv->connectivity, + empathy_connectivity_is_online (priv->connectivity), chooser); } static void @@ -802,6 +822,12 @@ presence_chooser_finalize (GObject *object) object); g_object_unref (priv->idle); + g_signal_handler_disconnect (priv->connectivity, + priv->state_change_signal_id); + priv->state_change_signal_id = 0; + + g_object_unref (priv->connectivity); + G_OBJECT_CLASS (empathy_presence_chooser_parent_class)->finalize (object); } @@ -1049,6 +1075,7 @@ presence_chooser_menu_add_item (GtkWidget *menu, gtk_widget_show (image); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image); + gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (item), TRUE); gtk_widget_show (item); g_object_set_data_full (G_OBJECT (item), diff --git a/libempathy-gtk/empathy-share-my-desktop.c b/libempathy-gtk/empathy-share-my-desktop.c index 4c60e435f..01c2e183f 100644 --- a/libempathy-gtk/empathy-share-my-desktop.c +++ b/libempathy-gtk/empathy-share-my-desktop.c @@ -212,7 +212,7 @@ empathy_share_my_desktop_connection_ready (TpConnection *connection, g_hash_table_insert (request, TP_IFACE_CHANNEL ".TargetHandle", value); /* org.freedesktop.Telepathy.Channel.Type.StreamTube.Service */ - value = tp_g_value_slice_new_static_string ("x_vnc"); + value = tp_g_value_slice_new_static_string ("rfb"); g_hash_table_insert (request, TP_IFACE_CHANNEL_TYPE_STREAM_TUBE ".Service", value); diff --git a/libempathy-gtk/empathy-status-preset-dialog.ui b/libempathy-gtk/empathy-status-preset-dialog.ui index ead8ab85d..3e76eb6aa 100644 --- a/libempathy-gtk/empathy-status-preset-dialog.ui +++ b/libempathy-gtk/empathy-status-preset-dialog.ui @@ -46,7 +46,7 @@ <property name="layout_style">end</property> <child> <object class="GtkButton" id="remove-button"> - <property name="label" translatable="yes">gtk-remove</property> + <property name="label">gtk-remove</property> <property name="visible">True</property> <property name="sensitive">False</property> <property name="can_focus">True</property> @@ -95,7 +95,7 @@ </child> <child> <object class="GtkButton" id="add-button"> - <property name="label" translatable="yes">gtk-add</property> + <property name="label">gtk-add</property> <property name="visible">True</property> <property name="sensitive">False</property> <property name="can_focus">True</property> diff --git a/libempathy-gtk/empathy-theme-adium.c b/libempathy-gtk/empathy-theme-adium.c index 2889aa304..e1094f1be 100644 --- a/libempathy-gtk/empathy-theme-adium.c +++ b/libempathy-gtk/empathy-theme-adium.c @@ -298,33 +298,6 @@ theme_adium_parse_body (EmpathyThemeAdium *theme, EMPATHY_PREFS_CHAT_SHOW_SMILEYS, &use_smileys); - if (use_smileys) { - /* Replace smileys by a <img/> tag */ - string = g_string_sized_new (strlen (text)); - smileys = empathy_smiley_manager_parse (priv->smiley_manager, text); - for (l = smileys; l; l = l->next) { - EmpathySmiley *smiley; - - smiley = l->data; - if (smiley->path) { - g_string_append_printf (string, - "<abbr title='%s'><img src=\"%s\"/ alt=\"%s\"/></abbr>", - smiley->str, smiley->path, smiley->str); - } else { - gchar *str; - - str = g_markup_escape_text (smiley->str, -1); - g_string_append (string, str); - g_free (str); - } - empathy_smiley_free (smiley); - } - g_slist_free (smileys); - - g_free (ret); - text = ret = g_string_free (string, FALSE); - } - /* Add <a href></a> arround links */ uri_regex = empathy_uri_regex_dup_singleton (); match = g_regex_match (uri_regex, text, 0, &match_info); @@ -334,6 +307,8 @@ theme_adium_parse_body (EmpathyThemeAdium *theme, string = g_string_sized_new (strlen (text)); do { + gchar *real_url; + g_match_info_fetch_pos (match_info, 0, &s, &e); if (s > last) { @@ -343,12 +318,15 @@ theme_adium_parse_body (EmpathyThemeAdium *theme, } /* Append the link inside <a href=""></a> tag */ + real_url = empathy_make_absolute_url (text + s); + g_string_append (string, "<a href=\""); - g_string_append_len (string, text + s, e - s); + g_string_append (string, real_url); g_string_append (string, "\">"); g_string_append_len (string, text + s, e - s); g_string_append (string, "</a>"); + g_free (real_url); last = e; } while (g_match_info_next (match_info, NULL)); @@ -359,7 +337,33 @@ theme_adium_parse_body (EmpathyThemeAdium *theme, g_free (ret); text = ret = g_string_free (string, FALSE); + } else if (use_smileys) { + /* Replace smileys by a <img/> tag */ + string = g_string_sized_new (strlen (text)); + smileys = empathy_smiley_manager_parse (priv->smiley_manager, text); + for (l = smileys; l; l = l->next) { + EmpathySmiley *smiley; + + smiley = l->data; + if (smiley->path) { + g_string_append_printf (string, + "<abbr title='%s'><img src=\"%s\"/ alt=\"%s\"/></abbr>", + smiley->str, smiley->path, smiley->str); + } else { + gchar *str; + + str = g_markup_escape_text (smiley->str, -1); + g_string_append (string, str); + g_free (str); + } + empathy_smiley_free (smiley); + } + g_slist_free (smileys); + + g_free (ret); + text = ret = g_string_free (string, FALSE); } + g_match_info_free (match_info); g_regex_unref (uri_regex); diff --git a/libempathy-gtk/empathy-ui-utils.c b/libempathy-gtk/empathy-ui-utils.c index 3dcefdcfb..c12cbd1c9 100644 --- a/libempathy-gtk/empathy-ui-utils.c +++ b/libempathy-gtk/empathy-ui-utils.c @@ -1321,20 +1321,26 @@ empathy_get_toplevel_window (GtkWidget *widget) return NULL; } -/* The URL opening code can't handle schemeless strings, so we try to be +/** empathy_make_absolute_url: + * @url: an url + * + * The URL opening code can't handle schemeless strings, so we try to be * smart and add http if there is no scheme or doesn't look like a mail * address. This should work in most cases, and let us click on strings * like "www.gnome.org". + * + * Returns: a newly allocated url with proper mailto: or http:// prefix, use + * g_free when your are done with it */ -static gchar * -fixup_url (const gchar *url) +gchar * +empathy_make_absolute_url (const gchar *url) { g_return_val_if_fail (url != NULL, NULL); if (g_str_has_prefix (url, "ghelp:") || g_str_has_prefix (url, "mailto:") || strstr (url, ":/")) { - return NULL; + return g_strdup (url); } if (strstr (url, "@")) { @@ -1354,12 +1360,9 @@ empathy_url_show (GtkWidget *parent, g_return_if_fail (parent == NULL || GTK_IS_WIDGET (parent)); g_return_if_fail (url != NULL); - real_url = fixup_url (url); - if (real_url) { - url = real_url; - } + real_url = empathy_make_absolute_url (url); - gtk_show_uri (parent ? gtk_widget_get_screen (parent) : NULL, url, + gtk_show_uri (parent ? gtk_widget_get_screen (parent) : NULL, real_url, gtk_get_current_event_time (), &error); if (error) { @@ -1476,6 +1479,8 @@ empathy_send_file_with_file_chooser (EmpathyContact *contact) gtk_dialog_set_default_response (GTK_DIALOG (widget), GTK_RESPONSE_OK); + gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (widget), FALSE); + g_signal_connect (widget, "response", G_CALLBACK (file_manager_send_file_response_cb), contact); diff --git a/libempathy-gtk/empathy-ui-utils.h b/libempathy-gtk/empathy-ui-utils.h index 312835f0c..afb409af4 100644 --- a/libempathy-gtk/empathy-ui-utils.h +++ b/libempathy-gtk/empathy-ui-utils.h @@ -109,6 +109,8 @@ GtkWidget * empathy_link_button_new (const gchar *url, void empathy_send_file_with_file_chooser (EmpathyContact *contact); void empathy_receive_file_with_file_chooser (EmpathyFTHandler *handler); +gchar * empathy_make_absolute_url (const gchar *url); + G_END_DECLS #endif /* __EMPATHY_UI_UTILS_H__ */ |