Mercurial > pidgin.yaz
diff pidgin/gtkprefs.c @ 26132:ae3d25465d0f
Run an asynchronous DNS lookup for the STUN server IP (to set as a property
to the nice transmitter for media).
Also update the IP when the preference changes and when NetworkManager support
is present, when NM reports connected.
TODO: add code to run DNS lookup on Win32 when the network connection is ready
author | Marcus Lundblad <ml@update.uu.se> |
---|---|
date | Sat, 17 Jan 2009 01:38:44 +0000 |
parents | ade5b2c51047 |
children | c56e8826fed0 |
line wrap: on
line diff
--- a/pidgin/gtkprefs.c Wed Jan 14 09:32:48 2009 +0000 +++ b/pidgin/gtkprefs.c Sat Jan 17 01:38:44 2009 +0000 @@ -1142,6 +1142,17 @@ purple_network_set_public_ip(gtk_entry_get_text(entry)); } +static gboolean network_stun_server_changed_cb(GtkWidget *widget, + GdkEventFocus *event, gpointer data) +{ + GtkEntry *entry = GTK_ENTRY(widget); + purple_prefs_set_string("/purple/network/stun_server", + gtk_entry_get_text(entry)); + purple_network_set_stun_server(gtk_entry_get_text(entry)); + + return FALSE; +} + static void proxy_changed_cb(const char *name, PurplePrefType type, gconstpointer value, gpointer data) @@ -1206,10 +1217,27 @@ gtk_container_set_border_width (GTK_CONTAINER (ret), PIDGIN_HIG_BORDER); vbox = pidgin_make_frame (ret, _("IP Address")); + + table = gtk_table_new(2, 2, FALSE); + gtk_container_set_border_width(GTK_CONTAINER(table), 0); + gtk_table_set_col_spacings(GTK_TABLE(table), 5); + gtk_table_set_row_spacings(GTK_TABLE(table), 10); + gtk_container_add(GTK_CONTAINER(vbox), table); + sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); - pidgin_prefs_labeled_entry(vbox,_("ST_UN server:"), - "/purple/network/stun_server", sg); - + label = gtk_label_new_with_mnemonic(_("ST_UN server:")); + gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); + gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1, GTK_FILL, 0, 0, 0); + gtk_size_group_add_widget(sg, label); + + entry = gtk_entry_new(); + gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); + gtk_table_attach(GTK_TABLE(table), entry, 1, 2, 0, 1, GTK_FILL, 0, 0, 0); + g_signal_connect(G_OBJECT(entry), "focus-out-event", + G_CALLBACK(network_stun_server_changed_cb), NULL); + gtk_entry_set_text(GTK_ENTRY(entry), + purple_prefs_get_string("/purple/network/stun_server")); + hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE); gtk_container_add(GTK_CONTAINER(vbox), hbox);