pidgin/prefs/pidginproxyprefs.c

changeset 41653
0a37c380d760
parent 41621
29d99e6066b3
child 41657
c68748c1f42e
--- a/pidgin/prefs/pidginproxyprefs.c	Mon Sep 05 23:36:14 2022 -0500
+++ b/pidgin/prefs/pidginproxyprefs.c	Mon Sep 05 23:54:17 2022 -0500
@@ -41,7 +41,7 @@
 	/* Non-GNOME version */
 	GtkWidget *nongnome;
 	GtkWidget *socks4_remotedns;
-	PidginPrefCombo type;
+	GtkWidget *type;
 	GtkWidget *options;
 	GtkWidget *host;
 	GtkWidget *port;
@@ -54,6 +54,30 @@
 /******************************************************************************
  * Helpers
  *****************************************************************************/
+static gchar *
+proxy_type_expression_cb(GObject *self, G_GNUC_UNUSED gpointer data)
+{
+	const gchar *text = "";
+	const gchar *value = NULL;
+
+	value = gtk_string_object_get_string(GTK_STRING_OBJECT(self));
+	if(purple_strequal(value, "none")) {
+		text = _("No proxy");
+	} else if(purple_strequal(value, "socks4")) {
+		text = _("SOCKS 4");
+	} else if(purple_strequal(value, "socks5")) {
+		text = _("SOCKS 5");
+	} else if(purple_strequal(value, "tor")) {
+		text = _("Tor/Privacy (SOCKS 5)");
+	} else if(purple_strequal(value, "http")) {
+		text = _("HTTP");
+	} else if(purple_strequal(value, "envvar")) {
+		text = _("Use Environmental Settings");
+	}
+
+	return g_strdup(text);
+}
+
 static void
 proxy_changed_cb(const gchar *name, PurplePrefType type, gconstpointer value,
                  gpointer data)
@@ -141,7 +165,7 @@
 	gtk_widget_class_bind_template_child(
 			widget_class, PidginProxyPrefs, socks4_remotedns);
 	gtk_widget_class_bind_template_child(
-			widget_class, PidginProxyPrefs, type.combo);
+			widget_class, PidginProxyPrefs, type);
 	gtk_widget_class_bind_template_child(
 			widget_class, PidginProxyPrefs, options);
 	gtk_widget_class_bind_template_child(
@@ -153,6 +177,8 @@
 	gtk_widget_class_bind_template_child(
 			widget_class, PidginProxyPrefs, password);
 	gtk_widget_class_bind_template_callback(widget_class,
+	                                        proxy_type_expression_cb);
+	gtk_widget_class_bind_template_callback(widget_class,
 	                                        proxy_row_activated_cb);
 	gtk_widget_class_bind_template_callback(widget_class,
 			proxy_print_option);
@@ -197,9 +223,8 @@
 		pidgin_prefs_bind_switch("/purple/proxy/socks4_remotedns",
 		                         prefs->socks4_remotedns);
 
-		prefs->type.type = PURPLE_PREF_STRING;
-		prefs->type.key = "/purple/proxy/type";
-		pidgin_prefs_bind_dropdown(&prefs->type);
+		pidgin_prefs_bind_combo_row("/purple/proxy/type", prefs->type);
+
 		proxy_info = purple_global_proxy_get_info();
 
 		purple_prefs_connect_callback(prefs, "/purple/proxy/type",

mercurial