pidgin/prefs/pidginproxyprefs.c

Sun, 28 Aug 2022 04:45:49 -0500

author
Elliott Sales de Andrade <quantum.analyst@gmail.com>
date
Sun, 28 Aug 2022 04:45:49 -0500
branch
gtk4
changeset 41612
cb14d982669a
parent 41610
412ebdf7158c
child 41621
29d99e6066b3
permissions
-rw-r--r--

Remove the stack from the proxy prefs

This will make some future work look simpler. It also moves the message for
GNOME systems to the preference group description, instead of inside the group.

Testing Done:
Opened preferences, forced GNOME/non-GNOME mode to see alternate views.

Reviewed at https://reviews.imfreedom.org/r/1669/

41370
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
1 /*
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
2 * Pidgin - Internet Messenger
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
3 * Copyright (C) Pidgin Developers <devel@pidgin.im>
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
4 *
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
5 * Pidgin is the legal property of its developers, whose names are too numerous
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
7 * source distribution.
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
8 *
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
9 * This program is free software; you can redistribute it and/or modify
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
10 * it under the terms of the GNU General Public License as published by
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
12 * (at your option) any later version.
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
13 *
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
14 * This program is distributed in the hope that it will be useful,
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
17 * GNU General Public License for more details.
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
18 *
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
20 * along with this program; if not, see <https://www.gnu.org/licenses/>.
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
21 */
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
22
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
23 #include <glib/gi18n-lib.h>
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
24
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
25 #include <purple.h>
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
26
41550
a1e1d5c248e4 Convert proxy prefs page to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41377
diff changeset
27 #include <adwaita.h>
41370
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
28
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
29 #include "pidginproxyprefs.h"
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
30 #include "pidginprefsinternal.h"
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
31
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
32 struct _PidginProxyPrefs {
41550
a1e1d5c248e4 Convert proxy prefs page to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41377
diff changeset
33 AdwPreferencesPage parent;
41370
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
34
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
35 /* GNOME version */
41612
cb14d982669a Remove the stack from the proxy prefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41610
diff changeset
36 GtkWidget *gnome;
41370
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
37 GtkWidget *gnome_not_found;
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
38 GtkWidget *gnome_program;
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
39 gchar *gnome_program_path;
41612
cb14d982669a Remove the stack from the proxy prefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41610
diff changeset
40
41370
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
41 /* Non-GNOME version */
41612
cb14d982669a Remove the stack from the proxy prefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41610
diff changeset
42 GtkWidget *nongnome;
41370
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
43 GtkWidget *socks4_remotedns;
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
44 PidginPrefCombo type;
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
45 GtkWidget *options;
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
46 GtkWidget *host;
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
47 GtkWidget *port;
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
48 GtkWidget *username;
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
49 GtkWidget *password;
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
50 };
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
51
41550
a1e1d5c248e4 Convert proxy prefs page to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41377
diff changeset
52 G_DEFINE_TYPE(PidginProxyPrefs, pidgin_proxy_prefs, ADW_TYPE_PREFERENCES_PAGE)
41370
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
53
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
54 /******************************************************************************
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
55 * Helpers
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
56 *****************************************************************************/
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
57 static void
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
58 proxy_changed_cb(const gchar *name, PurplePrefType type, gconstpointer value,
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
59 gpointer data)
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
60 {
41377
89e348e53f71 Rename page variable to prefs in proxy prefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41370
diff changeset
61 PidginProxyPrefs *prefs = data;
41370
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
62 const char *proxy = value;
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
63
41610
412ebdf7158c Remove redundant gtk_widget_show
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41550
diff changeset
64 gtk_widget_set_visible(prefs->options,
412ebdf7158c Remove redundant gtk_widget_show
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41550
diff changeset
65 !purple_strequal(proxy, "none") &&
412ebdf7158c Remove redundant gtk_widget_show
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41550
diff changeset
66 !purple_strequal(proxy, "envvar"));
41370
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
67 }
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
68
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
69 static void
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
70 proxy_print_option(GtkWidget *entry, gpointer data)
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
71 {
41377
89e348e53f71 Rename page variable to prefs in proxy prefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41370
diff changeset
72 PidginProxyPrefs *prefs = data;
41370
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
73
41377
89e348e53f71 Rename page variable to prefs in proxy prefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41370
diff changeset
74 if (entry == prefs->host) {
41370
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
75 purple_prefs_set_string("/purple/proxy/host",
41550
a1e1d5c248e4 Convert proxy prefs page to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41377
diff changeset
76 gtk_editable_get_text(GTK_EDITABLE(entry)));
41377
89e348e53f71 Rename page variable to prefs in proxy prefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41370
diff changeset
77 } else if (entry == prefs->port) {
41370
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
78 purple_prefs_set_int("/purple/proxy/port",
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
79 gtk_spin_button_get_value_as_int(
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
80 GTK_SPIN_BUTTON(entry)));
41377
89e348e53f71 Rename page variable to prefs in proxy prefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41370
diff changeset
81 } else if (entry == prefs->username) {
41370
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
82 purple_prefs_set_string("/purple/proxy/username",
41550
a1e1d5c248e4 Convert proxy prefs page to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41377
diff changeset
83 gtk_editable_get_text(GTK_EDITABLE(entry)));
41377
89e348e53f71 Rename page variable to prefs in proxy prefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41370
diff changeset
84 } else if (entry == prefs->password) {
41370
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
85 purple_prefs_set_string("/purple/proxy/password",
41550
a1e1d5c248e4 Convert proxy prefs page to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41377
diff changeset
86 gtk_editable_get_text(GTK_EDITABLE(entry)));
41370
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
87 }
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
88 }
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
89
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
90 static void
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
91 proxy_button_clicked_cb(GtkWidget *button, gpointer data)
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
92 {
41377
89e348e53f71 Rename page variable to prefs in proxy prefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41370
diff changeset
93 PidginProxyPrefs *prefs = data;
41370
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
94 GError *err = NULL;
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
95
41377
89e348e53f71 Rename page variable to prefs in proxy prefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41370
diff changeset
96 if (g_spawn_command_line_async(prefs->gnome_program_path, &err)) {
41370
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
97 return;
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
98 }
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
99
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
100 purple_notify_error(NULL, NULL, _("Cannot start proxy configuration program."), err->message, NULL);
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
101 g_error_free(err);
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
102 }
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
103
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
104 /******************************************************************************
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
105 * GObject Implementation
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
106 *****************************************************************************/
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
107 static void
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
108 pidgin_proxy_prefs_finalize(GObject *obj)
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
109 {
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
110 PidginProxyPrefs *prefs = PIDGIN_PROXY_PREFS(obj);
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
111
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
112 purple_prefs_disconnect_by_handle(obj);
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
113
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
114 g_free(prefs->gnome_program_path);
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
115
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
116 G_OBJECT_CLASS(pidgin_proxy_prefs_parent_class)->finalize(obj);
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
117 }
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
118
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
119 static void
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
120 pidgin_proxy_prefs_class_init(PidginProxyPrefsClass *klass)
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
121 {
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
122 GObjectClass *obj_class = G_OBJECT_CLASS(klass);
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
123 GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
124
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
125 obj_class->finalize = pidgin_proxy_prefs_finalize;
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
126
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
127 gtk_widget_class_set_template_from_resource(
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
128 widget_class,
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
129 "/im/pidgin/Pidgin3/Prefs/proxy.ui"
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
130 );
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
131
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
132 gtk_widget_class_bind_template_child(
41612
cb14d982669a Remove the stack from the proxy prefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41610
diff changeset
133 widget_class, PidginProxyPrefs, gnome);
41370
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
134 gtk_widget_class_bind_template_child(
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
135 widget_class, PidginProxyPrefs, gnome_not_found);
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
136 gtk_widget_class_bind_template_child(
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
137 widget_class, PidginProxyPrefs, gnome_program);
41612
cb14d982669a Remove the stack from the proxy prefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41610
diff changeset
138
cb14d982669a Remove the stack from the proxy prefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41610
diff changeset
139 gtk_widget_class_bind_template_child(
cb14d982669a Remove the stack from the proxy prefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41610
diff changeset
140 widget_class, PidginProxyPrefs, nongnome);
41370
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
141 gtk_widget_class_bind_template_child(
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
142 widget_class, PidginProxyPrefs, socks4_remotedns);
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
143 gtk_widget_class_bind_template_child(
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
144 widget_class, PidginProxyPrefs, type.combo);
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
145 gtk_widget_class_bind_template_child(
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
146 widget_class, PidginProxyPrefs, options);
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
147 gtk_widget_class_bind_template_child(
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
148 widget_class, PidginProxyPrefs, host);
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
149 gtk_widget_class_bind_template_child(
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
150 widget_class, PidginProxyPrefs, port);
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
151 gtk_widget_class_bind_template_child(
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
152 widget_class, PidginProxyPrefs, username);
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
153 gtk_widget_class_bind_template_child(
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
154 widget_class, PidginProxyPrefs, password);
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
155 gtk_widget_class_bind_template_callback(widget_class,
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
156 proxy_button_clicked_cb);
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
157 gtk_widget_class_bind_template_callback(widget_class,
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
158 proxy_print_option);
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
159 }
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
160
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
161 static void
41377
89e348e53f71 Rename page variable to prefs in proxy prefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41370
diff changeset
162 pidgin_proxy_prefs_init(PidginProxyPrefs *prefs)
41370
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
163 {
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
164 PurpleProxyInfo *proxy_info;
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
165
41377
89e348e53f71 Rename page variable to prefs in proxy prefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41370
diff changeset
166 gtk_widget_init_template(GTK_WIDGET(prefs));
41370
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
167
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
168 if(purple_running_gnome()) {
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
169 gchar *path = NULL;
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
170
41612
cb14d982669a Remove the stack from the proxy prefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41610
diff changeset
171 gtk_widget_set_visible(prefs->gnome, TRUE);
cb14d982669a Remove the stack from the proxy prefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41610
diff changeset
172 gtk_widget_set_visible(prefs->nongnome, FALSE);
41370
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
173
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
174 path = g_find_program_in_path("gnome-network-properties");
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
175 if (path == NULL) {
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
176 path = g_find_program_in_path("gnome-network-preferences");
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
177 }
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
178 if (path == NULL) {
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
179 path = g_find_program_in_path("gnome-control-center");
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
180 if (path != NULL) {
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
181 char *tmp = g_strdup_printf("%s network", path);
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
182 g_free(path);
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
183 path = tmp;
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
184 }
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
185 }
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
186
41377
89e348e53f71 Rename page variable to prefs in proxy prefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41370
diff changeset
187 prefs->gnome_program_path = path;
89e348e53f71 Rename page variable to prefs in proxy prefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41370
diff changeset
188 gtk_widget_set_visible(prefs->gnome_not_found, path == NULL);
89e348e53f71 Rename page variable to prefs in proxy prefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41370
diff changeset
189 gtk_widget_set_visible(prefs->gnome_program, path != NULL);
41612
cb14d982669a Remove the stack from the proxy prefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41610
diff changeset
190
41370
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
191 } else {
41612
cb14d982669a Remove the stack from the proxy prefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41610
diff changeset
192 gtk_widget_set_visible(prefs->gnome, FALSE);
cb14d982669a Remove the stack from the proxy prefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41610
diff changeset
193 gtk_widget_set_visible(prefs->nongnome, TRUE);
41370
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
194
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
195 /* This is a global option that affects SOCKS4 usage even with
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
196 * account-specific proxy settings */
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
197 pidgin_prefs_bind_checkbox("/purple/proxy/socks4_remotedns",
41377
89e348e53f71 Rename page variable to prefs in proxy prefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41370
diff changeset
198 prefs->socks4_remotedns);
41370
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
199
41377
89e348e53f71 Rename page variable to prefs in proxy prefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41370
diff changeset
200 prefs->type.type = PURPLE_PREF_STRING;
89e348e53f71 Rename page variable to prefs in proxy prefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41370
diff changeset
201 prefs->type.key = "/purple/proxy/type";
89e348e53f71 Rename page variable to prefs in proxy prefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41370
diff changeset
202 pidgin_prefs_bind_dropdown(&prefs->type);
41370
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
203 proxy_info = purple_global_proxy_get_info();
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
204
41377
89e348e53f71 Rename page variable to prefs in proxy prefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41370
diff changeset
205 purple_prefs_connect_callback(prefs, "/purple/proxy/type",
89e348e53f71 Rename page variable to prefs in proxy prefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41370
diff changeset
206 proxy_changed_cb, prefs);
41370
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
207
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
208 if (proxy_info != NULL) {
41550
a1e1d5c248e4 Convert proxy prefs page to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41377
diff changeset
209 const gchar *value = NULL;
a1e1d5c248e4 Convert proxy prefs page to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41377
diff changeset
210
a1e1d5c248e4 Convert proxy prefs page to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41377
diff changeset
211 value = purple_proxy_info_get_hostname(proxy_info);
a1e1d5c248e4 Convert proxy prefs page to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41377
diff changeset
212 if(value != NULL) {
a1e1d5c248e4 Convert proxy prefs page to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41377
diff changeset
213 gtk_editable_set_text(GTK_EDITABLE(prefs->host), value);
41370
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
214 }
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
215
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
216 if (purple_proxy_info_get_port(proxy_info) != 0) {
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
217 gtk_spin_button_set_value(
41377
89e348e53f71 Rename page variable to prefs in proxy prefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41370
diff changeset
218 GTK_SPIN_BUTTON(prefs->port),
41370
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
219 purple_proxy_info_get_port(proxy_info));
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
220 }
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
221
41550
a1e1d5c248e4 Convert proxy prefs page to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41377
diff changeset
222 value = purple_proxy_info_get_username(proxy_info);
a1e1d5c248e4 Convert proxy prefs page to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41377
diff changeset
223 if(value != NULL) {
a1e1d5c248e4 Convert proxy prefs page to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41377
diff changeset
224 gtk_editable_set_text(GTK_EDITABLE(prefs->username), value);
41370
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
225 }
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
226
41550
a1e1d5c248e4 Convert proxy prefs page to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41377
diff changeset
227 value = purple_proxy_info_get_password(proxy_info);
a1e1d5c248e4 Convert proxy prefs page to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41377
diff changeset
228 if(value != NULL) {
a1e1d5c248e4 Convert proxy prefs page to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41377
diff changeset
229 gtk_editable_set_text(GTK_EDITABLE(prefs->password), value);
41370
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
230 }
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
231 }
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
232
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
233 proxy_changed_cb("/purple/proxy/type", PURPLE_PREF_STRING,
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
234 purple_prefs_get_string("/purple/proxy/type"),
41377
89e348e53f71 Rename page variable to prefs in proxy prefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41370
diff changeset
235 prefs);
41370
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
236 }
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
237 }
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
238
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
239 /******************************************************************************
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
240 * API
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
241 *****************************************************************************/
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
242 GtkWidget *
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
243 pidgin_proxy_prefs_new(void) {
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
244 return GTK_WIDGET(g_object_new(PIDGIN_TYPE_PROXY_PREFS, NULL));
0ae2dfa4a5cf Split proxy prefs page into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
245 }

mercurial