Mercurial > pidgin
annotate src/gtkprefs.c @ 10349:655c48791b3c
[gaim-migrate @ 11563]
Removed "Use remote alias when no alias is set" Defaulted to:
Conversation titles: No
Conversation messages: Yes
Buddy list: Yes
I barely use MSN, and I use ICQ even less, so if someone thinks of better
defaults let me know. These seem to be the best for me.
The trick is that on MSN, the server alias usually is less helpful than the
screenname and on ICQ, it's more helpful. An alternative is to have the prpl
specify which to use, but that's dumb.
committer: Tailor Script <tailor@pidgin.im>
author | Sean Egan <seanegan@gmail.com> |
---|---|
date | Mon, 13 Dec 2004 00:52:07 +0000 |
parents | 2ac21bf20e04 |
children | 7fcdd669eb49 |
rev | line source |
---|---|
6928
6ed0a1c045b4
[gaim-migrate @ 7475]
Christian Hammond <chipx86@chipx86.com>
parents:
6861
diff
changeset
|
1 /** |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
2 * @file gtkprefs.c GTK+ Preferences |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
3 * @ingroup gtkui |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
4 * |
5440 | 5 * gaim |
6 * | |
8046 | 7 * Gaim is the legal property of its developers, whose names are too numerous |
8 * to list here. Please refer to the COPYRIGHT file distributed with this | |
9 * source distribution. | |
5440 | 10 * |
11 * This program is free software; you can redistribute it and/or modify | |
12 * it under the terms of the GNU General Public License as published by | |
13 * the Free Software Foundation; either version 2 of the License, or | |
14 * (at your option) any later version. | |
15 * | |
16 * This program is distributed in the hope that it will be useful, | |
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 * GNU General Public License for more details. | |
20 * | |
21 * You should have received a copy of the GNU General Public License | |
22 * along with this program; if not, write to the Free Software | |
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
24 * | |
25 */ | |
9791 | 26 #include "internal.h" |
27 #include "gtkgaim.h" | |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
28 |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
29 #include "debug.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
30 #include "notify.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
31 #include "prefs.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
32 #include "proxy.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
33 #include "prpl.h" |
9508 | 34 #include "request.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
35 #include "sound.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
36 #include "util.h" |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
37 #include "network.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
38 |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
39 #include "gtkblist.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
40 #include "gtkconv.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
41 #include "gtkdebug.h" |
9709 | 42 #include "gtkdialogs.h" |
5440 | 43 #include "gtkimhtml.h" |
8833 | 44 #include "gtkimhtmltoolbar.h" |
5440 | 45 #include "gtkplugin.h" |
8713 | 46 #include "gtkpluginpref.h" |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
47 #include "gtkprefs.h" |
5684 | 48 #include "gtksound.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
49 #include "gtkutils.h" |
10297
ec140184437b
[gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
10272
diff
changeset
|
50 #include "gtkstock.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
51 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
52 #define PROXYHOST 0 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
53 #define PROXYPORT 1 |
6005 | 54 #define PROXYUSER 2 |
55 #define PROXYPASS 3 | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
56 |
5440 | 57 static int sound_row_sel = 0; |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
58 static GtkWidget *prefsnotebook; |
5440 | 59 |
60 static GtkWidget *sound_entry = NULL; | |
61 static GtkListStore *smiley_theme_store = NULL; | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
62 static GtkWidget *prefs_proxy_frame = NULL; |
5440 | 63 |
64 static GtkWidget *prefs = NULL; | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
65 static GtkWidget *debugbutton = NULL; |
5440 | 66 static int notebook_page = 0; |
8713 | 67 static GtkTreeIter proto_iter, plugin_iter; |
5440 | 68 |
69 /* | |
70 * PROTOTYPES | |
71 */ | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
72 static GtkTreeIter *prefs_notebook_add_page(const char*, GdkPixbuf*, |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
73 GtkWidget*, GtkTreeIter*, |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
74 GtkTreeIter*, int); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
75 static void delete_prefs(GtkWidget *, void *); |
5440 | 76 static void update_plugin_list(void *data); |
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, |
91 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); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
112 g_object_set_data(G_OBJECT(spin), "val", 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); |
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) { |
136 char *key = (char*)data; | |
137 | |
138 gaim_prefs_set_string(key, gtk_entry_get_text(entry)); | |
139 } | |
140 | |
141 GtkWidget * | |
142 gaim_gtk_prefs_labeled_entry(GtkWidget *page, const gchar *title, char *key, | |
143 GtkSizeGroup *sg) | |
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; |
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
208 GtkWidget *label; |
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 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
219 hbox = gtk_hbox_new(FALSE, 5); |
8713 | 220 /*gtk_container_add (GTK_CONTAINER (box), hbox);*/ |
221 gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 0); | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
222 gtk_widget_show(hbox); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
223 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
224 label = gtk_label_new_with_mnemonic(title); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
225 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
226 gtk_widget_show(label); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
227 |
8577 | 228 #if 0 /* GTK_CHECK_VERSION(2,4,0) */ |
229 if(type == GAIM_PREF_INT) | |
230 model = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_INT); | |
231 else if(type == GAIM_PREF_STRING) | |
232 model = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING); | |
233 dropdown = gtk_combo_box_new_with_model(model); | |
234 #else | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
235 dropdown = gtk_option_menu_new(); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
236 menu = gtk_menu_new(); |
8577 | 237 #endif |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
238 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
239 gtk_label_set_mnemonic_widget(GTK_LABEL(label), dropdown); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
240 |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
241 if (type == GAIM_PREF_INT) |
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
242 stored_int = gaim_prefs_get_int(key); |
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
243 else if (type == GAIM_PREF_STRING) |
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
244 stored_str = gaim_prefs_get_string(key); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
245 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
246 while (menuitems != NULL && (text = (char *) menuitems->data) != NULL) { |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
247 menuitems = g_list_next(menuitems); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
248 g_return_val_if_fail(menuitems != NULL, NULL); |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
249 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
250 opt = gtk_menu_item_new_with_label(text); |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
251 |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
252 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
|
253 |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
254 if (type == GAIM_PREF_INT) { |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
255 int_value = GPOINTER_TO_INT(menuitems->data); |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
256 g_object_set_data(G_OBJECT(opt), "value", |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
257 GINT_TO_POINTER(int_value)); |
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 else if (type == GAIM_PREF_STRING) { |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
260 str_value = (const char *)menuitems->data; |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
261 |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
262 g_object_set_data(G_OBJECT(opt), "value", (char *)str_value); |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
263 } |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
264 else if (type == GAIM_PREF_BOOLEAN) { |
9151 | 265 g_object_set_data(G_OBJECT(opt), "value", |
266 menuitems->data); | |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
267 } |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
268 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
269 g_signal_connect(G_OBJECT(opt), "activate", |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
270 G_CALLBACK(dropdown_set), (char *)key); |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
271 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
272 gtk_widget_show(opt); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
273 gtk_menu_shell_append(GTK_MENU_SHELL(menu), opt); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
274 |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
275 if ((type == GAIM_PREF_INT && stored_int == int_value) || |
5753
96214f5de47c
[gaim-migrate @ 6178]
Christian Hammond <chipx86@chipx86.com>
parents:
5716
diff
changeset
|
276 (type == GAIM_PREF_STRING && stored_str != NULL && |
96214f5de47c
[gaim-migrate @ 6178]
Christian Hammond <chipx86@chipx86.com>
parents:
5716
diff
changeset
|
277 !strcmp(stored_str, str_value)) || |
9151 | 278 (type == GAIM_PREF_BOOLEAN && |
279 (gaim_prefs_get_bool(key) == GPOINTER_TO_INT(menuitems->data)))) { | |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
280 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
281 gtk_menu_set_active(GTK_MENU(menu), o); |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
282 } |
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
283 |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
284 menuitems = g_list_next(menuitems); |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
285 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
286 o++; |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
287 } |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
288 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
289 gtk_option_menu_set_menu(GTK_OPTION_MENU(dropdown), menu); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
290 gtk_box_pack_start(GTK_BOX(hbox), dropdown, FALSE, FALSE, 0); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
291 gtk_widget_show(dropdown); |
8137 | 292 gaim_set_accessible_label (dropdown, label); |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
293 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
294 return label; |
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 |
7976 | 297 GtkWidget * |
7987 | 298 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
|
299 const char *key, ...) |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
300 { |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
301 va_list ap; |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
302 GList *menuitems = NULL; |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
303 GtkWidget *dropdown = NULL; |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
304 char *name; |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
305 int int_value; |
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
306 const char *str_value; |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
307 |
9151 | 308 g_return_val_if_fail(type == GAIM_PREF_BOOLEAN || type == GAIM_PREF_INT || |
309 type == GAIM_PREF_STRING, NULL); | |
310 | |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
311 va_start(ap, key); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
312 while ((name = va_arg(ap, char *)) != NULL) { |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
313 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
314 menuitems = g_list_prepend(menuitems, name); |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
315 |
9151 | 316 if (type == GAIM_PREF_INT || type == GAIM_PREF_BOOLEAN) { |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
317 int_value = va_arg(ap, int); |
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
318 menuitems = g_list_prepend(menuitems, GINT_TO_POINTER(int_value)); |
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
319 } |
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
320 else { |
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
321 str_value = va_arg(ap, const char *); |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
322 menuitems = g_list_prepend(menuitems, (char *)str_value); |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
323 } |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
324 } |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
325 va_end(ap); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
326 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
327 g_return_val_if_fail(menuitems != NULL, NULL); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
328 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
329 menuitems = g_list_reverse(menuitems); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
330 |
7987 | 331 dropdown = gaim_gtk_prefs_dropdown_from_list(box, title, type, key, |
332 menuitems); | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
333 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
334 g_list_free(menuitems); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
335 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
336 return dropdown; |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
337 } |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
338 |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
339 static void |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
340 delete_prefs(GtkWidget *asdf, void *gdsa) |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
341 { |
5440 | 342 GList *l; |
343 GaimPlugin *plug; | |
344 | |
9508 | 345 /* Close any "select sound" request dialogs */ |
346 gaim_request_close_with_handle(prefs); | |
347 | |
5440 | 348 gaim_plugins_unregister_probe_notify_cb(update_plugin_list); |
349 | |
10087 | 350 /* Unregister callbacks. */ |
351 gaim_prefs_disconnect_by_handle(prefs); | |
352 | |
5440 | 353 prefs = NULL; |
354 sound_entry = NULL; | |
355 debugbutton = NULL; | |
356 notebook_page = 0; | |
357 smiley_theme_store = NULL; | |
358 | |
359 for (l = gaim_plugins_get_loaded(); l != NULL; l = l->next) { | |
360 plug = l->data; | |
361 | |
362 if (GAIM_IS_GTK_PLUGIN(plug)) { | |
363 GaimGtkPluginUiInfo *ui_info; | |
364 | |
365 ui_info = GAIM_GTK_PLUGIN_UI_INFO(plug); | |
366 | |
367 if (ui_info->iter != NULL) { | |
368 g_free(ui_info->iter); | |
369 ui_info->iter = NULL; | |
370 } | |
371 } | |
8745 | 372 |
373 if(GAIM_PLUGIN_HAS_PREF_FRAME(plug)) { | |
374 GaimPluginUiInfo *prefs_info; | |
375 | |
376 prefs_info = GAIM_PLUGIN_UI_INFO(plug); | |
377 | |
8814 | 378 if(prefs_info->frame != NULL) { |
379 gaim_plugin_pref_frame_destroy(prefs_info->frame); | |
380 prefs_info->frame = NULL; | |
381 } | |
382 | |
8745 | 383 if(prefs_info->iter != NULL) { |
384 g_free(prefs_info->iter); | |
385 prefs_info->iter = NULL; | |
386 } | |
387 } | |
5440 | 388 } |
389 } | |
390 | |
391 static void smiley_sel (GtkTreeSelection *sel, GtkTreeModel *model) { | |
392 GtkTreeIter iter; | |
393 const char *filename; | |
394 GValue val = { 0, }; | |
5841 | 395 |
5440 | 396 if (! gtk_tree_selection_get_selected (sel, &model, &iter)) |
397 return; | |
398 gtk_tree_model_get_value (model, &iter, 2, &val); | |
399 filename = g_value_get_string(&val); | |
5770
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
400 gaim_prefs_set_string("/gaim/gtk/smileys/theme", filename); |
5440 | 401 g_value_unset (&val); |
402 } | |
403 | |
404 GtkTreePath *theme_refresh_theme_list() | |
405 { | |
406 GdkPixbuf *pixbuf; | |
407 GSList *themes; | |
408 GtkTreeIter iter; | |
409 GtkTreePath *path = NULL; | |
410 int ind = 0; | |
411 | |
412 | |
413 smiley_theme_probe(); | |
414 | |
415 if (!smiley_themes) | |
416 return NULL; | |
417 | |
418 themes = smiley_themes; | |
419 | |
420 gtk_list_store_clear(smiley_theme_store); | |
421 | |
422 while (themes) { | |
423 struct smiley_theme *theme = themes->data; | |
424 char *description = g_strdup_printf("<span size='larger' weight='bold'>%s</span> - %s\n" | |
425 "<span size='smaller' foreground='dim grey'>%s</span>", | |
426 theme->name, theme->author, theme->desc); | |
427 gtk_list_store_append (smiley_theme_store, &iter); | |
8494 | 428 |
429 /* | |
430 * LEAK - Gentoo memprof thinks pixbuf is leaking here... but it | |
431 * looks like it should be ok to me. Anyone know what's up? --Mark | |
432 */ | |
8963 | 433 pixbuf = (theme->icon ? gdk_pixbuf_new_from_file(theme->icon, NULL) : NULL); |
5440 | 434 |
435 gtk_list_store_set(smiley_theme_store, &iter, | |
436 0, pixbuf, | |
437 1, description, | |
438 2, theme->path, | |
8928 | 439 3, theme->name, |
5440 | 440 -1); |
7094
2343c3aa1dec
[gaim-migrate @ 7659]
Christian Hammond <chipx86@chipx86.com>
parents:
7092
diff
changeset
|
441 |
2343c3aa1dec
[gaim-migrate @ 7659]
Christian Hammond <chipx86@chipx86.com>
parents:
7092
diff
changeset
|
442 if (pixbuf != NULL) |
2343c3aa1dec
[gaim-migrate @ 7659]
Christian Hammond <chipx86@chipx86.com>
parents:
7092
diff
changeset
|
443 g_object_unref(G_OBJECT(pixbuf)); |
2343c3aa1dec
[gaim-migrate @ 7659]
Christian Hammond <chipx86@chipx86.com>
parents:
7092
diff
changeset
|
444 |
5440 | 445 g_free(description); |
446 themes = themes->next; | |
447 if (current_smiley_theme && !strcmp(theme->path, current_smiley_theme->path)) { | |
448 /* path = gtk_tree_path_new_from_indices(ind); */ | |
449 char *iwishihadgtk2_2 = g_strdup_printf("%d", ind); | |
450 path = gtk_tree_path_new_from_string(iwishihadgtk2_2); | |
451 g_free(iwishihadgtk2_2); | |
452 } | |
453 ind++; | |
454 } | |
455 | |
456 return path; | |
457 } | |
458 | |
459 void theme_install_theme(char *path, char *extn) { | |
460 #ifndef _WIN32 | |
9769 | 461 gchar *command, *escaped; |
5440 | 462 #endif |
463 gchar *destdir; | |
464 gchar *tail; | |
8494 | 465 GtkTreePath *themepath = NULL; |
5440 | 466 |
467 /* Just to be safe */ | |
468 g_strchomp(path); | |
469 | |
470 /* I dont know what you are, get out of here */ | |
471 if (extn != NULL) | |
472 tail = extn; | |
473 else if ((tail = strrchr(path, '.')) == NULL) | |
474 return; | |
475 | |
476 destdir = g_strconcat(gaim_user_dir(), G_DIR_SEPARATOR_S "smileys", NULL); | |
477 | |
478 /* We'll check this just to make sure. This also lets us do something different on | |
479 * other platforms, if need be */ | |
480 if (!g_ascii_strcasecmp(tail, ".gz") || !g_ascii_strcasecmp(tail, ".tgz")) { | |
481 #ifndef _WIN32 | |
9769 | 482 escaped = g_shell_quote(path); |
483 command = g_strdup_printf("tar > /dev/null xzf %s -C %s", escaped, destdir); | |
484 g_free(escaped); | |
5440 | 485 #else |
486 if(!wgaim_gz_untar(path, destdir)) { | |
487 g_free(destdir); | |
488 return; | |
489 } | |
490 #endif | |
491 } | |
492 else { | |
493 g_free(destdir); | |
494 return; | |
495 } | |
496 | |
497 #ifndef _WIN32 | |
498 /* Fire! */ | |
499 system(command); | |
500 | |
501 g_free(command); | |
502 #endif | |
503 g_free(destdir); | |
504 | |
8494 | 505 themepath = theme_refresh_theme_list(); |
506 if (themepath != NULL) | |
507 gtk_tree_path_free(themepath); | |
5440 | 508 } |
509 | |
7094
2343c3aa1dec
[gaim-migrate @ 7659]
Christian Hammond <chipx86@chipx86.com>
parents:
7092
diff
changeset
|
510 static void |
2343c3aa1dec
[gaim-migrate @ 7659]
Christian Hammond <chipx86@chipx86.com>
parents:
7092
diff
changeset
|
511 theme_got_url(void *data, const char *themedata, size_t len) |
2343c3aa1dec
[gaim-migrate @ 7659]
Christian Hammond <chipx86@chipx86.com>
parents:
7092
diff
changeset
|
512 { |
5440 | 513 FILE *f; |
514 gchar *path; | |
515 | |
10203
7ff9b8b22e7d
[gaim-migrate @ 11324]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
10182
diff
changeset
|
516 f = gaim_mkstemp(&path, TRUE); |
5440 | 517 fwrite(themedata, len, 1, f); |
518 fclose(f); | |
519 | |
520 theme_install_theme(path, data); | |
521 | |
522 unlink(path); | |
523 g_free(path); | |
524 } | |
525 | |
526 void theme_dnd_recv(GtkWidget *widget, GdkDragContext *dc, guint x, guint y, GtkSelectionData *sd, | |
527 guint info, guint t, gpointer data) { | |
528 gchar *name = sd->data; | |
529 | |
530 if ((sd->length >= 0) && (sd->format == 8)) { | |
531 /* Well, it looks like the drag event was cool. | |
532 * Let's do something with it */ | |
533 | |
534 if (!g_ascii_strncasecmp(name, "file://", 7)) { | |
535 GError *converr = NULL; | |
536 gchar *tmp; | |
537 /* It looks like we're dealing with a local file. Let's | |
538 * just untar it in the right place */ | |
539 if(!(tmp = g_filename_from_uri(name, NULL, &converr))) { | |
540 gaim_debug(GAIM_DEBUG_ERROR, "theme dnd", "%s\n", | |
541 (converr ? converr->message : | |
542 "g_filename_from_uri error")); | |
543 return; | |
544 } | |
545 theme_install_theme(tmp, NULL); | |
546 g_free(tmp); | |
547 } else if (!g_ascii_strncasecmp(name, "http://", 7)) { | |
548 /* Oo, a web drag and drop. This is where things | |
549 * will start to get interesting */ | |
550 gchar *tail; | |
551 | |
552 if ((tail = strrchr(name, '.')) == NULL) | |
553 return; | |
554 | |
555 /* We'll check this just to make sure. This also lets us do something different on | |
556 * other platforms, if need be */ | |
7094
2343c3aa1dec
[gaim-migrate @ 7659]
Christian Hammond <chipx86@chipx86.com>
parents:
7092
diff
changeset
|
557 gaim_url_fetch(name, TRUE, NULL, FALSE, theme_got_url, ".tgz"); |
5440 | 558 } |
559 | |
560 gtk_drag_finish(dc, TRUE, FALSE, t); | |
561 } | |
562 | |
563 gtk_drag_finish(dc, FALSE, FALSE, t); | |
564 } | |
565 | |
8928 | 566 /* Does same as normal sort, except "none" is sorted first */ |
567 gint gaim_sort_smileys (GtkTreeModel *model, | |
568 GtkTreeIter *a, | |
569 GtkTreeIter *b, | |
570 gpointer userdata) | |
571 { | |
572 gint ret = 0; | |
9949 | 573 gchar *name1 = NULL, *name2 = NULL; |
8928 | 574 |
575 gtk_tree_model_get(model, a, 3, &name1, -1); | |
576 gtk_tree_model_get(model, b, 3, &name2, -1); | |
577 | |
578 if (name1 == NULL || name2 == NULL) { | |
579 if (!(name1 == NULL && name2 == NULL)) | |
580 ret = (name1 == NULL) ? -1: 1; | |
581 } else if (!g_ascii_strcasecmp(name1, "none")) { | |
10167 | 582 if (!g_utf8_collate(name1, name2)) |
583 ret = 0; | |
584 else | |
585 /* Sort name1 first */ | |
586 ret = -1; | |
8928 | 587 } else if (!g_ascii_strcasecmp(name2, "none")) { |
588 /* Sort name2 first */ | |
589 ret = 1; | |
590 } else { | |
591 /* Neither string is "none", default to normal sort */ | |
592 ret = g_utf8_collate(name1,name2); | |
593 } | |
594 | |
9521 | 595 g_free(name1); |
596 g_free(name2); | |
597 | |
8928 | 598 return ret; |
599 } | |
600 | |
5440 | 601 GtkWidget *theme_page() { |
602 GtkWidget *ret; | |
603 GtkWidget *sw; | |
604 GtkWidget *view; | |
605 GtkCellRenderer *rend; | |
606 GtkTreeViewColumn *col; | |
607 GtkTreeSelection *sel; | |
608 GtkTreePath *path = NULL; | |
609 GtkWidget *label; | |
610 GtkTargetEntry te[3] = {{"text/plain", 0, 0},{"text/uri-list", 0, 1},{"STRING", 0, 2}}; | |
611 | |
612 ret = gtk_vbox_new(FALSE, 18); | |
613 gtk_container_set_border_width (GTK_CONTAINER (ret), 12); | |
614 | |
615 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.")); | |
616 | |
617 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); | |
618 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); | |
619 gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT); | |
620 | |
621 gtk_box_pack_start(GTK_BOX(ret), label, FALSE, TRUE, 0); | |
622 gtk_widget_show(label); | |
623 | |
624 sw = gtk_scrolled_window_new(NULL,NULL); | |
7939 | 625 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); |
7931 | 626 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); |
5440 | 627 |
628 gtk_box_pack_start(GTK_BOX(ret), sw, TRUE, TRUE, 0); | |
8928 | 629 smiley_theme_store = gtk_list_store_new (4, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); |
5440 | 630 |
631 path = theme_refresh_theme_list(); | |
8075 | 632 |
5440 | 633 view = gtk_tree_view_new_with_model (GTK_TREE_MODEL(smiley_theme_store)); |
634 | |
635 gtk_drag_dest_set(view, GTK_DEST_DEFAULT_MOTION | GTK_DEST_DEFAULT_HIGHLIGHT | GTK_DEST_DEFAULT_DROP, te, | |
636 sizeof(te) / sizeof(GtkTargetEntry) , GDK_ACTION_COPY | GDK_ACTION_MOVE); | |
637 | |
638 g_signal_connect(G_OBJECT(view), "drag_data_received", G_CALLBACK(theme_dnd_recv), smiley_theme_store); | |
639 | |
640 rend = gtk_cell_renderer_pixbuf_new(); | |
641 sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (view)); | |
642 | |
643 if(path) { | |
644 gtk_tree_selection_select_path(sel, path); | |
645 gtk_tree_path_free(path); | |
646 } | |
8928 | 647 |
648 /* Custom sort so "none" theme is at top of list */ | |
649 gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(smiley_theme_store), | |
650 3, gaim_sort_smileys, NULL, NULL); | |
651 | |
8075 | 652 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(smiley_theme_store), |
8928 | 653 3, GTK_SORT_ASCENDING); |
5440 | 654 |
655 col = gtk_tree_view_column_new_with_attributes (_("Icon"), | |
656 rend, | |
657 "pixbuf", 0, | |
658 NULL); | |
659 gtk_tree_view_append_column (GTK_TREE_VIEW(view), col); | |
660 | |
661 rend = gtk_cell_renderer_text_new(); | |
662 col = gtk_tree_view_column_new_with_attributes (_("Description"), | |
663 rend, | |
664 "markup", 1, | |
665 NULL); | |
666 gtk_tree_view_append_column (GTK_TREE_VIEW(view), col); | |
667 g_object_unref(G_OBJECT(smiley_theme_store)); | |
668 gtk_container_add(GTK_CONTAINER(sw), view); | |
669 | |
8075 | 670 g_signal_connect(G_OBJECT(sel), "changed", G_CALLBACK(smiley_sel), NULL); |
5440 | 671 |
672 gtk_widget_show_all(ret); | |
8137 | 673 |
674 gaim_set_accessible_label (view, label); | |
675 | |
5440 | 676 return ret; |
677 } | |
678 | |
9025 | 679 static void |
10181 | 680 formatting_reset_cb(GtkWidget *w, GtkWidget *imhtml) { |
9025 | 681 gboolean bold, italic, uline; |
682 bold = italic = uline = FALSE; | |
683 | |
684 gtk_imhtml_get_current_format(GTK_IMHTML(imhtml), &bold, &italic, &uline); | |
685 if (bold) | |
686 gtk_imhtml_toggle_bold(GTK_IMHTML(imhtml)); | |
687 if (italic) | |
688 gtk_imhtml_toggle_italic(GTK_IMHTML(imhtml)); | |
689 if (uline) | |
690 gtk_imhtml_toggle_underline(GTK_IMHTML(imhtml)); | |
691 | |
692 gtk_imhtml_font_set_size(GTK_IMHTML(imhtml), 3); | |
693 gtk_imhtml_toggle_forecolor(GTK_IMHTML(imhtml), NULL); | |
694 gtk_imhtml_toggle_backcolor(GTK_IMHTML(imhtml), NULL); | |
695 gtk_imhtml_toggle_fontface(GTK_IMHTML(imhtml), NULL); | |
696 } | |
697 | |
698 static void | |
699 formatting_toggle_cb(GtkIMHtml *imhtml, GtkIMHtmlButtons buttons, void *bah) | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
700 { |
9025 | 701 gboolean bold, italic, uline; |
702 | |
703 bold = italic = uline = FALSE; | |
704 gtk_imhtml_get_current_format(GTK_IMHTML(imhtml), | |
705 &bold, &italic, &uline); | |
706 | |
707 if (buttons & GTK_IMHTML_BOLD) | |
708 gaim_prefs_set_bool("/gaim/gtk/conversations/send_bold", bold); | |
709 if (buttons & GTK_IMHTML_ITALIC) | |
710 gaim_prefs_set_bool("/gaim/gtk/conversations/send_italic", italic); | |
711 if (buttons & GTK_IMHTML_UNDERLINE) | |
712 gaim_prefs_set_bool("/gaim/gtk/conversations/send_underline", uline); | |
713 | |
714 if (buttons & GTK_IMHTML_GROW || buttons & GTK_IMHTML_SHRINK) | |
715 gaim_prefs_set_int("/gaim/gtk/conversations/font_size", | |
716 gtk_imhtml_get_current_fontsize(GTK_IMHTML(imhtml))); | |
717 if (buttons & GTK_IMHTML_FACE) { | |
718 char *face = gtk_imhtml_get_current_fontface(GTK_IMHTML(imhtml)); | |
719 if (!face) | |
720 face = g_strdup(""); | |
721 | |
722 gaim_prefs_set_string("/gaim/gtk/conversations/font_face", face); | |
723 g_free(face); | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
724 } |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
725 |
9025 | 726 if (buttons & GTK_IMHTML_FORECOLOR) { |
727 char *color = gtk_imhtml_get_current_forecolor(GTK_IMHTML(imhtml)); | |
728 if (!color) | |
729 color = g_strdup(""); | |
730 | |
731 gaim_prefs_set_string("/gaim/gtk/conversations/fgcolor", color); | |
732 g_free(color); | |
733 } | |
734 | |
735 if (buttons & GTK_IMHTML_BACKCOLOR) { | |
736 char *color = gtk_imhtml_get_current_backcolor(GTK_IMHTML(imhtml)); | |
737 if (!color) | |
738 color = g_strdup(""); | |
739 | |
740 gaim_prefs_set_string("/gaim/gtk/conversations/bgcolor", color); | |
741 g_free(color); | |
742 } | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
743 } |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
744 |
8988 | 745 GtkWidget *messages_page() { |
5440 | 746 GtkWidget *ret; |
9025 | 747 GtkWidget *vbox, *fontvbox; |
8833 | 748 GtkWidget *imhtml; |
749 GtkWidget *toolbar; | |
8988 | 750 GtkWidget *frame; |
9025 | 751 GtkWidget *option; |
752 GtkWidget *button; | |
5440 | 753 |
754 ret = gtk_vbox_new(FALSE, 18); | |
755 gtk_container_set_border_width (GTK_CONTAINER (ret), 12); | |
756 | |
8988 | 757 vbox = gaim_gtk_make_frame (ret, _("Display")); |
758 gaim_gtk_prefs_checkbox(_("Show _timestamp on messages"), | |
759 "/gaim/gtk/conversations/show_timestamps", vbox); | |
760 #ifdef USE_GTKSPELL | |
761 gaim_gtk_prefs_checkbox(_("_Highlight misspelled words"), | |
762 "/gaim/gtk/conversations/spellcheck", vbox); | |
763 #endif | |
9049 | 764 vbox = gaim_gtk_make_frame (ret, _("Ignore")); |
765 gaim_gtk_prefs_checkbox(_("Ignore c_olors"), | |
766 "/gaim/gtk/conversations/ignore_colors", vbox); | |
767 gaim_gtk_prefs_checkbox(_("Ignore font _faces"), | |
768 "/gaim/gtk/conversations/ignore_fonts", vbox); | |
769 gaim_gtk_prefs_checkbox(_("Ignore font si_zes"), | |
770 "/gaim/gtk/conversations/ignore_font_sizes", vbox); | |
8988 | 771 |
772 vbox = gaim_gtk_make_frame (ret, _("Default Formatting")); | |
773 | |
9025 | 774 option = gaim_gtk_prefs_checkbox(_("_Send default formatting with outgoing messages"), |
775 "/gaim/gtk/conversations/send_formatting", vbox); | |
776 | |
8988 | 777 |
9025 | 778 fontvbox = gtk_vbox_new(FALSE, 0); |
10181 | 779 gtk_container_add(GTK_CONTAINER(vbox), fontvbox); |
780 | |
781 frame = gaim_gtk_create_imhtml(TRUE, &imhtml, &toolbar); | |
9025 | 782 gtk_widget_set_name(imhtml, "gaim_gtkprefs_font_imhtml"); |
8836 | 783 gtk_imhtml_set_whole_buffer_formatting_only(GTK_IMHTML(imhtml), TRUE); |
9025 | 784 gtk_imhtml_append_text(GTK_IMHTML(imhtml), _("This is how your outgoing message text will appear when you use protocols that support formatting. :)"), 0); |
10181 | 785 gtk_box_pack_start(GTK_BOX(fontvbox), frame, FALSE, FALSE, 0); |
8988 | 786 |
9056 | 787 button = gtk_button_new_with_mnemonic(_("_Clear Formatting")); |
9025 | 788 gtk_box_pack_start(GTK_BOX(fontvbox), button, FALSE, FALSE, 0); |
789 | |
790 if (!gaim_prefs_get_bool("/gaim/gtk/conversations/send_formatting")) | |
791 gtk_widget_set_sensitive(fontvbox, FALSE); | |
792 | |
8836 | 793 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_bold")) |
794 gtk_imhtml_toggle_bold(GTK_IMHTML(imhtml)); | |
795 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_italic")) | |
796 gtk_imhtml_toggle_italic(GTK_IMHTML(imhtml)); | |
797 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_underline")) | |
798 gtk_imhtml_toggle_underline(GTK_IMHTML(imhtml)); | |
799 | |
800 gtk_imhtml_font_set_size(GTK_IMHTML(imhtml), gaim_prefs_get_int("/gaim/gtk/conversations/font_size")); | |
801 gtk_imhtml_toggle_forecolor(GTK_IMHTML(imhtml), gaim_prefs_get_string("/gaim/gtk/conversations/fgcolor")); | |
802 gtk_imhtml_toggle_backcolor(GTK_IMHTML(imhtml), gaim_prefs_get_string("/gaim/gtk/conversations/bgcolor")); | |
803 gtk_imhtml_toggle_fontface(GTK_IMHTML(imhtml), gaim_prefs_get_string("/gaim/gtk/conversations/font_face")); | |
804 | |
9025 | 805 g_signal_connect(G_OBJECT(button), "clicked", |
806 G_CALLBACK(formatting_reset_cb), imhtml); | |
807 | |
808 g_signal_connect(G_OBJECT(option), "clicked", | |
809 G_CALLBACK(gaim_gtk_toggle_sensitive), fontvbox); | |
810 | |
811 g_signal_connect(G_OBJECT(imhtml), "format_function_toggle", | |
812 G_CALLBACK(formatting_toggle_cb), NULL); | |
813 | |
5440 | 814 gtk_widget_show_all(ret); |
815 return ret; | |
816 } | |
817 | |
818 GtkWidget *hotkeys_page() { | |
819 GtkWidget *ret; | |
820 GtkWidget *vbox; | |
821 ret = gtk_vbox_new(FALSE, 18); | |
822 gtk_container_set_border_width (GTK_CONTAINER (ret), 12); | |
823 | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
824 vbox = gaim_gtk_make_frame (ret, _("Window Closing")); |
7987 | 825 gaim_gtk_prefs_checkbox(_("_Escape closes window"), |
826 "/gaim/gtk/conversations/escape_closes", vbox); | |
5440 | 827 |
828 gtk_widget_show_all(ret); | |
829 return ret; | |
830 } | |
831 | |
832 GtkWidget *list_page() { | |
833 GtkWidget *ret; | |
834 GtkWidget *vbox; | |
835 GList *l= NULL; | |
5567
cc9ddec20010
[gaim-migrate @ 5969]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
836 GSList *sl; |
5440 | 837 ret = gtk_vbox_new(FALSE, 18); |
838 gtk_container_set_border_width (GTK_CONTAINER (ret), 12); | |
7305 | 839 |
840 | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
841 vbox = gaim_gtk_make_frame (ret, _("Buddy List Sorting")); |
5567
cc9ddec20010
[gaim-migrate @ 5969]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
842 |
cc9ddec20010
[gaim-migrate @ 5969]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
843 for (sl = gaim_gtk_blist_sort_methods; sl != NULL; sl = sl->next) { |
5631 | 844 struct gaim_gtk_blist_sort_method *method = sl->data; |
845 | |
846 l = g_list_append(l, method->name); | |
847 l = g_list_append(l, method->id); | |
5440 | 848 } |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
849 |
8063 | 850 gaim_gtk_prefs_dropdown_from_list(vbox, _("_Sorting:"), GAIM_PREF_STRING, |
7987 | 851 "/gaim/gtk/blist/sort_type", l); |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
852 |
5440 | 853 g_list_free(l); |
854 | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
855 vbox = gaim_gtk_make_frame (ret, _("Buddy Display")); |
7987 | 856 gaim_gtk_prefs_checkbox(_("Show buddy _icons"), |
7305 | 857 "/gaim/gtk/blist/show_buddy_icons", vbox); |
7987 | 858 gaim_gtk_prefs_checkbox(_("Show _warning levels"), |
7305 | 859 "/gaim/gtk/blist/show_warning_level", vbox); |
7987 | 860 gaim_gtk_prefs_checkbox(_("Show idle _times"), |
7305 | 861 "/gaim/gtk/blist/show_idle_time", vbox); |
7987 | 862 gaim_gtk_prefs_checkbox(_("_Automatically expand contacts"), |
7731 | 863 "/gaim/gtk/blist/auto_expand_contacts", vbox); |
5440 | 864 |
865 gtk_widget_show_all(ret); | |
5547
90a67ea697f7
[gaim-migrate @ 5948]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
866 |
5440 | 867 return ret; |
868 } | |
869 | |
8979 | 870 static void |
9155 | 871 conversation_usetabs_cb(const char *name, GaimPrefType type, gpointer value, |
8979 | 872 gpointer data) |
873 { | |
10112 | 874 gboolean usetabs = GPOINTER_TO_INT(value); |
9155 | 875 |
876 if (usetabs) | |
877 gtk_widget_set_sensitive(GTK_WIDGET(data), TRUE); | |
878 else | |
8979 | 879 gtk_widget_set_sensitive(GTK_WIDGET(data), FALSE); |
880 } | |
881 | |
5440 | 882 GtkWidget *conv_page() { |
883 GtkWidget *ret; | |
9155 | 884 GtkWidget *vbox, *vbox2; |
5440 | 885 GtkWidget *label; |
886 GtkSizeGroup *sg; | |
887 GList *names = NULL; | |
888 | |
889 ret = gtk_vbox_new(FALSE, 18); | |
890 gtk_container_set_border_width(GTK_CONTAINER(ret), 12); | |
891 | |
892 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
893 vbox = gaim_gtk_make_frame(ret, _("Conversations")); |
5440 | 894 |
9150 | 895 label = gaim_gtk_prefs_dropdown(vbox, _("Show _buttons as:"), GAIM_PREF_INT, |
896 "/gaim/gtk/conversations/button_type", | |
897 _("Pictures"), GAIM_BUTTON_IMAGE, | |
898 _("Text"), GAIM_BUTTON_TEXT, | |
899 _("Pictures and text"), GAIM_BUTTON_TEXT_IMAGE, | |
900 _("None"), GAIM_BUTTON_NONE, | |
901 NULL); | |
902 gtk_size_group_add_widget(sg, label); | |
903 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
904 | |
9832 | 905 #if 0 |
9301 | 906 gaim_gtk_prefs_checkbox(_("Enable \"_slash\" commands"), |
907 "/gaim/gtk/conversations/enable_commands", vbox); | |
9832 | 908 #endif |
909 gaim_gtk_prefs_checkbox(_("Send unknown \"_slash\" commands as messages"), | |
910 "/gaim/gtk/conversations/passthrough_unknown_commands", vbox); | |
9301 | 911 |
8600 | 912 gaim_gtk_prefs_checkbox(_("Show _formatting toolbar"), |
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7305
diff
changeset
|
913 "/gaim/gtk/conversations/show_formatting_toolbar", vbox); |
9155 | 914 gaim_gtk_prefs_checkbox(_("Show _aliases in tabs/titles"), |
8015 | 915 "/core/conversations/use_alias_for_title", vbox); |
9150 | 916 gaim_gtk_prefs_checkbox(_("Show buddy _icons"), |
917 "/gaim/gtk/conversations/im/show_buddy_icons", vbox); | |
9155 | 918 gaim_gtk_prefs_checkbox(_("Enable buddy ic_on animation"), |
9150 | 919 "/gaim/gtk/conversations/im/animate_buddy_icons", vbox); |
9155 | 920 gaim_gtk_prefs_checkbox(_("_Notify buddies that you are typing to them"), |
9150 | 921 "/core/conversations/im/send_typing", vbox); |
9301 | 922 gaim_gtk_prefs_checkbox(_("_Raise IM window on events"), |
923 "/gaim/gtk/conversations/im/raise_on_events", vbox); | |
924 | |
9303 | 925 gaim_gtk_prefs_checkbox(_("Raise chat _window on events"), |
9301 | 926 "/gaim/gtk/conversations/chat/raise_on_events", vbox); |
9155 | 927 |
928 /* All the tab options! */ | |
929 vbox = gaim_gtk_make_frame(ret, _("Tab Options")); | |
930 | |
931 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
|
932 "/gaim/gtk/conversations/tabs", vbox); |
9155 | 933 |
934 /* | |
935 * Connect a signal to the above preference. When conversations are not | |
936 * shown in a tabbed window then all tabbing options should be disabled. | |
937 */ | |
938 vbox2 = gtk_vbox_new(FALSE, 0); | |
939 gtk_box_pack_start(GTK_BOX(vbox), vbox2, FALSE, FALSE, 0); | |
10087 | 940 gaim_prefs_connect_callback(prefs, "/gaim/gtk/conversations/tabs", |
941 conversation_usetabs_cb, vbox2); | |
9155 | 942 if (!gaim_prefs_get_bool("/gaim/gtk/conversations/tabs")) |
943 gtk_widget_set_sensitive(vbox2, FALSE); | |
944 | |
9891 | 945 gaim_gtk_prefs_checkbox(_("Show close b_utton on tabs"), |
9155 | 946 "/gaim/gtk/conversations/close_on_tabs", vbox2); |
947 | |
948 label = gaim_gtk_prefs_dropdown(vbox2, _("Tab p_lacement:"), GAIM_PREF_INT, | |
8988 | 949 "/gaim/gtk/conversations/tab_side", |
950 _("Top"), GTK_POS_TOP, | |
951 _("Bottom"), GTK_POS_BOTTOM, | |
952 _("Left"), GTK_POS_LEFT, | |
953 _("Right"), GTK_POS_RIGHT, | |
954 NULL); | |
955 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
956 gtk_size_group_add_widget(sg, label); | |
957 | |
9155 | 958 names = gaim_conv_placement_get_options(); |
9251 | 959 label = gaim_gtk_prefs_dropdown_from_list(vbox2, _("New conversation _placement:"), |
9155 | 960 GAIM_PREF_STRING, "/gaim/gtk/conversations/placement", names); |
961 gtk_size_group_add_widget(sg, label); | |
962 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
963 g_list_free(names); | |
964 | |
5440 | 965 gtk_widget_show_all(ret); |
966 | |
967 return ret; | |
968 } | |
969 | |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
970 static void network_ip_changed(GtkEntry *entry, gpointer data) |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
971 { |
8834 | 972 gaim_network_set_public_ip(gtk_entry_get_text(entry)); |
8231
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 |
9150 | 975 static void |
976 proxy_changed_cb(const char *name, GaimPrefType type, gpointer value, | |
977 gpointer data) | |
978 { | |
979 GtkWidget *frame = data; | |
980 const char *proxy = value; | |
981 | |
982 if (strcmp(proxy, "none") && strcmp(proxy, "envvar")) | |
983 gtk_widget_set_sensitive(frame, TRUE); | |
984 else | |
985 gtk_widget_set_sensitive(frame, FALSE); | |
986 } | |
987 | |
988 static void proxy_print_option(GtkEntry *entry, int entrynum) | |
989 { | |
990 if (entrynum == PROXYHOST) | |
991 gaim_prefs_set_string("/core/proxy/host", gtk_entry_get_text(entry)); | |
992 else if (entrynum == PROXYPORT) | |
993 gaim_prefs_set_int("/core/proxy/port", atoi(gtk_entry_get_text(entry))); | |
994 else if (entrynum == PROXYUSER) | |
995 gaim_prefs_set_string("/core/proxy/username", gtk_entry_get_text(entry)); | |
996 else if (entrynum == PROXYPASS) | |
997 gaim_prefs_set_string("/core/proxy/password", gtk_entry_get_text(entry)); | |
998 } | |
999 | |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1000 GtkWidget *network_page() { |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1001 GtkWidget *ret; |
9150 | 1002 GtkWidget *vbox, *hbox, *entry; |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1003 GtkWidget *table, *label, *auto_ip_checkbox, *ports_checkbox, *spin_button; |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1004 GtkSizeGroup *sg; |
9150 | 1005 GaimProxyInfo *proxy_info; |
8231
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 ret = gtk_vbox_new(FALSE, 18); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1008 gtk_container_set_border_width (GTK_CONTAINER (ret), 12); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1009 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1010 vbox = gaim_gtk_make_frame (ret, _("IP Address")); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1011 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1012 auto_ip_checkbox = gaim_gtk_prefs_checkbox(_("_Autodetect IP Address"), |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1013 "/core/network/auto_ip", vbox); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1014 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1015 table = gtk_table_new(2, 1, FALSE); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1016 gtk_container_set_border_width(GTK_CONTAINER(table), 5); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1017 gtk_table_set_col_spacings(GTK_TABLE(table), 5); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1018 gtk_table_set_row_spacings(GTK_TABLE(table), 10); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1019 gtk_container_add(GTK_CONTAINER(vbox), table); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1020 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1021 label = gtk_label_new_with_mnemonic(_("Public _IP:")); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1022 gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1023 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
|
1024 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1025 entry = gtk_entry_new(); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1026 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1027 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
|
1028 g_signal_connect(G_OBJECT(entry), "changed", |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1029 G_CALLBACK(network_ip_changed), NULL); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1030 |
8834 | 1031 if (gaim_network_get_public_ip() != NULL) |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1032 gtk_entry_set_text(GTK_ENTRY(entry), |
8834 | 1033 gaim_network_get_public_ip()); |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1034 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1035 gaim_set_accessible_label (entry, label); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1036 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1037 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1038 if (gaim_prefs_get_bool("/core/network/auto_ip")) { |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1039 gtk_widget_set_sensitive(GTK_WIDGET(table), FALSE); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1040 } |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1041 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1042 g_signal_connect(G_OBJECT(auto_ip_checkbox), "clicked", |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1043 G_CALLBACK(gaim_gtk_toggle_sensitive), table); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1044 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1045 vbox = gaim_gtk_make_frame (ret, _("Ports")); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1046 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1047 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1048 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
|
1049 "/core/network/ports_range_use", vbox); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1050 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1051 spin_button = gaim_gtk_prefs_labeled_spin_button(vbox, _("_Start Port:"), |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1052 "/core/network/ports_range_start", 0, 65535, sg); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1053 if (!gaim_prefs_get_bool("/core/network/ports_range_use")) |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1054 gtk_widget_set_sensitive(GTK_WIDGET(spin_button), FALSE); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1055 g_signal_connect(G_OBJECT(ports_checkbox), "clicked", |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1056 G_CALLBACK(gaim_gtk_toggle_sensitive), spin_button); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1057 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1058 spin_button = gaim_gtk_prefs_labeled_spin_button(vbox, _("_End Port:"), |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1059 "/core/network/ports_range_end", 0, 65535, sg); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1060 if (!gaim_prefs_get_bool("/core/network/ports_range_use")) |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1061 gtk_widget_set_sensitive(GTK_WIDGET(spin_button), FALSE); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1062 g_signal_connect(G_OBJECT(ports_checkbox), "clicked", |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1063 G_CALLBACK(gaim_gtk_toggle_sensitive), spin_button); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1064 |
9150 | 1065 vbox = gaim_gtk_make_frame(ret, _("Proxy Server")); |
1066 prefs_proxy_frame = gtk_vbox_new(FALSE, 0); | |
7987 | 1067 gaim_gtk_prefs_dropdown(vbox, _("Proxy _type:"), GAIM_PREF_STRING, |
9150 | 1068 "/core/proxy/type", |
1069 _("No proxy"), "none", | |
1070 "SOCKS 4", "socks4", | |
1071 "SOCKS 5", "socks5", | |
1072 "HTTP", "http", | |
1073 _("Use Environmental Settings"), "envvar", | |
1074 NULL); | |
1075 gtk_box_pack_start(GTK_BOX(vbox), prefs_proxy_frame, 0, 0, 0); | |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1076 proxy_info = gaim_global_proxy_get_info(); |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1077 |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1078 if (proxy_info == NULL || |
6621 | 1079 gaim_proxy_info_get_type(proxy_info) == GAIM_PROXY_NONE || |
1080 gaim_proxy_info_get_type(proxy_info) == GAIM_PROXY_USE_ENVVAR) { | |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1081 |
6001 | 1082 gtk_widget_set_sensitive(GTK_WIDGET(prefs_proxy_frame), FALSE); |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1083 } |
10087 | 1084 gaim_prefs_connect_callback(prefs, "/core/proxy/type", |
1085 proxy_changed_cb, prefs_proxy_frame); | |
9150 | 1086 |
1087 table = gtk_table_new(4, 2, FALSE); | |
5440 | 1088 gtk_container_set_border_width(GTK_CONTAINER(table), 5); |
1089 gtk_table_set_col_spacings(GTK_TABLE(table), 5); | |
1090 gtk_table_set_row_spacings(GTK_TABLE(table), 10); | |
9150 | 1091 gtk_container_add(GTK_CONTAINER(prefs_proxy_frame), table); |
5440 | 1092 |
1093 | |
7797 | 1094 label = gtk_label_new_with_mnemonic(_("_Host:")); |
5440 | 1095 gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); |
1096 gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1, GTK_FILL, 0, 0, 0); | |
1097 | |
1098 entry = gtk_entry_new(); | |
1099 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
1100 gtk_table_attach(GTK_TABLE(table), entry, 1, 2, 0, 1, GTK_FILL, 0, 0, 0); | |
1101 g_signal_connect(G_OBJECT(entry), "changed", | |
1102 G_CALLBACK(proxy_print_option), (void *)PROXYHOST); | |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1103 |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1104 if (proxy_info != NULL && gaim_proxy_info_get_host(proxy_info)) |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1105 gtk_entry_set_text(GTK_ENTRY(entry), |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1106 gaim_proxy_info_get_host(proxy_info)); |
5440 | 1107 |
1108 hbox = gtk_hbox_new(TRUE, 5); | |
1109 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
8137 | 1110 gaim_set_accessible_label (entry, label); |
5440 | 1111 |
7870 | 1112 label = gtk_label_new_with_mnemonic(_("_Port:")); |
5440 | 1113 gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); |
9150 | 1114 gtk_table_attach(GTK_TABLE(table), label, 2, 3, 0, 1, GTK_FILL, 0, 0, 0); |
5440 | 1115 |
1116 entry = gtk_entry_new(); | |
1117 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
9150 | 1118 gtk_table_attach(GTK_TABLE(table), entry, 3, 4, 0, 1, GTK_FILL, 0, 0, 0); |
5440 | 1119 g_signal_connect(G_OBJECT(entry), "changed", |
1120 G_CALLBACK(proxy_print_option), (void *)PROXYPORT); | |
1121 | |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1122 if (proxy_info != NULL && gaim_proxy_info_get_port(proxy_info) != 0) { |
5440 | 1123 char buf[128]; |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1124 g_snprintf(buf, sizeof(buf), "%d", |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1125 gaim_proxy_info_get_port(proxy_info)); |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1126 |
5440 | 1127 gtk_entry_set_text(GTK_ENTRY(entry), buf); |
1128 } | |
8137 | 1129 gaim_set_accessible_label (entry, label); |
5440 | 1130 |
7797 | 1131 label = gtk_label_new_with_mnemonic(_("_User:")); |
5440 | 1132 gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); |
9150 | 1133 gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2, GTK_FILL, 0, 0, 0); |
5440 | 1134 |
1135 entry = gtk_entry_new(); | |
1136 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
9150 | 1137 gtk_table_attach(GTK_TABLE(table), entry, 1, 2, 1, 2, GTK_FILL, 0, 0, 0); |
5440 | 1138 g_signal_connect(G_OBJECT(entry), "changed", |
1139 G_CALLBACK(proxy_print_option), (void *)PROXYUSER); | |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1140 |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1141 if (proxy_info != NULL && gaim_proxy_info_get_username(proxy_info) != NULL) |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1142 gtk_entry_set_text(GTK_ENTRY(entry), |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1143 gaim_proxy_info_get_username(proxy_info)); |
5440 | 1144 |
1145 hbox = gtk_hbox_new(TRUE, 5); | |
1146 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
8137 | 1147 gaim_set_accessible_label (entry, label); |
5440 | 1148 |
7797 | 1149 label = gtk_label_new_with_mnemonic(_("Pa_ssword:")); |
5440 | 1150 gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); |
9150 | 1151 gtk_table_attach(GTK_TABLE(table), label, 2, 3, 1, 2, GTK_FILL, 0, 0, 0); |
5440 | 1152 |
1153 entry = gtk_entry_new(); | |
1154 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
9150 | 1155 gtk_table_attach(GTK_TABLE(table), entry, 3, 4, 1, 2, GTK_FILL , 0, 0, 0); |
5440 | 1156 gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE); |
1157 g_signal_connect(G_OBJECT(entry), "changed", | |
1158 G_CALLBACK(proxy_print_option), (void *)PROXYPASS); | |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1159 |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1160 if (proxy_info != NULL && gaim_proxy_info_get_password(proxy_info) != NULL) |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1161 gtk_entry_set_text(GTK_ENTRY(entry), |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1162 gaim_proxy_info_get_password(proxy_info)); |
8137 | 1163 gaim_set_accessible_label (entry, label); |
5440 | 1164 |
1165 gtk_widget_show_all(ret); | |
1166 return ret; | |
1167 } | |
1168 | |
1169 #ifndef _WIN32 | |
1170 static gboolean manual_browser_set(GtkWidget *entry, GdkEventFocus *event, gpointer data) { | |
1171 const char *program = gtk_entry_get_text(GTK_ENTRY(entry)); | |
1172 | |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1173 gaim_prefs_set_string("/gaim/gtk/browsers/command", program); |
5440 | 1174 |
1175 /* carry on normally */ | |
1176 return FALSE; | |
1177 } | |
1178 | |
5633 | 1179 static GList *get_available_browsers() |
5440 | 1180 { |
1181 struct browser { | |
1182 char *name; | |
1183 char *command; | |
1184 }; | |
1185 | |
1186 static struct browser possible_browsers[] = { | |
9405 | 1187 {N_("Epiphany"), "epiphany"}, |
8267 | 1188 {N_("Firebird"), "mozilla-firebird"}, |
8356 | 1189 {N_("Firefox"), "firefox"}, |
9405 | 1190 {N_("Galeon"), "galeon"}, |
1191 {N_("Gnome Default"), "gnome-open"}, | |
1192 {N_("Konqueror"), "kfmclient"}, | |
1193 {N_("Mozilla"), "mozilla"}, | |
1194 {N_("Netscape"), "netscape"}, | |
1195 {N_("Opera"), "opera"} | |
5440 | 1196 }; |
9405 | 1197 static const int num_possible_browsers = 9; |
5440 | 1198 |
1199 GList *browsers = NULL; | |
1200 int i = 0; | |
5819 | 1201 char *browser_setting = (char *)gaim_prefs_get_string("/gaim/gtk/browsers/browser"); |
5440 | 1202 |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1203 browsers = g_list_prepend(browsers, "custom"); |
5440 | 1204 browsers = g_list_prepend(browsers, _("Manual")); |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1205 |
5440 | 1206 for (i = 0; i < num_possible_browsers; i++) { |
7108
6faeeecab0dc
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7095
diff
changeset
|
1207 if (gaim_program_is_valid(possible_browsers[i].command)) { |
5633 | 1208 browsers = g_list_prepend(browsers, |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
1209 possible_browsers[i].command); |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1210 browsers = g_list_prepend(browsers, _(possible_browsers[i].name)); |
5825 | 1211 if(browser_setting && !strcmp(possible_browsers[i].command, browser_setting)) |
5819 | 1212 browser_setting = NULL; |
5440 | 1213 } |
1214 } | |
1215 | |
5819 | 1216 if(browser_setting) |
1217 gaim_prefs_set_string("/gaim/gtk/browsers/browser", "custom"); | |
1218 | |
5440 | 1219 return browsers; |
1220 } | |
1221 | |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1222 static void |
8274 | 1223 browser_changed1_cb(const char *name, GaimPrefType type, gpointer value, |
1224 gpointer data) | |
1225 { | |
1226 GtkWidget *hbox = data; | |
1227 const char *browser = value; | |
1228 | |
1229 gtk_widget_set_sensitive(hbox, strcmp(browser, "custom")); | |
1230 } | |
1231 | |
1232 static void | |
1233 browser_changed2_cb(const char *name, GaimPrefType type, gpointer value, | |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1234 gpointer data) |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1235 { |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1236 GtkWidget *hbox = data; |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1237 const char *browser = value; |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1238 |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1239 gtk_widget_set_sensitive(hbox, !strcmp(browser, "custom")); |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1240 } |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1241 |
5440 | 1242 GtkWidget *browser_page() { |
1243 GtkWidget *ret; | |
1244 GtkWidget *vbox; | |
1245 GtkWidget *hbox; | |
1246 GtkWidget *label; | |
6007 | 1247 GtkWidget *entry; |
5440 | 1248 GtkSizeGroup *sg; |
1249 GList *browsers = NULL; | |
1250 | |
1251 ret = gtk_vbox_new(FALSE, 18); | |
1252 gtk_container_set_border_width (GTK_CONTAINER (ret), 12); | |
1253 | |
1254 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1255 vbox = gaim_gtk_make_frame (ret, _("Browser Selection")); |
5440 | 1256 |
1257 browsers = get_available_browsers(); | |
1258 if (browsers != NULL) { | |
7987 | 1259 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
|
1260 "/gaim/gtk/browsers/browser", |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1261 browsers); |
5440 | 1262 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); |
1263 gtk_size_group_add_widget(sg, label); | |
8274 | 1264 |
1265 hbox = gtk_hbox_new(FALSE, 0); | |
1266 label = gaim_gtk_prefs_dropdown(hbox, _("_Open link in:"), GAIM_PREF_INT, | |
1267 "/gaim/gtk/browsers/place", | |
1268 _("Browser default"), GAIM_BROWSER_DEFAULT, | |
1269 _("Existing window"), GAIM_BROWSER_CURRENT, | |
1270 _("New window"), GAIM_BROWSER_NEW_WINDOW, | |
1271 _("New tab"), GAIM_BROWSER_NEW_TAB, | |
1272 NULL); | |
1273 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
1274 gtk_size_group_add_widget(sg, label); | |
1275 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
1276 | |
1277 if (!strcmp(gaim_prefs_get_string("/gaim/gtk/browsers/browser"), "custom")) | |
1278 gtk_widget_set_sensitive(hbox, FALSE); | |
10087 | 1279 gaim_prefs_connect_callback(prefs, "/gaim/gtk/browsers/browser", |
1280 browser_changed1_cb, hbox); | |
5440 | 1281 } |
1282 | |
1283 hbox = gtk_hbox_new(FALSE, 5); | |
1284 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
6031 | 1285 label = gtk_label_new_with_mnemonic(_("_Manual:\n(%s for URL)")); |
5440 | 1286 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); |
1287 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
1288 gtk_size_group_add_widget(sg, label); | |
1289 | |
6007 | 1290 entry = gtk_entry_new(); |
1291 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1292 |
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1293 if (strcmp(gaim_prefs_get_string("/gaim/gtk/browsers/browser"), "custom")) |
5440 | 1294 gtk_widget_set_sensitive(hbox, FALSE); |
10087 | 1295 gaim_prefs_connect_callback(prefs, "/gaim/gtk/browsers/browser", |
1296 browser_changed2_cb, hbox); | |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1297 |
6007 | 1298 gtk_box_pack_start (GTK_BOX (hbox), entry, FALSE, FALSE, 0); |
1299 | |
1300 gtk_entry_set_text(GTK_ENTRY(entry), | |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1301 gaim_prefs_get_string("/gaim/gtk/browsers/command")); |
6007 | 1302 g_signal_connect(G_OBJECT(entry), "focus-out-event", |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1303 G_CALLBACK(manual_browser_set), NULL); |
8188
cd9ea20cd8ed
[gaim-migrate @ 8909]
Christian Hammond <chipx86@chipx86.com>
parents:
8170
diff
changeset
|
1304 gaim_set_accessible_label (entry, label); |
5440 | 1305 |
1306 gtk_widget_show_all(ret); | |
1307 return ret; | |
1308 } | |
1309 #endif /*_WIN32*/ | |
1310 | |
1311 GtkWidget *logging_page() { | |
1312 GtkWidget *ret; | |
1313 GtkWidget *vbox; | |
7431 | 1314 GList *names; |
8573 | 1315 GtkWidget *sys_box; |
1316 GtkWidget *box; | |
1317 int syslog_enabled = gaim_prefs_get_bool("/core/logging/log_system"); | |
1318 | |
5440 | 1319 ret = gtk_vbox_new(FALSE, 18); |
1320 gtk_container_set_border_width (GTK_CONTAINER (ret), 12); | |
1321 | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1322 vbox = gaim_gtk_make_frame (ret, _("Message Logs")); |
7431 | 1323 names = gaim_log_logger_get_options(); |
1324 | |
7987 | 1325 gaim_gtk_prefs_dropdown_from_list(vbox, _("Log _Format:"), GAIM_PREF_STRING, |
1326 "/core/logging/format", names); | |
1327 | |
1328 gaim_gtk_prefs_checkbox(_("_Log all instant messages"), | |
7562
b859cfb5f31a
[gaim-migrate @ 8176]
Christian Hammond <chipx86@chipx86.com>
parents:
7561
diff
changeset
|
1329 "/core/logging/log_ims", vbox); |
7987 | 1330 gaim_gtk_prefs_checkbox(_("Log all c_hats"), |
7562
b859cfb5f31a
[gaim-migrate @ 8176]
Christian Hammond <chipx86@chipx86.com>
parents:
7561
diff
changeset
|
1331 "/core/logging/log_chats", vbox); |
8573 | 1332 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1333 vbox = gaim_gtk_make_frame (ret, _("System Logs")); |
8573 | 1334 |
1335 sys_box = gaim_gtk_prefs_checkbox(_("_Enable system log"), | |
1336 "/core/logging/log_system", vbox); | |
1337 | |
10272 | 1338 box = gaim_gtk_prefs_checkbox(_("Log when buddies log in/log _out"), |
8573 | 1339 "/core/logging/log_signon_signoff", vbox); |
1340 g_signal_connect(G_OBJECT(sys_box), "clicked", | |
1341 G_CALLBACK(gaim_gtk_toggle_sensitive), box); | |
1342 gtk_widget_set_sensitive(box, syslog_enabled); | |
1343 | |
1344 box = gaim_gtk_prefs_checkbox(_("Log when buddies become _idle/un-idle"), | |
1345 "/core/logging/log_idle_state", vbox); | |
1346 g_signal_connect(G_OBJECT(sys_box), "clicked", | |
1347 G_CALLBACK(gaim_gtk_toggle_sensitive), box); | |
1348 gtk_widget_set_sensitive(box, syslog_enabled); | |
1349 | |
1350 box = gaim_gtk_prefs_checkbox(_("Log when buddies go away/come _back"), | |
1351 "/core/logging/log_away_state", vbox); | |
1352 g_signal_connect(G_OBJECT(sys_box), "clicked", | |
1353 G_CALLBACK(gaim_gtk_toggle_sensitive), box); | |
1354 gtk_widget_set_sensitive(box, syslog_enabled); | |
1355 | |
10272 | 1356 box = gaim_gtk_prefs_checkbox(_("Log your own _signons/idleness/awayness"), |
8573 | 1357 "/core/logging/log_own_states", vbox); |
1358 g_signal_connect(G_OBJECT(sys_box), "clicked", | |
1359 G_CALLBACK(gaim_gtk_toggle_sensitive), box); | |
1360 gtk_widget_set_sensitive(box, syslog_enabled); | |
1361 | |
5440 | 1362 gtk_widget_show_all(ret); |
1363 return ret; | |
1364 } | |
1365 | |
1366 #ifndef _WIN32 | |
1367 static gint sound_cmd_yeah(GtkEntry *entry, gpointer d) | |
1368 { | |
5684 | 1369 gaim_prefs_set_string("/gaim/gtk/sound/command", |
6007 | 1370 gtk_entry_get_text(GTK_ENTRY(entry))); |
5440 | 1371 return TRUE; |
1372 } | |
6005 | 1373 |
1374 static void | |
10074 | 1375 sound_changed1_cb(const char *name, GaimPrefType type, gpointer value, |
6005 | 1376 gpointer data) |
1377 { | |
1378 GtkWidget *hbox = data; | |
1379 const char *method = value; | |
1380 | |
1381 gtk_widget_set_sensitive(hbox, !strcmp(method, "custom")); | |
1382 } | |
10074 | 1383 |
1384 static void | |
1385 sound_changed2_cb(const char *name, GaimPrefType type, gpointer value, | |
1386 gpointer data) | |
1387 { | |
1388 GtkWidget *vbox = data; | |
1389 const char *method = value; | |
1390 | |
1391 gtk_widget_set_sensitive(vbox, strcmp(method, "none")); | |
1392 } | |
5440 | 1393 #endif |
1394 | |
9150 | 1395 |
1396 static void | |
1397 event_toggled(GtkCellRendererToggle *cell, gchar *pth, gpointer data) | |
1398 { | |
1399 GtkTreeModel *model = (GtkTreeModel *)data; | |
1400 GtkTreeIter iter; | |
1401 GtkTreePath *path = gtk_tree_path_new_from_string(pth); | |
1402 const char *pref; | |
1403 | |
1404 gtk_tree_model_get_iter (model, &iter, path); | |
1405 gtk_tree_model_get (model, &iter, | |
1406 2, &pref, | |
1407 -1); | |
1408 | |
1409 gaim_prefs_set_bool(pref, !gtk_cell_renderer_toggle_get_active(cell)); | |
1410 | |
1411 gtk_list_store_set(GTK_LIST_STORE (model), &iter, | |
1412 0, !gtk_cell_renderer_toggle_get_active(cell), | |
1413 -1); | |
1414 | |
1415 gtk_tree_path_free(path); | |
1416 } | |
1417 | |
1418 static void | |
1419 test_sound(GtkWidget *button, gpointer i_am_NULL) | |
1420 { | |
1421 char *pref; | |
1422 gboolean temp_value1, temp_value2; | |
1423 | |
1424 pref = g_strdup_printf("/gaim/gtk/sound/enabled/%s", | |
1425 gaim_gtk_sound_get_event_option(sound_row_sel)); | |
1426 | |
1427 temp_value1 = gaim_prefs_get_bool("/core/sound/while_away"); | |
1428 temp_value2 = gaim_prefs_get_bool(pref); | |
1429 | |
1430 if (!temp_value1) gaim_prefs_set_bool("/core/sound/while_away", TRUE); | |
1431 if (!temp_value2) gaim_prefs_set_bool(pref, TRUE); | |
1432 | |
1433 gaim_sound_play_event(sound_row_sel); | |
1434 | |
1435 if (!temp_value1) gaim_prefs_set_bool("/core/sound/while_away", FALSE); | |
1436 if (!temp_value2) gaim_prefs_set_bool(pref, FALSE); | |
1437 | |
1438 g_free(pref); | |
1439 } | |
1440 | |
9508 | 1441 /* |
1442 * Resets a sound file back to default. | |
1443 */ | |
9150 | 1444 static void |
1445 reset_sound(GtkWidget *button, gpointer i_am_also_NULL) | |
1446 { | |
9508 | 1447 gchar *pref; |
1448 | |
1449 pref = g_strdup_printf("/gaim/gtk/sound/file/%s", | |
1450 gaim_gtk_sound_get_event_option(sound_row_sel)); | |
9150 | 1451 gaim_prefs_set_string(pref, ""); |
1452 g_free(pref); | |
1453 | |
1454 gtk_entry_set_text(GTK_ENTRY(sound_entry), "(default)"); | |
1455 } | |
1456 | |
9508 | 1457 static void |
1458 sound_chosen_cb(void *user_data, const char *filename) | |
9150 | 1459 { |
9508 | 1460 gchar *pref; |
1461 int sound; | |
1462 | |
1463 sound = GPOINTER_TO_INT(user_data); | |
9150 | 1464 |
1465 /* Set it -- and forget it */ | |
1466 pref = g_strdup_printf("/gaim/gtk/sound/file/%s", | |
9508 | 1467 gaim_gtk_sound_get_event_option(sound)); |
1468 gaim_prefs_set_string(pref, filename); | |
9150 | 1469 g_free(pref); |
1470 | |
9508 | 1471 /* |
1472 * If the sound we just changed is still the currently selected | |
1473 * sound, then update the box showing the file name. | |
1474 */ | |
1475 if (sound == sound_row_sel) | |
1476 gtk_entry_set_text(GTK_ENTRY(sound_entry), filename); | |
9150 | 1477 } |
1478 | |
9508 | 1479 static void select_sound(GtkWidget *button, gpointer being_NULL_is_fun) |
9150 | 1480 { |
9508 | 1481 gchar *pref; |
1482 const char *filename; | |
1483 | |
1484 pref = g_strdup_printf("/gaim/gtk/sound/file/%s", | |
1485 gaim_gtk_sound_get_event_option(sound_row_sel)); | |
1486 filename = gaim_prefs_get_string(pref); | |
1487 g_free(pref); | |
1488 | |
1489 if (*filename == '\0') | |
1490 filename = NULL; | |
1491 | |
1492 gaim_request_file(prefs, _("Sound Selection"), filename, FALSE, | |
1493 G_CALLBACK(sound_chosen_cb), NULL, GINT_TO_POINTER(sound_row_sel)); | |
9150 | 1494 } |
1495 | |
9508 | 1496 static void prefs_sound_sel(GtkTreeSelection *sel, GtkTreeModel *model) { |
9150 | 1497 GtkTreeIter iter; |
1498 GValue val = { 0, }; | |
1499 const char *file; | |
1500 char *pref; | |
1501 | |
1502 if (! gtk_tree_selection_get_selected (sel, &model, &iter)) | |
1503 return; | |
1504 gtk_tree_model_get_value (model, &iter, 3, &val); | |
1505 sound_row_sel = g_value_get_uint(&val); | |
1506 | |
1507 pref = g_strdup_printf("/gaim/gtk/sound/file/%s", | |
1508 gaim_gtk_sound_get_event_option(sound_row_sel)); | |
1509 file = gaim_prefs_get_string(pref); | |
1510 g_free(pref); | |
1511 if (sound_entry) | |
1512 gtk_entry_set_text(GTK_ENTRY(sound_entry), (file && *file != '\0') ? file : "(default)"); | |
1513 g_value_unset (&val); | |
1514 } | |
1515 | |
5440 | 1516 GtkWidget *sound_page() { |
1517 GtkWidget *ret; | |
9150 | 1518 GtkWidget *vbox, *sw, *button; |
5440 | 1519 GtkSizeGroup *sg; |
9150 | 1520 GtkTreeIter iter; |
1521 GtkWidget *event_view; | |
1522 GtkListStore *event_store; | |
1523 GtkCellRenderer *rend; | |
1524 GtkTreeViewColumn *col; | |
1525 GtkTreeSelection *sel; | |
1526 GtkTreePath *path; | |
1527 GtkWidget *hbox; | |
1528 int j; | |
1529 const char *file; | |
1530 char *pref; | |
5440 | 1531 #ifndef _WIN32 |
1532 GtkWidget *dd; | |
1533 GtkWidget *label; | |
6007 | 1534 GtkWidget *entry; |
5684 | 1535 const char *cmd; |
5440 | 1536 #endif |
1537 | |
1538 ret = gtk_vbox_new(FALSE, 18); | |
1539 gtk_container_set_border_width (GTK_CONTAINER (ret), 12); | |
1540 | |
1541 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); | |
1542 | |
1543 #ifndef _WIN32 | |
6033 | 1544 vbox = gaim_gtk_make_frame (ret, _("Sound Method")); |
7987 | 1545 dd = gaim_gtk_prefs_dropdown(vbox, _("_Method:"), GAIM_PREF_STRING, |
1546 "/gaim/gtk/sound/method", | |
1547 _("Console beep"), "beep", | |
5440 | 1548 #ifdef USE_AO |
7987 | 1549 _("Automatic"), "automatic", |
1550 "ESD", "esd", | |
1551 "Arts", "arts", | |
5440 | 1552 #endif |
1553 #ifdef USE_NAS_AUDIO | |
7987 | 1554 "NAS", "nas", |
5440 | 1555 #endif |
7987 | 1556 _("Command"), "custom", |
10074 | 1557 _("No sounds"), "none", |
7987 | 1558 NULL); |
5440 | 1559 gtk_size_group_add_widget(sg, dd); |
1560 gtk_misc_set_alignment(GTK_MISC(dd), 0, 0); | |
1561 | |
1562 hbox = gtk_hbox_new(FALSE, 5); | |
1563 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5); | |
1564 | |
6031 | 1565 label = gtk_label_new_with_mnemonic(_("Sound c_ommand:\n(%s for filename)")); |
5440 | 1566 gtk_size_group_add_widget(sg, label); |
1567 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
1568 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5); | |
1569 | |
6007 | 1570 entry = gtk_entry_new(); |
1571 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
1572 | |
1573 gtk_editable_set_editable(GTK_EDITABLE(entry), TRUE); | |
5684 | 1574 cmd = gaim_prefs_get_string("/gaim/gtk/sound/command"); |
5440 | 1575 if(cmd) |
6007 | 1576 gtk_entry_set_text(GTK_ENTRY(entry), cmd); |
1577 gtk_widget_set_size_request(entry, 75, -1); | |
1578 | |
1579 gtk_box_pack_start(GTK_BOX(hbox), entry, TRUE, TRUE, 5); | |
1580 g_signal_connect(G_OBJECT(entry), "changed", | |
5440 | 1581 G_CALLBACK(sound_cmd_yeah), NULL); |
6005 | 1582 |
1583 gtk_widget_set_sensitive(hbox, | |
1584 !strcmp(gaim_prefs_get_string("/gaim/gtk/sound/method"), | |
1585 "custom")); | |
10087 | 1586 gaim_prefs_connect_callback(prefs, "/gaim/gtk/sound/method", |
1587 sound_changed1_cb, hbox); | |
6005 | 1588 |
8141 | 1589 gaim_set_accessible_label (entry, label); |
5440 | 1590 #endif /* _WIN32 */ |
9150 | 1591 |
10074 | 1592 vbox = gaim_gtk_make_frame (ret, _("Sound Options")); |
1593 gaim_gtk_prefs_checkbox(_("Sounds when conversation has _focus"), | |
1594 "/gaim/gtk/sound/conv_focus", vbox); | |
1595 gaim_gtk_prefs_checkbox(_("_Sounds while away"), | |
1596 "/core/sound/while_away", vbox); | |
1597 | |
10075 | 1598 #ifndef _WIN32 |
10074 | 1599 gtk_widget_set_sensitive(vbox, |
1600 strcmp(gaim_prefs_get_string("/gaim/gtk/sound/method"), "none")); | |
10087 | 1601 gaim_prefs_connect_callback(prefs, "/gaim/gtk/sound/method", |
1602 sound_changed2_cb, vbox); | |
10075 | 1603 #endif |
10074 | 1604 |
9150 | 1605 vbox = gaim_gtk_make_frame(ret, _("Sound Events")); |
1606 | |
1607 /* The following is an ugly hack to make the frame expand so the | |
1608 * sound events list is big enough to be usable */ | |
1609 gtk_box_set_child_packing(GTK_BOX(vbox->parent), vbox, TRUE, TRUE, 0, | |
1610 GTK_PACK_START); | |
1611 gtk_box_set_child_packing(GTK_BOX(vbox->parent->parent), vbox->parent, TRUE, | |
1612 TRUE, 0, GTK_PACK_START); | |
1613 gtk_box_set_child_packing(GTK_BOX(vbox->parent->parent->parent), | |
1614 vbox->parent->parent, TRUE, TRUE, 0, GTK_PACK_START); | |
1615 | |
1616 sw = gtk_scrolled_window_new(NULL,NULL); | |
1617 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); | |
1618 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); | |
1619 | |
1620 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); | |
1621 event_store = gtk_list_store_new (4, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT); | |
1622 | |
1623 for (j=0; j < GAIM_NUM_SOUNDS; j++) { | |
1624 char *pref = g_strdup_printf("/gaim/gtk/sound/enabled/%s", | |
1625 gaim_gtk_sound_get_event_option(j)); | |
1626 const char *label = gaim_gtk_sound_get_event_label(j); | |
1627 | |
1628 if (label == NULL) { | |
1629 g_free(pref); | |
1630 continue; | |
1631 } | |
1632 | |
1633 gtk_list_store_append (event_store, &iter); | |
1634 gtk_list_store_set(event_store, &iter, | |
1635 0, gaim_prefs_get_bool(pref), | |
1636 1, _(label), | |
1637 2, pref, | |
1638 3, j, | |
1639 -1); | |
1640 g_free(pref); | |
1641 } | |
1642 | |
1643 event_view = gtk_tree_view_new_with_model (GTK_TREE_MODEL(event_store)); | |
1644 | |
1645 rend = gtk_cell_renderer_toggle_new(); | |
1646 sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (event_view)); | |
1647 g_signal_connect (G_OBJECT (sel), "changed", | |
1648 G_CALLBACK (prefs_sound_sel), | |
1649 NULL); | |
1650 g_signal_connect (G_OBJECT(rend), "toggled", | |
1651 G_CALLBACK(event_toggled), event_store); | |
1652 path = gtk_tree_path_new_first(); | |
1653 gtk_tree_selection_select_path(sel, path); | |
1654 gtk_tree_path_free(path); | |
1655 | |
1656 col = gtk_tree_view_column_new_with_attributes (_("Play"), | |
1657 rend, | |
1658 "active", 0, | |
1659 NULL); | |
1660 gtk_tree_view_append_column (GTK_TREE_VIEW(event_view), col); | |
1661 | |
1662 rend = gtk_cell_renderer_text_new(); | |
1663 col = gtk_tree_view_column_new_with_attributes (_("Event"), | |
1664 rend, | |
1665 "text", 1, | |
1666 NULL); | |
1667 gtk_tree_view_append_column (GTK_TREE_VIEW(event_view), col); | |
1668 g_object_unref(G_OBJECT(event_store)); | |
1669 gtk_container_add(GTK_CONTAINER(sw), event_view); | |
1670 | |
1671 hbox = gtk_hbox_new(FALSE, 6); | |
1672 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
1673 sound_entry = gtk_entry_new(); | |
1674 pref = g_strdup_printf("/gaim/gtk/sound/file/%s", | |
1675 gaim_gtk_sound_get_event_option(0)); | |
1676 file = gaim_prefs_get_string(pref); | |
1677 g_free(pref); | |
1678 gtk_entry_set_text(GTK_ENTRY(sound_entry), (file && *file != '\0') ? file : "(default)"); | |
1679 gtk_editable_set_editable(GTK_EDITABLE(sound_entry), FALSE); | |
1680 gtk_box_pack_start(GTK_BOX(hbox), sound_entry, FALSE, FALSE, 5); | |
1681 | |
1682 button = gtk_button_new_with_label(_("Test")); | |
1683 g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(test_sound), NULL); | |
1684 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1); | |
1685 | |
1686 button = gtk_button_new_with_label(_("Reset")); | |
1687 g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(reset_sound), NULL); | |
1688 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1); | |
1689 | |
1690 button = gtk_button_new_with_label(_("Choose...")); | |
9508 | 1691 g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(select_sound), NULL); |
9150 | 1692 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1); |
5440 | 1693 gtk_widget_show_all(ret); |
9118 | 1694 |
10075 | 1695 #ifndef _WIN32 |
10074 | 1696 gtk_widget_set_sensitive(vbox, |
1697 strcmp(gaim_prefs_get_string("/gaim/gtk/sound/method"), "none")); | |
10087 | 1698 gaim_prefs_connect_callback(prefs, "/gaim/gtk/sound/method", |
1699 sound_changed2_cb, vbox); | |
10075 | 1700 #endif |
10074 | 1701 |
5440 | 1702 return ret; |
1703 } | |
1704 | |
10182 | 1705 /* XXX CORE/UI */ |
1706 #if 0 | |
1707 static void | |
1708 set_default_away(GtkWidget *w, gpointer data) | |
1709 { | |
1710 struct away_message *default_away = NULL; | |
1711 int length = g_slist_length(away_messages); | |
1712 int i = GPOINTER_TO_INT(data); | |
1713 | |
1714 if (away_messages == NULL) | |
1715 default_away = NULL; | |
1716 else if (i >= length) | |
1717 default_away = g_slist_nth_data(away_messages, length - 1); | |
1718 else | |
1719 default_away = g_slist_nth_data(away_messages, i); | |
1720 | |
1721 if(default_away) | |
1722 gaim_prefs_set_string("/core/away/default_message", default_away->name); | |
1723 else | |
1724 gaim_prefs_set_string("/core/away/default_message", ""); | |
1725 } | |
1726 #endif | |
1727 | |
5440 | 1728 GtkWidget *away_page() { |
1729 GtkWidget *ret; | |
1730 GtkWidget *vbox; | |
1731 GtkWidget *hbox; | |
1732 GtkWidget *label; | |
1733 GtkWidget *button; | |
1734 GtkWidget *select; | |
1735 GtkWidget *dd; | |
1736 GtkSizeGroup *sg; | |
1737 | |
1738 ret = gtk_vbox_new(FALSE, 18); | |
1739 gtk_container_set_border_width (GTK_CONTAINER (ret), 12); | |
1740 | |
1741 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); | |
1742 | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1743 vbox = gaim_gtk_make_frame (ret, _("Away")); |
7987 | 1744 gaim_gtk_prefs_checkbox(_("_Queue new messages when away"), |
5573
5e7de337a053
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5568
diff
changeset
|
1745 "/gaim/gtk/away/queue_messages", vbox); |
5440 | 1746 |
9596 | 1747 label = gaim_gtk_prefs_dropdown(vbox, _("_Auto-reply:"), |
1748 GAIM_PREF_STRING, "/core/away/auto_reply", | |
1749 _("Never"), "never", | |
9736 | 1750 _("When away"), "away", |
1751 _("When away and idle"), "awayidle", | |
9596 | 1752 NULL); |
6142 | 1753 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1754 vbox = gaim_gtk_make_frame (ret, _("Idle")); |
7987 | 1755 dd = gaim_gtk_prefs_dropdown(vbox, _("Idle _time reporting:"), |
1756 GAIM_PREF_STRING, "/gaim/gtk/idle/reporting_method", | |
1757 _("None"), "none", | |
1758 _("Gaim usage"), "gaim", | |
5440 | 1759 #ifdef USE_SCREENSAVER |
1760 #ifndef _WIN32 | |
7987 | 1761 _("X usage"), "system", |
5440 | 1762 #else |
7987 | 1763 _("Windows usage"), "system", |
5440 | 1764 #endif |
1765 #endif | |
7987 | 1766 NULL); |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1767 |
5440 | 1768 gtk_size_group_add_widget(sg, dd); |
1769 gtk_misc_set_alignment(GTK_MISC(dd), 0, 0); | |
1770 | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1771 vbox = gaim_gtk_make_frame (ret, _("Auto-away")); |
7987 | 1772 button = gaim_gtk_prefs_checkbox(_("Set away _when idle"), |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1773 "/core/away/away_when_idle", vbox); |
8238 | 1774 |
7987 | 1775 select = gaim_gtk_prefs_labeled_spin_button(vbox, |
1776 _("_Minutes before setting away:"), "/core/away/mins_before_away", | |
1777 1, 24 * 60, sg); | |
5440 | 1778 g_signal_connect(G_OBJECT(button), "clicked", |
1779 G_CALLBACK(gaim_gtk_toggle_sensitive), select); | |
1780 | |
8238 | 1781 hbox = gtk_hbox_new(FALSE, 0); |
1782 gtk_container_add(GTK_CONTAINER(vbox), hbox); | |
1783 | |
5440 | 1784 label = gtk_label_new_with_mnemonic(_("Away m_essage:")); |
1785 gtk_size_group_add_widget(sg, label); | |
1786 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
8238 | 1787 g_signal_connect(G_OBJECT(button), "clicked", |
1788 G_CALLBACK(gaim_gtk_toggle_sensitive), label); | |
5440 | 1789 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
8238 | 1790 |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1791 if (!gaim_prefs_get_bool("/core/away/away_when_idle")) { |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1792 gtk_widget_set_sensitive(GTK_WIDGET(select), FALSE); |
8238 | 1793 gtk_widget_set_sensitive(GTK_WIDGET(label), FALSE); |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1794 } |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1795 |
5440 | 1796 gtk_widget_show_all(ret); |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1797 |
5440 | 1798 return ret; |
1799 } | |
1800 | |
1801 static GtkWidget *plugin_description=NULL, *plugin_details=NULL; | |
1802 | |
1803 static void prefs_plugin_sel (GtkTreeSelection *sel, GtkTreeModel *model) | |
1804 { | |
1805 gchar *buf, *pname, *perr, *pdesc, *pauth, *pweb; | |
1806 GtkTreeIter iter; | |
1807 GValue val = { 0, }; | |
1808 GaimPlugin *plug; | |
1809 | |
1810 if (! gtk_tree_selection_get_selected (sel, &model, &iter)) | |
1811 return; | |
8104 | 1812 gtk_tree_model_get_value (model, &iter, 3, &val); |
5440 | 1813 plug = g_value_get_pointer(&val); |
8998 | 1814 |
5440 | 1815 pname = g_markup_escape_text(_(plug->info->name), -1); |
9307 | 1816 pdesc = (plug->info->description) ? |
1817 g_markup_escape_text(_(plug->info->description), -1) : NULL; | |
1818 pauth = (plug->info->author) ? | |
1819 g_markup_escape_text(_(plug->info->author), -1) : NULL; | |
1820 pweb = (plug->info->homepage) ? | |
1821 g_markup_escape_text(_(plug->info->homepage), -1) : NULL; | |
1822 | |
5440 | 1823 if (plug->error != NULL) { |
1824 perr = g_markup_escape_text(_(plug->error), -1); | |
1825 buf = g_strdup_printf( | |
1826 "<span size=\"larger\">%s %s</span>\n\n" | |
1827 "<span weight=\"bold\" color=\"red\">%s</span>\n\n" | |
1828 "%s", | |
1829 pname, plug->info->version, perr, pdesc); | |
1830 g_free(perr); | |
1831 } | |
1832 else { | |
1833 buf = g_strdup_printf( | |
1834 "<span size=\"larger\">%s %s</span>\n\n%s", | |
1835 pname, plug->info->version, pdesc); | |
1836 } | |
1837 gtk_label_set_markup(GTK_LABEL(plugin_description), buf); | |
1838 g_free(buf); | |
1839 | |
1840 buf = g_strdup_printf( | |
1841 #ifndef _WIN32 | |
1842 _("<span size=\"larger\">%s %s</span>\n\n" | |
1843 "<span weight=\"bold\">Written by:</span>\t%s\n" | |
1844 "<span weight=\"bold\">Web site:</span>\t\t%s\n" | |
1845 "<span weight=\"bold\">File name:</span>\t%s"), | |
1846 #else | |
1847 _("<span size=\"larger\">%s %s</span>\n\n" | |
1848 "<span weight=\"bold\">Written by:</span> %s\n" | |
1849 "<span weight=\"bold\">URL:</span> %s\n" | |
1850 "<span weight=\"bold\">File name:</span> %s"), | |
1851 #endif | |
1852 pname, plug->info->version, pauth, pweb, plug->path); | |
1853 | |
1854 gtk_label_set_markup(GTK_LABEL(plugin_details), buf); | |
1855 g_value_unset(&val); | |
1856 g_free(buf); | |
1857 g_free(pname); | |
1858 g_free(pdesc); | |
1859 g_free(pauth); | |
1860 g_free(pweb); | |
1861 } | |
1862 | |
1863 static void plugin_load (GtkCellRendererToggle *cell, gchar *pth, gpointer data) | |
1864 { | |
1865 GtkTreeModel *model = (GtkTreeModel *)data; | |
1866 GtkTreeIter iter; | |
1867 GtkTreePath *path = gtk_tree_path_new_from_string(pth); | |
1868 GaimPlugin *plug; | |
1869 gchar buf[1024]; | |
6040 | 1870 gchar *name = NULL, *description = NULL; |
6928
6ed0a1c045b4
[gaim-migrate @ 7475]
Christian Hammond <chipx86@chipx86.com>
parents:
6861
diff
changeset
|
1871 |
5440 | 1872 GdkCursor *wait = gdk_cursor_new (GDK_WATCH); |
1873 gdk_window_set_cursor(prefs->window, wait); | |
1874 gdk_cursor_unref(wait); | |
6928
6ed0a1c045b4
[gaim-migrate @ 7475]
Christian Hammond <chipx86@chipx86.com>
parents:
6861
diff
changeset
|
1875 |
5440 | 1876 gtk_tree_model_get_iter (model, &iter, path); |
8104 | 1877 gtk_tree_model_get (model, &iter, 3, &plug, -1); |
6928
6ed0a1c045b4
[gaim-migrate @ 7475]
Christian Hammond <chipx86@chipx86.com>
parents:
6861
diff
changeset
|
1878 |
5440 | 1879 if (!gaim_plugin_is_loaded(plug)) { |
1880 gaim_plugin_load(plug); | |
1881 | |
1882 /* | |
1883 * NOTE: This is basically the same check as before | |
1884 * (plug->type == plugin), but now there aren't plugin types. | |
1885 * Not yet, anyway. I want to do a V2 of the plugin API. | |
1886 * The thing is, we should have a flag specifying the UI type, | |
1887 * or just whether it's a general plugin or a UI-specific | |
1888 * plugin. We should only load this if it's UI-specific. | |
1889 * | |
1890 * -- ChipX86 | |
1891 */ | |
1892 if (GAIM_IS_GTK_PLUGIN(plug)) | |
1893 { | |
1894 GtkWidget *config_frame; | |
1895 GaimGtkPluginUiInfo *ui_info; | |
1896 | |
1897 ui_info = GAIM_GTK_PLUGIN_UI_INFO(plug); | |
1898 config_frame = gaim_gtk_plugin_get_config_frame(plug); | |
1899 | |
1900 if (config_frame != NULL) { | |
1901 ui_info->iter = g_new0(GtkTreeIter, 1); | |
1902 prefs_notebook_add_page(_(plug->info->name), NULL, | |
10078 | 1903 config_frame, ui_info->iter, |
1904 &plugin_iter, notebook_page++); | |
5440 | 1905 } |
1906 } | |
8713 | 1907 |
1908 if(GAIM_PLUGIN_HAS_PREF_FRAME(plug)) { | |
8998 | 1909 GtkTreeIter iter; |
8713 | 1910 GtkWidget *pref_frame; |
1911 GaimPluginUiInfo *prefs_info; | |
1912 | |
1913 if(plug->info->type == GAIM_PLUGIN_PROTOCOL) | |
1914 iter = proto_iter; | |
1915 else | |
1916 iter = plugin_iter; | |
1917 | |
1918 prefs_info = GAIM_PLUGIN_UI_INFO(plug); | |
8814 | 1919 prefs_info->frame = prefs_info->get_plugin_pref_frame(plug); |
1920 pref_frame = gaim_gtk_plugin_pref_create_frame(prefs_info->frame); | |
8713 | 1921 |
1922 if(pref_frame != NULL) { | |
1923 prefs_info->iter = g_new0(GtkTreeIter, 1); | |
1924 prefs_notebook_add_page(_(plug->info->name), NULL, | |
1925 pref_frame, prefs_info->iter, | |
1926 &iter, notebook_page++); | |
1927 } | |
1928 } | |
5440 | 1929 } |
1930 else { | |
1931 if (GAIM_IS_GTK_PLUGIN(plug)) { | |
1932 GaimGtkPluginUiInfo *ui_info; | |
1933 | |
1934 ui_info = GAIM_GTK_PLUGIN_UI_INFO(plug); | |
1935 | |
1936 if (ui_info != NULL && ui_info->iter != NULL) { | |
1937 g_free(ui_info->iter); | |
1938 ui_info->iter = NULL; | |
1939 } | |
8745 | 1940 } |
1941 | |
1942 if (GAIM_PLUGIN_HAS_PREF_FRAME(plug)) { | |
8713 | 1943 GaimPluginUiInfo *prefs_info; |
1944 | |
1945 prefs_info = GAIM_PLUGIN_UI_INFO(plug); | |
1946 | |
8745 | 1947 if(prefs_info != NULL) { |
8814 | 1948 if(prefs_info->frame != NULL) { |
1949 gaim_plugin_pref_frame_destroy(prefs_info->frame); | |
1950 prefs_info->frame = NULL; | |
1951 } | |
1952 | |
8745 | 1953 if(prefs_info->iter != NULL) { |
1954 g_free(prefs_info->iter); | |
1955 prefs_info->iter = NULL; | |
1956 } | |
8713 | 1957 } |
5440 | 1958 } |
1959 | |
1960 gaim_plugin_unload(plug); | |
1961 } | |
1962 | |
1963 gdk_window_set_cursor(prefs->window, NULL); | |
1964 | |
6040 | 1965 name = g_markup_escape_text(_(plug->info->name), -1); |
1966 description = g_markup_escape_text(_(plug->info->description), -1); | |
5440 | 1967 if (plug->error != NULL) { |
6040 | 1968 gchar *error = g_markup_escape_text(plug->error, -1); |
5440 | 1969 g_snprintf(buf, sizeof(buf), |
1970 "<span size=\"larger\">%s %s</span>\n\n" | |
1971 "<span weight=\"bold\" color=\"red\">%s</span>\n\n" | |
1972 "%s", | |
6040 | 1973 name, plug->info->version, error, description); |
1974 g_free(error); | |
1975 } else { | |
5440 | 1976 g_snprintf(buf, sizeof(buf), |
1977 "<span size=\"larger\">%s %s</span>\n\n%s", | |
6040 | 1978 name, plug->info->version, description); |
5440 | 1979 } |
6040 | 1980 g_free(name); |
1981 g_free(description); | |
5440 | 1982 |
1983 gtk_label_set_markup(GTK_LABEL(plugin_description), buf); | |
1984 gtk_list_store_set (GTK_LIST_STORE (model), &iter, 0, | |
1985 gaim_plugin_is_loaded(plug), -1); | |
6928
6ed0a1c045b4
[gaim-migrate @ 7475]
Christian Hammond <chipx86@chipx86.com>
parents:
6861
diff
changeset
|
1986 |
5440 | 1987 gtk_label_set_markup(GTK_LABEL(plugin_description), buf); |
1988 gtk_tree_path_free(path); | |
5981
81564bb4db68
[gaim-migrate @ 6429]
Christian Hammond <chipx86@chipx86.com>
parents:
5966
diff
changeset
|
1989 |
81564bb4db68
[gaim-migrate @ 6429]
Christian Hammond <chipx86@chipx86.com>
parents:
5966
diff
changeset
|
1990 gaim_gtk_plugins_save(); |
5440 | 1991 } |
1992 | |
1993 static void | |
1994 update_plugin_list(void *data) | |
1995 { | |
1996 GtkListStore *ls = GTK_LIST_STORE(data); | |
1997 GtkTreeIter iter; | |
1998 GList *probes; | |
1999 GaimPlugin *plug; | |
2000 | |
2001 gtk_list_store_clear(ls); | |
2002 | |
2003 for (probes = gaim_plugins_get_all(); | |
2004 probes != NULL; | |
6928
6ed0a1c045b4
[gaim-migrate @ 7475]
Christian Hammond <chipx86@chipx86.com>
parents:
6861
diff
changeset
|
2005 probes = probes->next) |
6ed0a1c045b4
[gaim-migrate @ 7475]
Christian Hammond <chipx86@chipx86.com>
parents:
6861
diff
changeset
|
2006 { |
5440 | 2007 plug = probes->data; |
2008 | |
6928
6ed0a1c045b4
[gaim-migrate @ 7475]
Christian Hammond <chipx86@chipx86.com>
parents:
6861
diff
changeset
|
2009 if (plug->info->type != GAIM_PLUGIN_STANDARD || |
6930
31c45d99e1a8
[gaim-migrate @ 7477]
Christian Hammond <chipx86@chipx86.com>
parents:
6928
diff
changeset
|
2010 (plug->info->flags & GAIM_PLUGIN_FLAG_INVISIBLE)) |
6928
6ed0a1c045b4
[gaim-migrate @ 7475]
Christian Hammond <chipx86@chipx86.com>
parents:
6861
diff
changeset
|
2011 { |
5440 | 2012 continue; |
6928
6ed0a1c045b4
[gaim-migrate @ 7475]
Christian Hammond <chipx86@chipx86.com>
parents:
6861
diff
changeset
|
2013 } |
5440 | 2014 |
2015 gtk_list_store_append (ls, &iter); | |
2016 gtk_list_store_set(ls, &iter, | |
2017 0, gaim_plugin_is_loaded(plug), | |
6928
6ed0a1c045b4
[gaim-migrate @ 7475]
Christian Hammond <chipx86@chipx86.com>
parents:
6861
diff
changeset
|
2018 1, plug->info->name ? _(plug->info->name) : plug->path, |
8162 | 2019 2, _(plug->info->summary), |
8104 | 2020 3, plug, -1); |
5440 | 2021 } |
2022 } | |
2023 | |
2024 static GtkWidget *plugin_page () | |
2025 { | |
2026 GtkWidget *ret; | |
2027 GtkWidget *sw, *vp; | |
2028 GtkWidget *event_view; | |
2029 GtkListStore *ls; | |
2030 GtkCellRenderer *rend, *rendt; | |
2031 GtkTreeViewColumn *col; | |
2032 GtkTreeSelection *sel; | |
2033 GtkTreePath *path; | |
2034 GtkWidget *nb; | |
2035 | |
2036 ret = gtk_vbox_new(FALSE, 18); | |
2037 gtk_container_set_border_width (GTK_CONTAINER (ret), 12); | |
2038 | |
2039 sw = gtk_scrolled_window_new(NULL,NULL); | |
8104 | 2040 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); |
5440 | 2041 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); |
2042 | |
2043 gtk_box_pack_start(GTK_BOX(ret), sw, TRUE, TRUE, 0); | |
2044 | |
8104 | 2045 ls = gtk_list_store_new (4, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER); |
7939 | 2046 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(ls), |
2047 1, GTK_SORT_ASCENDING); | |
5440 | 2048 |
2049 update_plugin_list(ls); | |
2050 | |
2051 event_view = gtk_tree_view_new_with_model (GTK_TREE_MODEL(ls)); | |
2052 | |
2053 rend = gtk_cell_renderer_toggle_new(); | |
2054 sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (event_view)); | |
2055 | |
2056 col = gtk_tree_view_column_new_with_attributes (_("Load"), | |
2057 rend, | |
2058 "active", 0, | |
2059 NULL); | |
2060 gtk_tree_view_append_column (GTK_TREE_VIEW(event_view), col); | |
2061 | |
2062 rendt = gtk_cell_renderer_text_new(); | |
2063 col = gtk_tree_view_column_new_with_attributes (_("Name"), | |
2064 rendt, | |
2065 "text", 1, | |
2066 NULL); | |
2067 gtk_tree_view_append_column (GTK_TREE_VIEW(event_view), col); | |
8998 | 2068 |
8104 | 2069 rendt = gtk_cell_renderer_text_new(); |
2070 col = gtk_tree_view_column_new_with_attributes(_("Summary"), | |
2071 rendt, | |
2072 "text", 2, | |
2073 NULL); | |
2074 gtk_tree_view_append_column(GTK_TREE_VIEW(event_view), col); | |
8998 | 2075 |
5440 | 2076 g_object_unref(G_OBJECT(ls)); |
2077 gtk_container_add(GTK_CONTAINER(sw), event_view); | |
8998 | 2078 |
5440 | 2079 |
2080 nb = gtk_notebook_new(); | |
2081 gtk_notebook_set_tab_pos (GTK_NOTEBOOK(nb), GTK_POS_BOTTOM); | |
2082 gtk_notebook_popup_disable(GTK_NOTEBOOK(nb)); | |
8998 | 2083 |
5440 | 2084 /* Description */ |
2085 sw = gtk_scrolled_window_new(NULL, NULL); | |
2086 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); | |
2087 plugin_description = gtk_label_new(NULL); | |
8998 | 2088 |
5440 | 2089 vp = gtk_viewport_new(NULL, NULL); |
2090 gtk_viewport_set_shadow_type(GTK_VIEWPORT(vp), GTK_SHADOW_NONE); | |
2091 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_NONE); | |
2092 | |
2093 gtk_container_add(GTK_CONTAINER(vp), plugin_description); | |
2094 gtk_container_add(GTK_CONTAINER(sw), vp); | |
2095 | |
8998 | 2096 gtk_label_set_selectable(GTK_LABEL(plugin_description), TRUE); |
5440 | 2097 gtk_label_set_line_wrap(GTK_LABEL(plugin_description), TRUE); |
2098 gtk_misc_set_alignment(GTK_MISC(plugin_description), 0, 0); | |
2099 gtk_misc_set_padding(GTK_MISC(plugin_description), 6, 6); | |
2100 gtk_notebook_append_page(GTK_NOTEBOOK(nb), sw, gtk_label_new(_("Description"))); | |
2101 | |
2102 /* Details */ | |
2103 sw = gtk_scrolled_window_new(NULL, NULL); | |
2104 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); | |
2105 plugin_details = gtk_label_new(NULL); | |
8998 | 2106 |
5440 | 2107 vp = gtk_viewport_new(NULL, NULL); |
2108 gtk_viewport_set_shadow_type(GTK_VIEWPORT(vp), GTK_SHADOW_NONE); | |
2109 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_NONE); | |
2110 | |
2111 gtk_container_add(GTK_CONTAINER(vp), plugin_details); | |
2112 gtk_container_add(GTK_CONTAINER(sw), vp); | |
2113 | |
8998 | 2114 gtk_label_set_selectable(GTK_LABEL(plugin_details), TRUE); |
5440 | 2115 gtk_label_set_line_wrap(GTK_LABEL(plugin_details), TRUE); |
2116 gtk_misc_set_alignment(GTK_MISC(plugin_details), 0, 0); | |
8998 | 2117 gtk_misc_set_padding(GTK_MISC(plugin_details), 6, 6); |
5440 | 2118 gtk_notebook_append_page(GTK_NOTEBOOK(nb), sw, gtk_label_new(_("Details"))); |
2119 gtk_box_pack_start(GTK_BOX(ret), nb, TRUE, TRUE, 0); | |
2120 | |
2121 g_signal_connect (G_OBJECT (sel), "changed", | |
2122 G_CALLBACK (prefs_plugin_sel), | |
8998 | 2123 NULL); |
5440 | 2124 g_signal_connect (G_OBJECT(rend), "toggled", |
2125 G_CALLBACK(plugin_load), ls); | |
2126 | |
2127 path = gtk_tree_path_new_first(); | |
2128 gtk_tree_selection_select_path(sel, path); | |
2129 gtk_tree_path_free(path); | |
2130 | |
2131 gaim_plugins_register_probe_notify_cb(update_plugin_list, ls); | |
2132 | |
2133 gtk_widget_show_all(ret); | |
2134 return ret; | |
2135 } | |
2136 | |
2137 GtkTreeIter *prefs_notebook_add_page(const char *text, | |
2138 GdkPixbuf *pixbuf, | |
2139 GtkWidget *page, | |
2140 GtkTreeIter *iter, | |
2141 GtkTreeIter *parent, | |
2142 int ind) { | |
2143 GdkPixbuf *icon = NULL; | |
2144 | |
2145 if (pixbuf) | |
2146 icon = gdk_pixbuf_scale_simple (pixbuf, 18, 18, GDK_INTERP_BILINEAR); | |
2147 | |
2148 if (pixbuf) | |
2149 g_object_unref(pixbuf); | |
2150 if (icon) | |
2151 g_object_unref(icon); | |
2152 gtk_notebook_append_page(GTK_NOTEBOOK(prefsnotebook), page, gtk_label_new(text)); | |
2153 return iter; | |
2154 } | |
2155 | |
2156 void prefs_notebook_init() { | |
9267 | 2157 GtkTreeIter p, c, c2; |
5440 | 2158 GList *l; |
2159 GaimPlugin *plug; | |
2160 prefs_notebook_add_page(_("Buddy List"), NULL, list_page(), &c, &p, notebook_page++); | |
9150 | 2161 prefs_notebook_add_page(_("Conversations"), NULL, conv_page(), &c, &p, notebook_page++); |
9267 | 2162 prefs_notebook_add_page(_("Message Text"), NULL, messages_page(), &c2, &c, notebook_page++); |
2163 prefs_notebook_add_page(_("Shortcuts"), NULL, hotkeys_page(), &c2, &c, notebook_page++); | |
2164 prefs_notebook_add_page(_("Smiley Themes"), NULL, theme_page(), &c2, &c, notebook_page++); | |
9150 | 2165 prefs_notebook_add_page(_("Sounds"), NULL, sound_page(), &c, &p, notebook_page++); |
8238 | 2166 prefs_notebook_add_page(_("Network"), NULL, network_page(), &p, NULL, notebook_page++); |
5440 | 2167 #ifndef _WIN32 |
2168 /* We use the registered default browser in windows */ | |
10060 | 2169 /* if the user is running gnome 2.x, hide the browsers tab */ |
10061 | 2170 if (gaim_running_gnome() == FALSE) { |
10060 | 2171 prefs_notebook_add_page(_("Browser"), NULL, browser_page(), &p, NULL, notebook_page++); |
2172 } | |
5440 | 2173 #endif |
2174 prefs_notebook_add_page(_("Logging"), NULL, logging_page(), &p, NULL, notebook_page++); | |
2175 prefs_notebook_add_page(_("Away / Idle"), NULL, away_page(), &p, NULL, notebook_page++); | |
2176 | |
2177 if (gaim_plugins_enabled()) { | |
2178 prefs_notebook_add_page(_("Plugins"), NULL, plugin_page(), &plugin_iter, NULL, notebook_page++); | |
2179 | |
2180 for (l = gaim_plugins_get_loaded(); l != NULL; l = l->next) { | |
8713 | 2181 plug = (GaimPlugin *)l->data; |
5440 | 2182 |
2183 if (GAIM_IS_GTK_PLUGIN(plug)) { | |
2184 GtkWidget *config_frame; | |
2185 GaimGtkPluginUiInfo *ui_info; | |
2186 | |
2187 ui_info = GAIM_GTK_PLUGIN_UI_INFO(plug); | |
2188 config_frame = gaim_gtk_plugin_get_config_frame(plug); | |
2189 | |
2190 if (config_frame != NULL) { | |
2191 ui_info->iter = g_new0(GtkTreeIter, 1); | |
2192 prefs_notebook_add_page(_(plug->info->name), NULL, | |
2193 config_frame, ui_info->iter, | |
2194 &plugin_iter, notebook_page++); | |
2195 } | |
2196 } | |
8713 | 2197 |
2198 if(GAIM_PLUGIN_HAS_PREF_FRAME(plug)) { | |
8745 | 2199 GtkWidget *gtk_frame; |
8713 | 2200 GaimPluginUiInfo *prefs_info; |
2201 | |
2202 prefs_info = GAIM_PLUGIN_UI_INFO(plug); | |
8814 | 2203 prefs_info->frame = prefs_info->get_plugin_pref_frame(plug); |
2204 gtk_frame = gaim_gtk_plugin_pref_create_frame(prefs_info->frame); | |
8745 | 2205 |
2206 if(GTK_IS_WIDGET(gtk_frame)) { | |
8713 | 2207 prefs_info->iter = g_new0(GtkTreeIter, 1); |
2208 prefs_notebook_add_page(_(plug->info->name), NULL, | |
8745 | 2209 gtk_frame, prefs_info->iter, |
9150 | 2210 (plug->info->type == GAIM_PLUGIN_PROTOCOL) ? NULL : &plugin_iter, |
8713 | 2211 notebook_page++); |
8814 | 2212 } else if(prefs_info->frame) { |
2213 /* in the event that there is a pref frame and we can | |
2214 * not make a widget out of it, we free the | |
2215 * pluginpref frame --Gary | |
2216 */ | |
2217 gaim_plugin_pref_frame_destroy(prefs_info->frame); | |
8713 | 2218 } |
2219 } | |
5440 | 2220 } |
2221 } | |
2222 } | |
2223 | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
2224 void gaim_gtk_prefs_show(void) |
5440 | 2225 { |
10078 | 2226 GtkWidget *vbox; |
8292
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
2227 GtkWidget *bbox; |
5440 | 2228 GtkWidget *notebook; |
2229 GtkWidget *button; | |
2230 | |
2231 if (prefs) { | |
2232 gtk_window_present(GTK_WINDOW(prefs)); | |
2233 return; | |
2234 } | |
2235 | |
2236 /* copy the preferences to tmp values... | |
2237 * I liked "take affect immediately" Oh well :-( */ | |
6016 | 2238 /* (that should have been "effect," right?) */ |
2239 | |
5440 | 2240 /* Back to instant-apply! I win! BU-HAHAHA! */ |
2241 | |
2242 /* Create the window */ | |
2243 prefs = gtk_window_new(GTK_WINDOW_TOPLEVEL); | |
2244 gtk_window_set_role(GTK_WINDOW(prefs), "preferences"); | |
2245 gtk_window_set_title(GTK_WINDOW(prefs), _("Preferences")); | |
2246 gtk_window_set_resizable (GTK_WINDOW(prefs), FALSE); | |
8292
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
2247 gtk_container_set_border_width(GTK_CONTAINER(prefs), 12); |
5440 | 2248 g_signal_connect(G_OBJECT(prefs), "destroy", |
2249 G_CALLBACK(delete_prefs), NULL); | |
2250 | |
8292
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
2251 vbox = gtk_vbox_new(FALSE, 12); |
5440 | 2252 gtk_container_add(GTK_CONTAINER(prefs), vbox); |
2253 gtk_widget_show(vbox); | |
2254 | |
2255 /* The notebook */ | |
2256 prefsnotebook = notebook = gtk_notebook_new (); | |
10078 | 2257 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook), GTK_POS_LEFT); |
2258 gtk_notebook_set_show_tabs (GTK_NOTEBOOK (notebook), TRUE); | |
5440 | 2259 gtk_notebook_set_show_border (GTK_NOTEBOOK (notebook), FALSE); |
10078 | 2260 gtk_box_pack_start (GTK_BOX (vbox), notebook, FALSE, FALSE, 0); |
2261 | |
5440 | 2262 |
8713 | 2263 /* The buttons to press! */ |
8292
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
2264 bbox = gtk_hbutton_box_new(); |
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
2265 gtk_box_set_spacing(GTK_BOX(bbox), 6); |
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
2266 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
|
2267 gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 0); |
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
2268 gtk_widget_show (bbox); |
5440 | 2269 |
2270 button = gtk_button_new_from_stock (GTK_STOCK_CLOSE); | |
2271 g_signal_connect_swapped(G_OBJECT(button), "clicked", | |
2272 G_CALLBACK(gtk_widget_destroy), prefs); | |
8292
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
2273 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); |
5440 | 2274 gtk_widget_show(button); |
2275 | |
2276 prefs_notebook_init(); | |
2277 | |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
2278 /* Show everything. */ |
10078 | 2279 gtk_widget_show_all(prefs); |
5440 | 2280 } |
2281 | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2282 static void |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2283 set_bool_pref(GtkWidget *w, const char *key) |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2284 { |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2285 gaim_prefs_set_bool(key, |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2286 gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2287 } |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2288 |
7976 | 2289 GtkWidget * |
7987 | 2290 gaim_gtk_prefs_checkbox(const char *text, const char *key, GtkWidget *page) |
5440 | 2291 { |
2292 GtkWidget *button; | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2293 |
5440 | 2294 button = gtk_check_button_new_with_mnemonic(text); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2295 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2296 gaim_prefs_get_bool(key)); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2297 |
5440 | 2298 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
|
2299 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2300 g_signal_connect(G_OBJECT(button), "clicked", |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2301 G_CALLBACK(set_bool_pref), (char *)key); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2302 |
5440 | 2303 gtk_widget_show(button); |
2304 | |
2305 return button; | |
2306 } | |
2307 | |
5770
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
2308 static void |
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
2309 smiley_theme_pref_cb(const char *name, GaimPrefType type, gpointer value, |
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
2310 gpointer data) |
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
2311 { |
5841 | 2312 if (!strcmp(name, "/gaim/gtk/smileys/theme")) |
5771
f63a008726c6
[gaim-migrate @ 6196]
Christian Hammond <chipx86@chipx86.com>
parents:
5770
diff
changeset
|
2313 load_smiley_theme((const char *)value, TRUE); |
5770
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
2314 } |
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
2315 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
2316 void |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
2317 gaim_gtk_prefs_init(void) |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
2318 { |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
2319 gaim_prefs_add_none("/gaim"); |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
2320 gaim_prefs_add_none("/gaim/gtk"); |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
2321 gaim_prefs_add_none("/plugins/gtk"); |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
2322 |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
2323 /* XXX Move this! HACK! :( Aww... */ |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
2324 gaim_prefs_add_none("/plugins/gtk/docklet"); |
5554
7b36d02031a2
[gaim-migrate @ 5955]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2325 gaim_prefs_add_bool("/plugins/gtk/docklet/queue_messages", FALSE); |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
2326 |
5573
5e7de337a053
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5568
diff
changeset
|
2327 /* Away Queueing */ |
5e7de337a053
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5568
diff
changeset
|
2328 gaim_prefs_add_none("/gaim/gtk/away"); |
5e7de337a053
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5568
diff
changeset
|
2329 gaim_prefs_add_bool("/gaim/gtk/away/queue_messages", FALSE); |
5e7de337a053
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5568
diff
changeset
|
2330 |
8283 | 2331 #ifndef _WIN32 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2332 /* Browsers */ |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2333 gaim_prefs_add_none("/gaim/gtk/browsers"); |
8272 | 2334 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
|
2335 gaim_prefs_add_string("/gaim/gtk/browsers/command", ""); |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
2336 gaim_prefs_add_string("/gaim/gtk/browsers/browser", "mozilla"); |
8283 | 2337 #endif |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2338 |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
2339 /* Idle */ |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
2340 gaim_prefs_add_none("/gaim/gtk/idle"); |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
2341 gaim_prefs_add_string("/gaim/gtk/idle/reporting_method", "system"); |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
2342 |
5949
90d0849abd3c
[gaim-migrate @ 6393]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
2343 /* Plugins */ |
5982
35d3c1ac5ece
[gaim-migrate @ 6430]
Christian Hammond <chipx86@chipx86.com>
parents:
5981
diff
changeset
|
2344 gaim_prefs_add_none("/gaim/gtk/plugins"); |
5949
90d0849abd3c
[gaim-migrate @ 6393]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
2345 gaim_prefs_add_string_list("/gaim/gtk/plugins/loaded", NULL); |
90d0849abd3c
[gaim-migrate @ 6393]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
2346 |
5539
de09863bd4b5
[gaim-migrate @ 5939]
Christian Hammond <chipx86@chipx86.com>
parents:
5535
diff
changeset
|
2347 /* Smiley Themes */ |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
2348 gaim_prefs_add_none("/gaim/gtk/smileys"); |
9707 | 2349 gaim_prefs_add_string("/gaim/gtk/smileys/theme", "default"); |
5770
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
2350 |
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
2351 /* Smiley Callbacks */ |
10087 | 2352 gaim_prefs_connect_callback(prefs, "/gaim/gtk/smileys/theme", |
5770
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
2353 smiley_theme_pref_cb, NULL); |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
2354 } |
8905 | 2355 |
2356 void gaim_gtk_prefs_update_old() { | |
2357 /* Rename some old prefs */ | |
2358 gaim_prefs_rename("/gaim/gtk/logging/log_ims", "/core/logging/log_ims"); | |
2359 gaim_prefs_rename("/gaim/gtk/logging/log_chats", "/core/logging/log_chats"); | |
2360 gaim_prefs_rename("/core/conversations/placement", | |
8998 | 2361 "/gaim/gtk/conversations/placement"); |
8905 | 2362 |
9025 | 2363 gaim_prefs_rename("/gaim/gtk/conversations/use_custom_font", |
2364 "/gaim/gtk/conversations/send_formatting"); | |
2365 | |
9150 | 2366 gaim_prefs_rename("/gaim/gtk/conversations/im/button_type", |
2367 "/gaim/gtk/conversations/button_type"); | |
2368 | |
10307 | 2369 gaim_prefs_rename("/gaim/gtk/debug/timestamps", "/core/debug/timestamps"); |
2370 | |
8905 | 2371 /* Remove some no-longer-used prefs */ |
10133 | 2372 gaim_prefs_remove("/gaim/gtk/blist/button_style"); |
10168 | 2373 gaim_prefs_remove("/gaim/gtk/blist/grey_idle_buddies"); |
10133 | 2374 gaim_prefs_remove("/gaim/gtk/blist/raise_on_events"); |
8945 | 2375 gaim_prefs_remove("/gaim/gtk/blist/show_group_count"); |
10164 | 2376 gaim_prefs_remove("/gaim/gtk/conversations/html_shortcuts"); |
8946 | 2377 gaim_prefs_remove("/gaim/gtk/conversations/icons_on_tabs"); |
8905 | 2378 gaim_prefs_remove("/gaim/gtk/conversations/show_urls_as_links"); |
2379 gaim_prefs_remove("/gaim/gtk/conversations/show_smileys"); | |
10164 | 2380 gaim_prefs_remove("/gaim/gtk/conversations/smiley_shortcuts"); |
8941 | 2381 gaim_prefs_remove("/gaim/gtk/conversations/chat/tab_completion"); |
2382 gaim_prefs_remove("/gaim/gtk/conversations/chat/old_tab_complete"); | |
8947 | 2383 gaim_prefs_remove("/gaim/gtk/sound/signon"); |
2384 gaim_prefs_remove("/gaim/gtk/sound/silent_signon"); | |
8998 | 2385 gaim_prefs_remove("/gaim/gtk/logging/individual_logs"); |
9025 | 2386 gaim_prefs_remove("/gaim/gtk/conversations/use_custom_bgcolor"); |
2387 gaim_prefs_remove("/gaim/gtk/conversations/use_custom_fgcolor"); | |
2388 gaim_prefs_remove("/gaim/gtk/conversations/use_custom_size"); | |
9301 | 2389 gaim_prefs_remove("/gaim/gtk/conversations/im/hide_on_send"); |
8905 | 2390 } |