Mercurial > pidgin.yaz
annotate src/gtkprefs.c @ 12692:4da7062a06c2
[gaim-migrate @ 15035]
SF Patch #1277888 from Douglas Thrift
I modified this a bit, but the end result is: This patch adds a logging preference that defaults to off. When enabled, the date is included in messages' timestamps in logs (in addition to the time).
This can be useful if you leave conversations open for days (for me, that's chats). The original patch had this affect timestamps in the conversation window as well, but I didn't like that. I figured it probably wasn't necessary, and I was dreading adding another conversation pref. I welcome feedback on this issue.
committer: Tailor Script <tailor@pidgin.im>
author | Richard Laager <rlaager@wiktel.com> |
---|---|
date | Tue, 03 Jan 2006 06:33:00 +0000 |
parents | 60cce1861e59 |
children | 0d73d0e177ad |
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 |
12692
4da7062a06c2
[gaim-migrate @ 15035]
Richard Laager <rlaager@wiktel.com>
parents:
12656
diff
changeset
|
1299 gaim_gtk_prefs_checkbox(_("Include _date in timestamps"), |
4da7062a06c2
[gaim-migrate @ 15035]
Richard Laager <rlaager@wiktel.com>
parents:
12656
diff
changeset
|
1300 "/core/logging/include_date_timestamps", vbox); |
4da7062a06c2
[gaim-migrate @ 15035]
Richard Laager <rlaager@wiktel.com>
parents:
12656
diff
changeset
|
1301 |
5440 | 1302 gtk_widget_show_all(ret); |
11698 | 1303 |
5440 | 1304 return ret; |
1305 } | |
1306 | |
1307 #ifndef _WIN32 | |
1308 static gint sound_cmd_yeah(GtkEntry *entry, gpointer d) | |
1309 { | |
5684 | 1310 gaim_prefs_set_string("/gaim/gtk/sound/command", |
6007 | 1311 gtk_entry_get_text(GTK_ENTRY(entry))); |
5440 | 1312 return TRUE; |
1313 } | |
6005 | 1314 |
1315 static void | |
10074 | 1316 sound_changed1_cb(const char *name, GaimPrefType type, gpointer value, |
6005 | 1317 gpointer data) |
1318 { | |
1319 GtkWidget *hbox = data; | |
1320 const char *method = value; | |
1321 | |
1322 gtk_widget_set_sensitive(hbox, !strcmp(method, "custom")); | |
1323 } | |
10074 | 1324 |
1325 static void | |
1326 sound_changed2_cb(const char *name, GaimPrefType type, gpointer value, | |
1327 gpointer data) | |
1328 { | |
1329 GtkWidget *vbox = data; | |
1330 const char *method = value; | |
1331 | |
1332 gtk_widget_set_sensitive(vbox, strcmp(method, "none")); | |
1333 } | |
5440 | 1334 #endif |
1335 | |
9150 | 1336 |
1337 static void | |
1338 event_toggled(GtkCellRendererToggle *cell, gchar *pth, gpointer data) | |
1339 { | |
1340 GtkTreeModel *model = (GtkTreeModel *)data; | |
1341 GtkTreeIter iter; | |
1342 GtkTreePath *path = gtk_tree_path_new_from_string(pth); | |
10930 | 1343 char *pref; |
9150 | 1344 |
1345 gtk_tree_model_get_iter (model, &iter, path); | |
1346 gtk_tree_model_get (model, &iter, | |
1347 2, &pref, | |
1348 -1); | |
1349 | |
1350 gaim_prefs_set_bool(pref, !gtk_cell_renderer_toggle_get_active(cell)); | |
10930 | 1351 g_free(pref); |
9150 | 1352 |
1353 gtk_list_store_set(GTK_LIST_STORE (model), &iter, | |
1354 0, !gtk_cell_renderer_toggle_get_active(cell), | |
1355 -1); | |
1356 | |
1357 gtk_tree_path_free(path); | |
1358 } | |
1359 | |
1360 static void | |
1361 test_sound(GtkWidget *button, gpointer i_am_NULL) | |
1362 { | |
1363 char *pref; | |
11642 | 1364 gboolean temp_value; |
9150 | 1365 |
1366 pref = g_strdup_printf("/gaim/gtk/sound/enabled/%s", | |
1367 gaim_gtk_sound_get_event_option(sound_row_sel)); | |
1368 | |
11642 | 1369 temp_value = gaim_prefs_get_bool(pref); |
1370 | |
1371 if (!temp_value) gaim_prefs_set_bool(pref, TRUE); | |
1372 | |
1373 gaim_sound_play_event(sound_row_sel, NULL); | |
1374 | |
1375 if (!temp_value) gaim_prefs_set_bool(pref, FALSE); | |
9150 | 1376 |
1377 g_free(pref); | |
1378 } | |
1379 | |
9508 | 1380 /* |
1381 * Resets a sound file back to default. | |
1382 */ | |
9150 | 1383 static void |
1384 reset_sound(GtkWidget *button, gpointer i_am_also_NULL) | |
1385 { | |
9508 | 1386 gchar *pref; |
1387 | |
1388 pref = g_strdup_printf("/gaim/gtk/sound/file/%s", | |
1389 gaim_gtk_sound_get_event_option(sound_row_sel)); | |
9150 | 1390 gaim_prefs_set_string(pref, ""); |
1391 g_free(pref); | |
1392 | |
1393 gtk_entry_set_text(GTK_ENTRY(sound_entry), "(default)"); | |
1394 } | |
1395 | |
9508 | 1396 static void |
1397 sound_chosen_cb(void *user_data, const char *filename) | |
9150 | 1398 { |
9508 | 1399 gchar *pref; |
1400 int sound; | |
1401 | |
1402 sound = GPOINTER_TO_INT(user_data); | |
9150 | 1403 |
1404 /* Set it -- and forget it */ | |
1405 pref = g_strdup_printf("/gaim/gtk/sound/file/%s", | |
9508 | 1406 gaim_gtk_sound_get_event_option(sound)); |
1407 gaim_prefs_set_string(pref, filename); | |
9150 | 1408 g_free(pref); |
1409 | |
9508 | 1410 /* |
1411 * If the sound we just changed is still the currently selected | |
1412 * sound, then update the box showing the file name. | |
1413 */ | |
1414 if (sound == sound_row_sel) | |
1415 gtk_entry_set_text(GTK_ENTRY(sound_entry), filename); | |
9150 | 1416 } |
1417 | |
9508 | 1418 static void select_sound(GtkWidget *button, gpointer being_NULL_is_fun) |
9150 | 1419 { |
9508 | 1420 gchar *pref; |
1421 const char *filename; | |
1422 | |
1423 pref = g_strdup_printf("/gaim/gtk/sound/file/%s", | |
1424 gaim_gtk_sound_get_event_option(sound_row_sel)); | |
1425 filename = gaim_prefs_get_string(pref); | |
1426 g_free(pref); | |
1427 | |
1428 if (*filename == '\0') | |
1429 filename = NULL; | |
1430 | |
1431 gaim_request_file(prefs, _("Sound Selection"), filename, FALSE, | |
1432 G_CALLBACK(sound_chosen_cb), NULL, GINT_TO_POINTER(sound_row_sel)); | |
9150 | 1433 } |
1434 | |
9508 | 1435 static void prefs_sound_sel(GtkTreeSelection *sel, GtkTreeModel *model) { |
9150 | 1436 GtkTreeIter iter; |
12600
e856f985a0b9
[gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents:
12580
diff
changeset
|
1437 GValue val; |
9150 | 1438 const char *file; |
1439 char *pref; | |
1440 | |
1441 if (! gtk_tree_selection_get_selected (sel, &model, &iter)) | |
1442 return; | |
12600
e856f985a0b9
[gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents:
12580
diff
changeset
|
1443 |
e856f985a0b9
[gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents:
12580
diff
changeset
|
1444 val.g_type = 0; |
9150 | 1445 gtk_tree_model_get_value (model, &iter, 3, &val); |
1446 sound_row_sel = g_value_get_uint(&val); | |
1447 | |
1448 pref = g_strdup_printf("/gaim/gtk/sound/file/%s", | |
1449 gaim_gtk_sound_get_event_option(sound_row_sel)); | |
1450 file = gaim_prefs_get_string(pref); | |
1451 g_free(pref); | |
1452 if (sound_entry) | |
1453 gtk_entry_set_text(GTK_ENTRY(sound_entry), (file && *file != '\0') ? file : "(default)"); | |
1454 g_value_unset (&val); | |
1455 } | |
1456 | |
10850 | 1457 static GtkWidget * |
1458 sound_page() | |
1459 { | |
5440 | 1460 GtkWidget *ret; |
9150 | 1461 GtkWidget *vbox, *sw, *button; |
5440 | 1462 GtkSizeGroup *sg; |
9150 | 1463 GtkTreeIter iter; |
1464 GtkWidget *event_view; | |
1465 GtkListStore *event_store; | |
1466 GtkCellRenderer *rend; | |
1467 GtkTreeViewColumn *col; | |
1468 GtkTreeSelection *sel; | |
1469 GtkTreePath *path; | |
1470 GtkWidget *hbox; | |
1471 int j; | |
1472 const char *file; | |
11082 | 1473 char *pref; |
5440 | 1474 #ifndef _WIN32 |
1475 GtkWidget *dd; | |
1476 GtkWidget *label; | |
6007 | 1477 GtkWidget *entry; |
5684 | 1478 const char *cmd; |
5440 | 1479 #endif |
1480 | |
11243 | 1481 ret = gtk_vbox_new(FALSE, GAIM_HIG_CAT_SPACE); |
1482 gtk_container_set_border_width (GTK_CONTAINER (ret), GAIM_HIG_BORDER); | |
5440 | 1483 |
1484 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); | |
1485 | |
1486 #ifndef _WIN32 | |
6033 | 1487 vbox = gaim_gtk_make_frame (ret, _("Sound Method")); |
7987 | 1488 dd = gaim_gtk_prefs_dropdown(vbox, _("_Method:"), GAIM_PREF_STRING, |
1489 "/gaim/gtk/sound/method", | |
1490 _("Console beep"), "beep", | |
5440 | 1491 #ifdef USE_AO |
7987 | 1492 _("Automatic"), "automatic", |
11082 | 1493 "Arts", "arts", |
7987 | 1494 "ESD", "esd", |
1495 "NAS", "nas", | |
5440 | 1496 #endif |
7987 | 1497 _("Command"), "custom", |
10074 | 1498 _("No sounds"), "none", |
7987 | 1499 NULL); |
5440 | 1500 gtk_size_group_add_widget(sg, dd); |
10973 | 1501 gtk_misc_set_alignment(GTK_MISC(dd), 0, 0.5); |
5440 | 1502 |
1503 hbox = gtk_hbox_new(FALSE, 5); | |
11442
73f7cfa46f1b
[gaim-migrate @ 13681]
Richard Laager <rlaager@wiktel.com>
parents:
11424
diff
changeset
|
1504 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
5440 | 1505 |
6031 | 1506 label = gtk_label_new_with_mnemonic(_("Sound c_ommand:\n(%s for filename)")); |
5440 | 1507 gtk_size_group_add_widget(sg, label); |
1508 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
11442
73f7cfa46f1b
[gaim-migrate @ 13681]
Richard Laager <rlaager@wiktel.com>
parents:
11424
diff
changeset
|
1509 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
5440 | 1510 |
6007 | 1511 entry = gtk_entry_new(); |
1512 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
1513 | |
1514 gtk_editable_set_editable(GTK_EDITABLE(entry), TRUE); | |
5684 | 1515 cmd = gaim_prefs_get_string("/gaim/gtk/sound/command"); |
5440 | 1516 if(cmd) |
6007 | 1517 gtk_entry_set_text(GTK_ENTRY(entry), cmd); |
11442
73f7cfa46f1b
[gaim-migrate @ 13681]
Richard Laager <rlaager@wiktel.com>
parents:
11424
diff
changeset
|
1518 |
73f7cfa46f1b
[gaim-migrate @ 13681]
Richard Laager <rlaager@wiktel.com>
parents:
11424
diff
changeset
|
1519 gtk_box_pack_start(GTK_BOX(hbox), entry, TRUE, TRUE, 0); |
6007 | 1520 g_signal_connect(G_OBJECT(entry), "changed", |
5440 | 1521 G_CALLBACK(sound_cmd_yeah), NULL); |
6005 | 1522 |
1523 gtk_widget_set_sensitive(hbox, | |
1524 !strcmp(gaim_prefs_get_string("/gaim/gtk/sound/method"), | |
1525 "custom")); | |
10087 | 1526 gaim_prefs_connect_callback(prefs, "/gaim/gtk/sound/method", |
1527 sound_changed1_cb, hbox); | |
6005 | 1528 |
8141 | 1529 gaim_set_accessible_label (entry, label); |
5440 | 1530 #endif /* _WIN32 */ |
9150 | 1531 |
10074 | 1532 vbox = gaim_gtk_make_frame (ret, _("Sound Options")); |
1533 gaim_gtk_prefs_checkbox(_("Sounds when conversation has _focus"), | |
1534 "/gaim/gtk/sound/conv_focus", vbox); | |
1535 gaim_gtk_prefs_checkbox(_("_Sounds while away"), | |
1536 "/core/sound/while_away", vbox); | |
1537 | |
10075 | 1538 #ifndef _WIN32 |
10074 | 1539 gtk_widget_set_sensitive(vbox, |
1540 strcmp(gaim_prefs_get_string("/gaim/gtk/sound/method"), "none")); | |
10087 | 1541 gaim_prefs_connect_callback(prefs, "/gaim/gtk/sound/method", |
1542 sound_changed2_cb, vbox); | |
10075 | 1543 #endif |
10074 | 1544 |
9150 | 1545 vbox = gaim_gtk_make_frame(ret, _("Sound Events")); |
1546 | |
1547 /* The following is an ugly hack to make the frame expand so the | |
1548 * sound events list is big enough to be usable */ | |
1549 gtk_box_set_child_packing(GTK_BOX(vbox->parent), vbox, TRUE, TRUE, 0, | |
1550 GTK_PACK_START); | |
1551 gtk_box_set_child_packing(GTK_BOX(vbox->parent->parent), vbox->parent, TRUE, | |
1552 TRUE, 0, GTK_PACK_START); | |
1553 gtk_box_set_child_packing(GTK_BOX(vbox->parent->parent->parent), | |
1554 vbox->parent->parent, TRUE, TRUE, 0, GTK_PACK_START); | |
1555 | |
1556 sw = gtk_scrolled_window_new(NULL,NULL); | |
1557 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); | |
1558 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); | |
1559 | |
1560 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); | |
1561 event_store = gtk_list_store_new (4, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT); | |
1562 | |
1563 for (j=0; j < GAIM_NUM_SOUNDS; j++) { | |
1564 char *pref = g_strdup_printf("/gaim/gtk/sound/enabled/%s", | |
1565 gaim_gtk_sound_get_event_option(j)); | |
1566 const char *label = gaim_gtk_sound_get_event_label(j); | |
1567 | |
1568 if (label == NULL) { | |
1569 g_free(pref); | |
1570 continue; | |
1571 } | |
1572 | |
1573 gtk_list_store_append (event_store, &iter); | |
1574 gtk_list_store_set(event_store, &iter, | |
1575 0, gaim_prefs_get_bool(pref), | |
1576 1, _(label), | |
1577 2, pref, | |
1578 3, j, | |
1579 -1); | |
1580 g_free(pref); | |
1581 } | |
1582 | |
1583 event_view = gtk_tree_view_new_with_model (GTK_TREE_MODEL(event_store)); | |
1584 | |
1585 rend = gtk_cell_renderer_toggle_new(); | |
1586 sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (event_view)); | |
1587 g_signal_connect (G_OBJECT (sel), "changed", | |
1588 G_CALLBACK (prefs_sound_sel), | |
1589 NULL); | |
1590 g_signal_connect (G_OBJECT(rend), "toggled", | |
1591 G_CALLBACK(event_toggled), event_store); | |
1592 path = gtk_tree_path_new_first(); | |
1593 gtk_tree_selection_select_path(sel, path); | |
1594 gtk_tree_path_free(path); | |
1595 | |
1596 col = gtk_tree_view_column_new_with_attributes (_("Play"), | |
1597 rend, | |
1598 "active", 0, | |
1599 NULL); | |
1600 gtk_tree_view_append_column (GTK_TREE_VIEW(event_view), col); | |
1601 | |
1602 rend = gtk_cell_renderer_text_new(); | |
1603 col = gtk_tree_view_column_new_with_attributes (_("Event"), | |
1604 rend, | |
1605 "text", 1, | |
1606 NULL); | |
1607 gtk_tree_view_append_column (GTK_TREE_VIEW(event_view), col); | |
1608 g_object_unref(G_OBJECT(event_store)); | |
1609 gtk_container_add(GTK_CONTAINER(sw), event_view); | |
1610 | |
11243 | 1611 hbox = gtk_hbox_new(FALSE, GAIM_HIG_BOX_SPACE); |
9150 | 1612 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
1613 sound_entry = gtk_entry_new(); | |
1614 pref = g_strdup_printf("/gaim/gtk/sound/file/%s", | |
1615 gaim_gtk_sound_get_event_option(0)); | |
1616 file = gaim_prefs_get_string(pref); | |
1617 g_free(pref); | |
1618 gtk_entry_set_text(GTK_ENTRY(sound_entry), (file && *file != '\0') ? file : "(default)"); | |
1619 gtk_editable_set_editable(GTK_EDITABLE(sound_entry), FALSE); | |
1620 gtk_box_pack_start(GTK_BOX(hbox), sound_entry, FALSE, FALSE, 5); | |
1621 | |
1622 button = gtk_button_new_with_label(_("Test")); | |
1623 g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(test_sound), NULL); | |
1624 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1); | |
1625 | |
1626 button = gtk_button_new_with_label(_("Reset")); | |
1627 g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(reset_sound), NULL); | |
1628 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1); | |
1629 | |
1630 button = gtk_button_new_with_label(_("Choose...")); | |
9508 | 1631 g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(select_sound), NULL); |
9150 | 1632 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1); |
5440 | 1633 gtk_widget_show_all(ret); |
9118 | 1634 |
10075 | 1635 #ifndef _WIN32 |
10074 | 1636 gtk_widget_set_sensitive(vbox, |
1637 strcmp(gaim_prefs_get_string("/gaim/gtk/sound/method"), "none")); | |
10087 | 1638 gaim_prefs_connect_callback(prefs, "/gaim/gtk/sound/method", |
1639 sound_changed2_cb, vbox); | |
10075 | 1640 #endif |
10074 | 1641 |
5440 | 1642 return ret; |
1643 } | |
1644 | |
12195 | 1645 |
10182 | 1646 static void |
12195 | 1647 set_idle_away(GaimSavedStatus *status) |
10182 | 1648 { |
12195 | 1649 gaim_prefs_set_int("/core/savedstatus/idleaway", gaim_savedstatus_get_creation_time(status)); |
10182 | 1650 } |
1651 | |
10850 | 1652 static GtkWidget * |
1653 away_page() | |
1654 { | |
5440 | 1655 GtkWidget *ret; |
1656 GtkWidget *vbox; | |
1657 GtkWidget *hbox; | |
12575 | 1658 GtkWidget *dd; |
5440 | 1659 GtkWidget *label; |
1660 GtkWidget *button; | |
1661 GtkWidget *select; | |
12195 | 1662 GtkWidget *menu; |
5440 | 1663 GtkSizeGroup *sg; |
1664 | |
11243 | 1665 ret = gtk_vbox_new(FALSE, GAIM_HIG_CAT_SPACE); |
1666 gtk_container_set_border_width (GTK_CONTAINER (ret), GAIM_HIG_BORDER); | |
5440 | 1667 |
1668 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); | |
1669 | |
12573 | 1670 /* Idle stuff */ |
1671 vbox = gaim_gtk_make_frame(ret, _("Idle")); | |
1672 | |
12575 | 1673 dd = gaim_gtk_prefs_dropdown(vbox, _("Idle time _reporting:"), |
12573 | 1674 GAIM_PREF_STRING, "/core/away/idle_reporting", |
1675 _("None"), "none", | |
12580
05b5e6c24ea7
[gaim-migrate @ 14908]
Luke Schierer <lschiere@pidgin.im>
parents:
12575
diff
changeset
|
1676 _("Account usage"), "gaim", |
12573 | 1677 #ifdef USE_SCREENSAVER |
1678 _("Mouse movement"), "system", | |
1679 #endif | |
1680 NULL); | |
12575 | 1681 gtk_size_group_add_widget(sg, dd); |
1682 gtk_misc_set_alignment(GTK_MISC(dd), 0, 0.5); | |
12573 | 1683 |
1684 /* Away stuff */ | |
1685 vbox = gaim_gtk_make_frame(ret, _("Away")); | |
5440 | 1686 |
12575 | 1687 dd = gaim_gtk_prefs_dropdown(vbox, _("_Auto-reply:"), |
9596 | 1688 GAIM_PREF_STRING, "/core/away/auto_reply", |
1689 _("Never"), "never", | |
9736 | 1690 _("When away"), "away", |
10859 | 1691 _("When both away and idle"), "awayidle", |
9596 | 1692 NULL); |
12575 | 1693 gtk_size_group_add_widget(sg, dd); |
1694 gtk_misc_set_alignment(GTK_MISC(dd), 0, 0.5); | |
6142 | 1695 |
12573 | 1696 /* Auto-away stuff */ |
12575 | 1697 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); |
12573 | 1698 vbox = gaim_gtk_make_frame(ret, _("Auto-away")); |
11287
fb6e85c55fb8
[gaim-migrate @ 13484]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11275
diff
changeset
|
1699 |
11811 | 1700 button = gaim_gtk_prefs_checkbox(_("Change status when _idle"), |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1701 "/core/away/away_when_idle", vbox); |
8238 | 1702 |
7987 | 1703 select = gaim_gtk_prefs_labeled_spin_button(vbox, |
11811 | 1704 _("_Minutes before changing status:"), "/core/away/mins_before_away", |
7987 | 1705 1, 24 * 60, sg); |
5440 | 1706 g_signal_connect(G_OBJECT(button), "clicked", |
1707 G_CALLBACK(gaim_gtk_toggle_sensitive), select); | |
1708 | |
8238 | 1709 hbox = gtk_hbox_new(FALSE, 0); |
1710 gtk_container_add(GTK_CONTAINER(vbox), hbox); | |
1711 | |
11811 | 1712 label = gtk_label_new_with_mnemonic(_("Change _status to:")); |
5440 | 1713 gtk_size_group_add_widget(sg, label); |
10973 | 1714 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
8238 | 1715 g_signal_connect(G_OBJECT(button), "clicked", |
1716 G_CALLBACK(gaim_gtk_toggle_sensitive), label); | |
5440 | 1717 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
12656 | 1718 |
1719 /* TODO: Show something useful if we don't have any saved statuses. */ | |
12195 | 1720 menu = gaim_gtk_status_menu(gaim_savedstatus_get_idleaway(), G_CALLBACK(set_idle_away)); |
1721 gtk_box_pack_start(GTK_BOX(hbox), menu, FALSE, FALSE, 0); | |
1722 g_signal_connect(G_OBJECT(button), "clicked", | |
1723 G_CALLBACK(gaim_gtk_toggle_sensitive), menu); | |
12575 | 1724 gtk_label_set_mnemonic_widget(GTK_LABEL(label), menu); |
8238 | 1725 |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1726 if (!gaim_prefs_get_bool("/core/away/away_when_idle")) { |
12195 | 1727 gtk_widget_set_sensitive(GTK_WIDGET(menu), FALSE); |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1728 gtk_widget_set_sensitive(GTK_WIDGET(select), FALSE); |
8238 | 1729 gtk_widget_set_sensitive(GTK_WIDGET(label), FALSE); |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1730 } |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1731 |
5440 | 1732 gtk_widget_show_all(ret); |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1733 |
5440 | 1734 return ret; |
1735 } | |
1736 | |
10759 | 1737 int prefs_notebook_add_page(const char *text, |
5440 | 1738 GdkPixbuf *pixbuf, |
1739 GtkWidget *page, | |
1740 GtkTreeIter *iter, | |
1741 GtkTreeIter *parent, | |
1742 int ind) { | |
1743 GdkPixbuf *icon = NULL; | |
1744 | |
1745 if (pixbuf) | |
1746 icon = gdk_pixbuf_scale_simple (pixbuf, 18, 18, GDK_INTERP_BILINEAR); | |
1747 | |
1748 if (pixbuf) | |
1749 g_object_unref(pixbuf); | |
1750 if (icon) | |
1751 g_object_unref(icon); | |
10759 | 1752 |
11380 | 1753 #if GTK_CHECK_VERSION(2,4,0) |
10759 | 1754 return gtk_notebook_append_page(GTK_NOTEBOOK(prefsnotebook), page, gtk_label_new(text)); |
11380 | 1755 #else |
1756 gtk_notebook_append_page(GTK_NOTEBOOK(prefsnotebook), page, gtk_label_new(text)); | |
1757 return gtk_notebook_page_num(GTK_NOTEBOOK(prefsnotebook), page); | |
1758 #endif | |
5440 | 1759 } |
1760 | |
10871 | 1761 static void prefs_notebook_init() { |
9267 | 1762 GtkTreeIter p, c, c2; |
9150 | 1763 prefs_notebook_add_page(_("Conversations"), NULL, conv_page(), &c, &p, notebook_page++); |
9267 | 1764 prefs_notebook_add_page(_("Smiley Themes"), NULL, theme_page(), &c2, &c, notebook_page++); |
9150 | 1765 prefs_notebook_add_page(_("Sounds"), NULL, sound_page(), &c, &p, notebook_page++); |
8238 | 1766 prefs_notebook_add_page(_("Network"), NULL, network_page(), &p, NULL, notebook_page++); |
5440 | 1767 #ifndef _WIN32 |
1768 /* We use the registered default browser in windows */ | |
10060 | 1769 /* if the user is running gnome 2.x, hide the browsers tab */ |
10061 | 1770 if (gaim_running_gnome() == FALSE) { |
10060 | 1771 prefs_notebook_add_page(_("Browser"), NULL, browser_page(), &p, NULL, notebook_page++); |
1772 } | |
5440 | 1773 #endif |
1774 prefs_notebook_add_page(_("Logging"), NULL, logging_page(), &p, NULL, notebook_page++); | |
1775 prefs_notebook_add_page(_("Away / Idle"), NULL, away_page(), &p, NULL, notebook_page++); | |
1776 } | |
1777 | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1778 void gaim_gtk_prefs_show(void) |
5440 | 1779 { |
10078 | 1780 GtkWidget *vbox; |
8292
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
1781 GtkWidget *bbox; |
5440 | 1782 GtkWidget *notebook; |
1783 GtkWidget *button; | |
1784 | |
1785 if (prefs) { | |
1786 gtk_window_present(GTK_WINDOW(prefs)); | |
1787 return; | |
1788 } | |
1789 | |
1790 /* copy the preferences to tmp values... | |
1791 * I liked "take affect immediately" Oh well :-( */ | |
6016 | 1792 /* (that should have been "effect," right?) */ |
1793 | |
5440 | 1794 /* Back to instant-apply! I win! BU-HAHAHA! */ |
1795 | |
1796 /* Create the window */ | |
1797 prefs = gtk_window_new(GTK_WINDOW_TOPLEVEL); | |
1798 gtk_window_set_role(GTK_WINDOW(prefs), "preferences"); | |
1799 gtk_window_set_title(GTK_WINDOW(prefs), _("Preferences")); | |
1800 gtk_window_set_resizable (GTK_WINDOW(prefs), FALSE); | |
11243 | 1801 gtk_container_set_border_width(GTK_CONTAINER(prefs), GAIM_HIG_BORDER); |
5440 | 1802 g_signal_connect(G_OBJECT(prefs), "destroy", |
1803 G_CALLBACK(delete_prefs), NULL); | |
1804 | |
11243 | 1805 vbox = gtk_vbox_new(FALSE, GAIM_HIG_BORDER); |
5440 | 1806 gtk_container_add(GTK_CONTAINER(prefs), vbox); |
1807 gtk_widget_show(vbox); | |
1808 | |
1809 /* The notebook */ | |
1810 prefsnotebook = notebook = gtk_notebook_new (); | |
10078 | 1811 gtk_box_pack_start (GTK_BOX (vbox), notebook, FALSE, FALSE, 0); |
11740 | 1812 gtk_widget_show(prefsnotebook); |
5440 | 1813 |
8713 | 1814 /* The buttons to press! */ |
8292
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
1815 bbox = gtk_hbutton_box_new(); |
11243 | 1816 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
|
1817 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
|
1818 gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 0); |
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
1819 gtk_widget_show (bbox); |
5440 | 1820 |
1821 button = gtk_button_new_from_stock (GTK_STOCK_CLOSE); | |
1822 g_signal_connect_swapped(G_OBJECT(button), "clicked", | |
1823 G_CALLBACK(gtk_widget_destroy), prefs); | |
8292
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
1824 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); |
5440 | 1825 gtk_widget_show(button); |
1826 | |
1827 prefs_notebook_init(); | |
1828 | |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1829 /* Show everything. */ |
11740 | 1830 gtk_widget_show(prefs); |
5440 | 1831 } |
1832 | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1833 static void |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1834 set_bool_pref(GtkWidget *w, const char *key) |
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 gaim_prefs_set_bool(key, |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1837 gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1838 } |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1839 |
7976 | 1840 GtkWidget * |
7987 | 1841 gaim_gtk_prefs_checkbox(const char *text, const char *key, GtkWidget *page) |
5440 | 1842 { |
1843 GtkWidget *button; | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1844 |
5440 | 1845 button = gtk_check_button_new_with_mnemonic(text); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1846 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1847 gaim_prefs_get_bool(key)); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1848 |
5440 | 1849 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
|
1850 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1851 g_signal_connect(G_OBJECT(button), "clicked", |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
1852 G_CALLBACK(set_bool_pref), (char *)key); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1853 |
5440 | 1854 gtk_widget_show(button); |
1855 | |
1856 return button; | |
1857 } | |
1858 | |
5770
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
1859 static void |
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
1860 smiley_theme_pref_cb(const char *name, GaimPrefType type, gpointer value, |
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
1861 gpointer data) |
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
1862 { |
11557
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1863 const char *themename = value; |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1864 GSList *themes; |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1865 |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1866 for (themes = smiley_themes; themes; themes = themes->next) { |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1867 struct smiley_theme *smile = themes->data; |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1868 if (smile->name && strcmp(themename, smile->name) == 0) { |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1869 gaim_gtkthemes_load_smiley_theme(smile->path, TRUE); |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1870 break; |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1871 } |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1872 } |
5770
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
1873 } |
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
1874 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1875 void |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1876 gaim_gtk_prefs_init(void) |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1877 { |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1878 gaim_prefs_add_none("/gaim"); |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1879 gaim_prefs_add_none("/gaim/gtk"); |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1880 gaim_prefs_add_none("/plugins/gtk"); |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1881 |
8283 | 1882 #ifndef _WIN32 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1883 /* Browsers */ |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1884 gaim_prefs_add_none("/gaim/gtk/browsers"); |
8272 | 1885 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
|
1886 gaim_prefs_add_string("/gaim/gtk/browsers/command", ""); |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
1887 gaim_prefs_add_string("/gaim/gtk/browsers/browser", "mozilla"); |
8283 | 1888 #endif |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1889 |
5949
90d0849abd3c
[gaim-migrate @ 6393]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1890 /* Plugins */ |
5982
35d3c1ac5ece
[gaim-migrate @ 6430]
Christian Hammond <chipx86@chipx86.com>
parents:
5981
diff
changeset
|
1891 gaim_prefs_add_none("/gaim/gtk/plugins"); |
5949
90d0849abd3c
[gaim-migrate @ 6393]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1892 gaim_prefs_add_string_list("/gaim/gtk/plugins/loaded", NULL); |
90d0849abd3c
[gaim-migrate @ 6393]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1893 |
10605 | 1894 /* File locations */ |
1895 gaim_prefs_add_none("/gaim/gtk/filelocations"); | |
1896 gaim_prefs_add_string("/gaim/gtk/filelocations/last_save_folder", ""); | |
1897 gaim_prefs_add_string("/gaim/gtk/filelocations/last_open_folder", ""); | |
1898 gaim_prefs_add_string("/gaim/gtk/filelocations/last_icon_folder", ""); | |
1899 | |
5539
de09863bd4b5
[gaim-migrate @ 5939]
Christian Hammond <chipx86@chipx86.com>
parents:
5535
diff
changeset
|
1900 /* Smiley Themes */ |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
1901 gaim_prefs_add_none("/gaim/gtk/smileys"); |
11557
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1902 gaim_prefs_add_string("/gaim/gtk/smileys/theme", "Default"); |
5770
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
1903 |
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
1904 /* Smiley Callbacks */ |
10087 | 1905 gaim_prefs_connect_callback(prefs, "/gaim/gtk/smileys/theme", |
5770
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
1906 smiley_theme_pref_cb, NULL); |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1907 } |
8905 | 1908 |
1909 void gaim_gtk_prefs_update_old() { | |
1910 /* Rename some old prefs */ | |
1911 gaim_prefs_rename("/gaim/gtk/logging/log_ims", "/core/logging/log_ims"); | |
1912 gaim_prefs_rename("/gaim/gtk/logging/log_chats", "/core/logging/log_chats"); | |
1913 gaim_prefs_rename("/core/conversations/placement", | |
8998 | 1914 "/gaim/gtk/conversations/placement"); |
8905 | 1915 |
10307 | 1916 gaim_prefs_rename("/gaim/gtk/debug/timestamps", "/core/debug/timestamps"); |
10701 | 1917 gaim_prefs_rename("/gaim/gtk/conversations/im/raise_on_events", "/plugins/gtk/X11/notify/method_raise"); |
10307 | 1918 |
11267
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
1919 gaim_prefs_rename_boolean_toggle("/gaim/gtk/conversations/ignore_colors", |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
1920 "/gaim/gtk/conversations/show_incoming_formatting"); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
1921 |
12573 | 1922 /* this string pref moved into the core, try to be friendly */ |
1923 gaim_prefs_rename("/gaim/gtk/idle/reporting_method", "/core/away/idle_reporting"); | |
12154 | 1924 |
8905 | 1925 /* Remove some no-longer-used prefs */ |
10398 | 1926 gaim_prefs_remove("/gaim/gtk/blist/auto_expand_contacts"); |
10133 | 1927 gaim_prefs_remove("/gaim/gtk/blist/button_style"); |
10168 | 1928 gaim_prefs_remove("/gaim/gtk/blist/grey_idle_buddies"); |
10133 | 1929 gaim_prefs_remove("/gaim/gtk/blist/raise_on_events"); |
8945 | 1930 gaim_prefs_remove("/gaim/gtk/blist/show_group_count"); |
10353 | 1931 gaim_prefs_remove("/gaim/gtk/blist/show_warning_level"); |
10358 | 1932 gaim_prefs_remove("/gaim/gtk/conversations/button_type"); |
10398 | 1933 gaim_prefs_remove("/gaim/gtk/conversations/ctrl_enter_sends"); |
1934 gaim_prefs_remove("/gaim/gtk/conversations/enter_sends"); | |
11697 | 1935 gaim_prefs_remove("/gaim/gtk/conversations/escape_closes"); |
10164 | 1936 gaim_prefs_remove("/gaim/gtk/conversations/html_shortcuts"); |
8946 | 1937 gaim_prefs_remove("/gaim/gtk/conversations/icons_on_tabs"); |
11267
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
1938 gaim_prefs_remove("/gaim/gtk/conversations/send_formatting"); |
10398 | 1939 gaim_prefs_remove("/gaim/gtk/conversations/show_smileys"); |
8905 | 1940 gaim_prefs_remove("/gaim/gtk/conversations/show_urls_as_links"); |
10164 | 1941 gaim_prefs_remove("/gaim/gtk/conversations/smiley_shortcuts"); |
9025 | 1942 gaim_prefs_remove("/gaim/gtk/conversations/use_custom_bgcolor"); |
1943 gaim_prefs_remove("/gaim/gtk/conversations/use_custom_fgcolor"); | |
11269
1cbe76d30e81
[gaim-migrate @ 13451]
Richard Laager <rlaager@wiktel.com>
parents:
11267
diff
changeset
|
1944 gaim_prefs_remove("/gaim/gtk/conversations/use_custom_font"); |
9025 | 1945 gaim_prefs_remove("/gaim/gtk/conversations/use_custom_size"); |
10398 | 1946 gaim_prefs_remove("/gaim/gtk/conversations/chat/old_tab_complete"); |
1947 gaim_prefs_remove("/gaim/gtk/conversations/chat/tab_completion"); | |
9301 | 1948 gaim_prefs_remove("/gaim/gtk/conversations/im/hide_on_send"); |
10398 | 1949 gaim_prefs_remove("/gaim/gtk/conversations/chat/color_nicks"); |
1950 gaim_prefs_remove("/gaim/gtk/conversations/chat/raise_on_events"); | |
10492 | 1951 gaim_prefs_remove("/gaim/gtk/conversations/ignore_fonts"); |
1952 gaim_prefs_remove("/gaim/gtk/conversations/ignore_font_sizes"); | |
12272 | 1953 gaim_prefs_remove("/gaim/gtk/idle"); |
10398 | 1954 gaim_prefs_remove("/gaim/gtk/logging/individual_logs"); |
1955 gaim_prefs_remove("/gaim/gtk/sound/signon"); | |
1956 gaim_prefs_remove("/gaim/gtk/sound/silent_signon"); | |
12616
eee2042ad4f4
[gaim-migrate @ 14952]
Richard Laager <rlaager@wiktel.com>
parents:
12613
diff
changeset
|
1957 |
eee2042ad4f4
[gaim-migrate @ 14952]
Richard Laager <rlaager@wiktel.com>
parents:
12613
diff
changeset
|
1958 /* Convert old queuing prefs to hide_new 3-way pref. */ |
eee2042ad4f4
[gaim-migrate @ 14952]
Richard Laager <rlaager@wiktel.com>
parents:
12613
diff
changeset
|
1959 if (gaim_prefs_exists("/plugins/gtk/docklet/queue_messages") && |
eee2042ad4f4
[gaim-migrate @ 14952]
Richard Laager <rlaager@wiktel.com>
parents:
12613
diff
changeset
|
1960 gaim_prefs_get_bool("/plugins/gtk/docklet/queue_messages")) |
eee2042ad4f4
[gaim-migrate @ 14952]
Richard Laager <rlaager@wiktel.com>
parents:
12613
diff
changeset
|
1961 { |
eee2042ad4f4
[gaim-migrate @ 14952]
Richard Laager <rlaager@wiktel.com>
parents:
12613
diff
changeset
|
1962 gaim_prefs_set_string("/gaim/gtk/conversations/im/hide_new", "always"); |
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 else if (gaim_prefs_exists("/gaim/gtk/away/queue_messages") && |
eee2042ad4f4
[gaim-migrate @ 14952]
Richard Laager <rlaager@wiktel.com>
parents:
12613
diff
changeset
|
1965 gaim_prefs_get_bool("/gaim/gtk/away/queue_messages")) |
eee2042ad4f4
[gaim-migrate @ 14952]
Richard Laager <rlaager@wiktel.com>
parents:
12613
diff
changeset
|
1966 { |
eee2042ad4f4
[gaim-migrate @ 14952]
Richard Laager <rlaager@wiktel.com>
parents:
12613
diff
changeset
|
1967 gaim_prefs_set_string("/gaim/gtk/conversations/im/hide_new", "away"); |
eee2042ad4f4
[gaim-migrate @ 14952]
Richard Laager <rlaager@wiktel.com>
parents:
12613
diff
changeset
|
1968 } |
eee2042ad4f4
[gaim-migrate @ 14952]
Richard Laager <rlaager@wiktel.com>
parents:
12613
diff
changeset
|
1969 else |
eee2042ad4f4
[gaim-migrate @ 14952]
Richard Laager <rlaager@wiktel.com>
parents:
12613
diff
changeset
|
1970 { |
eee2042ad4f4
[gaim-migrate @ 14952]
Richard Laager <rlaager@wiktel.com>
parents:
12613
diff
changeset
|
1971 gaim_prefs_set_string("/gaim/gtk/conversations/im/hide_new", "never"); |
eee2042ad4f4
[gaim-migrate @ 14952]
Richard Laager <rlaager@wiktel.com>
parents:
12613
diff
changeset
|
1972 } |
12116
e75ef7aa913e
[gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents:
12067
diff
changeset
|
1973 gaim_prefs_remove("/gaim/gtk/away/queue_messages"); |
12281 | 1974 gaim_prefs_remove("/gaim/gtk/away"); |
12116
e75ef7aa913e
[gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents:
12067
diff
changeset
|
1975 gaim_prefs_remove("/plugins/gtk/docklet/queue_messages"); |
8905 | 1976 } |