Mercurial > pidgin
annotate src/gtkprefs.c @ 11986:bfbb1798535e
[gaim-migrate @ 14279]
Switch to using the unicode character 0x25cf instead of an asterisk as
our password masking character.
In the words of the great Christian Hammond, "By the way, isn't it
about time we replace the asterisk in masked entries with that unicode
character for the round filled circle ("?")? The asterisk is so 1980s."
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Sat, 05 Nov 2005 23:42:35 +0000 |
parents | 41d84ac57cb6 |
children | 29dc8fc0dd6c |
rev | line source |
---|---|
6928
6ed0a1c045b4
[gaim-migrate @ 7475]
Christian Hammond <chipx86@chipx86.com>
parents:
6861
diff
changeset
|
1 /** |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
2 * @file gtkprefs.c GTK+ Preferences |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
3 * @ingroup gtkui |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
4 * |
5440 | 5 * gaim |
6 * | |
8046 | 7 * Gaim is the legal property of its developers, whose names are too numerous |
8 * to list here. Please refer to the COPYRIGHT file distributed with this | |
9 * source distribution. | |
5440 | 10 * |
11 * This program is free software; you can redistribute it and/or modify | |
12 * it under the terms of the GNU General Public License as published by | |
13 * the Free Software Foundation; either version 2 of the License, or | |
14 * (at your option) any later version. | |
15 * | |
16 * This program is distributed in the hope that it will be useful, | |
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 * GNU General Public License for more details. | |
20 * | |
21 * You should have received a copy of the GNU General Public License | |
22 * along with this program; if not, write to the Free Software | |
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
24 * | |
25 */ | |
9791 | 26 #include "internal.h" |
27 #include "gtkgaim.h" | |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
28 |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
29 #include "debug.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
30 #include "notify.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
31 #include "prefs.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
32 #include "proxy.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
33 #include "prpl.h" |
9508 | 34 #include "request.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
35 #include "sound.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
36 #include "util.h" |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
37 #include "network.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
38 |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
39 #include "gtkblist.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
40 #include "gtkconv.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
41 #include "gtkdebug.h" |
9709 | 42 #include "gtkdialogs.h" |
5440 | 43 #include "gtkimhtml.h" |
8833 | 44 #include "gtkimhtmltoolbar.h" |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
45 #include "gtkprefs.h" |
5684 | 46 #include "gtksound.h" |
11525 | 47 #include "gtkthemes.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
48 #include "gtkutils.h" |
10297
ec140184437b
[gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
10272
diff
changeset
|
49 #include "gtkstock.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
50 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
51 #define PROXYHOST 0 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
52 #define PROXYPORT 1 |
6005 | 53 #define PROXYUSER 2 |
54 #define PROXYPASS 3 | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
55 |
5440 | 56 static int sound_row_sel = 0; |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
57 static GtkWidget *prefsnotebook; |
5440 | 58 |
59 static GtkWidget *sound_entry = NULL; | |
60 static GtkListStore *smiley_theme_store = NULL; | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
61 static GtkWidget *prefs_proxy_frame = NULL; |
5440 | 62 |
63 static GtkWidget *prefs = NULL; | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
64 static GtkWidget *debugbutton = NULL; |
5440 | 65 static int notebook_page = 0; |
11557
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
66 static GtkTreeRowReference *previous_smiley_row = NULL; |
5440 | 67 |
68 /* | |
69 * PROTOTYPES | |
70 */ | |
10759 | 71 static int prefs_notebook_add_page(const char*, GdkPixbuf*, |
72 GtkWidget*, GtkTreeIter*, | |
73 GtkTreeIter*, int); | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
74 static void delete_prefs(GtkWidget *, void *); |
5440 | 75 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
76 static void |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
77 update_spin_value(GtkWidget *w, GtkWidget *spin) |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
78 { |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
79 const char *key = g_object_get_data(G_OBJECT(spin), "val"); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
80 int value; |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
81 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
82 value = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spin)); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
83 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
84 gaim_prefs_set_int(key, value); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
85 } |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
86 |
7976 | 87 GtkWidget * |
7987 | 88 gaim_gtk_prefs_labeled_spin_button(GtkWidget *box, const gchar *title, |
10367
5fe89d2df440
[gaim-migrate @ 11586]
Luke Schierer <lschiere@pidgin.im>
parents:
10364
diff
changeset
|
89 const char *key, int min, int max, GtkSizeGroup *sg) |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
90 { |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
91 GtkWidget *hbox; |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
92 GtkWidget *label; |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
93 GtkWidget *spin; |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
94 GtkObject *adjust; |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
95 int val; |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
96 |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
97 val = gaim_prefs_get_int(key); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
98 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
99 hbox = gtk_hbox_new(FALSE, 5); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
100 gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 5); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
101 gtk_widget_show(hbox); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
102 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
103 label = gtk_label_new_with_mnemonic(title); |
8713 | 104 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
105 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
106 gtk_widget_show(label); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
107 |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
108 adjust = gtk_adjustment_new(val, min, max, 1, 1, 1); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
109 spin = gtk_spin_button_new(GTK_ADJUSTMENT(adjust), 1, 0); |
10367
5fe89d2df440
[gaim-migrate @ 11586]
Luke Schierer <lschiere@pidgin.im>
parents:
10364
diff
changeset
|
110 g_object_set_data(G_OBJECT(spin), "val", (char *)key); |
8467 | 111 if (max < 10000) |
112 gtk_widget_set_size_request(spin, 50, -1); | |
113 else | |
114 gtk_widget_set_size_request(spin, 60, -1); | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
115 gtk_box_pack_start(GTK_BOX(hbox), spin, FALSE, FALSE, 0); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
116 g_signal_connect(G_OBJECT(adjust), "value-changed", |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
117 G_CALLBACK(update_spin_value), GTK_WIDGET(spin)); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
118 gtk_widget_show(spin); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
119 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
120 gtk_label_set_mnemonic_widget(GTK_LABEL(label), spin); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
121 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
122 if (sg) { |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
123 gtk_size_group_add_widget(sg, label); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
124 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
125 } |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
126 |
8137 | 127 gaim_set_accessible_label (spin, label); |
10759 | 128 |
8238 | 129 return hbox; |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
130 } |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
131 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
132 static void |
9422 | 133 entry_set(GtkEntry *entry, gpointer data) { |
10367
5fe89d2df440
[gaim-migrate @ 11586]
Luke Schierer <lschiere@pidgin.im>
parents:
10364
diff
changeset
|
134 const char *key = (const char*)data; |
9422 | 135 |
136 gaim_prefs_set_string(key, gtk_entry_get_text(entry)); | |
137 } | |
138 | |
139 GtkWidget * | |
10367
5fe89d2df440
[gaim-migrate @ 11586]
Luke Schierer <lschiere@pidgin.im>
parents:
10364
diff
changeset
|
140 gaim_gtk_prefs_labeled_entry(GtkWidget *page, const gchar *title, |
5fe89d2df440
[gaim-migrate @ 11586]
Luke Schierer <lschiere@pidgin.im>
parents:
10364
diff
changeset
|
141 const char *key, GtkSizeGroup *sg) |
9422 | 142 { |
143 GtkWidget *hbox, *label, *entry; | |
144 const gchar *value; | |
145 | |
146 value = gaim_prefs_get_string(key); | |
147 | |
148 hbox = gtk_hbox_new(FALSE, 5); | |
149 gtk_box_pack_start(GTK_BOX(page), hbox, FALSE, FALSE, 5); | |
150 gtk_widget_show(hbox); | |
151 | |
152 label = gtk_label_new_with_mnemonic(title); | |
153 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); | |
154 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); | |
155 gtk_widget_show(label); | |
156 | |
157 entry = gtk_entry_new(); | |
158 gtk_entry_set_text(GTK_ENTRY(entry), value); | |
159 gtk_box_pack_start(GTK_BOX(hbox), entry, FALSE, FALSE, 0); | |
160 g_signal_connect(G_OBJECT(entry), "changed", | |
161 G_CALLBACK(entry_set), (char*)key); | |
162 gtk_widget_show(entry); | |
163 | |
164 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
165 | |
166 if(sg) { | |
167 gtk_size_group_add_widget(sg, label); | |
168 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
169 } | |
170 | |
171 gaim_set_accessible_label(entry, label); | |
172 | |
173 return hbox; | |
174 } | |
175 | |
176 static void | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
177 dropdown_set(GObject *w, const char *key) |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
178 { |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
179 const char *str_value; |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
180 int int_value; |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
181 GaimPrefType type; |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
182 |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
183 type = GPOINTER_TO_INT(g_object_get_data(w, "type")); |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
184 |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
185 if (type == GAIM_PREF_INT) { |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
186 int_value = GPOINTER_TO_INT(g_object_get_data(w, "value")); |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
187 |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
188 gaim_prefs_set_int(key, int_value); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
189 } |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
190 else if (type == GAIM_PREF_STRING) { |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
191 str_value = (const char *)g_object_get_data(w, "value"); |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
192 |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
193 gaim_prefs_set_string(key, str_value); |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
194 } |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
195 else if (type == GAIM_PREF_BOOLEAN) { |
9151 | 196 gaim_prefs_set_bool(key, |
197 GPOINTER_TO_INT(g_object_get_data(w, "value"))); | |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
198 } |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
199 } |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
200 |
7976 | 201 GtkWidget * |
7987 | 202 gaim_gtk_prefs_dropdown_from_list(GtkWidget *box, const gchar *title, |
203 GaimPrefType type, const char *key, GList *menuitems) | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
204 { |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
205 GtkWidget *dropdown, *opt, *menu; |
11267
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
206 GtkWidget *label = NULL; |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
207 GtkWidget *hbox; |
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
208 gchar *text; |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
209 const char *stored_str = NULL; |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
210 int stored_int = 0; |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
211 int int_value = 0; |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
212 const char *str_value = NULL; |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
213 int o = 0; |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
214 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
215 g_return_val_if_fail(menuitems != NULL, NULL); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
216 |
11267
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
217 if (title != NULL) { |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
218 hbox = gtk_hbox_new(FALSE, 5); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
219 /*gtk_container_add (GTK_CONTAINER (box), hbox);*/ |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
220 gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 0); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
221 gtk_widget_show(hbox); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
222 |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
223 label = gtk_label_new_with_mnemonic(title); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
224 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
225 gtk_widget_show(label); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
226 } else { |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
227 hbox = box; |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
228 } |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
229 |
8577 | 230 #if 0 /* GTK_CHECK_VERSION(2,4,0) */ |
231 if(type == GAIM_PREF_INT) | |
232 model = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_INT); | |
233 else if(type == GAIM_PREF_STRING) | |
234 model = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING); | |
235 dropdown = gtk_combo_box_new_with_model(model); | |
236 #else | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
237 dropdown = gtk_option_menu_new(); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
238 menu = gtk_menu_new(); |
8577 | 239 #endif |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
240 |
11267
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
241 if (label != NULL) { |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
242 gtk_label_set_mnemonic_widget(GTK_LABEL(label), dropdown); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
243 gaim_set_accessible_label (dropdown, label); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
244 } |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
245 |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
246 if (type == GAIM_PREF_INT) |
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
247 stored_int = gaim_prefs_get_int(key); |
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
248 else if (type == GAIM_PREF_STRING) |
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
249 stored_str = gaim_prefs_get_string(key); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
250 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
251 while (menuitems != NULL && (text = (char *) menuitems->data) != NULL) { |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
252 menuitems = g_list_next(menuitems); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
253 g_return_val_if_fail(menuitems != NULL, NULL); |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
254 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
255 opt = gtk_menu_item_new_with_label(text); |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
256 |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
257 g_object_set_data(G_OBJECT(opt), "type", GINT_TO_POINTER(type)); |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
258 |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
259 if (type == GAIM_PREF_INT) { |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
260 int_value = GPOINTER_TO_INT(menuitems->data); |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
261 g_object_set_data(G_OBJECT(opt), "value", |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
262 GINT_TO_POINTER(int_value)); |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
263 } |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
264 else if (type == GAIM_PREF_STRING) { |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
265 str_value = (const char *)menuitems->data; |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
266 |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
267 g_object_set_data(G_OBJECT(opt), "value", (char *)str_value); |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
268 } |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
269 else if (type == GAIM_PREF_BOOLEAN) { |
9151 | 270 g_object_set_data(G_OBJECT(opt), "value", |
271 menuitems->data); | |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
272 } |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
273 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
274 g_signal_connect(G_OBJECT(opt), "activate", |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
275 G_CALLBACK(dropdown_set), (char *)key); |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
276 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
277 gtk_widget_show(opt); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
278 gtk_menu_shell_append(GTK_MENU_SHELL(menu), opt); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
279 |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
280 if ((type == GAIM_PREF_INT && stored_int == int_value) || |
5753
96214f5de47c
[gaim-migrate @ 6178]
Christian Hammond <chipx86@chipx86.com>
parents:
5716
diff
changeset
|
281 (type == GAIM_PREF_STRING && stored_str != NULL && |
96214f5de47c
[gaim-migrate @ 6178]
Christian Hammond <chipx86@chipx86.com>
parents:
5716
diff
changeset
|
282 !strcmp(stored_str, str_value)) || |
9151 | 283 (type == GAIM_PREF_BOOLEAN && |
284 (gaim_prefs_get_bool(key) == GPOINTER_TO_INT(menuitems->data)))) { | |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
285 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
286 gtk_menu_set_active(GTK_MENU(menu), o); |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
287 } |
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
288 |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
289 menuitems = g_list_next(menuitems); |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
290 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
291 o++; |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
292 } |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
293 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
294 gtk_option_menu_set_menu(GTK_OPTION_MENU(dropdown), menu); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
295 gtk_box_pack_start(GTK_BOX(hbox), dropdown, FALSE, FALSE, 0); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
296 gtk_widget_show(dropdown); |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
297 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
298 return label; |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
299 } |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
300 |
7976 | 301 GtkWidget * |
7987 | 302 gaim_gtk_prefs_dropdown(GtkWidget *box, const gchar *title, GaimPrefType type, |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
303 const char *key, ...) |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
304 { |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
305 va_list ap; |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
306 GList *menuitems = NULL; |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
307 GtkWidget *dropdown = NULL; |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
308 char *name; |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
309 int int_value; |
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
310 const char *str_value; |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
311 |
9151 | 312 g_return_val_if_fail(type == GAIM_PREF_BOOLEAN || type == GAIM_PREF_INT || |
313 type == GAIM_PREF_STRING, NULL); | |
314 | |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
315 va_start(ap, key); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
316 while ((name = va_arg(ap, char *)) != NULL) { |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
317 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
318 menuitems = g_list_prepend(menuitems, name); |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
319 |
9151 | 320 if (type == GAIM_PREF_INT || type == GAIM_PREF_BOOLEAN) { |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
321 int_value = va_arg(ap, int); |
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
322 menuitems = g_list_prepend(menuitems, GINT_TO_POINTER(int_value)); |
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
323 } |
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
324 else { |
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
325 str_value = va_arg(ap, const char *); |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
326 menuitems = g_list_prepend(menuitems, (char *)str_value); |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
327 } |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
328 } |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
329 va_end(ap); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
330 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
331 g_return_val_if_fail(menuitems != NULL, NULL); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
332 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
333 menuitems = g_list_reverse(menuitems); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
334 |
7987 | 335 dropdown = gaim_gtk_prefs_dropdown_from_list(box, title, type, key, |
336 menuitems); | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
337 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
338 g_list_free(menuitems); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
339 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
340 return dropdown; |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
341 } |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
342 |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
343 static void |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
344 delete_prefs(GtkWidget *asdf, void *gdsa) |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
345 { |
9508 | 346 /* Close any "select sound" request dialogs */ |
347 gaim_request_close_with_handle(prefs); | |
348 | |
10087 | 349 /* Unregister callbacks. */ |
350 gaim_prefs_disconnect_by_handle(prefs); | |
351 | |
5440 | 352 prefs = NULL; |
353 sound_entry = NULL; | |
354 debugbutton = NULL; | |
355 notebook_page = 0; | |
356 smiley_theme_store = NULL; | |
11557
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
357 if (previous_smiley_row) |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
358 gtk_tree_row_reference_free(previous_smiley_row); |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
359 previous_smiley_row = NULL; |
5440 | 360 |
361 } | |
362 | |
11557
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
363 static void smiley_sel(GtkTreeSelection *sel, GtkTreeModel *model) { |
5440 | 364 GtkTreeIter iter; |
11557
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
365 const char *themename; |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
366 char *description; |
5440 | 367 GValue val = { 0, }; |
11557
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
368 GtkTreePath *path, *oldpath; |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
369 struct smiley_theme *new_theme, *old_theme; |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
370 |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
371 if (!gtk_tree_selection_get_selected(sel, &model, &iter)) |
5440 | 372 return; |
11550 | 373 |
374 old_theme = current_smiley_theme; | |
11557
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
375 gtk_tree_model_get_value(model, &iter, 3, &val); |
11550 | 376 path = gtk_tree_model_get_path(model, &iter); |
11557
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
377 themename = g_value_get_string(&val); |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
378 gaim_prefs_set_string("/gaim/gtk/smileys/theme", themename); |
5440 | 379 g_value_unset (&val); |
11550 | 380 |
11557
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
381 /* current_smiley_theme is set in callback for the above pref change */ |
11550 | 382 new_theme = current_smiley_theme; |
383 description = g_strdup_printf("<span size='larger' weight='bold'>%s</span> - %s\n" | |
384 "<span size='smaller' foreground='white'>%s</span>", | |
385 new_theme->name, new_theme->author, new_theme->desc); | |
11557
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
386 gtk_list_store_set(smiley_theme_store, &iter, 1, description, -1); |
11550 | 387 g_free(description); |
388 | |
11557
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
389 if (new_theme != old_theme && previous_smiley_row) { |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
390 oldpath = gtk_tree_row_reference_get_path(previous_smiley_row); |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
391 if (gtk_tree_model_get_iter(model, &iter, oldpath)) { |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
392 description = g_strdup_printf("<span size='larger' weight='bold'>%s</span> - %s\n" |
11550 | 393 "<span size='smaller' foreground='dim grey'>%s</span>", |
394 old_theme->name, old_theme->author, old_theme->desc); | |
11557
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
395 gtk_list_store_set(smiley_theme_store, &iter, 1, |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
396 description, -1); |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
397 g_free(description); |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
398 } |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
399 gtk_tree_path_free(oldpath); |
11550 | 400 } |
11557
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
401 if (previous_smiley_row) |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
402 gtk_tree_row_reference_free(previous_smiley_row); |
11550 | 403 previous_smiley_row = gtk_tree_row_reference_new(model, path); |
404 gtk_tree_path_free(path); | |
5440 | 405 } |
406 | |
11557
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
407 static GtkTreeRowReference *theme_refresh_theme_list() |
5440 | 408 { |
409 GdkPixbuf *pixbuf; | |
410 GSList *themes; | |
411 GtkTreeIter iter; | |
11557
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
412 GtkTreeRowReference *row_ref = NULL; |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
413 |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
414 if (previous_smiley_row) |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
415 gtk_tree_row_reference_free(previous_smiley_row); |
11550 | 416 previous_smiley_row = NULL; |
5440 | 417 |
11525 | 418 gaim_gtkthemes_smiley_theme_probe(); |
419 | |
420 if (!(themes = smiley_themes)) | |
5440 | 421 return NULL; |
422 | |
423 gtk_list_store_clear(smiley_theme_store); | |
424 | |
425 while (themes) { | |
426 struct smiley_theme *theme = themes->data; | |
427 char *description = g_strdup_printf("<span size='larger' weight='bold'>%s</span> - %s\n" | |
428 "<span size='smaller' foreground='dim grey'>%s</span>", | |
429 theme->name, theme->author, theme->desc); | |
430 gtk_list_store_append (smiley_theme_store, &iter); | |
8494 | 431 |
432 /* | |
433 * LEAK - Gentoo memprof thinks pixbuf is leaking here... but it | |
434 * looks like it should be ok to me. Anyone know what's up? --Mark | |
435 */ | |
8963 | 436 pixbuf = (theme->icon ? gdk_pixbuf_new_from_file(theme->icon, NULL) : NULL); |
5440 | 437 |
438 gtk_list_store_set(smiley_theme_store, &iter, | |
439 0, pixbuf, | |
440 1, description, | |
441 2, theme->path, | |
8928 | 442 3, theme->name, |
5440 | 443 -1); |
7094
2343c3aa1dec
[gaim-migrate @ 7659]
Christian Hammond <chipx86@chipx86.com>
parents:
7092
diff
changeset
|
444 |
2343c3aa1dec
[gaim-migrate @ 7659]
Christian Hammond <chipx86@chipx86.com>
parents:
7092
diff
changeset
|
445 if (pixbuf != NULL) |
2343c3aa1dec
[gaim-migrate @ 7659]
Christian Hammond <chipx86@chipx86.com>
parents:
7092
diff
changeset
|
446 g_object_unref(G_OBJECT(pixbuf)); |
2343c3aa1dec
[gaim-migrate @ 7659]
Christian Hammond <chipx86@chipx86.com>
parents:
7092
diff
changeset
|
447 |
5440 | 448 g_free(description); |
449 themes = themes->next; | |
11557
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
450 |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
451 /* If this is the currently selected theme, |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
452 * we will need to select it. Grab the row reference. */ |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
453 if (theme == current_smiley_theme) { |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
454 GtkTreePath *path = gtk_tree_model_get_path( |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
455 GTK_TREE_MODEL(smiley_theme_store), &iter); |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
456 row_ref = gtk_tree_row_reference_new( |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
457 GTK_TREE_MODEL(smiley_theme_store), path); |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
458 gtk_tree_path_free(path); |
5440 | 459 } |
460 } | |
461 | |
11557
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
462 return row_ref; |
5440 | 463 } |
464 | |
10871 | 465 static void theme_install_theme(char *path, char *extn) { |
5440 | 466 #ifndef _WIN32 |
9769 | 467 gchar *command, *escaped; |
5440 | 468 #endif |
469 gchar *destdir; | |
470 gchar *tail; | |
11557
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
471 GtkTreeRowReference *theme_rowref; |
5440 | 472 |
473 /* Just to be safe */ | |
474 g_strchomp(path); | |
475 | |
476 /* I dont know what you are, get out of here */ | |
477 if (extn != NULL) | |
478 tail = extn; | |
479 else if ((tail = strrchr(path, '.')) == NULL) | |
480 return; | |
481 | |
482 destdir = g_strconcat(gaim_user_dir(), G_DIR_SEPARATOR_S "smileys", NULL); | |
483 | |
484 /* We'll check this just to make sure. This also lets us do something different on | |
485 * other platforms, if need be */ | |
486 if (!g_ascii_strcasecmp(tail, ".gz") || !g_ascii_strcasecmp(tail, ".tgz")) { | |
487 #ifndef _WIN32 | |
9769 | 488 escaped = g_shell_quote(path); |
489 command = g_strdup_printf("tar > /dev/null xzf %s -C %s", escaped, destdir); | |
490 g_free(escaped); | |
5440 | 491 #else |
492 if(!wgaim_gz_untar(path, destdir)) { | |
493 g_free(destdir); | |
494 return; | |
495 } | |
496 #endif | |
497 } | |
498 else { | |
499 g_free(destdir); | |
500 return; | |
501 } | |
502 | |
503 #ifndef _WIN32 | |
504 /* Fire! */ | |
505 system(command); | |
506 | |
507 g_free(command); | |
508 #endif | |
509 g_free(destdir); | |
510 | |
11557
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
511 theme_rowref = theme_refresh_theme_list(); |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
512 if (theme_rowref != NULL) |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
513 gtk_tree_row_reference_free(theme_rowref); |
5440 | 514 } |
515 | |
7094
2343c3aa1dec
[gaim-migrate @ 7659]
Christian Hammond <chipx86@chipx86.com>
parents:
7092
diff
changeset
|
516 static void |
2343c3aa1dec
[gaim-migrate @ 7659]
Christian Hammond <chipx86@chipx86.com>
parents:
7092
diff
changeset
|
517 theme_got_url(void *data, const char *themedata, size_t len) |
2343c3aa1dec
[gaim-migrate @ 7659]
Christian Hammond <chipx86@chipx86.com>
parents:
7092
diff
changeset
|
518 { |
5440 | 519 FILE *f; |
520 gchar *path; | |
521 | |
10203
7ff9b8b22e7d
[gaim-migrate @ 11324]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
10182
diff
changeset
|
522 f = gaim_mkstemp(&path, TRUE); |
5440 | 523 fwrite(themedata, len, 1, f); |
524 fclose(f); | |
525 | |
526 theme_install_theme(path, data); | |
527 | |
10589
0f7452b1f777
[gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
10492
diff
changeset
|
528 g_unlink(path); |
5440 | 529 g_free(path); |
530 } | |
531 | |
11137 | 532 static void theme_dnd_recv(GtkWidget *widget, GdkDragContext *dc, guint x, guint y, GtkSelectionData *sd, |
5440 | 533 guint info, guint t, gpointer data) { |
11137 | 534 gchar *name = (gchar *)sd->data; |
5440 | 535 |
536 if ((sd->length >= 0) && (sd->format == 8)) { | |
11137 | 537 /* Well, it looks like the drag event was cool. |
5440 | 538 * Let's do something with it */ |
539 | |
540 if (!g_ascii_strncasecmp(name, "file://", 7)) { | |
541 GError *converr = NULL; | |
542 gchar *tmp; | |
11137 | 543 /* It looks like we're dealing with a local file. Let's |
5440 | 544 * just untar it in the right place */ |
545 if(!(tmp = g_filename_from_uri(name, NULL, &converr))) { | |
546 gaim_debug(GAIM_DEBUG_ERROR, "theme dnd", "%s\n", | |
547 (converr ? converr->message : | |
548 "g_filename_from_uri error")); | |
549 return; | |
550 } | |
551 theme_install_theme(tmp, NULL); | |
552 g_free(tmp); | |
553 } else if (!g_ascii_strncasecmp(name, "http://", 7)) { | |
554 /* Oo, a web drag and drop. This is where things | |
555 * will start to get interesting */ | |
556 gchar *tail; | |
557 | |
558 if ((tail = strrchr(name, '.')) == NULL) | |
559 return; | |
560 | |
561 /* We'll check this just to make sure. This also lets us do something different on | |
562 * other platforms, if need be */ | |
7094
2343c3aa1dec
[gaim-migrate @ 7659]
Christian Hammond <chipx86@chipx86.com>
parents:
7092
diff
changeset
|
563 gaim_url_fetch(name, TRUE, NULL, FALSE, theme_got_url, ".tgz"); |
5440 | 564 } |
565 | |
566 gtk_drag_finish(dc, TRUE, FALSE, t); | |
567 } | |
568 | |
569 gtk_drag_finish(dc, FALSE, FALSE, t); | |
570 } | |
571 | |
8928 | 572 /* Does same as normal sort, except "none" is sorted first */ |
573 gint gaim_sort_smileys (GtkTreeModel *model, | |
574 GtkTreeIter *a, | |
575 GtkTreeIter *b, | |
576 gpointer userdata) | |
577 { | |
578 gint ret = 0; | |
9949 | 579 gchar *name1 = NULL, *name2 = NULL; |
8928 | 580 |
581 gtk_tree_model_get(model, a, 3, &name1, -1); | |
582 gtk_tree_model_get(model, b, 3, &name2, -1); | |
583 | |
584 if (name1 == NULL || name2 == NULL) { | |
585 if (!(name1 == NULL && name2 == NULL)) | |
586 ret = (name1 == NULL) ? -1: 1; | |
587 } else if (!g_ascii_strcasecmp(name1, "none")) { | |
10167 | 588 if (!g_utf8_collate(name1, name2)) |
589 ret = 0; | |
590 else | |
591 /* Sort name1 first */ | |
592 ret = -1; | |
8928 | 593 } else if (!g_ascii_strcasecmp(name2, "none")) { |
594 /* Sort name2 first */ | |
595 ret = 1; | |
596 } else { | |
597 /* Neither string is "none", default to normal sort */ | |
598 ret = g_utf8_collate(name1,name2); | |
599 } | |
600 | |
9521 | 601 g_free(name1); |
602 g_free(name2); | |
603 | |
8928 | 604 return ret; |
605 } | |
606 | |
10850 | 607 static GtkWidget * |
608 theme_page() | |
609 { | |
5440 | 610 GtkWidget *ret; |
611 GtkWidget *sw; | |
612 GtkWidget *view; | |
613 GtkCellRenderer *rend; | |
614 GtkTreeViewColumn *col; | |
615 GtkTreeSelection *sel; | |
11557
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
616 GtkTreeRowReference *rowref; |
5440 | 617 GtkWidget *label; |
618 GtkTargetEntry te[3] = {{"text/plain", 0, 0},{"text/uri-list", 0, 1},{"STRING", 0, 2}}; | |
619 | |
11243 | 620 ret = gtk_vbox_new(FALSE, GAIM_HIG_BOX_SPACE); |
621 gtk_container_set_border_width (GTK_CONTAINER (ret), GAIM_HIG_BORDER); | |
5440 | 622 |
623 label = gtk_label_new(_("Select a smiley theme that you would like to use from the list below. New themes can be installed by dragging and dropping them onto the theme list.")); | |
624 | |
625 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); | |
626 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); | |
627 gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT); | |
628 | |
629 gtk_box_pack_start(GTK_BOX(ret), label, FALSE, TRUE, 0); | |
630 gtk_widget_show(label); | |
631 | |
632 sw = gtk_scrolled_window_new(NULL,NULL); | |
7939 | 633 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); |
7931 | 634 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); |
5440 | 635 |
636 gtk_box_pack_start(GTK_BOX(ret), sw, TRUE, TRUE, 0); | |
8928 | 637 smiley_theme_store = gtk_list_store_new (4, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); |
5440 | 638 |
11557
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
639 rowref = theme_refresh_theme_list(); |
8075 | 640 |
5440 | 641 view = gtk_tree_view_new_with_model (GTK_TREE_MODEL(smiley_theme_store)); |
642 | |
11525 | 643 gtk_drag_dest_set(view, GTK_DEST_DEFAULT_MOTION | GTK_DEST_DEFAULT_HIGHLIGHT | GTK_DEST_DEFAULT_DROP, te, |
5440 | 644 sizeof(te) / sizeof(GtkTargetEntry) , GDK_ACTION_COPY | GDK_ACTION_MOVE); |
645 | |
646 g_signal_connect(G_OBJECT(view), "drag_data_received", G_CALLBACK(theme_dnd_recv), smiley_theme_store); | |
647 | |
648 rend = gtk_cell_renderer_pixbuf_new(); | |
649 sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (view)); | |
650 | |
8928 | 651 /* Custom sort so "none" theme is at top of list */ |
652 gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(smiley_theme_store), | |
653 3, gaim_sort_smileys, NULL, NULL); | |
654 | |
8075 | 655 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(smiley_theme_store), |
8928 | 656 3, GTK_SORT_ASCENDING); |
5440 | 657 |
658 col = gtk_tree_view_column_new_with_attributes (_("Icon"), | |
659 rend, | |
660 "pixbuf", 0, | |
661 NULL); | |
662 gtk_tree_view_append_column (GTK_TREE_VIEW(view), col); | |
663 | |
664 rend = gtk_cell_renderer_text_new(); | |
665 col = gtk_tree_view_column_new_with_attributes (_("Description"), | |
666 rend, | |
667 "markup", 1, | |
668 NULL); | |
669 gtk_tree_view_append_column (GTK_TREE_VIEW(view), col); | |
670 g_object_unref(G_OBJECT(smiley_theme_store)); | |
671 gtk_container_add(GTK_CONTAINER(sw), view); | |
672 | |
8075 | 673 g_signal_connect(G_OBJECT(sel), "changed", G_CALLBACK(smiley_sel), NULL); |
5440 | 674 |
11557
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
675 if (rowref) { |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
676 GtkTreePath *path = gtk_tree_row_reference_get_path(rowref); |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
677 gtk_tree_row_reference_free(rowref); |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
678 gtk_tree_selection_select_path(sel, path); |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
679 gtk_tree_path_free(path); |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
680 } |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
681 |
5440 | 682 gtk_widget_show_all(ret); |
8137 | 683 |
684 gaim_set_accessible_label (view, label); | |
685 | |
5440 | 686 return ret; |
687 } | |
688 | |
9025 | 689 static void |
11267
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
690 formatting_toggle_cb(GtkIMHtml *imhtml, GtkIMHtmlButtons buttons, void *toolbar) |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
691 { |
9025 | 692 gboolean bold, italic, uline; |
693 | |
694 bold = italic = uline = FALSE; | |
695 gtk_imhtml_get_current_format(GTK_IMHTML(imhtml), | |
696 &bold, &italic, &uline); | |
697 | |
698 if (buttons & GTK_IMHTML_BOLD) | |
699 gaim_prefs_set_bool("/gaim/gtk/conversations/send_bold", bold); | |
700 if (buttons & GTK_IMHTML_ITALIC) | |
701 gaim_prefs_set_bool("/gaim/gtk/conversations/send_italic", italic); | |
702 if (buttons & GTK_IMHTML_UNDERLINE) | |
703 gaim_prefs_set_bool("/gaim/gtk/conversations/send_underline", uline); | |
704 | |
705 if (buttons & GTK_IMHTML_GROW || buttons & GTK_IMHTML_SHRINK) | |
706 gaim_prefs_set_int("/gaim/gtk/conversations/font_size", | |
707 gtk_imhtml_get_current_fontsize(GTK_IMHTML(imhtml))); | |
708 if (buttons & GTK_IMHTML_FACE) { | |
709 char *face = gtk_imhtml_get_current_fontface(GTK_IMHTML(imhtml)); | |
710 if (!face) | |
711 face = g_strdup(""); | |
712 | |
713 gaim_prefs_set_string("/gaim/gtk/conversations/font_face", face); | |
714 g_free(face); | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
715 } |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
716 |
9025 | 717 if (buttons & GTK_IMHTML_FORECOLOR) { |
718 char *color = gtk_imhtml_get_current_forecolor(GTK_IMHTML(imhtml)); | |
719 if (!color) | |
720 color = g_strdup(""); | |
721 | |
722 gaim_prefs_set_string("/gaim/gtk/conversations/fgcolor", color); | |
723 g_free(color); | |
724 } | |
725 | |
726 if (buttons & GTK_IMHTML_BACKCOLOR) { | |
11267
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
727 char *color; |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
728 GObject *object; |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
729 |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
730 color = gtk_imhtml_get_current_backcolor(GTK_IMHTML(imhtml)); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
731 if (!color) |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
732 color = g_strdup(""); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
733 |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
734 /* Block the signal to prevent a loop. */ |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
735 object = g_object_ref(G_OBJECT(imhtml)); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
736 g_signal_handlers_block_matched(object, G_SIGNAL_MATCH_DATA, 0, 0, NULL, |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
737 NULL, toolbar); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
738 /* Clear the backcolor. */ |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
739 gtk_imhtml_toggle_backcolor(GTK_IMHTML(imhtml), ""); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
740 /* Unblock the signal. */ |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
741 g_signal_handlers_unblock_matched(object, G_SIGNAL_MATCH_DATA, 0, 0, NULL, |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
742 NULL, toolbar); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
743 g_object_unref(object); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
744 |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
745 /* This will fire a toggle signal and get saved below. */ |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
746 gtk_imhtml_toggle_background(GTK_IMHTML(imhtml), color); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
747 |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
748 g_free(color); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
749 } |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
750 |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
751 if (buttons & GTK_IMHTML_BACKGROUND) { |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
752 char *color = gtk_imhtml_get_current_background(GTK_IMHTML(imhtml)); |
9025 | 753 if (!color) |
754 color = g_strdup(""); | |
755 | |
756 gaim_prefs_set_string("/gaim/gtk/conversations/bgcolor", color); | |
757 g_free(color); | |
758 } | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
759 } |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
760 |
11275
ffc86d9ad8b7
[gaim-migrate @ 13461]
Richard Laager <rlaager@wiktel.com>
parents:
11271
diff
changeset
|
761 static void |
ffc86d9ad8b7
[gaim-migrate @ 13461]
Richard Laager <rlaager@wiktel.com>
parents:
11271
diff
changeset
|
762 formatting_clear_cb(GtkIMHtml *imhtml, void *data) |
ffc86d9ad8b7
[gaim-migrate @ 13461]
Richard Laager <rlaager@wiktel.com>
parents:
11271
diff
changeset
|
763 { |
ffc86d9ad8b7
[gaim-migrate @ 13461]
Richard Laager <rlaager@wiktel.com>
parents:
11271
diff
changeset
|
764 gaim_prefs_set_bool("/gaim/gtk/conversations/send_bold", FALSE); |
ffc86d9ad8b7
[gaim-migrate @ 13461]
Richard Laager <rlaager@wiktel.com>
parents:
11271
diff
changeset
|
765 gaim_prefs_set_bool("/gaim/gtk/conversations/send_italic", FALSE); |
ffc86d9ad8b7
[gaim-migrate @ 13461]
Richard Laager <rlaager@wiktel.com>
parents:
11271
diff
changeset
|
766 gaim_prefs_set_bool("/gaim/gtk/conversations/send_underline", FALSE); |
ffc86d9ad8b7
[gaim-migrate @ 13461]
Richard Laager <rlaager@wiktel.com>
parents:
11271
diff
changeset
|
767 |
ffc86d9ad8b7
[gaim-migrate @ 13461]
Richard Laager <rlaager@wiktel.com>
parents:
11271
diff
changeset
|
768 gaim_prefs_set_int("/gaim/gtk/conversations/font_size", 3); |
ffc86d9ad8b7
[gaim-migrate @ 13461]
Richard Laager <rlaager@wiktel.com>
parents:
11271
diff
changeset
|
769 |
ffc86d9ad8b7
[gaim-migrate @ 13461]
Richard Laager <rlaager@wiktel.com>
parents:
11271
diff
changeset
|
770 gaim_prefs_set_string("/gaim/gtk/conversations/font_face", ""); |
ffc86d9ad8b7
[gaim-migrate @ 13461]
Richard Laager <rlaager@wiktel.com>
parents:
11271
diff
changeset
|
771 gaim_prefs_set_string("/gaim/gtk/conversations/fgcolor", ""); |
ffc86d9ad8b7
[gaim-migrate @ 13461]
Richard Laager <rlaager@wiktel.com>
parents:
11271
diff
changeset
|
772 gaim_prefs_set_string("/gaim/gtk/conversations/bgcolor", ""); |
ffc86d9ad8b7
[gaim-migrate @ 13461]
Richard Laager <rlaager@wiktel.com>
parents:
11271
diff
changeset
|
773 } |
ffc86d9ad8b7
[gaim-migrate @ 13461]
Richard Laager <rlaager@wiktel.com>
parents:
11271
diff
changeset
|
774 |
8979 | 775 static void |
9155 | 776 conversation_usetabs_cb(const char *name, GaimPrefType type, gpointer value, |
8979 | 777 gpointer data) |
778 { | |
10112 | 779 gboolean usetabs = GPOINTER_TO_INT(value); |
9155 | 780 |
781 if (usetabs) | |
782 gtk_widget_set_sensitive(GTK_WIDGET(data), TRUE); | |
783 else | |
8979 | 784 gtk_widget_set_sensitive(GTK_WIDGET(data), FALSE); |
785 } | |
786 | |
10850 | 787 static GtkWidget * |
788 conv_page() | |
789 { | |
5440 | 790 GtkWidget *ret; |
11271
b33eccbc3a10
[gaim-migrate @ 13454]
Richard Laager <rlaager@wiktel.com>
parents:
11269
diff
changeset
|
791 GtkWidget *vbox; |
5440 | 792 GtkWidget *label; |
793 GList *names = NULL; | |
11267
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
794 GtkWidget *frame; |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
795 GtkWidget *imhtml; |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
796 GtkWidget *toolbar; |
11271
b33eccbc3a10
[gaim-migrate @ 13454]
Richard Laager <rlaager@wiktel.com>
parents:
11269
diff
changeset
|
797 GtkWidget *hbox; |
b33eccbc3a10
[gaim-migrate @ 13454]
Richard Laager <rlaager@wiktel.com>
parents:
11269
diff
changeset
|
798 GtkWidget *vbox2; |
11922 | 799 GtkWidget *iconpref1; |
800 GtkWidget *iconpref2; | |
5440 | 801 |
11243 | 802 ret = gtk_vbox_new(FALSE, GAIM_HIG_BOX_SPACE); |
803 gtk_container_set_border_width(GTK_CONTAINER(ret), GAIM_HIG_BORDER); | |
5440 | 804 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
805 vbox = gaim_gtk_make_frame(ret, _("Conversations")); |
5440 | 806 |
9832 | 807 gaim_gtk_prefs_checkbox(_("Send unknown \"_slash\" commands as messages"), |
808 "/gaim/gtk/conversations/passthrough_unknown_commands", vbox); | |
11267
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
809 gaim_gtk_prefs_checkbox(_("Show _formatting on incoming messages"), |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
810 "/gaim/gtk/conversations/show_incoming_formatting", vbox); |
11922 | 811 |
812 iconpref1 = gaim_gtk_prefs_checkbox(_("Show buddy _icons"), | |
9150 | 813 "/gaim/gtk/conversations/im/show_buddy_icons", vbox); |
11922 | 814 iconpref2 = gaim_gtk_prefs_checkbox(_("Enable buddy ic_on animation"), |
9150 | 815 "/gaim/gtk/conversations/im/animate_buddy_icons", vbox); |
11922 | 816 if (!gaim_prefs_get_bool("/gaim/gtk/conversations/im/show_buddy_icons")) |
817 gtk_widget_set_sensitive(iconpref2, FALSE); | |
818 g_signal_connect(G_OBJECT(iconpref1), "clicked", | |
819 G_CALLBACK(gaim_gtk_toggle_sensitive), iconpref2); | |
820 | |
9155 | 821 gaim_gtk_prefs_checkbox(_("_Notify buddies that you are typing to them"), |
9150 | 822 "/core/conversations/im/send_typing", vbox); |
11267
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
823 #ifdef USE_GTKSPELL |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
824 gaim_gtk_prefs_checkbox(_("_Highlight misspelled words"), |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
825 "/gaim/gtk/conversations/spellcheck", vbox); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
826 #endif |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
827 |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
828 frame = gaim_gtk_create_imhtml(TRUE, &imhtml, &toolbar); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
829 gtk_widget_set_name(imhtml, "gaim_gtkprefs_font_imhtml"); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
830 gtk_imhtml_set_whole_buffer_formatting_only(GTK_IMHTML(imhtml), TRUE); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
831 gtk_imhtml_set_format_functions(GTK_IMHTML(imhtml), |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
832 GTK_IMHTML_BOLD | |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
833 GTK_IMHTML_ITALIC | |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
834 GTK_IMHTML_UNDERLINE | |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
835 GTK_IMHTML_GROW | |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
836 GTK_IMHTML_SHRINK | |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
837 GTK_IMHTML_FACE | |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
838 GTK_IMHTML_FORECOLOR | |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
839 GTK_IMHTML_BACKCOLOR | |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
840 GTK_IMHTML_BACKGROUND); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
841 |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
842 gtk_imhtml_append_text(GTK_IMHTML(imhtml), _("This is how your outgoing message text will appear when you use protocols that support formatting. :)"), 0); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
843 |
11271
b33eccbc3a10
[gaim-migrate @ 13454]
Richard Laager <rlaager@wiktel.com>
parents:
11269
diff
changeset
|
844 gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 0); |
11267
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
845 |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
846 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_bold")) |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
847 gtk_imhtml_toggle_bold(GTK_IMHTML(imhtml)); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
848 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_italic")) |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
849 gtk_imhtml_toggle_italic(GTK_IMHTML(imhtml)); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
850 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_underline")) |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
851 gtk_imhtml_toggle_underline(GTK_IMHTML(imhtml)); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
852 |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
853 gtk_imhtml_font_set_size(GTK_IMHTML(imhtml), gaim_prefs_get_int("/gaim/gtk/conversations/font_size")); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
854 gtk_imhtml_toggle_forecolor(GTK_IMHTML(imhtml), gaim_prefs_get_string("/gaim/gtk/conversations/fgcolor")); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
855 gtk_imhtml_toggle_background(GTK_IMHTML(imhtml), gaim_prefs_get_string("/gaim/gtk/conversations/bgcolor")); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
856 gtk_imhtml_toggle_fontface(GTK_IMHTML(imhtml), gaim_prefs_get_string("/gaim/gtk/conversations/font_face")); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
857 |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
858 g_signal_connect_after(G_OBJECT(imhtml), "format_function_toggle", |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
859 G_CALLBACK(formatting_toggle_cb), toolbar); |
11275
ffc86d9ad8b7
[gaim-migrate @ 13461]
Richard Laager <rlaager@wiktel.com>
parents:
11271
diff
changeset
|
860 g_signal_connect_after(G_OBJECT(imhtml), "format_function_clear", |
ffc86d9ad8b7
[gaim-migrate @ 13461]
Richard Laager <rlaager@wiktel.com>
parents:
11271
diff
changeset
|
861 G_CALLBACK(formatting_clear_cb), NULL); |
9155 | 862 |
863 /* All the tab options! */ | |
864 vbox = gaim_gtk_make_frame(ret, _("Tab Options")); | |
865 | |
866 gaim_gtk_prefs_checkbox(_("Show IMs and chats in _tabbed windows"), | |
5547
90a67ea697f7
[gaim-migrate @ 5948]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
867 "/gaim/gtk/conversations/tabs", vbox); |
9155 | 868 |
869 /* | |
870 * Connect a signal to the above preference. When conversations are not | |
871 * shown in a tabbed window then all tabbing options should be disabled. | |
872 */ | |
10972 | 873 vbox2 = gtk_vbox_new(FALSE, 9); |
9155 | 874 gtk_box_pack_start(GTK_BOX(vbox), vbox2, FALSE, FALSE, 0); |
10087 | 875 gaim_prefs_connect_callback(prefs, "/gaim/gtk/conversations/tabs", |
876 conversation_usetabs_cb, vbox2); | |
9155 | 877 if (!gaim_prefs_get_bool("/gaim/gtk/conversations/tabs")) |
878 gtk_widget_set_sensitive(vbox2, FALSE); | |
879 | |
9891 | 880 gaim_gtk_prefs_checkbox(_("Show close b_utton on tabs"), |
9155 | 881 "/gaim/gtk/conversations/close_on_tabs", vbox2); |
882 | |
11267
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
883 hbox = gtk_hbox_new(FALSE, 9); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
884 gtk_box_pack_start(GTK_BOX(vbox2), hbox, FALSE, FALSE, 0); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
885 |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
886 label = gaim_gtk_prefs_dropdown(hbox, _("_Placement:"), GAIM_PREF_INT, |
8988 | 887 "/gaim/gtk/conversations/tab_side", |
888 _("Top"), GTK_POS_TOP, | |
889 _("Bottom"), GTK_POS_BOTTOM, | |
890 _("Left"), GTK_POS_LEFT, | |
891 _("Right"), GTK_POS_RIGHT, | |
11619 | 892 #if GTK_CHECK_VERSION(2,6,0) |
893 _("Left Vertical"), GTK_POS_LEFT|8, | |
894 _("Right Vertical"), GTK_POS_RIGHT|8, | |
895 #endif | |
8988 | 896 NULL); |
897 | |
11581 | 898 names = gaim_gtkconv_placement_get_options(); |
11267
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
899 label = gaim_gtk_prefs_dropdown_from_list(hbox, _("N_ew conversations:"), |
9155 | 900 GAIM_PREF_STRING, "/gaim/gtk/conversations/placement", names); |
901 g_list_free(names); | |
902 | |
5440 | 903 gtk_widget_show_all(ret); |
904 | |
905 return ret; | |
906 } | |
907 | |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
908 static void network_ip_changed(GtkEntry *entry, gpointer data) |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
909 { |
8834 | 910 gaim_network_set_public_ip(gtk_entry_get_text(entry)); |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
911 } |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
912 |
9150 | 913 static void |
914 proxy_changed_cb(const char *name, GaimPrefType type, gpointer value, | |
915 gpointer data) | |
916 { | |
917 GtkWidget *frame = data; | |
918 const char *proxy = value; | |
919 | |
920 if (strcmp(proxy, "none") && strcmp(proxy, "envvar")) | |
11746 | 921 gtk_widget_show_all(frame); |
9150 | 922 else |
11740 | 923 gtk_widget_hide(frame); |
9150 | 924 } |
925 | |
926 static void proxy_print_option(GtkEntry *entry, int entrynum) | |
927 { | |
928 if (entrynum == PROXYHOST) | |
929 gaim_prefs_set_string("/core/proxy/host", gtk_entry_get_text(entry)); | |
930 else if (entrynum == PROXYPORT) | |
931 gaim_prefs_set_int("/core/proxy/port", atoi(gtk_entry_get_text(entry))); | |
932 else if (entrynum == PROXYUSER) | |
933 gaim_prefs_set_string("/core/proxy/username", gtk_entry_get_text(entry)); | |
934 else if (entrynum == PROXYPASS) | |
935 gaim_prefs_set_string("/core/proxy/password", gtk_entry_get_text(entry)); | |
936 } | |
937 | |
10850 | 938 static GtkWidget * |
939 network_page() | |
940 { | |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
941 GtkWidget *ret; |
9150 | 942 GtkWidget *vbox, *hbox, *entry; |
11424 | 943 GtkWidget *table, *label, *auto_ip_checkbox, *ports_checkbox, *spin_button, *stun_server_entry; |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
944 GtkSizeGroup *sg; |
11888 | 945 GaimProxyInfo *proxy_info = NULL; |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
946 |
11243 | 947 ret = gtk_vbox_new(FALSE, GAIM_HIG_BOX_SPACE); |
948 gtk_container_set_border_width (GTK_CONTAINER (ret), GAIM_HIG_BORDER); | |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
949 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
950 vbox = gaim_gtk_make_frame (ret, _("IP Address")); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
951 |
11442
73f7cfa46f1b
[gaim-migrate @ 13681]
Richard Laager <rlaager@wiktel.com>
parents:
11424
diff
changeset
|
952 stun_server_entry = gaim_gtk_prefs_labeled_entry(vbox,_("STUN Server:"), "/core/network/stun_server", NULL); |
73f7cfa46f1b
[gaim-migrate @ 13681]
Richard Laager <rlaager@wiktel.com>
parents:
11424
diff
changeset
|
953 |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
954 auto_ip_checkbox = gaim_gtk_prefs_checkbox(_("_Autodetect IP Address"), |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
955 "/core/network/auto_ip", vbox); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
956 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
957 table = gtk_table_new(2, 1, FALSE); |
11442
73f7cfa46f1b
[gaim-migrate @ 13681]
Richard Laager <rlaager@wiktel.com>
parents:
11424
diff
changeset
|
958 gtk_container_set_border_width(GTK_CONTAINER(table), 0); |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
959 gtk_table_set_col_spacings(GTK_TABLE(table), 5); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
960 gtk_table_set_row_spacings(GTK_TABLE(table), 10); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
961 gtk_container_add(GTK_CONTAINER(vbox), table); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
962 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
963 label = gtk_label_new_with_mnemonic(_("Public _IP:")); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
964 gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
965 gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1, GTK_FILL, 0, 0, 0); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
966 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
967 entry = gtk_entry_new(); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
968 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
969 gtk_table_attach(GTK_TABLE(table), entry, 1, 2, 0, 1, GTK_FILL, 0, 0, 0); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
970 g_signal_connect(G_OBJECT(entry), "changed", |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
971 G_CALLBACK(network_ip_changed), NULL); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
972 |
8834 | 973 if (gaim_network_get_public_ip() != NULL) |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
974 gtk_entry_set_text(GTK_ENTRY(entry), |
8834 | 975 gaim_network_get_public_ip()); |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
976 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
977 gaim_set_accessible_label (entry, label); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
978 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
979 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
980 if (gaim_prefs_get_bool("/core/network/auto_ip")) { |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
981 gtk_widget_set_sensitive(GTK_WIDGET(table), FALSE); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
982 } |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
983 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
984 g_signal_connect(G_OBJECT(auto_ip_checkbox), "clicked", |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
985 G_CALLBACK(gaim_gtk_toggle_sensitive), table); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
986 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
987 vbox = gaim_gtk_make_frame (ret, _("Ports")); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
988 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
989 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
990 ports_checkbox = gaim_gtk_prefs_checkbox(_("_Manually specify range of ports to listen on"), |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
991 "/core/network/ports_range_use", vbox); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
992 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
993 spin_button = gaim_gtk_prefs_labeled_spin_button(vbox, _("_Start Port:"), |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
994 "/core/network/ports_range_start", 0, 65535, sg); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
995 if (!gaim_prefs_get_bool("/core/network/ports_range_use")) |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
996 gtk_widget_set_sensitive(GTK_WIDGET(spin_button), FALSE); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
997 g_signal_connect(G_OBJECT(ports_checkbox), "clicked", |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
998 G_CALLBACK(gaim_gtk_toggle_sensitive), spin_button); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
999 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1000 spin_button = gaim_gtk_prefs_labeled_spin_button(vbox, _("_End Port:"), |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1001 "/core/network/ports_range_end", 0, 65535, sg); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1002 if (!gaim_prefs_get_bool("/core/network/ports_range_use")) |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1003 gtk_widget_set_sensitive(GTK_WIDGET(spin_button), FALSE); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1004 g_signal_connect(G_OBJECT(ports_checkbox), "clicked", |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1005 G_CALLBACK(gaim_gtk_toggle_sensitive), spin_button); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1006 |
11878 | 1007 if (!gaim_running_gnome()) { |
1008 vbox = gaim_gtk_make_frame(ret, _("Proxy Server")); | |
1009 prefs_proxy_frame = gtk_vbox_new(FALSE, 0); | |
1010 gaim_gtk_prefs_dropdown(vbox, _("Proxy _type:"), GAIM_PREF_STRING, | |
1011 "/core/proxy/type", | |
1012 _("No proxy"), "none", | |
1013 "SOCKS 4", "socks4", | |
1014 "SOCKS 5", "socks5", | |
1015 "HTTP", "http", | |
1016 _("Use Environmental Settings"), "envvar", | |
1017 NULL); | |
1018 gtk_box_pack_start(GTK_BOX(vbox), prefs_proxy_frame, 0, 0, 0); | |
1019 proxy_info = gaim_global_proxy_get_info(); | |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1020 |
11878 | 1021 gaim_prefs_connect_callback(prefs, "/core/proxy/type", |
1022 proxy_changed_cb, prefs_proxy_frame); | |
1023 | |
1024 table = gtk_table_new(4, 2, FALSE); | |
1025 gtk_container_set_border_width(GTK_CONTAINER(table), 0); | |
1026 gtk_table_set_col_spacings(GTK_TABLE(table), 5); | |
1027 gtk_table_set_row_spacings(GTK_TABLE(table), 10); | |
1028 gtk_container_add(GTK_CONTAINER(prefs_proxy_frame), table); | |
5440 | 1029 |
1030 | |
11878 | 1031 label = gtk_label_new_with_mnemonic(_("_Host:")); |
1032 gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); | |
1033 gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1, GTK_FILL, 0, 0, 0); | |
5440 | 1034 |
11878 | 1035 entry = gtk_entry_new(); |
1036 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
1037 gtk_table_attach(GTK_TABLE(table), entry, 1, 2, 0, 1, GTK_FILL, 0, 0, 0); | |
1038 g_signal_connect(G_OBJECT(entry), "changed", | |
1039 G_CALLBACK(proxy_print_option), (void *)PROXYHOST); | |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1040 |
11878 | 1041 if (proxy_info != NULL && gaim_proxy_info_get_host(proxy_info)) |
1042 gtk_entry_set_text(GTK_ENTRY(entry), | |
1043 gaim_proxy_info_get_host(proxy_info)); | |
5440 | 1044 |
11878 | 1045 hbox = gtk_hbox_new(TRUE, 5); |
1046 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
1047 gaim_set_accessible_label (entry, label); | |
5440 | 1048 |
11878 | 1049 label = gtk_label_new_with_mnemonic(_("_Port:")); |
1050 gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); | |
1051 gtk_table_attach(GTK_TABLE(table), label, 2, 3, 0, 1, GTK_FILL, 0, 0, 0); | |
5440 | 1052 |
11878 | 1053 entry = gtk_entry_new(); |
1054 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
1055 gtk_table_attach(GTK_TABLE(table), entry, 3, 4, 0, 1, GTK_FILL, 0, 0, 0); | |
1056 g_signal_connect(G_OBJECT(entry), "changed", | |
1057 G_CALLBACK(proxy_print_option), (void *)PROXYPORT); | |
5440 | 1058 |
11878 | 1059 if (proxy_info != NULL && gaim_proxy_info_get_port(proxy_info) != 0) { |
1060 char buf[128]; | |
1061 g_snprintf(buf, sizeof(buf), "%d", | |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1062 gaim_proxy_info_get_port(proxy_info)); |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1063 |
11878 | 1064 gtk_entry_set_text(GTK_ENTRY(entry), buf); |
1065 } | |
1066 gaim_set_accessible_label (entry, label); | |
5440 | 1067 |
11878 | 1068 label = gtk_label_new_with_mnemonic(_("_User:")); |
1069 gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); | |
1070 gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2, GTK_FILL, 0, 0, 0); | |
5440 | 1071 |
11878 | 1072 entry = gtk_entry_new(); |
1073 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
1074 gtk_table_attach(GTK_TABLE(table), entry, 1, 2, 1, 2, GTK_FILL, 0, 0, 0); | |
1075 g_signal_connect(G_OBJECT(entry), "changed", | |
1076 G_CALLBACK(proxy_print_option), (void *)PROXYUSER); | |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1077 |
11878 | 1078 if (proxy_info != NULL && gaim_proxy_info_get_username(proxy_info) != NULL) |
1079 gtk_entry_set_text(GTK_ENTRY(entry), | |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1080 gaim_proxy_info_get_username(proxy_info)); |
5440 | 1081 |
11878 | 1082 hbox = gtk_hbox_new(TRUE, 5); |
1083 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
1084 gaim_set_accessible_label (entry, label); | |
5440 | 1085 |
11878 | 1086 label = gtk_label_new_with_mnemonic(_("Pa_ssword:")); |
1087 gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); | |
1088 gtk_table_attach(GTK_TABLE(table), label, 2, 3, 1, 2, GTK_FILL, 0, 0, 0); | |
5440 | 1089 |
11878 | 1090 entry = gtk_entry_new(); |
1091 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
1092 gtk_table_attach(GTK_TABLE(table), entry, 3, 4, 1, 2, GTK_FILL , 0, 0, 0); | |
1093 gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE); | |
11986 | 1094 gtk_entry_set_invisible_char(GTK_ENTRY(entry), GAIM_INVISIBLE_CHAR); |
11878 | 1095 g_signal_connect(G_OBJECT(entry), "changed", |
1096 G_CALLBACK(proxy_print_option), (void *)PROXYPASS); | |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1097 |
11878 | 1098 if (proxy_info != NULL && gaim_proxy_info_get_password(proxy_info) != NULL) |
1099 gtk_entry_set_text(GTK_ENTRY(entry), | |
1100 gaim_proxy_info_get_password(proxy_info)); | |
1101 gaim_set_accessible_label (entry, label); | |
1102 } | |
5440 | 1103 |
1104 gtk_widget_show_all(ret); | |
11740 | 1105 if (proxy_info == NULL || |
1106 gaim_proxy_info_get_type(proxy_info) == GAIM_PROXY_NONE || | |
1107 gaim_proxy_info_get_type(proxy_info) == GAIM_PROXY_USE_ENVVAR) | |
1108 gtk_widget_hide(table); | |
5440 | 1109 return ret; |
1110 } | |
1111 | |
1112 #ifndef _WIN32 | |
1113 static gboolean manual_browser_set(GtkWidget *entry, GdkEventFocus *event, gpointer data) { | |
1114 const char *program = gtk_entry_get_text(GTK_ENTRY(entry)); | |
1115 | |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1116 gaim_prefs_set_string("/gaim/gtk/browsers/command", program); |
5440 | 1117 |
1118 /* carry on normally */ | |
1119 return FALSE; | |
1120 } | |
1121 | |
5633 | 1122 static GList *get_available_browsers() |
5440 | 1123 { |
1124 struct browser { | |
1125 char *name; | |
1126 char *command; | |
1127 }; | |
1128 | |
1129 static struct browser possible_browsers[] = { | |
9405 | 1130 {N_("Epiphany"), "epiphany"}, |
8267 | 1131 {N_("Firebird"), "mozilla-firebird"}, |
8356 | 1132 {N_("Firefox"), "firefox"}, |
9405 | 1133 {N_("Galeon"), "galeon"}, |
11816
60fcaea41fc0
[gaim-migrate @ 14107]
Richard Laager <rlaager@wiktel.com>
parents:
11811
diff
changeset
|
1134 {N_("GNOME Default"), "gnome-open"}, |
9405 | 1135 {N_("Konqueror"), "kfmclient"}, |
1136 {N_("Mozilla"), "mozilla"}, | |
1137 {N_("Netscape"), "netscape"}, | |
1138 {N_("Opera"), "opera"} | |
5440 | 1139 }; |
9405 | 1140 static const int num_possible_browsers = 9; |
5440 | 1141 |
1142 GList *browsers = NULL; | |
1143 int i = 0; | |
5819 | 1144 char *browser_setting = (char *)gaim_prefs_get_string("/gaim/gtk/browsers/browser"); |
5440 | 1145 |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1146 browsers = g_list_prepend(browsers, "custom"); |
5440 | 1147 browsers = g_list_prepend(browsers, _("Manual")); |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1148 |
5440 | 1149 for (i = 0; i < num_possible_browsers; i++) { |
7108
6faeeecab0dc
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7095
diff
changeset
|
1150 if (gaim_program_is_valid(possible_browsers[i].command)) { |
5633 | 1151 browsers = g_list_prepend(browsers, |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
1152 possible_browsers[i].command); |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1153 browsers = g_list_prepend(browsers, _(possible_browsers[i].name)); |
5825 | 1154 if(browser_setting && !strcmp(possible_browsers[i].command, browser_setting)) |
5819 | 1155 browser_setting = NULL; |
5440 | 1156 } |
1157 } | |
1158 | |
5819 | 1159 if(browser_setting) |
1160 gaim_prefs_set_string("/gaim/gtk/browsers/browser", "custom"); | |
1161 | |
5440 | 1162 return browsers; |
1163 } | |
1164 | |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1165 static void |
8274 | 1166 browser_changed1_cb(const char *name, GaimPrefType type, gpointer value, |
1167 gpointer data) | |
1168 { | |
1169 GtkWidget *hbox = data; | |
1170 const char *browser = value; | |
1171 | |
1172 gtk_widget_set_sensitive(hbox, strcmp(browser, "custom")); | |
1173 } | |
1174 | |
1175 static void | |
1176 browser_changed2_cb(const char *name, GaimPrefType type, gpointer value, | |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1177 gpointer data) |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1178 { |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1179 GtkWidget *hbox = data; |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1180 const char *browser = value; |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1181 |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1182 gtk_widget_set_sensitive(hbox, !strcmp(browser, "custom")); |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1183 } |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1184 |
10850 | 1185 static GtkWidget * |
1186 browser_page() | |
1187 { | |
5440 | 1188 GtkWidget *ret; |
1189 GtkWidget *vbox; | |
1190 GtkWidget *hbox; | |
1191 GtkWidget *label; | |
6007 | 1192 GtkWidget *entry; |
5440 | 1193 GtkSizeGroup *sg; |
1194 GList *browsers = NULL; | |
1195 | |
11243 | 1196 ret = gtk_vbox_new(FALSE, GAIM_HIG_CAT_SPACE); |
1197 gtk_container_set_border_width (GTK_CONTAINER (ret), GAIM_HIG_BORDER); | |
5440 | 1198 |
1199 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1200 vbox = gaim_gtk_make_frame (ret, _("Browser Selection")); |
5440 | 1201 |
1202 browsers = get_available_browsers(); | |
1203 if (browsers != NULL) { | |
7987 | 1204 label = gaim_gtk_prefs_dropdown_from_list(vbox,_("_Browser:"), GAIM_PREF_STRING, |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1205 "/gaim/gtk/browsers/browser", |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1206 browsers); |
11638 | 1207 g_list_free(browsers); |
10973 | 1208 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
5440 | 1209 gtk_size_group_add_widget(sg, label); |
8274 | 1210 |
1211 hbox = gtk_hbox_new(FALSE, 0); | |
1212 label = gaim_gtk_prefs_dropdown(hbox, _("_Open link in:"), GAIM_PREF_INT, | |
1213 "/gaim/gtk/browsers/place", | |
1214 _("Browser default"), GAIM_BROWSER_DEFAULT, | |
1215 _("Existing window"), GAIM_BROWSER_CURRENT, | |
1216 _("New window"), GAIM_BROWSER_NEW_WINDOW, | |
1217 _("New tab"), GAIM_BROWSER_NEW_TAB, | |
1218 NULL); | |
10973 | 1219 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
8274 | 1220 gtk_size_group_add_widget(sg, label); |
1221 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
1222 | |
1223 if (!strcmp(gaim_prefs_get_string("/gaim/gtk/browsers/browser"), "custom")) | |
1224 gtk_widget_set_sensitive(hbox, FALSE); | |
10087 | 1225 gaim_prefs_connect_callback(prefs, "/gaim/gtk/browsers/browser", |
1226 browser_changed1_cb, hbox); | |
5440 | 1227 } |
1228 | |
1229 hbox = gtk_hbox_new(FALSE, 5); | |
1230 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
6031 | 1231 label = gtk_label_new_with_mnemonic(_("_Manual:\n(%s for URL)")); |
5440 | 1232 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); |
1233 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
1234 gtk_size_group_add_widget(sg, label); | |
1235 | |
6007 | 1236 entry = gtk_entry_new(); |
1237 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1238 |
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1239 if (strcmp(gaim_prefs_get_string("/gaim/gtk/browsers/browser"), "custom")) |
5440 | 1240 gtk_widget_set_sensitive(hbox, FALSE); |
10087 | 1241 gaim_prefs_connect_callback(prefs, "/gaim/gtk/browsers/browser", |
1242 browser_changed2_cb, hbox); | |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1243 |
6007 | 1244 gtk_box_pack_start (GTK_BOX (hbox), entry, FALSE, FALSE, 0); |
1245 | |
1246 gtk_entry_set_text(GTK_ENTRY(entry), | |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1247 gaim_prefs_get_string("/gaim/gtk/browsers/command")); |
6007 | 1248 g_signal_connect(G_OBJECT(entry), "focus-out-event", |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1249 G_CALLBACK(manual_browser_set), NULL); |
8188
cd9ea20cd8ed
[gaim-migrate @ 8909]
Christian Hammond <chipx86@chipx86.com>
parents:
8170
diff
changeset
|
1250 gaim_set_accessible_label (entry, label); |
5440 | 1251 |
1252 gtk_widget_show_all(ret); | |
1253 return ret; | |
1254 } | |
1255 #endif /*_WIN32*/ | |
1256 | |
10850 | 1257 static GtkWidget * |
1258 logging_page() | |
1259 { | |
5440 | 1260 GtkWidget *ret; |
1261 GtkWidget *vbox; | |
7431 | 1262 GList *names; |
8573 | 1263 |
11243 | 1264 ret = gtk_vbox_new(FALSE, GAIM_HIG_CAT_SPACE); |
1265 gtk_container_set_border_width (GTK_CONTAINER (ret), GAIM_HIG_BORDER); | |
5440 | 1266 |
11698 | 1267 vbox = gaim_gtk_make_frame (ret, _("Logging")); |
7431 | 1268 names = gaim_log_logger_get_options(); |
1269 | |
7987 | 1270 gaim_gtk_prefs_dropdown_from_list(vbox, _("Log _Format:"), GAIM_PREF_STRING, |
1271 "/core/logging/format", names); | |
1272 | |
11638 | 1273 g_list_free(names); |
1274 | |
11698 | 1275 gaim_gtk_prefs_checkbox(_("Log all _instant messages"), |
7562
b859cfb5f31a
[gaim-migrate @ 8176]
Christian Hammond <chipx86@chipx86.com>
parents:
7561
diff
changeset
|
1276 "/core/logging/log_ims", vbox); |
7987 | 1277 gaim_gtk_prefs_checkbox(_("Log all c_hats"), |
7562
b859cfb5f31a
[gaim-migrate @ 8176]
Christian Hammond <chipx86@chipx86.com>
parents:
7561
diff
changeset
|
1278 "/core/logging/log_chats", vbox); |
11699 | 1279 gaim_gtk_prefs_checkbox(_("Log all _status changes to system log"), |
11698 | 1280 "/core/logging/log_system", vbox); |
8573 | 1281 |
5440 | 1282 gtk_widget_show_all(ret); |
11698 | 1283 |
5440 | 1284 return ret; |
1285 } | |
1286 | |
1287 #ifndef _WIN32 | |
1288 static gint sound_cmd_yeah(GtkEntry *entry, gpointer d) | |
1289 { | |
5684 | 1290 gaim_prefs_set_string("/gaim/gtk/sound/command", |
6007 | 1291 gtk_entry_get_text(GTK_ENTRY(entry))); |
5440 | 1292 return TRUE; |
1293 } | |
6005 | 1294 |
1295 static void | |
10074 | 1296 sound_changed1_cb(const char *name, GaimPrefType type, gpointer value, |
6005 | 1297 gpointer data) |
1298 { | |
1299 GtkWidget *hbox = data; | |
1300 const char *method = value; | |
1301 | |
1302 gtk_widget_set_sensitive(hbox, !strcmp(method, "custom")); | |
1303 } | |
10074 | 1304 |
1305 static void | |
1306 sound_changed2_cb(const char *name, GaimPrefType type, gpointer value, | |
1307 gpointer data) | |
1308 { | |
1309 GtkWidget *vbox = data; | |
1310 const char *method = value; | |
1311 | |
1312 gtk_widget_set_sensitive(vbox, strcmp(method, "none")); | |
1313 } | |
5440 | 1314 #endif |
1315 | |
9150 | 1316 |
1317 static void | |
1318 event_toggled(GtkCellRendererToggle *cell, gchar *pth, gpointer data) | |
1319 { | |
1320 GtkTreeModel *model = (GtkTreeModel *)data; | |
1321 GtkTreeIter iter; | |
1322 GtkTreePath *path = gtk_tree_path_new_from_string(pth); | |
10930 | 1323 char *pref; |
9150 | 1324 |
1325 gtk_tree_model_get_iter (model, &iter, path); | |
1326 gtk_tree_model_get (model, &iter, | |
1327 2, &pref, | |
1328 -1); | |
1329 | |
1330 gaim_prefs_set_bool(pref, !gtk_cell_renderer_toggle_get_active(cell)); | |
10930 | 1331 g_free(pref); |
9150 | 1332 |
1333 gtk_list_store_set(GTK_LIST_STORE (model), &iter, | |
1334 0, !gtk_cell_renderer_toggle_get_active(cell), | |
1335 -1); | |
1336 | |
1337 gtk_tree_path_free(path); | |
1338 } | |
1339 | |
1340 static void | |
1341 test_sound(GtkWidget *button, gpointer i_am_NULL) | |
1342 { | |
1343 char *pref; | |
11642 | 1344 gboolean temp_value; |
9150 | 1345 |
1346 pref = g_strdup_printf("/gaim/gtk/sound/enabled/%s", | |
1347 gaim_gtk_sound_get_event_option(sound_row_sel)); | |
1348 | |
11642 | 1349 temp_value = gaim_prefs_get_bool(pref); |
1350 | |
1351 if (!temp_value) gaim_prefs_set_bool(pref, TRUE); | |
1352 | |
1353 gaim_sound_play_event(sound_row_sel, NULL); | |
1354 | |
1355 if (!temp_value) gaim_prefs_set_bool(pref, FALSE); | |
9150 | 1356 |
1357 g_free(pref); | |
1358 } | |
1359 | |
9508 | 1360 /* |
1361 * Resets a sound file back to default. | |
1362 */ | |
9150 | 1363 static void |
1364 reset_sound(GtkWidget *button, gpointer i_am_also_NULL) | |
1365 { | |
9508 | 1366 gchar *pref; |
1367 | |
1368 pref = g_strdup_printf("/gaim/gtk/sound/file/%s", | |
1369 gaim_gtk_sound_get_event_option(sound_row_sel)); | |
9150 | 1370 gaim_prefs_set_string(pref, ""); |
1371 g_free(pref); | |
1372 | |
1373 gtk_entry_set_text(GTK_ENTRY(sound_entry), "(default)"); | |
1374 } | |
1375 | |
9508 | 1376 static void |
1377 sound_chosen_cb(void *user_data, const char *filename) | |
9150 | 1378 { |
9508 | 1379 gchar *pref; |
1380 int sound; | |
1381 | |
1382 sound = GPOINTER_TO_INT(user_data); | |
9150 | 1383 |
1384 /* Set it -- and forget it */ | |
1385 pref = g_strdup_printf("/gaim/gtk/sound/file/%s", | |
9508 | 1386 gaim_gtk_sound_get_event_option(sound)); |
1387 gaim_prefs_set_string(pref, filename); | |
9150 | 1388 g_free(pref); |
1389 | |
9508 | 1390 /* |
1391 * If the sound we just changed is still the currently selected | |
1392 * sound, then update the box showing the file name. | |
1393 */ | |
1394 if (sound == sound_row_sel) | |
1395 gtk_entry_set_text(GTK_ENTRY(sound_entry), filename); | |
9150 | 1396 } |
1397 | |
9508 | 1398 static void select_sound(GtkWidget *button, gpointer being_NULL_is_fun) |
9150 | 1399 { |
9508 | 1400 gchar *pref; |
1401 const char *filename; | |
1402 | |
1403 pref = g_strdup_printf("/gaim/gtk/sound/file/%s", | |
1404 gaim_gtk_sound_get_event_option(sound_row_sel)); | |
1405 filename = gaim_prefs_get_string(pref); | |
1406 g_free(pref); | |
1407 | |
1408 if (*filename == '\0') | |
1409 filename = NULL; | |
1410 | |
1411 gaim_request_file(prefs, _("Sound Selection"), filename, FALSE, | |
1412 G_CALLBACK(sound_chosen_cb), NULL, GINT_TO_POINTER(sound_row_sel)); | |
9150 | 1413 } |
1414 | |
9508 | 1415 static void prefs_sound_sel(GtkTreeSelection *sel, GtkTreeModel *model) { |
9150 | 1416 GtkTreeIter iter; |
1417 GValue val = { 0, }; | |
1418 const char *file; | |
1419 char *pref; | |
1420 | |
1421 if (! gtk_tree_selection_get_selected (sel, &model, &iter)) | |
1422 return; | |
1423 gtk_tree_model_get_value (model, &iter, 3, &val); | |
1424 sound_row_sel = g_value_get_uint(&val); | |
1425 | |
1426 pref = g_strdup_printf("/gaim/gtk/sound/file/%s", | |
1427 gaim_gtk_sound_get_event_option(sound_row_sel)); | |
1428 file = gaim_prefs_get_string(pref); | |
1429 g_free(pref); | |
1430 if (sound_entry) | |
1431 gtk_entry_set_text(GTK_ENTRY(sound_entry), (file && *file != '\0') ? file : "(default)"); | |
1432 g_value_unset (&val); | |
1433 } | |
1434 | |
10850 | 1435 static GtkWidget * |
1436 sound_page() | |
1437 { | |
5440 | 1438 GtkWidget *ret; |
9150 | 1439 GtkWidget *vbox, *sw, *button; |
5440 | 1440 GtkSizeGroup *sg; |
9150 | 1441 GtkTreeIter iter; |
1442 GtkWidget *event_view; | |
1443 GtkListStore *event_store; | |
1444 GtkCellRenderer *rend; | |
1445 GtkTreeViewColumn *col; | |
1446 GtkTreeSelection *sel; | |
1447 GtkTreePath *path; | |
1448 GtkWidget *hbox; | |
1449 int j; | |
1450 const char *file; | |
11082 | 1451 char *pref; |
5440 | 1452 #ifndef _WIN32 |
1453 GtkWidget *dd; | |
1454 GtkWidget *label; | |
6007 | 1455 GtkWidget *entry; |
5684 | 1456 const char *cmd; |
5440 | 1457 #endif |
1458 | |
11243 | 1459 ret = gtk_vbox_new(FALSE, GAIM_HIG_CAT_SPACE); |
1460 gtk_container_set_border_width (GTK_CONTAINER (ret), GAIM_HIG_BORDER); | |
5440 | 1461 |
1462 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); | |
1463 | |
1464 #ifndef _WIN32 | |
6033 | 1465 vbox = gaim_gtk_make_frame (ret, _("Sound Method")); |
7987 | 1466 dd = gaim_gtk_prefs_dropdown(vbox, _("_Method:"), GAIM_PREF_STRING, |
1467 "/gaim/gtk/sound/method", | |
1468 _("Console beep"), "beep", | |
5440 | 1469 #ifdef USE_AO |
7987 | 1470 _("Automatic"), "automatic", |
11082 | 1471 "Arts", "arts", |
7987 | 1472 "ESD", "esd", |
1473 "NAS", "nas", | |
5440 | 1474 #endif |
7987 | 1475 _("Command"), "custom", |
10074 | 1476 _("No sounds"), "none", |
7987 | 1477 NULL); |
5440 | 1478 gtk_size_group_add_widget(sg, dd); |
10973 | 1479 gtk_misc_set_alignment(GTK_MISC(dd), 0, 0.5); |
5440 | 1480 |
1481 hbox = gtk_hbox_new(FALSE, 5); | |
11442
73f7cfa46f1b
[gaim-migrate @ 13681]
Richard Laager <rlaager@wiktel.com>
parents:
11424
diff
changeset
|
1482 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
5440 | 1483 |
6031 | 1484 label = gtk_label_new_with_mnemonic(_("Sound c_ommand:\n(%s for filename)")); |
5440 | 1485 gtk_size_group_add_widget(sg, label); |
1486 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
11442
73f7cfa46f1b
[gaim-migrate @ 13681]
Richard Laager <rlaager@wiktel.com>
parents:
11424
diff
changeset
|
1487 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
5440 | 1488 |
6007 | 1489 entry = gtk_entry_new(); |
1490 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
1491 | |
1492 gtk_editable_set_editable(GTK_EDITABLE(entry), TRUE); | |
5684 | 1493 cmd = gaim_prefs_get_string("/gaim/gtk/sound/command"); |
5440 | 1494 if(cmd) |
6007 | 1495 gtk_entry_set_text(GTK_ENTRY(entry), cmd); |
11442
73f7cfa46f1b
[gaim-migrate @ 13681]
Richard Laager <rlaager@wiktel.com>
parents:
11424
diff
changeset
|
1496 |
73f7cfa46f1b
[gaim-migrate @ 13681]
Richard Laager <rlaager@wiktel.com>
parents:
11424
diff
changeset
|
1497 gtk_box_pack_start(GTK_BOX(hbox), entry, TRUE, TRUE, 0); |
6007 | 1498 g_signal_connect(G_OBJECT(entry), "changed", |
5440 | 1499 G_CALLBACK(sound_cmd_yeah), NULL); |
6005 | 1500 |
1501 gtk_widget_set_sensitive(hbox, | |
1502 !strcmp(gaim_prefs_get_string("/gaim/gtk/sound/method"), | |
1503 "custom")); | |
10087 | 1504 gaim_prefs_connect_callback(prefs, "/gaim/gtk/sound/method", |
1505 sound_changed1_cb, hbox); | |
6005 | 1506 |
8141 | 1507 gaim_set_accessible_label (entry, label); |
5440 | 1508 #endif /* _WIN32 */ |
9150 | 1509 |
10074 | 1510 vbox = gaim_gtk_make_frame (ret, _("Sound Options")); |
1511 gaim_gtk_prefs_checkbox(_("Sounds when conversation has _focus"), | |
1512 "/gaim/gtk/sound/conv_focus", vbox); | |
1513 gaim_gtk_prefs_checkbox(_("_Sounds while away"), | |
1514 "/core/sound/while_away", vbox); | |
1515 | |
10075 | 1516 #ifndef _WIN32 |
10074 | 1517 gtk_widget_set_sensitive(vbox, |
1518 strcmp(gaim_prefs_get_string("/gaim/gtk/sound/method"), "none")); | |
10087 | 1519 gaim_prefs_connect_callback(prefs, "/gaim/gtk/sound/method", |
1520 sound_changed2_cb, vbox); | |
10075 | 1521 #endif |
10074 | 1522 |
9150 | 1523 vbox = gaim_gtk_make_frame(ret, _("Sound Events")); |
1524 | |
1525 /* The following is an ugly hack to make the frame expand so the | |
1526 * sound events list is big enough to be usable */ | |
1527 gtk_box_set_child_packing(GTK_BOX(vbox->parent), vbox, TRUE, TRUE, 0, | |
1528 GTK_PACK_START); | |
1529 gtk_box_set_child_packing(GTK_BOX(vbox->parent->parent), vbox->parent, TRUE, | |
1530 TRUE, 0, GTK_PACK_START); | |
1531 gtk_box_set_child_packing(GTK_BOX(vbox->parent->parent->parent), | |
1532 vbox->parent->parent, TRUE, TRUE, 0, GTK_PACK_START); | |
1533 | |
1534 sw = gtk_scrolled_window_new(NULL,NULL); | |
1535 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); | |
1536 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); | |
1537 | |
1538 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); | |
1539 event_store = gtk_list_store_new (4, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT); | |
1540 | |
1541 for (j=0; j < GAIM_NUM_SOUNDS; j++) { | |
1542 char *pref = g_strdup_printf("/gaim/gtk/sound/enabled/%s", | |
1543 gaim_gtk_sound_get_event_option(j)); | |
1544 const char *label = gaim_gtk_sound_get_event_label(j); | |
1545 | |
1546 if (label == NULL) { | |
1547 g_free(pref); | |
1548 continue; | |
1549 } | |
1550 | |
1551 gtk_list_store_append (event_store, &iter); | |
1552 gtk_list_store_set(event_store, &iter, | |
1553 0, gaim_prefs_get_bool(pref), | |
1554 1, _(label), | |
1555 2, pref, | |
1556 3, j, | |
1557 -1); | |
1558 g_free(pref); | |
1559 } | |
1560 | |
1561 event_view = gtk_tree_view_new_with_model (GTK_TREE_MODEL(event_store)); | |
1562 | |
1563 rend = gtk_cell_renderer_toggle_new(); | |
1564 sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (event_view)); | |
1565 g_signal_connect (G_OBJECT (sel), "changed", | |
1566 G_CALLBACK (prefs_sound_sel), | |
1567 NULL); | |
1568 g_signal_connect (G_OBJECT(rend), "toggled", | |
1569 G_CALLBACK(event_toggled), event_store); | |
1570 path = gtk_tree_path_new_first(); | |
1571 gtk_tree_selection_select_path(sel, path); | |
1572 gtk_tree_path_free(path); | |
1573 | |
1574 col = gtk_tree_view_column_new_with_attributes (_("Play"), | |
1575 rend, | |
1576 "active", 0, | |
1577 NULL); | |
1578 gtk_tree_view_append_column (GTK_TREE_VIEW(event_view), col); | |
1579 | |
1580 rend = gtk_cell_renderer_text_new(); | |
1581 col = gtk_tree_view_column_new_with_attributes (_("Event"), | |
1582 rend, | |
1583 "text", 1, | |
1584 NULL); | |
1585 gtk_tree_view_append_column (GTK_TREE_VIEW(event_view), col); | |
1586 g_object_unref(G_OBJECT(event_store)); | |
1587 gtk_container_add(GTK_CONTAINER(sw), event_view); | |
1588 | |
11243 | 1589 hbox = gtk_hbox_new(FALSE, GAIM_HIG_BOX_SPACE); |
9150 | 1590 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
1591 sound_entry = gtk_entry_new(); | |
1592 pref = g_strdup_printf("/gaim/gtk/sound/file/%s", | |
1593 gaim_gtk_sound_get_event_option(0)); | |
1594 file = gaim_prefs_get_string(pref); | |
1595 g_free(pref); | |
1596 gtk_entry_set_text(GTK_ENTRY(sound_entry), (file && *file != '\0') ? file : "(default)"); | |
1597 gtk_editable_set_editable(GTK_EDITABLE(sound_entry), FALSE); | |
1598 gtk_box_pack_start(GTK_BOX(hbox), sound_entry, FALSE, FALSE, 5); | |
1599 | |
1600 button = gtk_button_new_with_label(_("Test")); | |
1601 g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(test_sound), NULL); | |
1602 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1); | |
1603 | |
1604 button = gtk_button_new_with_label(_("Reset")); | |
1605 g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(reset_sound), NULL); | |
1606 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1); | |
1607 | |
1608 button = gtk_button_new_with_label(_("Choose...")); | |
9508 | 1609 g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(select_sound), NULL); |
9150 | 1610 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1); |
5440 | 1611 gtk_widget_show_all(ret); |
9118 | 1612 |
10075 | 1613 #ifndef _WIN32 |
10074 | 1614 gtk_widget_set_sensitive(vbox, |
1615 strcmp(gaim_prefs_get_string("/gaim/gtk/sound/method"), "none")); | |
10087 | 1616 gaim_prefs_connect_callback(prefs, "/gaim/gtk/sound/method", |
1617 sound_changed2_cb, vbox); | |
10075 | 1618 #endif |
10074 | 1619 |
5440 | 1620 return ret; |
1621 } | |
1622 | |
10182 | 1623 /* XXX CORE/UI */ |
1624 #if 0 | |
1625 static void | |
1626 set_default_away(GtkWidget *w, gpointer data) | |
1627 { | |
1628 struct away_message *default_away = NULL; | |
1629 int length = g_slist_length(away_messages); | |
1630 int i = GPOINTER_TO_INT(data); | |
1631 | |
1632 if (away_messages == NULL) | |
1633 default_away = NULL; | |
1634 else if (i >= length) | |
1635 default_away = g_slist_nth_data(away_messages, length - 1); | |
1636 else | |
1637 default_away = g_slist_nth_data(away_messages, i); | |
1638 | |
1639 if(default_away) | |
1640 gaim_prefs_set_string("/core/away/default_message", default_away->name); | |
1641 else | |
1642 gaim_prefs_set_string("/core/away/default_message", ""); | |
1643 } | |
1644 #endif | |
1645 | |
10850 | 1646 static GtkWidget * |
1647 away_page() | |
1648 { | |
5440 | 1649 GtkWidget *ret; |
1650 GtkWidget *vbox; | |
1651 GtkWidget *hbox; | |
1652 GtkWidget *label; | |
1653 GtkWidget *button; | |
1654 GtkWidget *select; | |
1655 GtkSizeGroup *sg; | |
1656 | |
11243 | 1657 ret = gtk_vbox_new(FALSE, GAIM_HIG_CAT_SPACE); |
1658 gtk_container_set_border_width (GTK_CONTAINER (ret), GAIM_HIG_BORDER); | |
5440 | 1659 |
1660 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); | |
1661 | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1662 vbox = gaim_gtk_make_frame (ret, _("Away")); |
7987 | 1663 gaim_gtk_prefs_checkbox(_("_Queue new messages when away"), |
5573
5e7de337a053
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5568
diff
changeset
|
1664 "/gaim/gtk/away/queue_messages", vbox); |
5440 | 1665 |
9596 | 1666 label = gaim_gtk_prefs_dropdown(vbox, _("_Auto-reply:"), |
1667 GAIM_PREF_STRING, "/core/away/auto_reply", | |
1668 _("Never"), "never", | |
9736 | 1669 _("When away"), "away", |
10859 | 1670 _("When both away and idle"), "awayidle", |
9596 | 1671 NULL); |
6142 | 1672 |
11287
fb6e85c55fb8
[gaim-migrate @ 13484]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11275
diff
changeset
|
1673 button = gaim_gtk_prefs_checkbox(_("_Report idle time"), |
fb6e85c55fb8
[gaim-migrate @ 13484]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11275
diff
changeset
|
1674 "/gaim/gtk/idle/report", vbox); |
fb6e85c55fb8
[gaim-migrate @ 13484]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11275
diff
changeset
|
1675 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1676 vbox = gaim_gtk_make_frame (ret, _("Auto-away")); |
11811 | 1677 button = gaim_gtk_prefs_checkbox(_("Change status when _idle"), |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1678 "/core/away/away_when_idle", vbox); |
8238 | 1679 |
7987 | 1680 select = gaim_gtk_prefs_labeled_spin_button(vbox, |
11811 | 1681 _("_Minutes before changing status:"), "/core/away/mins_before_away", |
7987 | 1682 1, 24 * 60, sg); |
5440 | 1683 g_signal_connect(G_OBJECT(button), "clicked", |
1684 G_CALLBACK(gaim_gtk_toggle_sensitive), select); | |
1685 | |
8238 | 1686 hbox = gtk_hbox_new(FALSE, 0); |
1687 gtk_container_add(GTK_CONTAINER(vbox), hbox); | |
1688 | |
11811 | 1689 label = gtk_label_new_with_mnemonic(_("Change _status to:")); |
5440 | 1690 gtk_size_group_add_widget(sg, label); |
10973 | 1691 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
8238 | 1692 g_signal_connect(G_OBJECT(button), "clicked", |
1693 G_CALLBACK(gaim_gtk_toggle_sensitive), label); | |
5440 | 1694 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
8238 | 1695 |
11811 | 1696 /* |
1697 * TODO: Need to allow users to choose a GaimSavedStatus | |
1698 * to use when going idle-away. Or figure out a | |
11985 | 1699 * better UI for this. Set the preference |
1700 * "/core/status/idleaway" to the name of the | |
1701 * GaimSavedStatus to use. | |
1702 * | |
11811 | 1703 */ |
1704 | |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1705 if (!gaim_prefs_get_bool("/core/away/away_when_idle")) { |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1706 gtk_widget_set_sensitive(GTK_WIDGET(select), FALSE); |
8238 | 1707 gtk_widget_set_sensitive(GTK_WIDGET(label), FALSE); |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1708 } |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1709 |
5440 | 1710 gtk_widget_show_all(ret); |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1711 |
5440 | 1712 return ret; |
1713 } | |
1714 | |
10759 | 1715 int prefs_notebook_add_page(const char *text, |
5440 | 1716 GdkPixbuf *pixbuf, |
1717 GtkWidget *page, | |
1718 GtkTreeIter *iter, | |
1719 GtkTreeIter *parent, | |
1720 int ind) { | |
1721 GdkPixbuf *icon = NULL; | |
1722 | |
1723 if (pixbuf) | |
1724 icon = gdk_pixbuf_scale_simple (pixbuf, 18, 18, GDK_INTERP_BILINEAR); | |
1725 | |
1726 if (pixbuf) | |
1727 g_object_unref(pixbuf); | |
1728 if (icon) | |
1729 g_object_unref(icon); | |
10759 | 1730 |
11380 | 1731 #if GTK_CHECK_VERSION(2,4,0) |
10759 | 1732 return gtk_notebook_append_page(GTK_NOTEBOOK(prefsnotebook), page, gtk_label_new(text)); |
11380 | 1733 #else |
1734 gtk_notebook_append_page(GTK_NOTEBOOK(prefsnotebook), page, gtk_label_new(text)); | |
1735 return gtk_notebook_page_num(GTK_NOTEBOOK(prefsnotebook), page); | |
1736 #endif | |
5440 | 1737 } |
1738 | |
10871 | 1739 static void prefs_notebook_init() { |
9267 | 1740 GtkTreeIter p, c, c2; |
9150 | 1741 prefs_notebook_add_page(_("Conversations"), NULL, conv_page(), &c, &p, notebook_page++); |
9267 | 1742 prefs_notebook_add_page(_("Smiley Themes"), NULL, theme_page(), &c2, &c, notebook_page++); |
9150 | 1743 prefs_notebook_add_page(_("Sounds"), NULL, sound_page(), &c, &p, notebook_page++); |
8238 | 1744 prefs_notebook_add_page(_("Network"), NULL, network_page(), &p, NULL, notebook_page++); |
5440 | 1745 #ifndef _WIN32 |
1746 /* We use the registered default browser in windows */ | |
10060 | 1747 /* if the user is running gnome 2.x, hide the browsers tab */ |
10061 | 1748 if (gaim_running_gnome() == FALSE) { |
10060 | 1749 prefs_notebook_add_page(_("Browser"), NULL, browser_page(), &p, NULL, notebook_page++); |
1750 } | |
5440 | 1751 #endif |
1752 prefs_notebook_add_page(_("Logging"), NULL, logging_page(), &p, NULL, notebook_page++); | |
1753 prefs_notebook_add_page(_("Away / Idle"), NULL, away_page(), &p, NULL, notebook_page++); | |
1754 } | |
1755 | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1756 void gaim_gtk_prefs_show(void) |
5440 | 1757 { |
10078 | 1758 GtkWidget *vbox; |
8292
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
1759 GtkWidget *bbox; |
5440 | 1760 GtkWidget *notebook; |
1761 GtkWidget *button; | |
1762 | |
1763 if (prefs) { | |
1764 gtk_window_present(GTK_WINDOW(prefs)); | |
1765 return; | |
1766 } | |
1767 | |
1768 /* copy the preferences to tmp values... | |
1769 * I liked "take affect immediately" Oh well :-( */ | |
6016 | 1770 /* (that should have been "effect," right?) */ |
1771 | |
5440 | 1772 /* Back to instant-apply! I win! BU-HAHAHA! */ |
1773 | |
1774 /* Create the window */ | |
1775 prefs = gtk_window_new(GTK_WINDOW_TOPLEVEL); | |
1776 gtk_window_set_role(GTK_WINDOW(prefs), "preferences"); | |
1777 gtk_window_set_title(GTK_WINDOW(prefs), _("Preferences")); | |
1778 gtk_window_set_resizable (GTK_WINDOW(prefs), FALSE); | |
11243 | 1779 gtk_container_set_border_width(GTK_CONTAINER(prefs), GAIM_HIG_BORDER); |
5440 | 1780 g_signal_connect(G_OBJECT(prefs), "destroy", |
1781 G_CALLBACK(delete_prefs), NULL); | |
1782 | |
11243 | 1783 vbox = gtk_vbox_new(FALSE, GAIM_HIG_BORDER); |
5440 | 1784 gtk_container_add(GTK_CONTAINER(prefs), vbox); |
1785 gtk_widget_show(vbox); | |
1786 | |
1787 /* The notebook */ | |
1788 prefsnotebook = notebook = gtk_notebook_new (); | |
10078 | 1789 gtk_box_pack_start (GTK_BOX (vbox), notebook, FALSE, FALSE, 0); |
11740 | 1790 gtk_widget_show(prefsnotebook); |
5440 | 1791 |
8713 | 1792 /* The buttons to press! */ |
8292
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
1793 bbox = gtk_hbutton_box_new(); |
11243 | 1794 gtk_box_set_spacing(GTK_BOX(bbox), GAIM_HIG_BOX_SPACE); |
8292
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
1795 gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END); |
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
1796 gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 0); |
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
1797 gtk_widget_show (bbox); |
5440 | 1798 |
1799 button = gtk_button_new_from_stock (GTK_STOCK_CLOSE); | |
1800 g_signal_connect_swapped(G_OBJECT(button), "clicked", | |
1801 G_CALLBACK(gtk_widget_destroy), prefs); | |
8292
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
1802 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); |
5440 | 1803 gtk_widget_show(button); |
1804 | |
1805 prefs_notebook_init(); | |
1806 | |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1807 /* Show everything. */ |
11740 | 1808 gtk_widget_show(prefs); |
5440 | 1809 } |
1810 | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1811 static void |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1812 set_bool_pref(GtkWidget *w, const char *key) |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1813 { |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1814 gaim_prefs_set_bool(key, |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1815 gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1816 } |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1817 |
7976 | 1818 GtkWidget * |
7987 | 1819 gaim_gtk_prefs_checkbox(const char *text, const char *key, GtkWidget *page) |
5440 | 1820 { |
1821 GtkWidget *button; | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1822 |
5440 | 1823 button = gtk_check_button_new_with_mnemonic(text); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1824 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1825 gaim_prefs_get_bool(key)); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1826 |
5440 | 1827 gtk_box_pack_start(GTK_BOX(page), button, FALSE, FALSE, 0); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1828 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1829 g_signal_connect(G_OBJECT(button), "clicked", |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
1830 G_CALLBACK(set_bool_pref), (char *)key); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1831 |
5440 | 1832 gtk_widget_show(button); |
1833 | |
1834 return button; | |
1835 } | |
1836 | |
5770
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
1837 static void |
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
1838 smiley_theme_pref_cb(const char *name, GaimPrefType type, gpointer value, |
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
1839 gpointer data) |
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
1840 { |
11557
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1841 const char *themename = value; |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1842 GSList *themes; |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1843 |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1844 for (themes = smiley_themes; themes; themes = themes->next) { |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1845 struct smiley_theme *smile = themes->data; |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1846 if (smile->name && strcmp(themename, smile->name) == 0) { |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1847 gaim_gtkthemes_load_smiley_theme(smile->path, TRUE); |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1848 break; |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1849 } |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1850 } |
5770
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
1851 } |
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
1852 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1853 void |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1854 gaim_gtk_prefs_init(void) |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1855 { |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1856 gaim_prefs_add_none("/gaim"); |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1857 gaim_prefs_add_none("/gaim/gtk"); |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1858 gaim_prefs_add_none("/plugins/gtk"); |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1859 |
5573
5e7de337a053
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5568
diff
changeset
|
1860 /* Away Queueing */ |
5e7de337a053
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5568
diff
changeset
|
1861 gaim_prefs_add_none("/gaim/gtk/away"); |
5e7de337a053
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5568
diff
changeset
|
1862 gaim_prefs_add_bool("/gaim/gtk/away/queue_messages", FALSE); |
5e7de337a053
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5568
diff
changeset
|
1863 |
8283 | 1864 #ifndef _WIN32 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1865 /* Browsers */ |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1866 gaim_prefs_add_none("/gaim/gtk/browsers"); |
8272 | 1867 gaim_prefs_add_int("/gaim/gtk/browsers/place", GAIM_BROWSER_DEFAULT); |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1868 gaim_prefs_add_string("/gaim/gtk/browsers/command", ""); |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
1869 gaim_prefs_add_string("/gaim/gtk/browsers/browser", "mozilla"); |
8283 | 1870 #endif |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1871 |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1872 /* Idle */ |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1873 gaim_prefs_add_none("/gaim/gtk/idle"); |
11287
fb6e85c55fb8
[gaim-migrate @ 13484]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11275
diff
changeset
|
1874 gaim_prefs_add_bool("/gaim/gtk/idle/report", TRUE); |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1875 |
5949
90d0849abd3c
[gaim-migrate @ 6393]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1876 /* Plugins */ |
5982
35d3c1ac5ece
[gaim-migrate @ 6430]
Christian Hammond <chipx86@chipx86.com>
parents:
5981
diff
changeset
|
1877 gaim_prefs_add_none("/gaim/gtk/plugins"); |
5949
90d0849abd3c
[gaim-migrate @ 6393]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1878 gaim_prefs_add_string_list("/gaim/gtk/plugins/loaded", NULL); |
90d0849abd3c
[gaim-migrate @ 6393]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1879 |
10605 | 1880 /* File locations */ |
1881 gaim_prefs_add_none("/gaim/gtk/filelocations"); | |
1882 gaim_prefs_add_string("/gaim/gtk/filelocations/last_save_folder", ""); | |
1883 gaim_prefs_add_string("/gaim/gtk/filelocations/last_open_folder", ""); | |
1884 gaim_prefs_add_string("/gaim/gtk/filelocations/last_icon_folder", ""); | |
1885 | |
5539
de09863bd4b5
[gaim-migrate @ 5939]
Christian Hammond <chipx86@chipx86.com>
parents:
5535
diff
changeset
|
1886 /* Smiley Themes */ |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
1887 gaim_prefs_add_none("/gaim/gtk/smileys"); |
11557
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1888 gaim_prefs_add_string("/gaim/gtk/smileys/theme", "Default"); |
5770
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
1889 |
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
1890 /* Smiley Callbacks */ |
10087 | 1891 gaim_prefs_connect_callback(prefs, "/gaim/gtk/smileys/theme", |
5770
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
1892 smiley_theme_pref_cb, NULL); |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1893 } |
8905 | 1894 |
1895 void gaim_gtk_prefs_update_old() { | |
1896 /* Rename some old prefs */ | |
1897 gaim_prefs_rename("/gaim/gtk/logging/log_ims", "/core/logging/log_ims"); | |
1898 gaim_prefs_rename("/gaim/gtk/logging/log_chats", "/core/logging/log_chats"); | |
1899 gaim_prefs_rename("/core/conversations/placement", | |
8998 | 1900 "/gaim/gtk/conversations/placement"); |
8905 | 1901 |
10307 | 1902 gaim_prefs_rename("/gaim/gtk/debug/timestamps", "/core/debug/timestamps"); |
10701 | 1903 gaim_prefs_rename("/gaim/gtk/conversations/im/raise_on_events", "/plugins/gtk/X11/notify/method_raise"); |
10307 | 1904 |
11267
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
1905 /* I'm leaving both of these to support people that were running 2.0.0cvs before this change. |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
1906 * The latter can be removed before 2.0.0 is released, or after that if it's forgotten. */ |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
1907 gaim_prefs_rename_boolean_toggle("/gaim/gtk/conversations/ignore_colors", |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
1908 "/gaim/gtk/conversations/show_incoming_formatting"); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
1909 gaim_prefs_rename_boolean_toggle("/gaim/gtk/conversations/ignore_formatting", |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
1910 "/gaim/gtk/conversations/show_incoming_formatting"); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
1911 |
8905 | 1912 /* Remove some no-longer-used prefs */ |
10398 | 1913 gaim_prefs_remove("/gaim/gtk/blist/auto_expand_contacts"); |
10133 | 1914 gaim_prefs_remove("/gaim/gtk/blist/button_style"); |
10168 | 1915 gaim_prefs_remove("/gaim/gtk/blist/grey_idle_buddies"); |
10133 | 1916 gaim_prefs_remove("/gaim/gtk/blist/raise_on_events"); |
8945 | 1917 gaim_prefs_remove("/gaim/gtk/blist/show_group_count"); |
10353 | 1918 gaim_prefs_remove("/gaim/gtk/blist/show_idle_time"); |
1919 gaim_prefs_remove("/gaim/gtk/blist/show_warning_level"); | |
10358 | 1920 gaim_prefs_remove("/gaim/gtk/conversations/button_type"); |
10398 | 1921 gaim_prefs_remove("/gaim/gtk/conversations/ctrl_enter_sends"); |
1922 gaim_prefs_remove("/gaim/gtk/conversations/enter_sends"); | |
11697 | 1923 gaim_prefs_remove("/gaim/gtk/conversations/escape_closes"); |
10164 | 1924 gaim_prefs_remove("/gaim/gtk/conversations/html_shortcuts"); |
8946 | 1925 gaim_prefs_remove("/gaim/gtk/conversations/icons_on_tabs"); |
11267
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
1926 gaim_prefs_remove("/gaim/gtk/conversations/send_formatting"); |
10398 | 1927 gaim_prefs_remove("/gaim/gtk/conversations/show_smileys"); |
1928 gaim_prefs_remove("/gaim/gtk/conversations/show_timestamps"); | |
8905 | 1929 gaim_prefs_remove("/gaim/gtk/conversations/show_urls_as_links"); |
10164 | 1930 gaim_prefs_remove("/gaim/gtk/conversations/smiley_shortcuts"); |
9025 | 1931 gaim_prefs_remove("/gaim/gtk/conversations/use_custom_bgcolor"); |
1932 gaim_prefs_remove("/gaim/gtk/conversations/use_custom_fgcolor"); | |
11269
1cbe76d30e81
[gaim-migrate @ 13451]
Richard Laager <rlaager@wiktel.com>
parents:
11267
diff
changeset
|
1933 gaim_prefs_remove("/gaim/gtk/conversations/use_custom_font"); |
9025 | 1934 gaim_prefs_remove("/gaim/gtk/conversations/use_custom_size"); |
10398 | 1935 gaim_prefs_remove("/gaim/gtk/conversations/chat/old_tab_complete"); |
1936 gaim_prefs_remove("/gaim/gtk/conversations/chat/tab_completion"); | |
9301 | 1937 gaim_prefs_remove("/gaim/gtk/conversations/im/hide_on_send"); |
10398 | 1938 gaim_prefs_remove("/gaim/gtk/conversations/chat/color_nicks"); |
1939 gaim_prefs_remove("/gaim/gtk/conversations/chat/raise_on_events"); | |
10492 | 1940 gaim_prefs_remove("/gaim/gtk/conversations/ignore_fonts"); |
1941 gaim_prefs_remove("/gaim/gtk/conversations/ignore_font_sizes"); | |
11697 | 1942 gaim_prefs_remove("/gaim/gtk/idle/method"); |
10398 | 1943 gaim_prefs_remove("/gaim/gtk/logging/individual_logs"); |
1944 gaim_prefs_remove("/gaim/gtk/sound/signon"); | |
1945 gaim_prefs_remove("/gaim/gtk/sound/silent_signon"); | |
8905 | 1946 } |