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