Mercurial > pidgin.yaz
annotate src/gtkprefs.c @ 11849:dc51cdcb648e
[gaim-migrate @ 14140]
sf patch #1339135, from Sadrul Habib Chowdhury
Hi. Bleeter found this bug:
(1) open up some conversation window
(2) open the smiley dialog
(3) close the conversation window. the smiley dialog
remains open
(4) select some smiley
(5) Gaim crashes
This patch fixes this crash. It shouldn't cause any
probs with regards to gtk-version-checking. The other
code handling the smiley-dialog doesn't do the
version-checking, so this shouldn't be necessary either.
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Thu, 27 Oct 2005 12:00:17 +0000 |
parents | 60fcaea41fc0 |
children | f672349cfc1c |
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; |
5440 | 799 |
11243 | 800 ret = gtk_vbox_new(FALSE, GAIM_HIG_BOX_SPACE); |
801 gtk_container_set_border_width(GTK_CONTAINER(ret), GAIM_HIG_BORDER); | |
5440 | 802 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
803 vbox = gaim_gtk_make_frame(ret, _("Conversations")); |
5440 | 804 |
9832 | 805 gaim_gtk_prefs_checkbox(_("Send unknown \"_slash\" commands as messages"), |
806 "/gaim/gtk/conversations/passthrough_unknown_commands", vbox); | |
11267
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
807 gaim_gtk_prefs_checkbox(_("Show _formatting on incoming messages"), |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
808 "/gaim/gtk/conversations/show_incoming_formatting", vbox); |
9150 | 809 gaim_gtk_prefs_checkbox(_("Show buddy _icons"), |
810 "/gaim/gtk/conversations/im/show_buddy_icons", vbox); | |
9155 | 811 gaim_gtk_prefs_checkbox(_("Enable buddy ic_on animation"), |
9150 | 812 "/gaim/gtk/conversations/im/animate_buddy_icons", vbox); |
9155 | 813 gaim_gtk_prefs_checkbox(_("_Notify buddies that you are typing to them"), |
9150 | 814 "/core/conversations/im/send_typing", vbox); |
11267
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
815 #ifdef USE_GTKSPELL |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
816 gaim_gtk_prefs_checkbox(_("_Highlight misspelled words"), |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
817 "/gaim/gtk/conversations/spellcheck", vbox); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
818 #endif |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
819 |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
820 frame = gaim_gtk_create_imhtml(TRUE, &imhtml, &toolbar); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
821 gtk_widget_set_name(imhtml, "gaim_gtkprefs_font_imhtml"); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
822 gtk_imhtml_set_whole_buffer_formatting_only(GTK_IMHTML(imhtml), TRUE); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
823 gtk_imhtml_set_format_functions(GTK_IMHTML(imhtml), |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
824 GTK_IMHTML_BOLD | |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
825 GTK_IMHTML_ITALIC | |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
826 GTK_IMHTML_UNDERLINE | |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
827 GTK_IMHTML_GROW | |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
828 GTK_IMHTML_SHRINK | |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
829 GTK_IMHTML_FACE | |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
830 GTK_IMHTML_FORECOLOR | |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
831 GTK_IMHTML_BACKCOLOR | |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
832 GTK_IMHTML_BACKGROUND); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
833 |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
834 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
|
835 |
11271
b33eccbc3a10
[gaim-migrate @ 13454]
Richard Laager <rlaager@wiktel.com>
parents:
11269
diff
changeset
|
836 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
|
837 |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
838 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_bold")) |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
839 gtk_imhtml_toggle_bold(GTK_IMHTML(imhtml)); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
840 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_italic")) |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
841 gtk_imhtml_toggle_italic(GTK_IMHTML(imhtml)); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
842 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_underline")) |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
843 gtk_imhtml_toggle_underline(GTK_IMHTML(imhtml)); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
844 |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
845 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
|
846 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
|
847 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
|
848 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
|
849 |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
850 g_signal_connect_after(G_OBJECT(imhtml), "format_function_toggle", |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
851 G_CALLBACK(formatting_toggle_cb), toolbar); |
11275
ffc86d9ad8b7
[gaim-migrate @ 13461]
Richard Laager <rlaager@wiktel.com>
parents:
11271
diff
changeset
|
852 g_signal_connect_after(G_OBJECT(imhtml), "format_function_clear", |
ffc86d9ad8b7
[gaim-migrate @ 13461]
Richard Laager <rlaager@wiktel.com>
parents:
11271
diff
changeset
|
853 G_CALLBACK(formatting_clear_cb), NULL); |
9155 | 854 |
855 /* All the tab options! */ | |
856 vbox = gaim_gtk_make_frame(ret, _("Tab Options")); | |
857 | |
858 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
|
859 "/gaim/gtk/conversations/tabs", vbox); |
9155 | 860 |
861 /* | |
862 * Connect a signal to the above preference. When conversations are not | |
863 * shown in a tabbed window then all tabbing options should be disabled. | |
864 */ | |
10972 | 865 vbox2 = gtk_vbox_new(FALSE, 9); |
9155 | 866 gtk_box_pack_start(GTK_BOX(vbox), vbox2, FALSE, FALSE, 0); |
10087 | 867 gaim_prefs_connect_callback(prefs, "/gaim/gtk/conversations/tabs", |
868 conversation_usetabs_cb, vbox2); | |
9155 | 869 if (!gaim_prefs_get_bool("/gaim/gtk/conversations/tabs")) |
870 gtk_widget_set_sensitive(vbox2, FALSE); | |
871 | |
9891 | 872 gaim_gtk_prefs_checkbox(_("Show close b_utton on tabs"), |
9155 | 873 "/gaim/gtk/conversations/close_on_tabs", vbox2); |
874 | |
11267
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
875 hbox = gtk_hbox_new(FALSE, 9); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
876 gtk_box_pack_start(GTK_BOX(vbox2), hbox, FALSE, FALSE, 0); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
877 |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
878 label = gaim_gtk_prefs_dropdown(hbox, _("_Placement:"), GAIM_PREF_INT, |
8988 | 879 "/gaim/gtk/conversations/tab_side", |
880 _("Top"), GTK_POS_TOP, | |
881 _("Bottom"), GTK_POS_BOTTOM, | |
882 _("Left"), GTK_POS_LEFT, | |
883 _("Right"), GTK_POS_RIGHT, | |
11619 | 884 #if GTK_CHECK_VERSION(2,6,0) |
885 _("Left Vertical"), GTK_POS_LEFT|8, | |
886 _("Right Vertical"), GTK_POS_RIGHT|8, | |
887 #endif | |
8988 | 888 NULL); |
889 | |
11581 | 890 names = gaim_gtkconv_placement_get_options(); |
11267
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
891 label = gaim_gtk_prefs_dropdown_from_list(hbox, _("N_ew conversations:"), |
9155 | 892 GAIM_PREF_STRING, "/gaim/gtk/conversations/placement", names); |
893 g_list_free(names); | |
894 | |
5440 | 895 gtk_widget_show_all(ret); |
896 | |
897 return ret; | |
898 } | |
899 | |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
900 static void network_ip_changed(GtkEntry *entry, gpointer data) |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
901 { |
8834 | 902 gaim_network_set_public_ip(gtk_entry_get_text(entry)); |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
903 } |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
904 |
9150 | 905 static void |
906 proxy_changed_cb(const char *name, GaimPrefType type, gpointer value, | |
907 gpointer data) | |
908 { | |
909 GtkWidget *frame = data; | |
910 const char *proxy = value; | |
911 | |
912 if (strcmp(proxy, "none") && strcmp(proxy, "envvar")) | |
11746 | 913 gtk_widget_show_all(frame); |
9150 | 914 else |
11740 | 915 gtk_widget_hide(frame); |
9150 | 916 } |
917 | |
918 static void proxy_print_option(GtkEntry *entry, int entrynum) | |
919 { | |
920 if (entrynum == PROXYHOST) | |
921 gaim_prefs_set_string("/core/proxy/host", gtk_entry_get_text(entry)); | |
922 else if (entrynum == PROXYPORT) | |
923 gaim_prefs_set_int("/core/proxy/port", atoi(gtk_entry_get_text(entry))); | |
924 else if (entrynum == PROXYUSER) | |
925 gaim_prefs_set_string("/core/proxy/username", gtk_entry_get_text(entry)); | |
926 else if (entrynum == PROXYPASS) | |
927 gaim_prefs_set_string("/core/proxy/password", gtk_entry_get_text(entry)); | |
928 } | |
929 | |
10850 | 930 static GtkWidget * |
931 network_page() | |
932 { | |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
933 GtkWidget *ret; |
9150 | 934 GtkWidget *vbox, *hbox, *entry; |
11424 | 935 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
|
936 GtkSizeGroup *sg; |
9150 | 937 GaimProxyInfo *proxy_info; |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
938 |
11243 | 939 ret = gtk_vbox_new(FALSE, GAIM_HIG_BOX_SPACE); |
940 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
|
941 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
942 vbox = gaim_gtk_make_frame (ret, _("IP Address")); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
943 |
11442
73f7cfa46f1b
[gaim-migrate @ 13681]
Richard Laager <rlaager@wiktel.com>
parents:
11424
diff
changeset
|
944 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
|
945 |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
946 auto_ip_checkbox = gaim_gtk_prefs_checkbox(_("_Autodetect IP Address"), |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
947 "/core/network/auto_ip", vbox); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
948 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
949 table = gtk_table_new(2, 1, FALSE); |
11442
73f7cfa46f1b
[gaim-migrate @ 13681]
Richard Laager <rlaager@wiktel.com>
parents:
11424
diff
changeset
|
950 gtk_container_set_border_width(GTK_CONTAINER(table), 0); |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
951 gtk_table_set_col_spacings(GTK_TABLE(table), 5); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
952 gtk_table_set_row_spacings(GTK_TABLE(table), 10); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
953 gtk_container_add(GTK_CONTAINER(vbox), table); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
954 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
955 label = gtk_label_new_with_mnemonic(_("Public _IP:")); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
956 gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
957 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
|
958 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
959 entry = gtk_entry_new(); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
960 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
961 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
|
962 g_signal_connect(G_OBJECT(entry), "changed", |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
963 G_CALLBACK(network_ip_changed), NULL); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
964 |
8834 | 965 if (gaim_network_get_public_ip() != NULL) |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
966 gtk_entry_set_text(GTK_ENTRY(entry), |
8834 | 967 gaim_network_get_public_ip()); |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
968 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
969 gaim_set_accessible_label (entry, label); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
970 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
971 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
972 if (gaim_prefs_get_bool("/core/network/auto_ip")) { |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
973 gtk_widget_set_sensitive(GTK_WIDGET(table), FALSE); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
974 } |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
975 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
976 g_signal_connect(G_OBJECT(auto_ip_checkbox), "clicked", |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
977 G_CALLBACK(gaim_gtk_toggle_sensitive), table); |
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 vbox = gaim_gtk_make_frame (ret, _("Ports")); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
980 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
981 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
982 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
|
983 "/core/network/ports_range_use", vbox); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
984 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
985 spin_button = gaim_gtk_prefs_labeled_spin_button(vbox, _("_Start Port:"), |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
986 "/core/network/ports_range_start", 0, 65535, sg); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
987 if (!gaim_prefs_get_bool("/core/network/ports_range_use")) |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
988 gtk_widget_set_sensitive(GTK_WIDGET(spin_button), FALSE); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
989 g_signal_connect(G_OBJECT(ports_checkbox), "clicked", |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
990 G_CALLBACK(gaim_gtk_toggle_sensitive), spin_button); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
991 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
992 spin_button = gaim_gtk_prefs_labeled_spin_button(vbox, _("_End Port:"), |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
993 "/core/network/ports_range_end", 0, 65535, sg); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
994 if (!gaim_prefs_get_bool("/core/network/ports_range_use")) |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
995 gtk_widget_set_sensitive(GTK_WIDGET(spin_button), FALSE); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
996 g_signal_connect(G_OBJECT(ports_checkbox), "clicked", |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
997 G_CALLBACK(gaim_gtk_toggle_sensitive), spin_button); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
998 |
9150 | 999 vbox = gaim_gtk_make_frame(ret, _("Proxy Server")); |
1000 prefs_proxy_frame = gtk_vbox_new(FALSE, 0); | |
7987 | 1001 gaim_gtk_prefs_dropdown(vbox, _("Proxy _type:"), GAIM_PREF_STRING, |
9150 | 1002 "/core/proxy/type", |
1003 _("No proxy"), "none", | |
1004 "SOCKS 4", "socks4", | |
1005 "SOCKS 5", "socks5", | |
1006 "HTTP", "http", | |
1007 _("Use Environmental Settings"), "envvar", | |
1008 NULL); | |
1009 gtk_box_pack_start(GTK_BOX(vbox), prefs_proxy_frame, 0, 0, 0); | |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1010 proxy_info = gaim_global_proxy_get_info(); |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1011 |
10087 | 1012 gaim_prefs_connect_callback(prefs, "/core/proxy/type", |
11740 | 1013 proxy_changed_cb, prefs_proxy_frame); |
9150 | 1014 |
1015 table = gtk_table_new(4, 2, FALSE); | |
11442
73f7cfa46f1b
[gaim-migrate @ 13681]
Richard Laager <rlaager@wiktel.com>
parents:
11424
diff
changeset
|
1016 gtk_container_set_border_width(GTK_CONTAINER(table), 0); |
5440 | 1017 gtk_table_set_col_spacings(GTK_TABLE(table), 5); |
1018 gtk_table_set_row_spacings(GTK_TABLE(table), 10); | |
9150 | 1019 gtk_container_add(GTK_CONTAINER(prefs_proxy_frame), table); |
5440 | 1020 |
1021 | |
7797 | 1022 label = gtk_label_new_with_mnemonic(_("_Host:")); |
5440 | 1023 gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); |
1024 gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1, GTK_FILL, 0, 0, 0); | |
1025 | |
1026 entry = gtk_entry_new(); | |
1027 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
1028 gtk_table_attach(GTK_TABLE(table), entry, 1, 2, 0, 1, GTK_FILL, 0, 0, 0); | |
1029 g_signal_connect(G_OBJECT(entry), "changed", | |
1030 G_CALLBACK(proxy_print_option), (void *)PROXYHOST); | |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1031 |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1032 if (proxy_info != NULL && gaim_proxy_info_get_host(proxy_info)) |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1033 gtk_entry_set_text(GTK_ENTRY(entry), |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1034 gaim_proxy_info_get_host(proxy_info)); |
5440 | 1035 |
1036 hbox = gtk_hbox_new(TRUE, 5); | |
1037 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
8137 | 1038 gaim_set_accessible_label (entry, label); |
5440 | 1039 |
7870 | 1040 label = gtk_label_new_with_mnemonic(_("_Port:")); |
5440 | 1041 gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); |
9150 | 1042 gtk_table_attach(GTK_TABLE(table), label, 2, 3, 0, 1, GTK_FILL, 0, 0, 0); |
5440 | 1043 |
1044 entry = gtk_entry_new(); | |
1045 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
9150 | 1046 gtk_table_attach(GTK_TABLE(table), entry, 3, 4, 0, 1, GTK_FILL, 0, 0, 0); |
5440 | 1047 g_signal_connect(G_OBJECT(entry), "changed", |
1048 G_CALLBACK(proxy_print_option), (void *)PROXYPORT); | |
1049 | |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1050 if (proxy_info != NULL && gaim_proxy_info_get_port(proxy_info) != 0) { |
5440 | 1051 char buf[128]; |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1052 g_snprintf(buf, sizeof(buf), "%d", |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1053 gaim_proxy_info_get_port(proxy_info)); |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1054 |
5440 | 1055 gtk_entry_set_text(GTK_ENTRY(entry), buf); |
1056 } | |
8137 | 1057 gaim_set_accessible_label (entry, label); |
5440 | 1058 |
7797 | 1059 label = gtk_label_new_with_mnemonic(_("_User:")); |
5440 | 1060 gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); |
9150 | 1061 gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2, GTK_FILL, 0, 0, 0); |
5440 | 1062 |
1063 entry = gtk_entry_new(); | |
1064 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
9150 | 1065 gtk_table_attach(GTK_TABLE(table), entry, 1, 2, 1, 2, GTK_FILL, 0, 0, 0); |
5440 | 1066 g_signal_connect(G_OBJECT(entry), "changed", |
1067 G_CALLBACK(proxy_print_option), (void *)PROXYUSER); | |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1068 |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1069 if (proxy_info != NULL && gaim_proxy_info_get_username(proxy_info) != NULL) |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1070 gtk_entry_set_text(GTK_ENTRY(entry), |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1071 gaim_proxy_info_get_username(proxy_info)); |
5440 | 1072 |
1073 hbox = gtk_hbox_new(TRUE, 5); | |
1074 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
8137 | 1075 gaim_set_accessible_label (entry, label); |
5440 | 1076 |
7797 | 1077 label = gtk_label_new_with_mnemonic(_("Pa_ssword:")); |
5440 | 1078 gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); |
9150 | 1079 gtk_table_attach(GTK_TABLE(table), label, 2, 3, 1, 2, GTK_FILL, 0, 0, 0); |
5440 | 1080 |
1081 entry = gtk_entry_new(); | |
1082 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
9150 | 1083 gtk_table_attach(GTK_TABLE(table), entry, 3, 4, 1, 2, GTK_FILL , 0, 0, 0); |
5440 | 1084 gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE); |
1085 g_signal_connect(G_OBJECT(entry), "changed", | |
1086 G_CALLBACK(proxy_print_option), (void *)PROXYPASS); | |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1087 |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1088 if (proxy_info != NULL && gaim_proxy_info_get_password(proxy_info) != NULL) |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1089 gtk_entry_set_text(GTK_ENTRY(entry), |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1090 gaim_proxy_info_get_password(proxy_info)); |
8137 | 1091 gaim_set_accessible_label (entry, label); |
5440 | 1092 |
1093 gtk_widget_show_all(ret); | |
11740 | 1094 if (proxy_info == NULL || |
1095 gaim_proxy_info_get_type(proxy_info) == GAIM_PROXY_NONE || | |
1096 gaim_proxy_info_get_type(proxy_info) == GAIM_PROXY_USE_ENVVAR) | |
1097 gtk_widget_hide(table); | |
5440 | 1098 return ret; |
1099 } | |
1100 | |
1101 #ifndef _WIN32 | |
1102 static gboolean manual_browser_set(GtkWidget *entry, GdkEventFocus *event, gpointer data) { | |
1103 const char *program = gtk_entry_get_text(GTK_ENTRY(entry)); | |
1104 | |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1105 gaim_prefs_set_string("/gaim/gtk/browsers/command", program); |
5440 | 1106 |
1107 /* carry on normally */ | |
1108 return FALSE; | |
1109 } | |
1110 | |
5633 | 1111 static GList *get_available_browsers() |
5440 | 1112 { |
1113 struct browser { | |
1114 char *name; | |
1115 char *command; | |
1116 }; | |
1117 | |
1118 static struct browser possible_browsers[] = { | |
9405 | 1119 {N_("Epiphany"), "epiphany"}, |
8267 | 1120 {N_("Firebird"), "mozilla-firebird"}, |
8356 | 1121 {N_("Firefox"), "firefox"}, |
9405 | 1122 {N_("Galeon"), "galeon"}, |
11816
60fcaea41fc0
[gaim-migrate @ 14107]
Richard Laager <rlaager@wiktel.com>
parents:
11811
diff
changeset
|
1123 {N_("GNOME Default"), "gnome-open"}, |
9405 | 1124 {N_("Konqueror"), "kfmclient"}, |
1125 {N_("Mozilla"), "mozilla"}, | |
1126 {N_("Netscape"), "netscape"}, | |
1127 {N_("Opera"), "opera"} | |
5440 | 1128 }; |
9405 | 1129 static const int num_possible_browsers = 9; |
5440 | 1130 |
1131 GList *browsers = NULL; | |
1132 int i = 0; | |
5819 | 1133 char *browser_setting = (char *)gaim_prefs_get_string("/gaim/gtk/browsers/browser"); |
5440 | 1134 |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1135 browsers = g_list_prepend(browsers, "custom"); |
5440 | 1136 browsers = g_list_prepend(browsers, _("Manual")); |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1137 |
5440 | 1138 for (i = 0; i < num_possible_browsers; i++) { |
7108
6faeeecab0dc
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7095
diff
changeset
|
1139 if (gaim_program_is_valid(possible_browsers[i].command)) { |
5633 | 1140 browsers = g_list_prepend(browsers, |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
1141 possible_browsers[i].command); |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1142 browsers = g_list_prepend(browsers, _(possible_browsers[i].name)); |
5825 | 1143 if(browser_setting && !strcmp(possible_browsers[i].command, browser_setting)) |
5819 | 1144 browser_setting = NULL; |
5440 | 1145 } |
1146 } | |
1147 | |
5819 | 1148 if(browser_setting) |
1149 gaim_prefs_set_string("/gaim/gtk/browsers/browser", "custom"); | |
1150 | |
5440 | 1151 return browsers; |
1152 } | |
1153 | |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1154 static void |
8274 | 1155 browser_changed1_cb(const char *name, GaimPrefType type, gpointer value, |
1156 gpointer data) | |
1157 { | |
1158 GtkWidget *hbox = data; | |
1159 const char *browser = value; | |
1160 | |
1161 gtk_widget_set_sensitive(hbox, strcmp(browser, "custom")); | |
1162 } | |
1163 | |
1164 static void | |
1165 browser_changed2_cb(const char *name, GaimPrefType type, gpointer value, | |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1166 gpointer data) |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1167 { |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1168 GtkWidget *hbox = data; |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1169 const char *browser = value; |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1170 |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1171 gtk_widget_set_sensitive(hbox, !strcmp(browser, "custom")); |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1172 } |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1173 |
10850 | 1174 static GtkWidget * |
1175 browser_page() | |
1176 { | |
5440 | 1177 GtkWidget *ret; |
1178 GtkWidget *vbox; | |
1179 GtkWidget *hbox; | |
1180 GtkWidget *label; | |
6007 | 1181 GtkWidget *entry; |
5440 | 1182 GtkSizeGroup *sg; |
1183 GList *browsers = NULL; | |
1184 | |
11243 | 1185 ret = gtk_vbox_new(FALSE, GAIM_HIG_CAT_SPACE); |
1186 gtk_container_set_border_width (GTK_CONTAINER (ret), GAIM_HIG_BORDER); | |
5440 | 1187 |
1188 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1189 vbox = gaim_gtk_make_frame (ret, _("Browser Selection")); |
5440 | 1190 |
1191 browsers = get_available_browsers(); | |
1192 if (browsers != NULL) { | |
7987 | 1193 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
|
1194 "/gaim/gtk/browsers/browser", |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1195 browsers); |
11638 | 1196 g_list_free(browsers); |
10973 | 1197 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
5440 | 1198 gtk_size_group_add_widget(sg, label); |
8274 | 1199 |
1200 hbox = gtk_hbox_new(FALSE, 0); | |
1201 label = gaim_gtk_prefs_dropdown(hbox, _("_Open link in:"), GAIM_PREF_INT, | |
1202 "/gaim/gtk/browsers/place", | |
1203 _("Browser default"), GAIM_BROWSER_DEFAULT, | |
1204 _("Existing window"), GAIM_BROWSER_CURRENT, | |
1205 _("New window"), GAIM_BROWSER_NEW_WINDOW, | |
1206 _("New tab"), GAIM_BROWSER_NEW_TAB, | |
1207 NULL); | |
10973 | 1208 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
8274 | 1209 gtk_size_group_add_widget(sg, label); |
1210 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
1211 | |
1212 if (!strcmp(gaim_prefs_get_string("/gaim/gtk/browsers/browser"), "custom")) | |
1213 gtk_widget_set_sensitive(hbox, FALSE); | |
10087 | 1214 gaim_prefs_connect_callback(prefs, "/gaim/gtk/browsers/browser", |
1215 browser_changed1_cb, hbox); | |
5440 | 1216 } |
1217 | |
1218 hbox = gtk_hbox_new(FALSE, 5); | |
1219 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
6031 | 1220 label = gtk_label_new_with_mnemonic(_("_Manual:\n(%s for URL)")); |
5440 | 1221 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); |
1222 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
1223 gtk_size_group_add_widget(sg, label); | |
1224 | |
6007 | 1225 entry = gtk_entry_new(); |
1226 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1227 |
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1228 if (strcmp(gaim_prefs_get_string("/gaim/gtk/browsers/browser"), "custom")) |
5440 | 1229 gtk_widget_set_sensitive(hbox, FALSE); |
10087 | 1230 gaim_prefs_connect_callback(prefs, "/gaim/gtk/browsers/browser", |
1231 browser_changed2_cb, hbox); | |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1232 |
6007 | 1233 gtk_box_pack_start (GTK_BOX (hbox), entry, FALSE, FALSE, 0); |
1234 | |
1235 gtk_entry_set_text(GTK_ENTRY(entry), | |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1236 gaim_prefs_get_string("/gaim/gtk/browsers/command")); |
6007 | 1237 g_signal_connect(G_OBJECT(entry), "focus-out-event", |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1238 G_CALLBACK(manual_browser_set), NULL); |
8188
cd9ea20cd8ed
[gaim-migrate @ 8909]
Christian Hammond <chipx86@chipx86.com>
parents:
8170
diff
changeset
|
1239 gaim_set_accessible_label (entry, label); |
5440 | 1240 |
1241 gtk_widget_show_all(ret); | |
1242 return ret; | |
1243 } | |
1244 #endif /*_WIN32*/ | |
1245 | |
10850 | 1246 static GtkWidget * |
1247 logging_page() | |
1248 { | |
5440 | 1249 GtkWidget *ret; |
1250 GtkWidget *vbox; | |
7431 | 1251 GList *names; |
8573 | 1252 |
11243 | 1253 ret = gtk_vbox_new(FALSE, GAIM_HIG_CAT_SPACE); |
1254 gtk_container_set_border_width (GTK_CONTAINER (ret), GAIM_HIG_BORDER); | |
5440 | 1255 |
11698 | 1256 vbox = gaim_gtk_make_frame (ret, _("Logging")); |
7431 | 1257 names = gaim_log_logger_get_options(); |
1258 | |
7987 | 1259 gaim_gtk_prefs_dropdown_from_list(vbox, _("Log _Format:"), GAIM_PREF_STRING, |
1260 "/core/logging/format", names); | |
1261 | |
11638 | 1262 g_list_free(names); |
1263 | |
11698 | 1264 gaim_gtk_prefs_checkbox(_("Log all _instant messages"), |
7562
b859cfb5f31a
[gaim-migrate @ 8176]
Christian Hammond <chipx86@chipx86.com>
parents:
7561
diff
changeset
|
1265 "/core/logging/log_ims", vbox); |
7987 | 1266 gaim_gtk_prefs_checkbox(_("Log all c_hats"), |
7562
b859cfb5f31a
[gaim-migrate @ 8176]
Christian Hammond <chipx86@chipx86.com>
parents:
7561
diff
changeset
|
1267 "/core/logging/log_chats", vbox); |
11699 | 1268 gaim_gtk_prefs_checkbox(_("Log all _status changes to system log"), |
11698 | 1269 "/core/logging/log_system", vbox); |
8573 | 1270 |
5440 | 1271 gtk_widget_show_all(ret); |
11698 | 1272 |
5440 | 1273 return ret; |
1274 } | |
1275 | |
1276 #ifndef _WIN32 | |
1277 static gint sound_cmd_yeah(GtkEntry *entry, gpointer d) | |
1278 { | |
5684 | 1279 gaim_prefs_set_string("/gaim/gtk/sound/command", |
6007 | 1280 gtk_entry_get_text(GTK_ENTRY(entry))); |
5440 | 1281 return TRUE; |
1282 } | |
6005 | 1283 |
1284 static void | |
10074 | 1285 sound_changed1_cb(const char *name, GaimPrefType type, gpointer value, |
6005 | 1286 gpointer data) |
1287 { | |
1288 GtkWidget *hbox = data; | |
1289 const char *method = value; | |
1290 | |
1291 gtk_widget_set_sensitive(hbox, !strcmp(method, "custom")); | |
1292 } | |
10074 | 1293 |
1294 static void | |
1295 sound_changed2_cb(const char *name, GaimPrefType type, gpointer value, | |
1296 gpointer data) | |
1297 { | |
1298 GtkWidget *vbox = data; | |
1299 const char *method = value; | |
1300 | |
1301 gtk_widget_set_sensitive(vbox, strcmp(method, "none")); | |
1302 } | |
5440 | 1303 #endif |
1304 | |
9150 | 1305 |
1306 static void | |
1307 event_toggled(GtkCellRendererToggle *cell, gchar *pth, gpointer data) | |
1308 { | |
1309 GtkTreeModel *model = (GtkTreeModel *)data; | |
1310 GtkTreeIter iter; | |
1311 GtkTreePath *path = gtk_tree_path_new_from_string(pth); | |
10930 | 1312 char *pref; |
9150 | 1313 |
1314 gtk_tree_model_get_iter (model, &iter, path); | |
1315 gtk_tree_model_get (model, &iter, | |
1316 2, &pref, | |
1317 -1); | |
1318 | |
1319 gaim_prefs_set_bool(pref, !gtk_cell_renderer_toggle_get_active(cell)); | |
10930 | 1320 g_free(pref); |
9150 | 1321 |
1322 gtk_list_store_set(GTK_LIST_STORE (model), &iter, | |
1323 0, !gtk_cell_renderer_toggle_get_active(cell), | |
1324 -1); | |
1325 | |
1326 gtk_tree_path_free(path); | |
1327 } | |
1328 | |
1329 static void | |
1330 test_sound(GtkWidget *button, gpointer i_am_NULL) | |
1331 { | |
1332 char *pref; | |
11642 | 1333 gboolean temp_value; |
9150 | 1334 |
1335 pref = g_strdup_printf("/gaim/gtk/sound/enabled/%s", | |
1336 gaim_gtk_sound_get_event_option(sound_row_sel)); | |
1337 | |
11642 | 1338 temp_value = gaim_prefs_get_bool(pref); |
1339 | |
1340 if (!temp_value) gaim_prefs_set_bool(pref, TRUE); | |
1341 | |
1342 gaim_sound_play_event(sound_row_sel, NULL); | |
1343 | |
1344 if (!temp_value) gaim_prefs_set_bool(pref, FALSE); | |
9150 | 1345 |
1346 g_free(pref); | |
1347 } | |
1348 | |
9508 | 1349 /* |
1350 * Resets a sound file back to default. | |
1351 */ | |
9150 | 1352 static void |
1353 reset_sound(GtkWidget *button, gpointer i_am_also_NULL) | |
1354 { | |
9508 | 1355 gchar *pref; |
1356 | |
1357 pref = g_strdup_printf("/gaim/gtk/sound/file/%s", | |
1358 gaim_gtk_sound_get_event_option(sound_row_sel)); | |
9150 | 1359 gaim_prefs_set_string(pref, ""); |
1360 g_free(pref); | |
1361 | |
1362 gtk_entry_set_text(GTK_ENTRY(sound_entry), "(default)"); | |
1363 } | |
1364 | |
9508 | 1365 static void |
1366 sound_chosen_cb(void *user_data, const char *filename) | |
9150 | 1367 { |
9508 | 1368 gchar *pref; |
1369 int sound; | |
1370 | |
1371 sound = GPOINTER_TO_INT(user_data); | |
9150 | 1372 |
1373 /* Set it -- and forget it */ | |
1374 pref = g_strdup_printf("/gaim/gtk/sound/file/%s", | |
9508 | 1375 gaim_gtk_sound_get_event_option(sound)); |
1376 gaim_prefs_set_string(pref, filename); | |
9150 | 1377 g_free(pref); |
1378 | |
9508 | 1379 /* |
1380 * If the sound we just changed is still the currently selected | |
1381 * sound, then update the box showing the file name. | |
1382 */ | |
1383 if (sound == sound_row_sel) | |
1384 gtk_entry_set_text(GTK_ENTRY(sound_entry), filename); | |
9150 | 1385 } |
1386 | |
9508 | 1387 static void select_sound(GtkWidget *button, gpointer being_NULL_is_fun) |
9150 | 1388 { |
9508 | 1389 gchar *pref; |
1390 const char *filename; | |
1391 | |
1392 pref = g_strdup_printf("/gaim/gtk/sound/file/%s", | |
1393 gaim_gtk_sound_get_event_option(sound_row_sel)); | |
1394 filename = gaim_prefs_get_string(pref); | |
1395 g_free(pref); | |
1396 | |
1397 if (*filename == '\0') | |
1398 filename = NULL; | |
1399 | |
1400 gaim_request_file(prefs, _("Sound Selection"), filename, FALSE, | |
1401 G_CALLBACK(sound_chosen_cb), NULL, GINT_TO_POINTER(sound_row_sel)); | |
9150 | 1402 } |
1403 | |
9508 | 1404 static void prefs_sound_sel(GtkTreeSelection *sel, GtkTreeModel *model) { |
9150 | 1405 GtkTreeIter iter; |
1406 GValue val = { 0, }; | |
1407 const char *file; | |
1408 char *pref; | |
1409 | |
1410 if (! gtk_tree_selection_get_selected (sel, &model, &iter)) | |
1411 return; | |
1412 gtk_tree_model_get_value (model, &iter, 3, &val); | |
1413 sound_row_sel = g_value_get_uint(&val); | |
1414 | |
1415 pref = g_strdup_printf("/gaim/gtk/sound/file/%s", | |
1416 gaim_gtk_sound_get_event_option(sound_row_sel)); | |
1417 file = gaim_prefs_get_string(pref); | |
1418 g_free(pref); | |
1419 if (sound_entry) | |
1420 gtk_entry_set_text(GTK_ENTRY(sound_entry), (file && *file != '\0') ? file : "(default)"); | |
1421 g_value_unset (&val); | |
1422 } | |
1423 | |
10850 | 1424 static GtkWidget * |
1425 sound_page() | |
1426 { | |
5440 | 1427 GtkWidget *ret; |
9150 | 1428 GtkWidget *vbox, *sw, *button; |
5440 | 1429 GtkSizeGroup *sg; |
9150 | 1430 GtkTreeIter iter; |
1431 GtkWidget *event_view; | |
1432 GtkListStore *event_store; | |
1433 GtkCellRenderer *rend; | |
1434 GtkTreeViewColumn *col; | |
1435 GtkTreeSelection *sel; | |
1436 GtkTreePath *path; | |
1437 GtkWidget *hbox; | |
1438 int j; | |
1439 const char *file; | |
11082 | 1440 char *pref; |
5440 | 1441 #ifndef _WIN32 |
1442 GtkWidget *dd; | |
1443 GtkWidget *label; | |
6007 | 1444 GtkWidget *entry; |
5684 | 1445 const char *cmd; |
5440 | 1446 #endif |
1447 | |
11243 | 1448 ret = gtk_vbox_new(FALSE, GAIM_HIG_CAT_SPACE); |
1449 gtk_container_set_border_width (GTK_CONTAINER (ret), GAIM_HIG_BORDER); | |
5440 | 1450 |
1451 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); | |
1452 | |
1453 #ifndef _WIN32 | |
6033 | 1454 vbox = gaim_gtk_make_frame (ret, _("Sound Method")); |
7987 | 1455 dd = gaim_gtk_prefs_dropdown(vbox, _("_Method:"), GAIM_PREF_STRING, |
1456 "/gaim/gtk/sound/method", | |
1457 _("Console beep"), "beep", | |
5440 | 1458 #ifdef USE_AO |
7987 | 1459 _("Automatic"), "automatic", |
11082 | 1460 "Arts", "arts", |
7987 | 1461 "ESD", "esd", |
1462 "NAS", "nas", | |
5440 | 1463 #endif |
7987 | 1464 _("Command"), "custom", |
10074 | 1465 _("No sounds"), "none", |
7987 | 1466 NULL); |
5440 | 1467 gtk_size_group_add_widget(sg, dd); |
10973 | 1468 gtk_misc_set_alignment(GTK_MISC(dd), 0, 0.5); |
5440 | 1469 |
1470 hbox = gtk_hbox_new(FALSE, 5); | |
11442
73f7cfa46f1b
[gaim-migrate @ 13681]
Richard Laager <rlaager@wiktel.com>
parents:
11424
diff
changeset
|
1471 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
5440 | 1472 |
6031 | 1473 label = gtk_label_new_with_mnemonic(_("Sound c_ommand:\n(%s for filename)")); |
5440 | 1474 gtk_size_group_add_widget(sg, label); |
1475 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
11442
73f7cfa46f1b
[gaim-migrate @ 13681]
Richard Laager <rlaager@wiktel.com>
parents:
11424
diff
changeset
|
1476 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
5440 | 1477 |
6007 | 1478 entry = gtk_entry_new(); |
1479 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
1480 | |
1481 gtk_editable_set_editable(GTK_EDITABLE(entry), TRUE); | |
5684 | 1482 cmd = gaim_prefs_get_string("/gaim/gtk/sound/command"); |
5440 | 1483 if(cmd) |
6007 | 1484 gtk_entry_set_text(GTK_ENTRY(entry), cmd); |
11442
73f7cfa46f1b
[gaim-migrate @ 13681]
Richard Laager <rlaager@wiktel.com>
parents:
11424
diff
changeset
|
1485 |
73f7cfa46f1b
[gaim-migrate @ 13681]
Richard Laager <rlaager@wiktel.com>
parents:
11424
diff
changeset
|
1486 gtk_box_pack_start(GTK_BOX(hbox), entry, TRUE, TRUE, 0); |
6007 | 1487 g_signal_connect(G_OBJECT(entry), "changed", |
5440 | 1488 G_CALLBACK(sound_cmd_yeah), NULL); |
6005 | 1489 |
1490 gtk_widget_set_sensitive(hbox, | |
1491 !strcmp(gaim_prefs_get_string("/gaim/gtk/sound/method"), | |
1492 "custom")); | |
10087 | 1493 gaim_prefs_connect_callback(prefs, "/gaim/gtk/sound/method", |
1494 sound_changed1_cb, hbox); | |
6005 | 1495 |
8141 | 1496 gaim_set_accessible_label (entry, label); |
5440 | 1497 #endif /* _WIN32 */ |
9150 | 1498 |
10074 | 1499 vbox = gaim_gtk_make_frame (ret, _("Sound Options")); |
1500 gaim_gtk_prefs_checkbox(_("Sounds when conversation has _focus"), | |
1501 "/gaim/gtk/sound/conv_focus", vbox); | |
1502 gaim_gtk_prefs_checkbox(_("_Sounds while away"), | |
1503 "/core/sound/while_away", vbox); | |
1504 | |
10075 | 1505 #ifndef _WIN32 |
10074 | 1506 gtk_widget_set_sensitive(vbox, |
1507 strcmp(gaim_prefs_get_string("/gaim/gtk/sound/method"), "none")); | |
10087 | 1508 gaim_prefs_connect_callback(prefs, "/gaim/gtk/sound/method", |
1509 sound_changed2_cb, vbox); | |
10075 | 1510 #endif |
10074 | 1511 |
9150 | 1512 vbox = gaim_gtk_make_frame(ret, _("Sound Events")); |
1513 | |
1514 /* The following is an ugly hack to make the frame expand so the | |
1515 * sound events list is big enough to be usable */ | |
1516 gtk_box_set_child_packing(GTK_BOX(vbox->parent), vbox, TRUE, TRUE, 0, | |
1517 GTK_PACK_START); | |
1518 gtk_box_set_child_packing(GTK_BOX(vbox->parent->parent), vbox->parent, TRUE, | |
1519 TRUE, 0, GTK_PACK_START); | |
1520 gtk_box_set_child_packing(GTK_BOX(vbox->parent->parent->parent), | |
1521 vbox->parent->parent, TRUE, TRUE, 0, GTK_PACK_START); | |
1522 | |
1523 sw = gtk_scrolled_window_new(NULL,NULL); | |
1524 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); | |
1525 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); | |
1526 | |
1527 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); | |
1528 event_store = gtk_list_store_new (4, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT); | |
1529 | |
1530 for (j=0; j < GAIM_NUM_SOUNDS; j++) { | |
1531 char *pref = g_strdup_printf("/gaim/gtk/sound/enabled/%s", | |
1532 gaim_gtk_sound_get_event_option(j)); | |
1533 const char *label = gaim_gtk_sound_get_event_label(j); | |
1534 | |
1535 if (label == NULL) { | |
1536 g_free(pref); | |
1537 continue; | |
1538 } | |
1539 | |
1540 gtk_list_store_append (event_store, &iter); | |
1541 gtk_list_store_set(event_store, &iter, | |
1542 0, gaim_prefs_get_bool(pref), | |
1543 1, _(label), | |
1544 2, pref, | |
1545 3, j, | |
1546 -1); | |
1547 g_free(pref); | |
1548 } | |
1549 | |
1550 event_view = gtk_tree_view_new_with_model (GTK_TREE_MODEL(event_store)); | |
1551 | |
1552 rend = gtk_cell_renderer_toggle_new(); | |
1553 sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (event_view)); | |
1554 g_signal_connect (G_OBJECT (sel), "changed", | |
1555 G_CALLBACK (prefs_sound_sel), | |
1556 NULL); | |
1557 g_signal_connect (G_OBJECT(rend), "toggled", | |
1558 G_CALLBACK(event_toggled), event_store); | |
1559 path = gtk_tree_path_new_first(); | |
1560 gtk_tree_selection_select_path(sel, path); | |
1561 gtk_tree_path_free(path); | |
1562 | |
1563 col = gtk_tree_view_column_new_with_attributes (_("Play"), | |
1564 rend, | |
1565 "active", 0, | |
1566 NULL); | |
1567 gtk_tree_view_append_column (GTK_TREE_VIEW(event_view), col); | |
1568 | |
1569 rend = gtk_cell_renderer_text_new(); | |
1570 col = gtk_tree_view_column_new_with_attributes (_("Event"), | |
1571 rend, | |
1572 "text", 1, | |
1573 NULL); | |
1574 gtk_tree_view_append_column (GTK_TREE_VIEW(event_view), col); | |
1575 g_object_unref(G_OBJECT(event_store)); | |
1576 gtk_container_add(GTK_CONTAINER(sw), event_view); | |
1577 | |
11243 | 1578 hbox = gtk_hbox_new(FALSE, GAIM_HIG_BOX_SPACE); |
9150 | 1579 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
1580 sound_entry = gtk_entry_new(); | |
1581 pref = g_strdup_printf("/gaim/gtk/sound/file/%s", | |
1582 gaim_gtk_sound_get_event_option(0)); | |
1583 file = gaim_prefs_get_string(pref); | |
1584 g_free(pref); | |
1585 gtk_entry_set_text(GTK_ENTRY(sound_entry), (file && *file != '\0') ? file : "(default)"); | |
1586 gtk_editable_set_editable(GTK_EDITABLE(sound_entry), FALSE); | |
1587 gtk_box_pack_start(GTK_BOX(hbox), sound_entry, FALSE, FALSE, 5); | |
1588 | |
1589 button = gtk_button_new_with_label(_("Test")); | |
1590 g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(test_sound), NULL); | |
1591 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1); | |
1592 | |
1593 button = gtk_button_new_with_label(_("Reset")); | |
1594 g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(reset_sound), NULL); | |
1595 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1); | |
1596 | |
1597 button = gtk_button_new_with_label(_("Choose...")); | |
9508 | 1598 g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(select_sound), NULL); |
9150 | 1599 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1); |
5440 | 1600 gtk_widget_show_all(ret); |
9118 | 1601 |
10075 | 1602 #ifndef _WIN32 |
10074 | 1603 gtk_widget_set_sensitive(vbox, |
1604 strcmp(gaim_prefs_get_string("/gaim/gtk/sound/method"), "none")); | |
10087 | 1605 gaim_prefs_connect_callback(prefs, "/gaim/gtk/sound/method", |
1606 sound_changed2_cb, vbox); | |
10075 | 1607 #endif |
10074 | 1608 |
5440 | 1609 return ret; |
1610 } | |
1611 | |
10182 | 1612 /* XXX CORE/UI */ |
1613 #if 0 | |
1614 static void | |
1615 set_default_away(GtkWidget *w, gpointer data) | |
1616 { | |
1617 struct away_message *default_away = NULL; | |
1618 int length = g_slist_length(away_messages); | |
1619 int i = GPOINTER_TO_INT(data); | |
1620 | |
1621 if (away_messages == NULL) | |
1622 default_away = NULL; | |
1623 else if (i >= length) | |
1624 default_away = g_slist_nth_data(away_messages, length - 1); | |
1625 else | |
1626 default_away = g_slist_nth_data(away_messages, i); | |
1627 | |
1628 if(default_away) | |
1629 gaim_prefs_set_string("/core/away/default_message", default_away->name); | |
1630 else | |
1631 gaim_prefs_set_string("/core/away/default_message", ""); | |
1632 } | |
1633 #endif | |
1634 | |
10850 | 1635 static GtkWidget * |
1636 away_page() | |
1637 { | |
5440 | 1638 GtkWidget *ret; |
1639 GtkWidget *vbox; | |
1640 GtkWidget *hbox; | |
1641 GtkWidget *label; | |
1642 GtkWidget *button; | |
1643 GtkWidget *select; | |
1644 GtkSizeGroup *sg; | |
1645 | |
11243 | 1646 ret = gtk_vbox_new(FALSE, GAIM_HIG_CAT_SPACE); |
1647 gtk_container_set_border_width (GTK_CONTAINER (ret), GAIM_HIG_BORDER); | |
5440 | 1648 |
1649 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); | |
1650 | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1651 vbox = gaim_gtk_make_frame (ret, _("Away")); |
7987 | 1652 gaim_gtk_prefs_checkbox(_("_Queue new messages when away"), |
5573
5e7de337a053
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5568
diff
changeset
|
1653 "/gaim/gtk/away/queue_messages", vbox); |
5440 | 1654 |
9596 | 1655 label = gaim_gtk_prefs_dropdown(vbox, _("_Auto-reply:"), |
1656 GAIM_PREF_STRING, "/core/away/auto_reply", | |
1657 _("Never"), "never", | |
9736 | 1658 _("When away"), "away", |
10859 | 1659 _("When both away and idle"), "awayidle", |
9596 | 1660 NULL); |
6142 | 1661 |
11287
fb6e85c55fb8
[gaim-migrate @ 13484]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11275
diff
changeset
|
1662 button = gaim_gtk_prefs_checkbox(_("_Report idle time"), |
fb6e85c55fb8
[gaim-migrate @ 13484]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11275
diff
changeset
|
1663 "/gaim/gtk/idle/report", vbox); |
fb6e85c55fb8
[gaim-migrate @ 13484]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11275
diff
changeset
|
1664 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1665 vbox = gaim_gtk_make_frame (ret, _("Auto-away")); |
11811 | 1666 button = gaim_gtk_prefs_checkbox(_("Change status when _idle"), |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1667 "/core/away/away_when_idle", vbox); |
8238 | 1668 |
7987 | 1669 select = gaim_gtk_prefs_labeled_spin_button(vbox, |
11811 | 1670 _("_Minutes before changing status:"), "/core/away/mins_before_away", |
7987 | 1671 1, 24 * 60, sg); |
5440 | 1672 g_signal_connect(G_OBJECT(button), "clicked", |
1673 G_CALLBACK(gaim_gtk_toggle_sensitive), select); | |
1674 | |
8238 | 1675 hbox = gtk_hbox_new(FALSE, 0); |
1676 gtk_container_add(GTK_CONTAINER(vbox), hbox); | |
1677 | |
11811 | 1678 label = gtk_label_new_with_mnemonic(_("Change _status to:")); |
5440 | 1679 gtk_size_group_add_widget(sg, label); |
10973 | 1680 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
8238 | 1681 g_signal_connect(G_OBJECT(button), "clicked", |
1682 G_CALLBACK(gaim_gtk_toggle_sensitive), label); | |
5440 | 1683 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
8238 | 1684 |
11811 | 1685 /* |
1686 * TODO: Need to allow users to choose a GaimSavedStatus | |
1687 * to use when going idle-away. Or figure out a | |
1688 * better UI for this. | |
1689 */ | |
1690 | |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1691 if (!gaim_prefs_get_bool("/core/away/away_when_idle")) { |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1692 gtk_widget_set_sensitive(GTK_WIDGET(select), FALSE); |
8238 | 1693 gtk_widget_set_sensitive(GTK_WIDGET(label), FALSE); |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1694 } |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1695 |
5440 | 1696 gtk_widget_show_all(ret); |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1697 |
5440 | 1698 return ret; |
1699 } | |
1700 | |
10759 | 1701 int prefs_notebook_add_page(const char *text, |
5440 | 1702 GdkPixbuf *pixbuf, |
1703 GtkWidget *page, | |
1704 GtkTreeIter *iter, | |
1705 GtkTreeIter *parent, | |
1706 int ind) { | |
1707 GdkPixbuf *icon = NULL; | |
1708 | |
1709 if (pixbuf) | |
1710 icon = gdk_pixbuf_scale_simple (pixbuf, 18, 18, GDK_INTERP_BILINEAR); | |
1711 | |
1712 if (pixbuf) | |
1713 g_object_unref(pixbuf); | |
1714 if (icon) | |
1715 g_object_unref(icon); | |
10759 | 1716 |
11380 | 1717 #if GTK_CHECK_VERSION(2,4,0) |
10759 | 1718 return gtk_notebook_append_page(GTK_NOTEBOOK(prefsnotebook), page, gtk_label_new(text)); |
11380 | 1719 #else |
1720 gtk_notebook_append_page(GTK_NOTEBOOK(prefsnotebook), page, gtk_label_new(text)); | |
1721 return gtk_notebook_page_num(GTK_NOTEBOOK(prefsnotebook), page); | |
1722 #endif | |
5440 | 1723 } |
1724 | |
10871 | 1725 static void prefs_notebook_init() { |
9267 | 1726 GtkTreeIter p, c, c2; |
9150 | 1727 prefs_notebook_add_page(_("Conversations"), NULL, conv_page(), &c, &p, notebook_page++); |
9267 | 1728 prefs_notebook_add_page(_("Smiley Themes"), NULL, theme_page(), &c2, &c, notebook_page++); |
9150 | 1729 prefs_notebook_add_page(_("Sounds"), NULL, sound_page(), &c, &p, notebook_page++); |
8238 | 1730 prefs_notebook_add_page(_("Network"), NULL, network_page(), &p, NULL, notebook_page++); |
5440 | 1731 #ifndef _WIN32 |
1732 /* We use the registered default browser in windows */ | |
10060 | 1733 /* if the user is running gnome 2.x, hide the browsers tab */ |
10061 | 1734 if (gaim_running_gnome() == FALSE) { |
10060 | 1735 prefs_notebook_add_page(_("Browser"), NULL, browser_page(), &p, NULL, notebook_page++); |
1736 } | |
5440 | 1737 #endif |
1738 prefs_notebook_add_page(_("Logging"), NULL, logging_page(), &p, NULL, notebook_page++); | |
1739 prefs_notebook_add_page(_("Away / Idle"), NULL, away_page(), &p, NULL, notebook_page++); | |
1740 } | |
1741 | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1742 void gaim_gtk_prefs_show(void) |
5440 | 1743 { |
10078 | 1744 GtkWidget *vbox; |
8292
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
1745 GtkWidget *bbox; |
5440 | 1746 GtkWidget *notebook; |
1747 GtkWidget *button; | |
1748 | |
1749 if (prefs) { | |
1750 gtk_window_present(GTK_WINDOW(prefs)); | |
1751 return; | |
1752 } | |
1753 | |
1754 /* copy the preferences to tmp values... | |
1755 * I liked "take affect immediately" Oh well :-( */ | |
6016 | 1756 /* (that should have been "effect," right?) */ |
1757 | |
5440 | 1758 /* Back to instant-apply! I win! BU-HAHAHA! */ |
1759 | |
1760 /* Create the window */ | |
1761 prefs = gtk_window_new(GTK_WINDOW_TOPLEVEL); | |
1762 gtk_window_set_role(GTK_WINDOW(prefs), "preferences"); | |
1763 gtk_window_set_title(GTK_WINDOW(prefs), _("Preferences")); | |
1764 gtk_window_set_resizable (GTK_WINDOW(prefs), FALSE); | |
11243 | 1765 gtk_container_set_border_width(GTK_CONTAINER(prefs), GAIM_HIG_BORDER); |
5440 | 1766 g_signal_connect(G_OBJECT(prefs), "destroy", |
1767 G_CALLBACK(delete_prefs), NULL); | |
1768 | |
11243 | 1769 vbox = gtk_vbox_new(FALSE, GAIM_HIG_BORDER); |
5440 | 1770 gtk_container_add(GTK_CONTAINER(prefs), vbox); |
1771 gtk_widget_show(vbox); | |
1772 | |
1773 /* The notebook */ | |
1774 prefsnotebook = notebook = gtk_notebook_new (); | |
10078 | 1775 gtk_box_pack_start (GTK_BOX (vbox), notebook, FALSE, FALSE, 0); |
11740 | 1776 gtk_widget_show(prefsnotebook); |
5440 | 1777 |
8713 | 1778 /* The buttons to press! */ |
8292
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
1779 bbox = gtk_hbutton_box_new(); |
11243 | 1780 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
|
1781 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
|
1782 gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 0); |
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
1783 gtk_widget_show (bbox); |
5440 | 1784 |
1785 button = gtk_button_new_from_stock (GTK_STOCK_CLOSE); | |
1786 g_signal_connect_swapped(G_OBJECT(button), "clicked", | |
1787 G_CALLBACK(gtk_widget_destroy), prefs); | |
8292
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
1788 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); |
5440 | 1789 gtk_widget_show(button); |
1790 | |
1791 prefs_notebook_init(); | |
1792 | |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1793 /* Show everything. */ |
11740 | 1794 gtk_widget_show(prefs); |
5440 | 1795 } |
1796 | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1797 static void |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1798 set_bool_pref(GtkWidget *w, const char *key) |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1799 { |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1800 gaim_prefs_set_bool(key, |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1801 gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1802 } |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1803 |
7976 | 1804 GtkWidget * |
7987 | 1805 gaim_gtk_prefs_checkbox(const char *text, const char *key, GtkWidget *page) |
5440 | 1806 { |
1807 GtkWidget *button; | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1808 |
5440 | 1809 button = gtk_check_button_new_with_mnemonic(text); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1810 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1811 gaim_prefs_get_bool(key)); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1812 |
5440 | 1813 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
|
1814 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1815 g_signal_connect(G_OBJECT(button), "clicked", |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
1816 G_CALLBACK(set_bool_pref), (char *)key); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1817 |
5440 | 1818 gtk_widget_show(button); |
1819 | |
1820 return button; | |
1821 } | |
1822 | |
5770
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
1823 static void |
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
1824 smiley_theme_pref_cb(const char *name, GaimPrefType type, gpointer value, |
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
1825 gpointer data) |
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
1826 { |
11557
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1827 const char *themename = value; |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1828 GSList *themes; |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1829 |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1830 for (themes = smiley_themes; themes; themes = themes->next) { |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1831 struct smiley_theme *smile = themes->data; |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1832 if (smile->name && strcmp(themename, smile->name) == 0) { |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1833 gaim_gtkthemes_load_smiley_theme(smile->path, TRUE); |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1834 break; |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1835 } |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1836 } |
5770
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
1837 } |
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
1838 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1839 void |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1840 gaim_gtk_prefs_init(void) |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1841 { |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1842 gaim_prefs_add_none("/gaim"); |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1843 gaim_prefs_add_none("/gaim/gtk"); |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1844 gaim_prefs_add_none("/plugins/gtk"); |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1845 |
5573
5e7de337a053
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5568
diff
changeset
|
1846 /* Away Queueing */ |
5e7de337a053
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5568
diff
changeset
|
1847 gaim_prefs_add_none("/gaim/gtk/away"); |
5e7de337a053
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5568
diff
changeset
|
1848 gaim_prefs_add_bool("/gaim/gtk/away/queue_messages", FALSE); |
5e7de337a053
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5568
diff
changeset
|
1849 |
8283 | 1850 #ifndef _WIN32 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1851 /* Browsers */ |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1852 gaim_prefs_add_none("/gaim/gtk/browsers"); |
8272 | 1853 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
|
1854 gaim_prefs_add_string("/gaim/gtk/browsers/command", ""); |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
1855 gaim_prefs_add_string("/gaim/gtk/browsers/browser", "mozilla"); |
8283 | 1856 #endif |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1857 |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1858 /* Idle */ |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1859 gaim_prefs_add_none("/gaim/gtk/idle"); |
11287
fb6e85c55fb8
[gaim-migrate @ 13484]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11275
diff
changeset
|
1860 gaim_prefs_add_bool("/gaim/gtk/idle/report", TRUE); |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1861 |
5949
90d0849abd3c
[gaim-migrate @ 6393]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1862 /* Plugins */ |
5982
35d3c1ac5ece
[gaim-migrate @ 6430]
Christian Hammond <chipx86@chipx86.com>
parents:
5981
diff
changeset
|
1863 gaim_prefs_add_none("/gaim/gtk/plugins"); |
5949
90d0849abd3c
[gaim-migrate @ 6393]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1864 gaim_prefs_add_string_list("/gaim/gtk/plugins/loaded", NULL); |
90d0849abd3c
[gaim-migrate @ 6393]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1865 |
10605 | 1866 /* File locations */ |
1867 gaim_prefs_add_none("/gaim/gtk/filelocations"); | |
1868 gaim_prefs_add_string("/gaim/gtk/filelocations/last_save_folder", ""); | |
1869 gaim_prefs_add_string("/gaim/gtk/filelocations/last_open_folder", ""); | |
1870 gaim_prefs_add_string("/gaim/gtk/filelocations/last_icon_folder", ""); | |
1871 | |
5539
de09863bd4b5
[gaim-migrate @ 5939]
Christian Hammond <chipx86@chipx86.com>
parents:
5535
diff
changeset
|
1872 /* Smiley Themes */ |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
1873 gaim_prefs_add_none("/gaim/gtk/smileys"); |
11557
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1874 gaim_prefs_add_string("/gaim/gtk/smileys/theme", "Default"); |
5770
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
1875 |
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
1876 /* Smiley Callbacks */ |
10087 | 1877 gaim_prefs_connect_callback(prefs, "/gaim/gtk/smileys/theme", |
5770
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
1878 smiley_theme_pref_cb, NULL); |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1879 } |
8905 | 1880 |
1881 void gaim_gtk_prefs_update_old() { | |
1882 /* Rename some old prefs */ | |
1883 gaim_prefs_rename("/gaim/gtk/logging/log_ims", "/core/logging/log_ims"); | |
1884 gaim_prefs_rename("/gaim/gtk/logging/log_chats", "/core/logging/log_chats"); | |
1885 gaim_prefs_rename("/core/conversations/placement", | |
8998 | 1886 "/gaim/gtk/conversations/placement"); |
8905 | 1887 |
10307 | 1888 gaim_prefs_rename("/gaim/gtk/debug/timestamps", "/core/debug/timestamps"); |
10701 | 1889 gaim_prefs_rename("/gaim/gtk/conversations/im/raise_on_events", "/plugins/gtk/X11/notify/method_raise"); |
10307 | 1890 |
11267
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
1891 /* 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
|
1892 * 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
|
1893 gaim_prefs_rename_boolean_toggle("/gaim/gtk/conversations/ignore_colors", |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
1894 "/gaim/gtk/conversations/show_incoming_formatting"); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
1895 gaim_prefs_rename_boolean_toggle("/gaim/gtk/conversations/ignore_formatting", |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
1896 "/gaim/gtk/conversations/show_incoming_formatting"); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
1897 |
8905 | 1898 /* Remove some no-longer-used prefs */ |
10398 | 1899 gaim_prefs_remove("/gaim/gtk/blist/auto_expand_contacts"); |
10133 | 1900 gaim_prefs_remove("/gaim/gtk/blist/button_style"); |
10168 | 1901 gaim_prefs_remove("/gaim/gtk/blist/grey_idle_buddies"); |
10133 | 1902 gaim_prefs_remove("/gaim/gtk/blist/raise_on_events"); |
8945 | 1903 gaim_prefs_remove("/gaim/gtk/blist/show_group_count"); |
10353 | 1904 gaim_prefs_remove("/gaim/gtk/blist/show_idle_time"); |
1905 gaim_prefs_remove("/gaim/gtk/blist/show_warning_level"); | |
10358 | 1906 gaim_prefs_remove("/gaim/gtk/conversations/button_type"); |
10398 | 1907 gaim_prefs_remove("/gaim/gtk/conversations/ctrl_enter_sends"); |
1908 gaim_prefs_remove("/gaim/gtk/conversations/enter_sends"); | |
11697 | 1909 gaim_prefs_remove("/gaim/gtk/conversations/escape_closes"); |
10164 | 1910 gaim_prefs_remove("/gaim/gtk/conversations/html_shortcuts"); |
8946 | 1911 gaim_prefs_remove("/gaim/gtk/conversations/icons_on_tabs"); |
11267
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
1912 gaim_prefs_remove("/gaim/gtk/conversations/send_formatting"); |
10398 | 1913 gaim_prefs_remove("/gaim/gtk/conversations/show_smileys"); |
1914 gaim_prefs_remove("/gaim/gtk/conversations/show_timestamps"); | |
8905 | 1915 gaim_prefs_remove("/gaim/gtk/conversations/show_urls_as_links"); |
10164 | 1916 gaim_prefs_remove("/gaim/gtk/conversations/smiley_shortcuts"); |
9025 | 1917 gaim_prefs_remove("/gaim/gtk/conversations/use_custom_bgcolor"); |
1918 gaim_prefs_remove("/gaim/gtk/conversations/use_custom_fgcolor"); | |
11269
1cbe76d30e81
[gaim-migrate @ 13451]
Richard Laager <rlaager@wiktel.com>
parents:
11267
diff
changeset
|
1919 gaim_prefs_remove("/gaim/gtk/conversations/use_custom_font"); |
9025 | 1920 gaim_prefs_remove("/gaim/gtk/conversations/use_custom_size"); |
10398 | 1921 gaim_prefs_remove("/gaim/gtk/conversations/chat/old_tab_complete"); |
1922 gaim_prefs_remove("/gaim/gtk/conversations/chat/tab_completion"); | |
9301 | 1923 gaim_prefs_remove("/gaim/gtk/conversations/im/hide_on_send"); |
10398 | 1924 gaim_prefs_remove("/gaim/gtk/conversations/chat/color_nicks"); |
1925 gaim_prefs_remove("/gaim/gtk/conversations/chat/raise_on_events"); | |
10492 | 1926 gaim_prefs_remove("/gaim/gtk/conversations/ignore_fonts"); |
1927 gaim_prefs_remove("/gaim/gtk/conversations/ignore_font_sizes"); | |
11697 | 1928 gaim_prefs_remove("/gaim/gtk/idle/method"); |
10398 | 1929 gaim_prefs_remove("/gaim/gtk/logging/individual_logs"); |
1930 gaim_prefs_remove("/gaim/gtk/sound/signon"); | |
1931 gaim_prefs_remove("/gaim/gtk/sound/silent_signon"); | |
8905 | 1932 } |