Mercurial > pidgin.yaz
annotate src/gtkprefs.c @ 9550:de83d2cb87a4
[gaim-migrate @ 10379]
" When unqueuing messages and "sounds while away" is set,
Gaim will play a message receieved for every message
unqueued. If there are a large number of messages, my
SB Audigy tries playing them all and ends up creating a
crackly ugly sound. Friends of mine have complained
about this as well.
This patch fixes that by making sure sounds are
disabled when unqueuing messages. Sounds will be
re-enabled afterwards if necessary.
Something to note is that playing the sounds when
unqueuing messages crashes Gaim on occasion, with about
50% success. After applying this patch, the crashes
stopped. The backtrace isn't particularly
helpful...it's all question marks and valgrind doesn't
say much either. Crash or no crash though, this
eliminates annoying behavior so that is probably more
important.
I originally fixed this for my plugin AutoProfile, but
since they use similar code for queuing messages, it
would be nice if Gaim has it as well :)" --Casey Ho
committer: Tailor Script <tailor@pidgin.im>
author | Luke Schierer <lschiere@pidgin.im> |
---|---|
date | Fri, 16 Jul 2004 14:56:47 +0000 |
parents | 9b2f1444811f |
children | 7b3212aa698c |
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 */ | |
6371
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6216
diff
changeset
|
26 #include "gtkinternal.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
27 |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
28 #include "debug.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
29 #include "notify.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
30 #include "prefs.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
31 #include "proxy.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
32 #include "prpl.h" |
9508 | 33 #include "request.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
34 #include "sound.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
35 #include "util.h" |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
36 #include "network.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
37 |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
38 #include "gtkblist.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
39 #include "gtkconv.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
40 #include "gtkdebug.h" |
5440 | 41 #include "gtkimhtml.h" |
8833 | 42 #include "gtkimhtmltoolbar.h" |
5440 | 43 #include "gtkplugin.h" |
8713 | 44 #include "gtkpluginpref.h" |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
45 #include "gtkprefs.h" |
5684 | 46 #include "gtksound.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
47 #include "gtkutils.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
48 #include "stock.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
49 |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5870
diff
changeset
|
50 #include "ui.h" |
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 |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
57 /* XXX This needs to be made static after we solve the away.c mess. */ |
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
58 GtkListStore *prefs_away_store = NULL; |
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
59 GtkWidget *prefs_away_menu = NULL; |
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
60 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
61 static GtkWidget *tree_v = NULL; |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
62 |
5440 | 63 |
64 static int sound_row_sel = 0; | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
65 static GtkWidget *preflabel; |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
66 static GtkWidget *prefsnotebook; |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
67 static GtkTreeStore *prefstree; |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
68 |
5440 | 69 |
70 static GtkWidget *sound_entry = NULL; | |
71 static GtkWidget *away_text = NULL; | |
72 static GtkListStore *smiley_theme_store = NULL; | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
73 static GtkWidget *prefs_proxy_frame = NULL; |
5440 | 74 |
75 static GtkWidget *prefs = NULL; | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
76 static GtkWidget *debugbutton = NULL; |
5440 | 77 static int notebook_page = 0; |
8713 | 78 static GtkTreeIter proto_iter, plugin_iter; |
5440 | 79 |
8274 | 80 static guint browser_pref1_id = 0; |
81 static guint browser_pref2_id = 0; | |
6001 | 82 static guint proxy_pref_id = 0; |
6005 | 83 static guint sound_pref_id = 0; |
6142 | 84 static guint auto_resp_pref_id = 0; |
8979 | 85 static guint placement_pref_id = 0; |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
86 |
5440 | 87 /* |
88 * PROTOTYPES | |
89 */ | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
90 static GtkTreeIter *prefs_notebook_add_page(const char*, GdkPixbuf*, |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
91 GtkWidget*, GtkTreeIter*, |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
92 GtkTreeIter*, int); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
93 static void delete_prefs(GtkWidget *, void *); |
5440 | 94 static void update_plugin_list(void *data); |
95 | |
7931 | 96 static void set_default_away(GtkWidget *, gpointer); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
97 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
98 static void |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
99 update_spin_value(GtkWidget *w, GtkWidget *spin) |
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 const char *key = g_object_get_data(G_OBJECT(spin), "val"); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
102 int value; |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
103 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
104 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
|
105 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
106 gaim_prefs_set_int(key, value); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
107 } |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
108 |
7976 | 109 GtkWidget * |
7987 | 110 gaim_gtk_prefs_labeled_spin_button(GtkWidget *box, const gchar *title, |
111 char *key, int min, int max, GtkSizeGroup *sg) | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
112 { |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
113 GtkWidget *hbox; |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
114 GtkWidget *label; |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
115 GtkWidget *spin; |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
116 GtkObject *adjust; |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
117 int val; |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
118 |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
119 val = gaim_prefs_get_int(key); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
120 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
121 hbox = gtk_hbox_new(FALSE, 5); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
122 gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 5); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
123 gtk_widget_show(hbox); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
124 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
125 label = gtk_label_new_with_mnemonic(title); |
8713 | 126 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
127 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
128 gtk_widget_show(label); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
129 |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
130 adjust = gtk_adjustment_new(val, min, max, 1, 1, 1); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
131 spin = gtk_spin_button_new(GTK_ADJUSTMENT(adjust), 1, 0); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
132 g_object_set_data(G_OBJECT(spin), "val", key); |
8467 | 133 if (max < 10000) |
134 gtk_widget_set_size_request(spin, 50, -1); | |
135 else | |
136 gtk_widget_set_size_request(spin, 60, -1); | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
137 gtk_box_pack_start(GTK_BOX(hbox), spin, FALSE, FALSE, 0); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
138 g_signal_connect(G_OBJECT(adjust), "value-changed", |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
139 G_CALLBACK(update_spin_value), GTK_WIDGET(spin)); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
140 gtk_widget_show(spin); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
141 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
142 gtk_label_set_mnemonic_widget(GTK_LABEL(label), spin); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
143 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
144 if (sg) { |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
145 gtk_size_group_add_widget(sg, label); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
146 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
147 } |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
148 |
8137 | 149 gaim_set_accessible_label (spin, label); |
150 | |
8238 | 151 return hbox; |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
152 } |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
153 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
154 static void |
9422 | 155 entry_set(GtkEntry *entry, gpointer data) { |
156 char *key = (char*)data; | |
157 | |
158 gaim_prefs_set_string(key, gtk_entry_get_text(entry)); | |
159 } | |
160 | |
161 GtkWidget * | |
162 gaim_gtk_prefs_labeled_entry(GtkWidget *page, const gchar *title, char *key, | |
163 GtkSizeGroup *sg) | |
164 { | |
165 GtkWidget *hbox, *label, *entry; | |
166 const gchar *value; | |
167 | |
168 value = gaim_prefs_get_string(key); | |
169 | |
170 hbox = gtk_hbox_new(FALSE, 5); | |
171 gtk_box_pack_start(GTK_BOX(page), hbox, FALSE, FALSE, 5); | |
172 gtk_widget_show(hbox); | |
173 | |
174 label = gtk_label_new_with_mnemonic(title); | |
175 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); | |
176 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); | |
177 gtk_widget_show(label); | |
178 | |
179 entry = gtk_entry_new(); | |
180 gtk_entry_set_text(GTK_ENTRY(entry), value); | |
181 gtk_box_pack_start(GTK_BOX(hbox), entry, FALSE, FALSE, 0); | |
182 g_signal_connect(G_OBJECT(entry), "changed", | |
183 G_CALLBACK(entry_set), (char*)key); | |
184 gtk_widget_show(entry); | |
185 | |
186 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
187 | |
188 if(sg) { | |
189 gtk_size_group_add_widget(sg, label); | |
190 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
191 } | |
192 | |
193 gaim_set_accessible_label(entry, label); | |
194 | |
195 return hbox; | |
196 } | |
197 | |
198 static void | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
199 dropdown_set(GObject *w, const char *key) |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
200 { |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
201 const char *str_value; |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
202 int int_value; |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
203 GaimPrefType type; |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
204 |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
205 type = GPOINTER_TO_INT(g_object_get_data(w, "type")); |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
206 |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
207 if (type == GAIM_PREF_INT) { |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
208 int_value = GPOINTER_TO_INT(g_object_get_data(w, "value")); |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
209 |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
210 gaim_prefs_set_int(key, int_value); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
211 } |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
212 else if (type == GAIM_PREF_STRING) { |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
213 str_value = (const char *)g_object_get_data(w, "value"); |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
214 |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
215 gaim_prefs_set_string(key, str_value); |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
216 } |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
217 else if (type == GAIM_PREF_BOOLEAN) { |
9151 | 218 gaim_prefs_set_bool(key, |
219 GPOINTER_TO_INT(g_object_get_data(w, "value"))); | |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
220 } |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
221 } |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
222 |
7976 | 223 GtkWidget * |
7987 | 224 gaim_gtk_prefs_dropdown_from_list(GtkWidget *box, const gchar *title, |
225 GaimPrefType type, const char *key, GList *menuitems) | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
226 { |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
227 GtkWidget *dropdown, *opt, *menu; |
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
228 GtkWidget *label; |
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
229 GtkWidget *hbox; |
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
230 gchar *text; |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
231 const char *stored_str = NULL; |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
232 int stored_int = 0; |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
233 int int_value = 0; |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
234 const char *str_value = NULL; |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
235 int o = 0; |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
236 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
237 g_return_val_if_fail(menuitems != NULL, NULL); |
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 hbox = gtk_hbox_new(FALSE, 5); |
8713 | 240 /*gtk_container_add (GTK_CONTAINER (box), hbox);*/ |
241 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
|
242 gtk_widget_show(hbox); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
243 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
244 label = gtk_label_new_with_mnemonic(title); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
245 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
246 gtk_widget_show(label); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
247 |
8577 | 248 #if 0 /* GTK_CHECK_VERSION(2,4,0) */ |
249 if(type == GAIM_PREF_INT) | |
250 model = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_INT); | |
251 else if(type == GAIM_PREF_STRING) | |
252 model = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING); | |
253 dropdown = gtk_combo_box_new_with_model(model); | |
254 #else | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
255 dropdown = gtk_option_menu_new(); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
256 menu = gtk_menu_new(); |
8577 | 257 #endif |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
258 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
259 gtk_label_set_mnemonic_widget(GTK_LABEL(label), dropdown); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
260 |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
261 if (type == GAIM_PREF_INT) |
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
262 stored_int = gaim_prefs_get_int(key); |
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
263 else if (type == GAIM_PREF_STRING) |
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
264 stored_str = gaim_prefs_get_string(key); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
265 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
266 while (menuitems != NULL && (text = (char *) menuitems->data) != NULL) { |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
267 menuitems = g_list_next(menuitems); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
268 g_return_val_if_fail(menuitems != NULL, NULL); |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
269 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
270 opt = gtk_menu_item_new_with_label(text); |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
271 |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
272 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
|
273 |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
274 if (type == GAIM_PREF_INT) { |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
275 int_value = GPOINTER_TO_INT(menuitems->data); |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
276 g_object_set_data(G_OBJECT(opt), "value", |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
277 GINT_TO_POINTER(int_value)); |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
278 } |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
279 else if (type == GAIM_PREF_STRING) { |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
280 str_value = (const char *)menuitems->data; |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
281 |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
282 g_object_set_data(G_OBJECT(opt), "value", (char *)str_value); |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
283 } |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
284 else if (type == GAIM_PREF_BOOLEAN) { |
9151 | 285 g_object_set_data(G_OBJECT(opt), "value", |
286 menuitems->data); | |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
287 } |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
288 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
289 g_signal_connect(G_OBJECT(opt), "activate", |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
290 G_CALLBACK(dropdown_set), (char *)key); |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
291 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
292 gtk_widget_show(opt); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
293 gtk_menu_shell_append(GTK_MENU_SHELL(menu), opt); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
294 |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
295 if ((type == GAIM_PREF_INT && stored_int == int_value) || |
5753
96214f5de47c
[gaim-migrate @ 6178]
Christian Hammond <chipx86@chipx86.com>
parents:
5716
diff
changeset
|
296 (type == GAIM_PREF_STRING && stored_str != NULL && |
96214f5de47c
[gaim-migrate @ 6178]
Christian Hammond <chipx86@chipx86.com>
parents:
5716
diff
changeset
|
297 !strcmp(stored_str, str_value)) || |
9151 | 298 (type == GAIM_PREF_BOOLEAN && |
299 (gaim_prefs_get_bool(key) == GPOINTER_TO_INT(menuitems->data)))) { | |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
300 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
301 gtk_menu_set_active(GTK_MENU(menu), o); |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
302 } |
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
303 |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
304 menuitems = g_list_next(menuitems); |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
305 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
306 o++; |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
307 } |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
308 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
309 gtk_option_menu_set_menu(GTK_OPTION_MENU(dropdown), menu); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
310 gtk_box_pack_start(GTK_BOX(hbox), dropdown, FALSE, FALSE, 0); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
311 gtk_widget_show(dropdown); |
8137 | 312 gaim_set_accessible_label (dropdown, label); |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
313 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
314 return label; |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
315 } |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
316 |
7976 | 317 GtkWidget * |
7987 | 318 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
|
319 const char *key, ...) |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
320 { |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
321 va_list ap; |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
322 GList *menuitems = NULL; |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
323 GtkWidget *dropdown = NULL; |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
324 char *name; |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
325 int int_value; |
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
326 const char *str_value; |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
327 |
9151 | 328 g_return_val_if_fail(type == GAIM_PREF_BOOLEAN || type == GAIM_PREF_INT || |
329 type == GAIM_PREF_STRING, NULL); | |
330 | |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
331 va_start(ap, key); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
332 while ((name = va_arg(ap, char *)) != NULL) { |
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 menuitems = g_list_prepend(menuitems, name); |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
335 |
9151 | 336 if (type == GAIM_PREF_INT || type == GAIM_PREF_BOOLEAN) { |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
337 int_value = va_arg(ap, int); |
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
338 menuitems = g_list_prepend(menuitems, GINT_TO_POINTER(int_value)); |
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
339 } |
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
340 else { |
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
341 str_value = va_arg(ap, const char *); |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
342 menuitems = g_list_prepend(menuitems, (char *)str_value); |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
343 } |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
344 } |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
345 va_end(ap); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
346 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
347 g_return_val_if_fail(menuitems != NULL, NULL); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
348 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
349 menuitems = g_list_reverse(menuitems); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
350 |
7987 | 351 dropdown = gaim_gtk_prefs_dropdown_from_list(box, title, type, key, |
352 menuitems); | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
353 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
354 g_list_free(menuitems); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
355 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
356 return dropdown; |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
357 } |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
358 |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
359 static void |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
360 delete_prefs(GtkWidget *asdf, void *gdsa) |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
361 { |
5440 | 362 GList *l; |
363 GaimPlugin *plug; | |
364 | |
9508 | 365 /* Close any "select sound" request dialogs */ |
366 gaim_request_close_with_handle(prefs); | |
367 | |
5440 | 368 gaim_plugins_unregister_probe_notify_cb(update_plugin_list); |
369 | |
370 prefs = NULL; | |
371 tree_v = NULL; | |
372 sound_entry = NULL; | |
373 debugbutton = NULL; | |
374 prefs_away_menu = NULL; | |
375 notebook_page = 0; | |
376 smiley_theme_store = NULL; | |
377 g_object_unref(G_OBJECT(prefs_away_store)); | |
378 prefs_away_store = NULL; | |
379 | |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
380 /* Unregister callbacks. */ |
8274 | 381 gaim_prefs_disconnect_callback(browser_pref1_id); |
382 gaim_prefs_disconnect_callback(browser_pref2_id); | |
6001 | 383 gaim_prefs_disconnect_callback(proxy_pref_id); |
6005 | 384 gaim_prefs_disconnect_callback(sound_pref_id); |
6142 | 385 gaim_prefs_disconnect_callback(auto_resp_pref_id); |
8979 | 386 gaim_prefs_disconnect_callback(placement_pref_id); |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
387 |
5440 | 388 for (l = gaim_plugins_get_loaded(); l != NULL; l = l->next) { |
389 plug = l->data; | |
390 | |
391 if (GAIM_IS_GTK_PLUGIN(plug)) { | |
392 GaimGtkPluginUiInfo *ui_info; | |
393 | |
394 ui_info = GAIM_GTK_PLUGIN_UI_INFO(plug); | |
395 | |
396 if (ui_info->iter != NULL) { | |
397 g_free(ui_info->iter); | |
398 ui_info->iter = NULL; | |
399 } | |
400 } | |
8745 | 401 |
402 if(GAIM_PLUGIN_HAS_PREF_FRAME(plug)) { | |
403 GaimPluginUiInfo *prefs_info; | |
404 | |
405 prefs_info = GAIM_PLUGIN_UI_INFO(plug); | |
406 | |
8814 | 407 if(prefs_info->frame != NULL) { |
408 gaim_plugin_pref_frame_destroy(prefs_info->frame); | |
409 prefs_info->frame = NULL; | |
410 } | |
411 | |
8745 | 412 if(prefs_info->iter != NULL) { |
413 g_free(prefs_info->iter); | |
414 prefs_info->iter = NULL; | |
415 } | |
416 } | |
5440 | 417 } |
418 } | |
419 | |
420 static void pref_nb_select(GtkTreeSelection *sel, GtkNotebook *nb) { | |
421 GtkTreeIter iter; | |
422 char text[128]; | |
423 GValue val = { 0, }; | |
424 GtkTreeModel *model = GTK_TREE_MODEL(prefstree); | |
425 | |
426 if (! gtk_tree_selection_get_selected (sel, &model, &iter)) | |
427 return; | |
428 gtk_tree_model_get_value (model, &iter, 1, &val); | |
429 g_snprintf(text, sizeof(text), "<span weight=\"bold\" size=\"larger\">%s</span>", | |
430 g_value_get_string(&val)); | |
431 gtk_label_set_markup (GTK_LABEL(preflabel), text); | |
432 g_value_unset (&val); | |
433 gtk_tree_model_get_value (model, &iter, 2, &val); | |
434 gtk_notebook_set_current_page (GTK_NOTEBOOK (prefsnotebook), g_value_get_int (&val)); | |
435 | |
9521 | 436 g_value_unset(&val); |
5440 | 437 } |
438 | |
439 /* These are the pages in the preferences notebook */ | |
440 GtkWidget *interface_page() { | |
441 GtkWidget *ret; | |
442 GtkWidget *vbox; | |
443 ret = gtk_vbox_new(FALSE, 18); | |
444 gtk_container_set_border_width (GTK_CONTAINER (ret), 12); | |
445 | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
446 vbox = gaim_gtk_make_frame(ret, _("Interface Options")); |
5440 | 447 |
7987 | 448 gaim_gtk_prefs_checkbox(_("D_isplay remote nicknames if no alias is set"), |
449 "/core/buddies/use_server_alias", vbox); | |
5440 | 450 |
451 | |
452 gtk_widget_show_all(ret); | |
453 return ret; | |
454 } | |
455 | |
456 static void smiley_sel (GtkTreeSelection *sel, GtkTreeModel *model) { | |
457 GtkTreeIter iter; | |
458 const char *filename; | |
459 GValue val = { 0, }; | |
5841 | 460 |
5440 | 461 if (! gtk_tree_selection_get_selected (sel, &model, &iter)) |
462 return; | |
463 gtk_tree_model_get_value (model, &iter, 2, &val); | |
464 filename = g_value_get_string(&val); | |
5770
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
465 gaim_prefs_set_string("/gaim/gtk/smileys/theme", filename); |
5440 | 466 g_value_unset (&val); |
467 } | |
468 | |
469 GtkTreePath *theme_refresh_theme_list() | |
470 { | |
471 GdkPixbuf *pixbuf; | |
472 GSList *themes; | |
473 GtkTreeIter iter; | |
474 GtkTreePath *path = NULL; | |
475 int ind = 0; | |
476 | |
477 | |
478 smiley_theme_probe(); | |
479 | |
480 if (!smiley_themes) | |
481 return NULL; | |
482 | |
483 themes = smiley_themes; | |
484 | |
485 gtk_list_store_clear(smiley_theme_store); | |
486 | |
487 while (themes) { | |
488 struct smiley_theme *theme = themes->data; | |
489 char *description = g_strdup_printf("<span size='larger' weight='bold'>%s</span> - %s\n" | |
490 "<span size='smaller' foreground='dim grey'>%s</span>", | |
491 theme->name, theme->author, theme->desc); | |
492 gtk_list_store_append (smiley_theme_store, &iter); | |
8494 | 493 |
494 /* | |
495 * LEAK - Gentoo memprof thinks pixbuf is leaking here... but it | |
496 * looks like it should be ok to me. Anyone know what's up? --Mark | |
497 */ | |
8963 | 498 pixbuf = (theme->icon ? gdk_pixbuf_new_from_file(theme->icon, NULL) : NULL); |
5440 | 499 |
500 gtk_list_store_set(smiley_theme_store, &iter, | |
501 0, pixbuf, | |
502 1, description, | |
503 2, theme->path, | |
8928 | 504 3, theme->name, |
5440 | 505 -1); |
7094
2343c3aa1dec
[gaim-migrate @ 7659]
Christian Hammond <chipx86@chipx86.com>
parents:
7092
diff
changeset
|
506 |
2343c3aa1dec
[gaim-migrate @ 7659]
Christian Hammond <chipx86@chipx86.com>
parents:
7092
diff
changeset
|
507 if (pixbuf != NULL) |
2343c3aa1dec
[gaim-migrate @ 7659]
Christian Hammond <chipx86@chipx86.com>
parents:
7092
diff
changeset
|
508 g_object_unref(G_OBJECT(pixbuf)); |
2343c3aa1dec
[gaim-migrate @ 7659]
Christian Hammond <chipx86@chipx86.com>
parents:
7092
diff
changeset
|
509 |
5440 | 510 g_free(description); |
511 themes = themes->next; | |
512 if (current_smiley_theme && !strcmp(theme->path, current_smiley_theme->path)) { | |
513 /* path = gtk_tree_path_new_from_indices(ind); */ | |
514 char *iwishihadgtk2_2 = g_strdup_printf("%d", ind); | |
515 path = gtk_tree_path_new_from_string(iwishihadgtk2_2); | |
516 g_free(iwishihadgtk2_2); | |
517 } | |
518 ind++; | |
519 } | |
520 | |
521 return path; | |
522 } | |
523 | |
524 void theme_install_theme(char *path, char *extn) { | |
525 #ifndef _WIN32 | |
526 gchar *command; | |
527 #endif | |
528 gchar *destdir; | |
529 gchar *tail; | |
8494 | 530 GtkTreePath *themepath = NULL; |
5440 | 531 |
532 /* Just to be safe */ | |
533 g_strchomp(path); | |
534 | |
535 /* I dont know what you are, get out of here */ | |
536 if (extn != NULL) | |
537 tail = extn; | |
538 else if ((tail = strrchr(path, '.')) == NULL) | |
539 return; | |
540 | |
541 destdir = g_strconcat(gaim_user_dir(), G_DIR_SEPARATOR_S "smileys", NULL); | |
542 | |
543 /* We'll check this just to make sure. This also lets us do something different on | |
544 * other platforms, if need be */ | |
545 if (!g_ascii_strcasecmp(tail, ".gz") || !g_ascii_strcasecmp(tail, ".tgz")) { | |
546 #ifndef _WIN32 | |
547 command = g_strdup_printf("tar > /dev/null xzf \"%s\" -C %s", path, destdir); | |
548 #else | |
549 if(!wgaim_gz_untar(path, destdir)) { | |
550 g_free(destdir); | |
551 return; | |
552 } | |
553 #endif | |
554 } | |
555 else { | |
556 g_free(destdir); | |
557 return; | |
558 } | |
559 | |
560 #ifndef _WIN32 | |
561 /* Fire! */ | |
562 system(command); | |
563 | |
564 g_free(command); | |
565 #endif | |
566 g_free(destdir); | |
567 | |
8494 | 568 themepath = theme_refresh_theme_list(); |
569 if (themepath != NULL) | |
570 gtk_tree_path_free(themepath); | |
5440 | 571 } |
572 | |
7094
2343c3aa1dec
[gaim-migrate @ 7659]
Christian Hammond <chipx86@chipx86.com>
parents:
7092
diff
changeset
|
573 static void |
2343c3aa1dec
[gaim-migrate @ 7659]
Christian Hammond <chipx86@chipx86.com>
parents:
7092
diff
changeset
|
574 theme_got_url(void *data, const char *themedata, size_t len) |
2343c3aa1dec
[gaim-migrate @ 7659]
Christian Hammond <chipx86@chipx86.com>
parents:
7092
diff
changeset
|
575 { |
5440 | 576 FILE *f; |
577 gchar *path; | |
578 | |
579 f = gaim_mkstemp(&path); | |
580 fwrite(themedata, len, 1, f); | |
581 fclose(f); | |
582 | |
583 theme_install_theme(path, data); | |
584 | |
585 unlink(path); | |
586 g_free(path); | |
587 } | |
588 | |
589 void theme_dnd_recv(GtkWidget *widget, GdkDragContext *dc, guint x, guint y, GtkSelectionData *sd, | |
590 guint info, guint t, gpointer data) { | |
591 gchar *name = sd->data; | |
592 | |
593 if ((sd->length >= 0) && (sd->format == 8)) { | |
594 /* Well, it looks like the drag event was cool. | |
595 * Let's do something with it */ | |
596 | |
597 if (!g_ascii_strncasecmp(name, "file://", 7)) { | |
598 GError *converr = NULL; | |
599 gchar *tmp; | |
600 /* It looks like we're dealing with a local file. Let's | |
601 * just untar it in the right place */ | |
602 if(!(tmp = g_filename_from_uri(name, NULL, &converr))) { | |
603 gaim_debug(GAIM_DEBUG_ERROR, "theme dnd", "%s\n", | |
604 (converr ? converr->message : | |
605 "g_filename_from_uri error")); | |
606 return; | |
607 } | |
608 theme_install_theme(tmp, NULL); | |
609 g_free(tmp); | |
610 } else if (!g_ascii_strncasecmp(name, "http://", 7)) { | |
611 /* Oo, a web drag and drop. This is where things | |
612 * will start to get interesting */ | |
613 gchar *tail; | |
614 | |
615 if ((tail = strrchr(name, '.')) == NULL) | |
616 return; | |
617 | |
618 /* We'll check this just to make sure. This also lets us do something different on | |
619 * other platforms, if need be */ | |
7094
2343c3aa1dec
[gaim-migrate @ 7659]
Christian Hammond <chipx86@chipx86.com>
parents:
7092
diff
changeset
|
620 gaim_url_fetch(name, TRUE, NULL, FALSE, theme_got_url, ".tgz"); |
5440 | 621 } |
622 | |
623 gtk_drag_finish(dc, TRUE, FALSE, t); | |
624 } | |
625 | |
626 gtk_drag_finish(dc, FALSE, FALSE, t); | |
627 } | |
628 | |
8928 | 629 /* Does same as normal sort, except "none" is sorted first */ |
630 gint gaim_sort_smileys (GtkTreeModel *model, | |
631 GtkTreeIter *a, | |
632 GtkTreeIter *b, | |
633 gpointer userdata) | |
634 { | |
635 gint ret = 0; | |
636 gchar *name1, *name2; | |
637 | |
638 gtk_tree_model_get(model, a, 3, &name1, -1); | |
639 gtk_tree_model_get(model, b, 3, &name2, -1); | |
640 | |
641 if (name1 == NULL || name2 == NULL) { | |
642 if (!(name1 == NULL && name2 == NULL)) | |
643 ret = (name1 == NULL) ? -1: 1; | |
644 } else if (!g_ascii_strcasecmp(name1, "none")) { | |
645 /* Sort name1 first */ | |
646 ret = -1; | |
647 } else if (!g_ascii_strcasecmp(name2, "none")) { | |
648 /* Sort name2 first */ | |
649 ret = 1; | |
650 } else { | |
651 /* Neither string is "none", default to normal sort */ | |
652 ret = g_utf8_collate(name1,name2); | |
653 } | |
654 | |
9521 | 655 g_free(name1); |
656 g_free(name2); | |
657 | |
8928 | 658 return ret; |
659 } | |
660 | |
5440 | 661 GtkWidget *theme_page() { |
662 GtkWidget *ret; | |
663 GtkWidget *sw; | |
664 GtkWidget *view; | |
665 GtkCellRenderer *rend; | |
666 GtkTreeViewColumn *col; | |
667 GtkTreeSelection *sel; | |
668 GtkTreePath *path = NULL; | |
669 GtkWidget *label; | |
670 GtkTargetEntry te[3] = {{"text/plain", 0, 0},{"text/uri-list", 0, 1},{"STRING", 0, 2}}; | |
671 | |
672 ret = gtk_vbox_new(FALSE, 18); | |
673 gtk_container_set_border_width (GTK_CONTAINER (ret), 12); | |
674 | |
675 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.")); | |
676 | |
677 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); | |
678 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); | |
679 gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT); | |
680 | |
681 gtk_box_pack_start(GTK_BOX(ret), label, FALSE, TRUE, 0); | |
682 gtk_widget_show(label); | |
683 | |
684 sw = gtk_scrolled_window_new(NULL,NULL); | |
7939 | 685 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); |
7931 | 686 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); |
5440 | 687 |
688 gtk_box_pack_start(GTK_BOX(ret), sw, TRUE, TRUE, 0); | |
8928 | 689 smiley_theme_store = gtk_list_store_new (4, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); |
5440 | 690 |
691 path = theme_refresh_theme_list(); | |
8075 | 692 |
5440 | 693 view = gtk_tree_view_new_with_model (GTK_TREE_MODEL(smiley_theme_store)); |
694 | |
695 gtk_drag_dest_set(view, GTK_DEST_DEFAULT_MOTION | GTK_DEST_DEFAULT_HIGHLIGHT | GTK_DEST_DEFAULT_DROP, te, | |
696 sizeof(te) / sizeof(GtkTargetEntry) , GDK_ACTION_COPY | GDK_ACTION_MOVE); | |
697 | |
698 g_signal_connect(G_OBJECT(view), "drag_data_received", G_CALLBACK(theme_dnd_recv), smiley_theme_store); | |
699 | |
700 rend = gtk_cell_renderer_pixbuf_new(); | |
701 sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (view)); | |
702 | |
703 if(path) { | |
704 gtk_tree_selection_select_path(sel, path); | |
705 gtk_tree_path_free(path); | |
706 } | |
8928 | 707 |
708 /* Custom sort so "none" theme is at top of list */ | |
709 gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(smiley_theme_store), | |
710 3, gaim_sort_smileys, NULL, NULL); | |
711 | |
8075 | 712 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(smiley_theme_store), |
8928 | 713 3, GTK_SORT_ASCENDING); |
5440 | 714 |
715 col = gtk_tree_view_column_new_with_attributes (_("Icon"), | |
716 rend, | |
717 "pixbuf", 0, | |
718 NULL); | |
719 gtk_tree_view_append_column (GTK_TREE_VIEW(view), col); | |
720 | |
721 rend = gtk_cell_renderer_text_new(); | |
722 col = gtk_tree_view_column_new_with_attributes (_("Description"), | |
723 rend, | |
724 "markup", 1, | |
725 NULL); | |
726 gtk_tree_view_append_column (GTK_TREE_VIEW(view), col); | |
727 g_object_unref(G_OBJECT(smiley_theme_store)); | |
728 gtk_container_add(GTK_CONTAINER(sw), view); | |
729 | |
8075 | 730 g_signal_connect(G_OBJECT(sel), "changed", G_CALLBACK(smiley_sel), NULL); |
5440 | 731 |
732 gtk_widget_show_all(ret); | |
8137 | 733 |
734 gaim_set_accessible_label (view, label); | |
735 | |
5440 | 736 return ret; |
737 } | |
738 | |
9025 | 739 static void |
740 formatting_reset_cb(GtkWidget *w, GtkWidget* imhtml) { | |
741 gboolean bold, italic, uline; | |
742 bold = italic = uline = FALSE; | |
743 | |
744 gtk_imhtml_get_current_format(GTK_IMHTML(imhtml), &bold, &italic, &uline); | |
745 if (bold) | |
746 gtk_imhtml_toggle_bold(GTK_IMHTML(imhtml)); | |
747 if (italic) | |
748 gtk_imhtml_toggle_italic(GTK_IMHTML(imhtml)); | |
749 if (uline) | |
750 gtk_imhtml_toggle_underline(GTK_IMHTML(imhtml)); | |
751 | |
752 gtk_imhtml_font_set_size(GTK_IMHTML(imhtml), 3); | |
753 gtk_imhtml_toggle_forecolor(GTK_IMHTML(imhtml), NULL); | |
754 gtk_imhtml_toggle_backcolor(GTK_IMHTML(imhtml), NULL); | |
755 gtk_imhtml_toggle_fontface(GTK_IMHTML(imhtml), NULL); | |
756 } | |
757 | |
758 static void | |
759 formatting_toggle_cb(GtkIMHtml *imhtml, GtkIMHtmlButtons buttons, void *bah) | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
760 { |
9025 | 761 gboolean bold, italic, uline; |
762 | |
763 bold = italic = uline = FALSE; | |
764 gtk_imhtml_get_current_format(GTK_IMHTML(imhtml), | |
765 &bold, &italic, &uline); | |
766 | |
767 if (buttons & GTK_IMHTML_BOLD) | |
768 gaim_prefs_set_bool("/gaim/gtk/conversations/send_bold", bold); | |
769 if (buttons & GTK_IMHTML_ITALIC) | |
770 gaim_prefs_set_bool("/gaim/gtk/conversations/send_italic", italic); | |
771 if (buttons & GTK_IMHTML_UNDERLINE) | |
772 gaim_prefs_set_bool("/gaim/gtk/conversations/send_underline", uline); | |
773 | |
774 if (buttons & GTK_IMHTML_GROW || buttons & GTK_IMHTML_SHRINK) | |
775 gaim_prefs_set_int("/gaim/gtk/conversations/font_size", | |
776 gtk_imhtml_get_current_fontsize(GTK_IMHTML(imhtml))); | |
777 if (buttons & GTK_IMHTML_FACE) { | |
778 char *face = gtk_imhtml_get_current_fontface(GTK_IMHTML(imhtml)); | |
779 if (!face) | |
780 face = g_strdup(""); | |
781 | |
782 gaim_prefs_set_string("/gaim/gtk/conversations/font_face", face); | |
783 g_free(face); | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
784 } |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
785 |
9025 | 786 if (buttons & GTK_IMHTML_FORECOLOR) { |
787 char *color = gtk_imhtml_get_current_forecolor(GTK_IMHTML(imhtml)); | |
788 if (!color) | |
789 color = g_strdup(""); | |
790 | |
791 gaim_prefs_set_string("/gaim/gtk/conversations/fgcolor", color); | |
792 g_free(color); | |
793 } | |
794 | |
795 if (buttons & GTK_IMHTML_BACKCOLOR) { | |
796 char *color = gtk_imhtml_get_current_backcolor(GTK_IMHTML(imhtml)); | |
797 if (!color) | |
798 color = g_strdup(""); | |
799 | |
800 gaim_prefs_set_string("/gaim/gtk/conversations/bgcolor", color); | |
801 g_free(color); | |
802 } | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
803 } |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
804 |
8988 | 805 GtkWidget *messages_page() { |
5440 | 806 GtkWidget *ret; |
9025 | 807 GtkWidget *vbox, *fontvbox; |
8833 | 808 GtkWidget *imhtml; |
809 GtkWidget *toolbar; | |
810 GtkWidget *sw; | |
8988 | 811 GtkWidget *frame; |
9025 | 812 GtkWidget *option; |
813 GtkWidget *button; | |
5440 | 814 |
815 ret = gtk_vbox_new(FALSE, 18); | |
816 gtk_container_set_border_width (GTK_CONTAINER (ret), 12); | |
817 | |
8988 | 818 vbox = gaim_gtk_make_frame (ret, _("Display")); |
819 gaim_gtk_prefs_checkbox(_("Show _timestamp on messages"), | |
820 "/gaim/gtk/conversations/show_timestamps", vbox); | |
821 #ifdef USE_GTKSPELL | |
822 gaim_gtk_prefs_checkbox(_("_Highlight misspelled words"), | |
823 "/gaim/gtk/conversations/spellcheck", vbox); | |
824 #endif | |
9049 | 825 #if 1 /* PREFSLASH04 */ |
826 vbox = gaim_gtk_make_frame (ret, _("Ignore")); | |
827 gaim_gtk_prefs_checkbox(_("Ignore c_olors"), | |
828 "/gaim/gtk/conversations/ignore_colors", vbox); | |
829 gaim_gtk_prefs_checkbox(_("Ignore font _faces"), | |
830 "/gaim/gtk/conversations/ignore_fonts", vbox); | |
831 gaim_gtk_prefs_checkbox(_("Ignore font si_zes"), | |
832 "/gaim/gtk/conversations/ignore_font_sizes", vbox); | |
833 #else | |
9025 | 834 gaim_gtk_prefs_checkbox(_("_Ignore formatting on incoming messages"), |
8988 | 835 "/gaim/gtk/conversations/ignore_formatting", vbox); |
9049 | 836 #endif |
8988 | 837 |
838 vbox = gaim_gtk_make_frame (ret, _("Default Formatting")); | |
839 | |
9025 | 840 option = gaim_gtk_prefs_checkbox(_("_Send default formatting with outgoing messages"), |
841 "/gaim/gtk/conversations/send_formatting", vbox); | |
842 | |
8988 | 843 frame = gtk_frame_new(NULL); |
844 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN); | |
845 gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 0); | |
846 | |
9025 | 847 fontvbox = gtk_vbox_new(FALSE, 0); |
848 gtk_container_add(GTK_CONTAINER(frame), fontvbox); | |
8988 | 849 |
8833 | 850 toolbar = gtk_imhtmltoolbar_new(); |
9025 | 851 gtk_box_pack_start(GTK_BOX(fontvbox), toolbar, FALSE, FALSE, 0); |
8833 | 852 |
853 sw = gtk_scrolled_window_new(NULL, NULL); | |
854 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), | |
855 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); | |
8988 | 856 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_NONE); |
9025 | 857 gtk_box_pack_start(GTK_BOX(fontvbox), sw, TRUE, TRUE, 0); |
8833 | 858 |
859 imhtml = gtk_imhtml_new(NULL, NULL); | |
9025 | 860 gtk_widget_set_name(imhtml, "gaim_gtkprefs_font_imhtml"); |
8833 | 861 gtk_imhtml_set_editable(GTK_IMHTML(imhtml), TRUE); |
862 gtk_imhtml_set_format_functions(GTK_IMHTML(imhtml), GTK_IMHTML_ALL ^ GTK_IMHTML_IMAGE); | |
8836 | 863 gtk_imhtml_set_whole_buffer_formatting_only(GTK_IMHTML(imhtml), TRUE); |
8833 | 864 |
865 gtk_imhtml_smiley_shortcuts(GTK_IMHTML(imhtml), | |
866 gaim_prefs_get_bool("/gaim/gtk/conversations/smiley_shortcuts")); | |
867 gtk_imhtml_html_shortcuts(GTK_IMHTML(imhtml), | |
868 gaim_prefs_get_bool("/gaim/gtk/conversations/html_shortcuts")); | |
869 gtk_imhtmltoolbar_attach(GTK_IMHTMLTOOLBAR(toolbar), imhtml); | |
870 gtk_imhtmltoolbar_associate_smileys(GTK_IMHTMLTOOLBAR(toolbar), "default"); | |
871 gaim_setup_imhtml(imhtml); | |
9025 | 872 gtk_imhtml_append_text(GTK_IMHTML(imhtml), _("This is how your outgoing message text will appear when you use protocols that support formatting. :)"), 0); |
8833 | 873 gtk_container_add(GTK_CONTAINER(sw), imhtml); |
8988 | 874 |
9056 | 875 button = gtk_button_new_with_mnemonic(_("_Clear Formatting")); |
9025 | 876 gtk_box_pack_start(GTK_BOX(fontvbox), button, FALSE, FALSE, 0); |
877 | |
878 if (!gaim_prefs_get_bool("/gaim/gtk/conversations/send_formatting")) | |
879 gtk_widget_set_sensitive(fontvbox, FALSE); | |
880 | |
8836 | 881 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_bold")) |
882 gtk_imhtml_toggle_bold(GTK_IMHTML(imhtml)); | |
883 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_italic")) | |
884 gtk_imhtml_toggle_italic(GTK_IMHTML(imhtml)); | |
885 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_underline")) | |
886 gtk_imhtml_toggle_underline(GTK_IMHTML(imhtml)); | |
887 | |
888 gtk_imhtml_font_set_size(GTK_IMHTML(imhtml), gaim_prefs_get_int("/gaim/gtk/conversations/font_size")); | |
889 gtk_imhtml_toggle_forecolor(GTK_IMHTML(imhtml), gaim_prefs_get_string("/gaim/gtk/conversations/fgcolor")); | |
890 gtk_imhtml_toggle_backcolor(GTK_IMHTML(imhtml), gaim_prefs_get_string("/gaim/gtk/conversations/bgcolor")); | |
891 gtk_imhtml_toggle_fontface(GTK_IMHTML(imhtml), gaim_prefs_get_string("/gaim/gtk/conversations/font_face")); | |
892 | |
9025 | 893 g_signal_connect(G_OBJECT(button), "clicked", |
894 G_CALLBACK(formatting_reset_cb), imhtml); | |
895 | |
896 g_signal_connect(G_OBJECT(option), "clicked", | |
897 G_CALLBACK(gaim_gtk_toggle_sensitive), fontvbox); | |
898 | |
899 g_signal_connect(G_OBJECT(imhtml), "format_function_toggle", | |
900 G_CALLBACK(formatting_toggle_cb), NULL); | |
901 | |
5440 | 902 gtk_widget_show_all(ret); |
903 return ret; | |
904 } | |
905 | |
906 GtkWidget *hotkeys_page() { | |
907 GtkWidget *ret; | |
908 GtkWidget *vbox; | |
909 ret = gtk_vbox_new(FALSE, 18); | |
910 gtk_container_set_border_width (GTK_CONTAINER (ret), 12); | |
911 | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
912 vbox = gaim_gtk_make_frame(ret, _("Send Message")); |
7987 | 913 gaim_gtk_prefs_checkbox(_("Enter _sends message"), |
914 "/gaim/gtk/conversations/enter_sends", vbox); | |
915 gaim_gtk_prefs_checkbox(_("C_ontrol-Enter sends message"), | |
916 "/gaim/gtk/conversations/ctrl_enter_sends", vbox); | |
5440 | 917 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
918 vbox = gaim_gtk_make_frame (ret, _("Window Closing")); |
7987 | 919 gaim_gtk_prefs_checkbox(_("_Escape closes window"), |
920 "/gaim/gtk/conversations/escape_closes", vbox); | |
5440 | 921 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
922 vbox = gaim_gtk_make_frame(ret, _("Insertions")); |
8927 | 923 gaim_gtk_prefs_checkbox(_("Control-{B/I/U} changes _formatting"), |
7987 | 924 "/gaim/gtk/conversations/html_shortcuts", vbox); |
925 gaim_gtk_prefs_checkbox(_("Control-(number) _inserts smileys"), | |
926 "/gaim/gtk/conversations/smiley_shortcuts", vbox); | |
5440 | 927 |
928 gtk_widget_show_all(ret); | |
929 return ret; | |
930 } | |
931 | |
932 GtkWidget *list_page() { | |
933 GtkWidget *ret; | |
934 GtkWidget *vbox; | |
935 GList *l= NULL; | |
5567
cc9ddec20010
[gaim-migrate @ 5969]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
936 GSList *sl; |
5440 | 937 ret = gtk_vbox_new(FALSE, 18); |
938 gtk_container_set_border_width (GTK_CONTAINER (ret), 12); | |
7305 | 939 |
940 | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
941 vbox = gaim_gtk_make_frame (ret, _("Buddy List Sorting")); |
5567
cc9ddec20010
[gaim-migrate @ 5969]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
942 |
cc9ddec20010
[gaim-migrate @ 5969]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
943 for (sl = gaim_gtk_blist_sort_methods; sl != NULL; sl = sl->next) { |
5631 | 944 struct gaim_gtk_blist_sort_method *method = sl->data; |
945 | |
946 l = g_list_append(l, method->name); | |
947 l = g_list_append(l, method->id); | |
5440 | 948 } |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
949 |
8063 | 950 gaim_gtk_prefs_dropdown_from_list(vbox, _("_Sorting:"), GAIM_PREF_STRING, |
7987 | 951 "/gaim/gtk/blist/sort_type", l); |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
952 |
5440 | 953 g_list_free(l); |
954 | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
955 vbox = gaim_gtk_make_frame (ret, _("Buddy List Window")); |
8949 | 956 gaim_gtk_prefs_dropdown(vbox, _("Show _buttons as:"), GAIM_PREF_INT, |
957 "/gaim/gtk/blist/button_style", | |
958 _("Pictures"), GAIM_BUTTON_IMAGE, | |
959 _("Text"), GAIM_BUTTON_TEXT, | |
960 _("Pictures and text"), GAIM_BUTTON_TEXT_IMAGE, | |
961 _("None"), GAIM_BUTTON_NONE, | |
962 NULL); | |
7987 | 963 gaim_gtk_prefs_checkbox(_("_Raise window on events"), |
964 "/gaim/gtk/blist/raise_on_events", vbox); | |
5440 | 965 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
966 vbox = gaim_gtk_make_frame (ret, _("Buddy Display")); |
7987 | 967 gaim_gtk_prefs_checkbox(_("Show buddy _icons"), |
7305 | 968 "/gaim/gtk/blist/show_buddy_icons", vbox); |
7987 | 969 gaim_gtk_prefs_checkbox(_("Show _warning levels"), |
7305 | 970 "/gaim/gtk/blist/show_warning_level", vbox); |
7987 | 971 gaim_gtk_prefs_checkbox(_("Show idle _times"), |
7305 | 972 "/gaim/gtk/blist/show_idle_time", vbox); |
7987 | 973 gaim_gtk_prefs_checkbox(_("Dim i_dle buddies"), |
7305 | 974 "/gaim/gtk/blist/grey_idle_buddies", vbox); |
7987 | 975 gaim_gtk_prefs_checkbox(_("_Automatically expand contacts"), |
7731 | 976 "/gaim/gtk/blist/auto_expand_contacts", vbox); |
5440 | 977 |
978 gtk_widget_show_all(ret); | |
5547
90a67ea697f7
[gaim-migrate @ 5948]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
979 |
5440 | 980 return ret; |
981 } | |
982 | |
8979 | 983 static void |
9155 | 984 conversation_usetabs_cb(const char *name, GaimPrefType type, gpointer value, |
8979 | 985 gpointer data) |
986 { | |
9155 | 987 gboolean usetabs = (gboolean)value; |
988 | |
989 if (usetabs) | |
990 gtk_widget_set_sensitive(GTK_WIDGET(data), TRUE); | |
991 else | |
8979 | 992 gtk_widget_set_sensitive(GTK_WIDGET(data), FALSE); |
993 } | |
994 | |
5440 | 995 GtkWidget *conv_page() { |
996 GtkWidget *ret; | |
9155 | 997 GtkWidget *vbox, *vbox2; |
5440 | 998 GtkWidget *label; |
999 GtkSizeGroup *sg; | |
1000 GList *names = NULL; | |
1001 | |
1002 ret = gtk_vbox_new(FALSE, 18); | |
1003 gtk_container_set_border_width(GTK_CONTAINER(ret), 12); | |
1004 | |
1005 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1006 vbox = gaim_gtk_make_frame(ret, _("Conversations")); |
5440 | 1007 |
9150 | 1008 #if 1 /* PREFSLASH04 */ |
1009 label = gaim_gtk_prefs_dropdown(vbox, _("Show _buttons as:"), GAIM_PREF_INT, | |
1010 "/gaim/gtk/conversations/button_type", | |
1011 _("Pictures"), GAIM_BUTTON_IMAGE, | |
1012 _("Text"), GAIM_BUTTON_TEXT, | |
1013 _("Pictures and text"), GAIM_BUTTON_TEXT_IMAGE, | |
1014 _("None"), GAIM_BUTTON_NONE, | |
1015 NULL); | |
1016 gtk_size_group_add_widget(sg, label); | |
1017 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
1018 #endif /* PREFSLASH04 */ | |
1019 | |
9301 | 1020 gaim_gtk_prefs_checkbox(_("Enable \"_slash\" commands"), |
1021 "/gaim/gtk/conversations/enable_commands", vbox); | |
1022 | |
8600 | 1023 gaim_gtk_prefs_checkbox(_("Show _formatting toolbar"), |
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7305
diff
changeset
|
1024 "/gaim/gtk/conversations/show_formatting_toolbar", vbox); |
9155 | 1025 gaim_gtk_prefs_checkbox(_("Show _aliases in tabs/titles"), |
8015 | 1026 "/core/conversations/use_alias_for_title", vbox); |
9150 | 1027 gaim_gtk_prefs_checkbox(_("Show buddy _icons"), |
1028 "/gaim/gtk/conversations/im/show_buddy_icons", vbox); | |
9155 | 1029 gaim_gtk_prefs_checkbox(_("Enable buddy ic_on animation"), |
9150 | 1030 "/gaim/gtk/conversations/im/animate_buddy_icons", vbox); |
9155 | 1031 gaim_gtk_prefs_checkbox(_("_Notify buddies that you are typing to them"), |
9150 | 1032 "/core/conversations/im/send_typing", vbox); |
9301 | 1033 gaim_gtk_prefs_checkbox(_("_Raise IM window on events"), |
1034 "/gaim/gtk/conversations/im/raise_on_events", vbox); | |
1035 | |
9303 | 1036 gaim_gtk_prefs_checkbox(_("Raise chat _window on events"), |
9301 | 1037 "/gaim/gtk/conversations/chat/raise_on_events", vbox); |
9155 | 1038 gaim_gtk_prefs_checkbox(_("Use _multi-colored screen names in chats"), |
1039 "/gaim/gtk/conversations/chat/color_nicks", vbox); | |
1040 | |
1041 /* All the tab options! */ | |
1042 vbox = gaim_gtk_make_frame(ret, _("Tab Options")); | |
1043 | |
1044 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
|
1045 "/gaim/gtk/conversations/tabs", vbox); |
9155 | 1046 |
1047 /* | |
1048 * Connect a signal to the above preference. When conversations are not | |
1049 * shown in a tabbed window then all tabbing options should be disabled. | |
1050 */ | |
1051 vbox2 = gtk_vbox_new(FALSE, 0); | |
1052 gtk_box_pack_start(GTK_BOX(vbox), vbox2, FALSE, FALSE, 0); | |
1053 placement_pref_id = gaim_prefs_connect_callback("/gaim/gtk/conversations/tabs", | |
1054 conversation_usetabs_cb, | |
1055 vbox2); | |
1056 if (!gaim_prefs_get_bool("/gaim/gtk/conversations/tabs")) | |
1057 gtk_widget_set_sensitive(vbox2, FALSE); | |
1058 | |
1059 gaim_gtk_prefs_checkbox(_("Show _close button on tabs"), | |
1060 "/gaim/gtk/conversations/close_on_tabs", vbox2); | |
1061 | |
1062 label = gaim_gtk_prefs_dropdown(vbox2, _("Tab p_lacement:"), GAIM_PREF_INT, | |
8988 | 1063 "/gaim/gtk/conversations/tab_side", |
1064 _("Top"), GTK_POS_TOP, | |
1065 _("Bottom"), GTK_POS_BOTTOM, | |
1066 _("Left"), GTK_POS_LEFT, | |
1067 _("Right"), GTK_POS_RIGHT, | |
1068 NULL); | |
1069 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
1070 gtk_size_group_add_widget(sg, label); | |
1071 | |
9155 | 1072 names = gaim_conv_placement_get_options(); |
9251 | 1073 label = gaim_gtk_prefs_dropdown_from_list(vbox2, _("New conversation _placement:"), |
9155 | 1074 GAIM_PREF_STRING, "/gaim/gtk/conversations/placement", names); |
1075 gtk_size_group_add_widget(sg, label); | |
1076 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
1077 g_list_free(names); | |
1078 | |
5440 | 1079 gtk_widget_show_all(ret); |
1080 | |
1081 return ret; | |
1082 } | |
1083 | |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1084 static void network_ip_changed(GtkEntry *entry, gpointer data) |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1085 { |
8834 | 1086 gaim_network_set_public_ip(gtk_entry_get_text(entry)); |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1087 } |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1088 |
9150 | 1089 static void |
1090 proxy_changed_cb(const char *name, GaimPrefType type, gpointer value, | |
1091 gpointer data) | |
1092 { | |
1093 GtkWidget *frame = data; | |
1094 const char *proxy = value; | |
1095 | |
1096 if (strcmp(proxy, "none") && strcmp(proxy, "envvar")) | |
1097 gtk_widget_set_sensitive(frame, TRUE); | |
1098 else | |
1099 gtk_widget_set_sensitive(frame, FALSE); | |
1100 } | |
1101 | |
1102 static void proxy_print_option(GtkEntry *entry, int entrynum) | |
1103 { | |
1104 if (entrynum == PROXYHOST) | |
1105 gaim_prefs_set_string("/core/proxy/host", gtk_entry_get_text(entry)); | |
1106 else if (entrynum == PROXYPORT) | |
1107 gaim_prefs_set_int("/core/proxy/port", atoi(gtk_entry_get_text(entry))); | |
1108 else if (entrynum == PROXYUSER) | |
1109 gaim_prefs_set_string("/core/proxy/username", gtk_entry_get_text(entry)); | |
1110 else if (entrynum == PROXYPASS) | |
1111 gaim_prefs_set_string("/core/proxy/password", gtk_entry_get_text(entry)); | |
1112 } | |
1113 | |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1114 GtkWidget *network_page() { |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1115 GtkWidget *ret; |
9150 | 1116 GtkWidget *vbox, *hbox, *entry; |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1117 GtkWidget *table, *label, *auto_ip_checkbox, *ports_checkbox, *spin_button; |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1118 GtkSizeGroup *sg; |
9150 | 1119 GaimProxyInfo *proxy_info; |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1120 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1121 ret = gtk_vbox_new(FALSE, 18); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1122 gtk_container_set_border_width (GTK_CONTAINER (ret), 12); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1123 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1124 vbox = gaim_gtk_make_frame (ret, _("IP Address")); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1125 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1126 auto_ip_checkbox = gaim_gtk_prefs_checkbox(_("_Autodetect IP Address"), |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1127 "/core/network/auto_ip", vbox); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1128 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1129 table = gtk_table_new(2, 1, FALSE); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1130 gtk_container_set_border_width(GTK_CONTAINER(table), 5); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1131 gtk_table_set_col_spacings(GTK_TABLE(table), 5); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1132 gtk_table_set_row_spacings(GTK_TABLE(table), 10); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1133 gtk_container_add(GTK_CONTAINER(vbox), table); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1134 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1135 label = gtk_label_new_with_mnemonic(_("Public _IP:")); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1136 gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1137 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
|
1138 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1139 entry = gtk_entry_new(); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1140 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1141 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
|
1142 g_signal_connect(G_OBJECT(entry), "changed", |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1143 G_CALLBACK(network_ip_changed), NULL); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1144 |
8834 | 1145 if (gaim_network_get_public_ip() != NULL) |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1146 gtk_entry_set_text(GTK_ENTRY(entry), |
8834 | 1147 gaim_network_get_public_ip()); |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1148 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1149 gaim_set_accessible_label (entry, label); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1150 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1151 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1152 if (gaim_prefs_get_bool("/core/network/auto_ip")) { |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1153 gtk_widget_set_sensitive(GTK_WIDGET(table), FALSE); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1154 } |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1155 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1156 g_signal_connect(G_OBJECT(auto_ip_checkbox), "clicked", |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1157 G_CALLBACK(gaim_gtk_toggle_sensitive), table); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1158 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1159 vbox = gaim_gtk_make_frame (ret, _("Ports")); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1160 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1161 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1162 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
|
1163 "/core/network/ports_range_use", vbox); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1164 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1165 spin_button = gaim_gtk_prefs_labeled_spin_button(vbox, _("_Start Port:"), |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1166 "/core/network/ports_range_start", 0, 65535, sg); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1167 if (!gaim_prefs_get_bool("/core/network/ports_range_use")) |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1168 gtk_widget_set_sensitive(GTK_WIDGET(spin_button), FALSE); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1169 g_signal_connect(G_OBJECT(ports_checkbox), "clicked", |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1170 G_CALLBACK(gaim_gtk_toggle_sensitive), spin_button); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1171 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1172 spin_button = gaim_gtk_prefs_labeled_spin_button(vbox, _("_End Port:"), |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1173 "/core/network/ports_range_end", 0, 65535, sg); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1174 if (!gaim_prefs_get_bool("/core/network/ports_range_use")) |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1175 gtk_widget_set_sensitive(GTK_WIDGET(spin_button), FALSE); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1176 g_signal_connect(G_OBJECT(ports_checkbox), "clicked", |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1177 G_CALLBACK(gaim_gtk_toggle_sensitive), spin_button); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1178 |
9150 | 1179 vbox = gaim_gtk_make_frame(ret, _("Proxy Server")); |
1180 prefs_proxy_frame = gtk_vbox_new(FALSE, 0); | |
7987 | 1181 gaim_gtk_prefs_dropdown(vbox, _("Proxy _type:"), GAIM_PREF_STRING, |
9150 | 1182 "/core/proxy/type", |
1183 _("No proxy"), "none", | |
1184 "SOCKS 4", "socks4", | |
1185 "SOCKS 5", "socks5", | |
1186 "HTTP", "http", | |
1187 _("Use Environmental Settings"), "envvar", | |
1188 NULL); | |
1189 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
|
1190 proxy_info = gaim_global_proxy_get_info(); |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1191 |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1192 if (proxy_info == NULL || |
6621 | 1193 gaim_proxy_info_get_type(proxy_info) == GAIM_PROXY_NONE || |
1194 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
|
1195 |
6001 | 1196 gtk_widget_set_sensitive(GTK_WIDGET(prefs_proxy_frame), FALSE); |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1197 } |
6001 | 1198 proxy_pref_id = gaim_prefs_connect_callback("/core/proxy/type", |
9150 | 1199 proxy_changed_cb, prefs_proxy_frame); |
1200 | |
1201 table = gtk_table_new(4, 2, FALSE); | |
5440 | 1202 gtk_container_set_border_width(GTK_CONTAINER(table), 5); |
1203 gtk_table_set_col_spacings(GTK_TABLE(table), 5); | |
1204 gtk_table_set_row_spacings(GTK_TABLE(table), 10); | |
9150 | 1205 gtk_container_add(GTK_CONTAINER(prefs_proxy_frame), table); |
5440 | 1206 |
1207 | |
7797 | 1208 label = gtk_label_new_with_mnemonic(_("_Host:")); |
5440 | 1209 gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); |
1210 gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1, GTK_FILL, 0, 0, 0); | |
1211 | |
1212 entry = gtk_entry_new(); | |
1213 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
1214 gtk_table_attach(GTK_TABLE(table), entry, 1, 2, 0, 1, GTK_FILL, 0, 0, 0); | |
1215 g_signal_connect(G_OBJECT(entry), "changed", | |
1216 G_CALLBACK(proxy_print_option), (void *)PROXYHOST); | |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1217 |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1218 if (proxy_info != NULL && gaim_proxy_info_get_host(proxy_info)) |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1219 gtk_entry_set_text(GTK_ENTRY(entry), |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1220 gaim_proxy_info_get_host(proxy_info)); |
5440 | 1221 |
1222 hbox = gtk_hbox_new(TRUE, 5); | |
1223 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
8137 | 1224 gaim_set_accessible_label (entry, label); |
5440 | 1225 |
7870 | 1226 label = gtk_label_new_with_mnemonic(_("_Port:")); |
5440 | 1227 gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); |
9150 | 1228 gtk_table_attach(GTK_TABLE(table), label, 2, 3, 0, 1, GTK_FILL, 0, 0, 0); |
5440 | 1229 |
1230 entry = gtk_entry_new(); | |
1231 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
9150 | 1232 gtk_table_attach(GTK_TABLE(table), entry, 3, 4, 0, 1, GTK_FILL, 0, 0, 0); |
5440 | 1233 g_signal_connect(G_OBJECT(entry), "changed", |
1234 G_CALLBACK(proxy_print_option), (void *)PROXYPORT); | |
1235 | |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1236 if (proxy_info != NULL && gaim_proxy_info_get_port(proxy_info) != 0) { |
5440 | 1237 char buf[128]; |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1238 g_snprintf(buf, sizeof(buf), "%d", |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1239 gaim_proxy_info_get_port(proxy_info)); |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1240 |
5440 | 1241 gtk_entry_set_text(GTK_ENTRY(entry), buf); |
1242 } | |
8137 | 1243 gaim_set_accessible_label (entry, label); |
5440 | 1244 |
7797 | 1245 label = gtk_label_new_with_mnemonic(_("_User:")); |
5440 | 1246 gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); |
9150 | 1247 gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2, GTK_FILL, 0, 0, 0); |
5440 | 1248 |
1249 entry = gtk_entry_new(); | |
1250 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
9150 | 1251 gtk_table_attach(GTK_TABLE(table), entry, 1, 2, 1, 2, GTK_FILL, 0, 0, 0); |
5440 | 1252 g_signal_connect(G_OBJECT(entry), "changed", |
1253 G_CALLBACK(proxy_print_option), (void *)PROXYUSER); | |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1254 |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1255 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
|
1256 gtk_entry_set_text(GTK_ENTRY(entry), |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1257 gaim_proxy_info_get_username(proxy_info)); |
5440 | 1258 |
1259 hbox = gtk_hbox_new(TRUE, 5); | |
1260 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
8137 | 1261 gaim_set_accessible_label (entry, label); |
5440 | 1262 |
7797 | 1263 label = gtk_label_new_with_mnemonic(_("Pa_ssword:")); |
5440 | 1264 gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); |
9150 | 1265 gtk_table_attach(GTK_TABLE(table), label, 2, 3, 1, 2, GTK_FILL, 0, 0, 0); |
5440 | 1266 |
1267 entry = gtk_entry_new(); | |
1268 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
9150 | 1269 gtk_table_attach(GTK_TABLE(table), entry, 3, 4, 1, 2, GTK_FILL , 0, 0, 0); |
5440 | 1270 gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE); |
1271 g_signal_connect(G_OBJECT(entry), "changed", | |
1272 G_CALLBACK(proxy_print_option), (void *)PROXYPASS); | |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1273 |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1274 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
|
1275 gtk_entry_set_text(GTK_ENTRY(entry), |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1276 gaim_proxy_info_get_password(proxy_info)); |
8137 | 1277 gaim_set_accessible_label (entry, label); |
5440 | 1278 |
1279 gtk_widget_show_all(ret); | |
1280 return ret; | |
1281 } | |
1282 | |
1283 #ifndef _WIN32 | |
1284 static gboolean manual_browser_set(GtkWidget *entry, GdkEventFocus *event, gpointer data) { | |
1285 const char *program = gtk_entry_get_text(GTK_ENTRY(entry)); | |
1286 | |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1287 gaim_prefs_set_string("/gaim/gtk/browsers/command", program); |
5440 | 1288 |
1289 /* carry on normally */ | |
1290 return FALSE; | |
1291 } | |
1292 | |
5633 | 1293 static GList *get_available_browsers() |
5440 | 1294 { |
1295 struct browser { | |
1296 char *name; | |
1297 char *command; | |
1298 }; | |
1299 | |
1300 static struct browser possible_browsers[] = { | |
9405 | 1301 {N_("Epiphany"), "epiphany"}, |
8267 | 1302 {N_("Firebird"), "mozilla-firebird"}, |
8356 | 1303 {N_("Firefox"), "firefox"}, |
9405 | 1304 {N_("Galeon"), "galeon"}, |
1305 {N_("Gnome Default"), "gnome-open"}, | |
1306 {N_("Konqueror"), "kfmclient"}, | |
1307 {N_("Mozilla"), "mozilla"}, | |
1308 {N_("Netscape"), "netscape"}, | |
1309 {N_("Opera"), "opera"} | |
5440 | 1310 }; |
9405 | 1311 static const int num_possible_browsers = 9; |
5440 | 1312 |
1313 GList *browsers = NULL; | |
1314 int i = 0; | |
5819 | 1315 char *browser_setting = (char *)gaim_prefs_get_string("/gaim/gtk/browsers/browser"); |
5440 | 1316 |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1317 browsers = g_list_prepend(browsers, "custom"); |
5440 | 1318 browsers = g_list_prepend(browsers, _("Manual")); |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1319 |
5440 | 1320 for (i = 0; i < num_possible_browsers; i++) { |
7108
6faeeecab0dc
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7095
diff
changeset
|
1321 if (gaim_program_is_valid(possible_browsers[i].command)) { |
5633 | 1322 browsers = g_list_prepend(browsers, |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
1323 possible_browsers[i].command); |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1324 browsers = g_list_prepend(browsers, _(possible_browsers[i].name)); |
5825 | 1325 if(browser_setting && !strcmp(possible_browsers[i].command, browser_setting)) |
5819 | 1326 browser_setting = NULL; |
5440 | 1327 } |
1328 } | |
1329 | |
5819 | 1330 if(browser_setting) |
1331 gaim_prefs_set_string("/gaim/gtk/browsers/browser", "custom"); | |
1332 | |
5440 | 1333 return browsers; |
1334 } | |
1335 | |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1336 static void |
8274 | 1337 browser_changed1_cb(const char *name, GaimPrefType type, gpointer value, |
1338 gpointer data) | |
1339 { | |
1340 GtkWidget *hbox = data; | |
1341 const char *browser = value; | |
1342 | |
1343 gtk_widget_set_sensitive(hbox, strcmp(browser, "custom")); | |
1344 } | |
1345 | |
1346 static void | |
1347 browser_changed2_cb(const char *name, GaimPrefType type, gpointer value, | |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1348 gpointer data) |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1349 { |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1350 GtkWidget *hbox = data; |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1351 const char *browser = value; |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1352 |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1353 gtk_widget_set_sensitive(hbox, !strcmp(browser, "custom")); |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1354 } |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1355 |
5440 | 1356 GtkWidget *browser_page() { |
1357 GtkWidget *ret; | |
1358 GtkWidget *vbox; | |
1359 GtkWidget *hbox; | |
1360 GtkWidget *label; | |
6007 | 1361 GtkWidget *entry; |
5440 | 1362 GtkSizeGroup *sg; |
1363 GList *browsers = NULL; | |
1364 | |
1365 ret = gtk_vbox_new(FALSE, 18); | |
1366 gtk_container_set_border_width (GTK_CONTAINER (ret), 12); | |
1367 | |
1368 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1369 vbox = gaim_gtk_make_frame (ret, _("Browser Selection")); |
5440 | 1370 |
1371 browsers = get_available_browsers(); | |
1372 if (browsers != NULL) { | |
7987 | 1373 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
|
1374 "/gaim/gtk/browsers/browser", |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1375 browsers); |
5440 | 1376 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); |
1377 gtk_size_group_add_widget(sg, label); | |
8274 | 1378 |
1379 hbox = gtk_hbox_new(FALSE, 0); | |
1380 label = gaim_gtk_prefs_dropdown(hbox, _("_Open link in:"), GAIM_PREF_INT, | |
1381 "/gaim/gtk/browsers/place", | |
1382 _("Browser default"), GAIM_BROWSER_DEFAULT, | |
1383 _("Existing window"), GAIM_BROWSER_CURRENT, | |
1384 _("New window"), GAIM_BROWSER_NEW_WINDOW, | |
1385 _("New tab"), GAIM_BROWSER_NEW_TAB, | |
1386 NULL); | |
1387 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
1388 gtk_size_group_add_widget(sg, label); | |
1389 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
1390 | |
1391 if (!strcmp(gaim_prefs_get_string("/gaim/gtk/browsers/browser"), "custom")) | |
1392 gtk_widget_set_sensitive(hbox, FALSE); | |
1393 browser_pref1_id = gaim_prefs_connect_callback("/gaim/gtk/browsers/browser", | |
1394 browser_changed1_cb, hbox); | |
5440 | 1395 } |
1396 | |
1397 hbox = gtk_hbox_new(FALSE, 5); | |
1398 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
6031 | 1399 label = gtk_label_new_with_mnemonic(_("_Manual:\n(%s for URL)")); |
5440 | 1400 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); |
1401 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
1402 gtk_size_group_add_widget(sg, label); | |
1403 | |
6007 | 1404 entry = gtk_entry_new(); |
1405 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1406 |
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1407 if (strcmp(gaim_prefs_get_string("/gaim/gtk/browsers/browser"), "custom")) |
5440 | 1408 gtk_widget_set_sensitive(hbox, FALSE); |
8274 | 1409 browser_pref2_id = gaim_prefs_connect_callback("/gaim/gtk/browsers/browser", |
1410 browser_changed2_cb, hbox); | |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1411 |
6007 | 1412 gtk_box_pack_start (GTK_BOX (hbox), entry, FALSE, FALSE, 0); |
1413 | |
1414 gtk_entry_set_text(GTK_ENTRY(entry), | |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1415 gaim_prefs_get_string("/gaim/gtk/browsers/command")); |
6007 | 1416 g_signal_connect(G_OBJECT(entry), "focus-out-event", |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1417 G_CALLBACK(manual_browser_set), NULL); |
8188
cd9ea20cd8ed
[gaim-migrate @ 8909]
Christian Hammond <chipx86@chipx86.com>
parents:
8170
diff
changeset
|
1418 gaim_set_accessible_label (entry, label); |
5440 | 1419 |
1420 gtk_widget_show_all(ret); | |
1421 return ret; | |
1422 } | |
1423 #endif /*_WIN32*/ | |
1424 | |
1425 GtkWidget *logging_page() { | |
1426 GtkWidget *ret; | |
1427 GtkWidget *vbox; | |
7431 | 1428 GList *names; |
8573 | 1429 GtkWidget *sys_box; |
1430 GtkWidget *box; | |
1431 int syslog_enabled = gaim_prefs_get_bool("/core/logging/log_system"); | |
1432 | |
5440 | 1433 ret = gtk_vbox_new(FALSE, 18); |
1434 gtk_container_set_border_width (GTK_CONTAINER (ret), 12); | |
1435 | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1436 vbox = gaim_gtk_make_frame (ret, _("Message Logs")); |
7431 | 1437 names = gaim_log_logger_get_options(); |
1438 | |
7987 | 1439 gaim_gtk_prefs_dropdown_from_list(vbox, _("Log _Format:"), GAIM_PREF_STRING, |
1440 "/core/logging/format", names); | |
1441 | |
1442 gaim_gtk_prefs_checkbox(_("_Log all instant messages"), | |
7562
b859cfb5f31a
[gaim-migrate @ 8176]
Christian Hammond <chipx86@chipx86.com>
parents:
7561
diff
changeset
|
1443 "/core/logging/log_ims", vbox); |
7987 | 1444 gaim_gtk_prefs_checkbox(_("Log all c_hats"), |
7562
b859cfb5f31a
[gaim-migrate @ 8176]
Christian Hammond <chipx86@chipx86.com>
parents:
7561
diff
changeset
|
1445 "/core/logging/log_chats", vbox); |
8573 | 1446 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1447 vbox = gaim_gtk_make_frame (ret, _("System Logs")); |
8573 | 1448 |
1449 sys_box = gaim_gtk_prefs_checkbox(_("_Enable system log"), | |
1450 "/core/logging/log_system", vbox); | |
1451 | |
1452 box = gaim_gtk_prefs_checkbox(_("Log when buddies _sign on/sign off"), | |
1453 "/core/logging/log_signon_signoff", vbox); | |
1454 g_signal_connect(G_OBJECT(sys_box), "clicked", | |
1455 G_CALLBACK(gaim_gtk_toggle_sensitive), box); | |
1456 gtk_widget_set_sensitive(box, syslog_enabled); | |
1457 | |
1458 box = gaim_gtk_prefs_checkbox(_("Log when buddies become _idle/un-idle"), | |
1459 "/core/logging/log_idle_state", vbox); | |
1460 g_signal_connect(G_OBJECT(sys_box), "clicked", | |
1461 G_CALLBACK(gaim_gtk_toggle_sensitive), box); | |
1462 gtk_widget_set_sensitive(box, syslog_enabled); | |
1463 | |
1464 box = gaim_gtk_prefs_checkbox(_("Log when buddies go away/come _back"), | |
1465 "/core/logging/log_away_state", vbox); | |
1466 g_signal_connect(G_OBJECT(sys_box), "clicked", | |
1467 G_CALLBACK(gaim_gtk_toggle_sensitive), box); | |
1468 gtk_widget_set_sensitive(box, syslog_enabled); | |
1469 | |
1470 box = gaim_gtk_prefs_checkbox(_("Log your _own signons/idleness/awayness"), | |
1471 "/core/logging/log_own_states", vbox); | |
1472 g_signal_connect(G_OBJECT(sys_box), "clicked", | |
1473 G_CALLBACK(gaim_gtk_toggle_sensitive), box); | |
1474 gtk_widget_set_sensitive(box, syslog_enabled); | |
1475 | |
5440 | 1476 gtk_widget_show_all(ret); |
1477 return ret; | |
1478 } | |
1479 | |
1480 #ifndef _WIN32 | |
1481 static gint sound_cmd_yeah(GtkEntry *entry, gpointer d) | |
1482 { | |
5684 | 1483 gaim_prefs_set_string("/gaim/gtk/sound/command", |
6007 | 1484 gtk_entry_get_text(GTK_ENTRY(entry))); |
5440 | 1485 return TRUE; |
1486 } | |
6005 | 1487 |
1488 static void | |
1489 sound_changed_cb(const char *name, GaimPrefType type, gpointer value, | |
1490 gpointer data) | |
1491 { | |
1492 GtkWidget *hbox = data; | |
1493 const char *method = value; | |
1494 | |
1495 gtk_widget_set_sensitive(hbox, !strcmp(method, "custom")); | |
1496 } | |
5440 | 1497 #endif |
1498 | |
9150 | 1499 |
1500 static void | |
1501 event_toggled(GtkCellRendererToggle *cell, gchar *pth, gpointer data) | |
1502 { | |
1503 GtkTreeModel *model = (GtkTreeModel *)data; | |
1504 GtkTreeIter iter; | |
1505 GtkTreePath *path = gtk_tree_path_new_from_string(pth); | |
1506 const char *pref; | |
1507 | |
1508 gtk_tree_model_get_iter (model, &iter, path); | |
1509 gtk_tree_model_get (model, &iter, | |
1510 2, &pref, | |
1511 -1); | |
1512 | |
1513 gaim_prefs_set_bool(pref, !gtk_cell_renderer_toggle_get_active(cell)); | |
1514 | |
1515 gtk_list_store_set(GTK_LIST_STORE (model), &iter, | |
1516 0, !gtk_cell_renderer_toggle_get_active(cell), | |
1517 -1); | |
1518 | |
1519 gtk_tree_path_free(path); | |
1520 } | |
1521 | |
1522 static void | |
1523 test_sound(GtkWidget *button, gpointer i_am_NULL) | |
1524 { | |
1525 char *pref; | |
1526 gboolean temp_value1, temp_value2; | |
1527 | |
1528 pref = g_strdup_printf("/gaim/gtk/sound/enabled/%s", | |
1529 gaim_gtk_sound_get_event_option(sound_row_sel)); | |
1530 | |
1531 temp_value1 = gaim_prefs_get_bool("/core/sound/while_away"); | |
1532 temp_value2 = gaim_prefs_get_bool(pref); | |
1533 | |
1534 if (!temp_value1) gaim_prefs_set_bool("/core/sound/while_away", TRUE); | |
1535 if (!temp_value2) gaim_prefs_set_bool(pref, TRUE); | |
1536 | |
1537 gaim_sound_play_event(sound_row_sel); | |
1538 | |
1539 if (!temp_value1) gaim_prefs_set_bool("/core/sound/while_away", FALSE); | |
1540 if (!temp_value2) gaim_prefs_set_bool(pref, FALSE); | |
1541 | |
1542 g_free(pref); | |
1543 } | |
1544 | |
9508 | 1545 /* |
1546 * Resets a sound file back to default. | |
1547 */ | |
9150 | 1548 static void |
1549 reset_sound(GtkWidget *button, gpointer i_am_also_NULL) | |
1550 { | |
9508 | 1551 gchar *pref; |
1552 | |
1553 pref = g_strdup_printf("/gaim/gtk/sound/file/%s", | |
1554 gaim_gtk_sound_get_event_option(sound_row_sel)); | |
9150 | 1555 gaim_prefs_set_string(pref, ""); |
1556 g_free(pref); | |
1557 | |
1558 gtk_entry_set_text(GTK_ENTRY(sound_entry), "(default)"); | |
1559 } | |
1560 | |
9508 | 1561 static void |
1562 sound_chosen_cb(void *user_data, const char *filename) | |
9150 | 1563 { |
9508 | 1564 gchar *pref; |
1565 int sound; | |
1566 | |
1567 sound = GPOINTER_TO_INT(user_data); | |
9150 | 1568 |
1569 /* Set it -- and forget it */ | |
1570 pref = g_strdup_printf("/gaim/gtk/sound/file/%s", | |
9508 | 1571 gaim_gtk_sound_get_event_option(sound)); |
1572 gaim_prefs_set_string(pref, filename); | |
9150 | 1573 g_free(pref); |
1574 | |
9508 | 1575 /* |
1576 * If the sound we just changed is still the currently selected | |
1577 * sound, then update the box showing the file name. | |
1578 */ | |
1579 if (sound == sound_row_sel) | |
1580 gtk_entry_set_text(GTK_ENTRY(sound_entry), filename); | |
9150 | 1581 } |
1582 | |
9508 | 1583 static void select_sound(GtkWidget *button, gpointer being_NULL_is_fun) |
9150 | 1584 { |
9508 | 1585 gchar *pref; |
1586 const char *filename; | |
1587 | |
1588 pref = g_strdup_printf("/gaim/gtk/sound/file/%s", | |
1589 gaim_gtk_sound_get_event_option(sound_row_sel)); | |
1590 filename = gaim_prefs_get_string(pref); | |
1591 g_free(pref); | |
1592 | |
1593 if (*filename == '\0') | |
1594 filename = NULL; | |
1595 | |
1596 gaim_request_file(prefs, _("Sound Selection"), filename, FALSE, | |
1597 G_CALLBACK(sound_chosen_cb), NULL, GINT_TO_POINTER(sound_row_sel)); | |
9150 | 1598 } |
1599 | |
9508 | 1600 static void prefs_sound_sel(GtkTreeSelection *sel, GtkTreeModel *model) { |
9150 | 1601 GtkTreeIter iter; |
1602 GValue val = { 0, }; | |
1603 const char *file; | |
1604 char *pref; | |
1605 | |
1606 if (! gtk_tree_selection_get_selected (sel, &model, &iter)) | |
1607 return; | |
1608 gtk_tree_model_get_value (model, &iter, 3, &val); | |
1609 sound_row_sel = g_value_get_uint(&val); | |
1610 | |
1611 pref = g_strdup_printf("/gaim/gtk/sound/file/%s", | |
1612 gaim_gtk_sound_get_event_option(sound_row_sel)); | |
1613 file = gaim_prefs_get_string(pref); | |
1614 g_free(pref); | |
1615 if (sound_entry) | |
1616 gtk_entry_set_text(GTK_ENTRY(sound_entry), (file && *file != '\0') ? file : "(default)"); | |
1617 g_value_unset (&val); | |
1618 } | |
1619 | |
5440 | 1620 GtkWidget *sound_page() { |
1621 GtkWidget *ret; | |
9150 | 1622 GtkWidget *vbox, *sw, *button; |
5440 | 1623 GtkSizeGroup *sg; |
9150 | 1624 GtkTreeIter iter; |
1625 GtkWidget *event_view; | |
1626 GtkListStore *event_store; | |
1627 GtkCellRenderer *rend; | |
1628 GtkTreeViewColumn *col; | |
1629 GtkTreeSelection *sel; | |
1630 GtkTreePath *path; | |
1631 GtkWidget *hbox; | |
1632 int j; | |
1633 const char *file; | |
1634 char *pref; | |
5440 | 1635 #ifndef _WIN32 |
1636 GtkWidget *dd; | |
1637 GtkWidget *label; | |
6007 | 1638 GtkWidget *entry; |
5684 | 1639 const char *cmd; |
5440 | 1640 #endif |
1641 | |
1642 ret = gtk_vbox_new(FALSE, 18); | |
1643 gtk_container_set_border_width (GTK_CONTAINER (ret), 12); | |
1644 | |
1645 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); | |
1646 | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1647 vbox = gaim_gtk_make_frame (ret, _("Sound Options")); |
8633 | 1648 gaim_gtk_prefs_checkbox(_("Sounds when conversation has _focus"), |
1649 "/gaim/gtk/sound/conv_focus", vbox); | |
7987 | 1650 gaim_gtk_prefs_checkbox(_("_Sounds while away"), |
5684 | 1651 "/core/sound/while_away", vbox); |
5440 | 1652 |
1653 #ifndef _WIN32 | |
6033 | 1654 vbox = gaim_gtk_make_frame (ret, _("Sound Method")); |
7987 | 1655 dd = gaim_gtk_prefs_dropdown(vbox, _("_Method:"), GAIM_PREF_STRING, |
1656 "/gaim/gtk/sound/method", | |
1657 _("Console beep"), "beep", | |
5440 | 1658 #ifdef USE_AO |
7987 | 1659 _("Automatic"), "automatic", |
1660 "ESD", "esd", | |
1661 "Arts", "arts", | |
5440 | 1662 #endif |
1663 #ifdef USE_NAS_AUDIO | |
7987 | 1664 "NAS", "nas", |
5440 | 1665 #endif |
7987 | 1666 _("Command"), "custom", |
1667 NULL); | |
5440 | 1668 gtk_size_group_add_widget(sg, dd); |
1669 gtk_misc_set_alignment(GTK_MISC(dd), 0, 0); | |
1670 | |
1671 hbox = gtk_hbox_new(FALSE, 5); | |
1672 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5); | |
1673 | |
6031 | 1674 label = gtk_label_new_with_mnemonic(_("Sound c_ommand:\n(%s for filename)")); |
5440 | 1675 gtk_size_group_add_widget(sg, label); |
1676 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
1677 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5); | |
1678 | |
6007 | 1679 entry = gtk_entry_new(); |
1680 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
1681 | |
1682 gtk_editable_set_editable(GTK_EDITABLE(entry), TRUE); | |
5684 | 1683 cmd = gaim_prefs_get_string("/gaim/gtk/sound/command"); |
5440 | 1684 if(cmd) |
6007 | 1685 gtk_entry_set_text(GTK_ENTRY(entry), cmd); |
1686 gtk_widget_set_size_request(entry, 75, -1); | |
1687 | |
1688 gtk_box_pack_start(GTK_BOX(hbox), entry, TRUE, TRUE, 5); | |
1689 g_signal_connect(G_OBJECT(entry), "changed", | |
5440 | 1690 G_CALLBACK(sound_cmd_yeah), NULL); |
6005 | 1691 |
1692 gtk_widget_set_sensitive(hbox, | |
1693 !strcmp(gaim_prefs_get_string("/gaim/gtk/sound/method"), | |
1694 "custom")); | |
1695 sound_pref_id = gaim_prefs_connect_callback("/gaim/gtk/sound/method", | |
1696 sound_changed_cb, hbox); | |
1697 | |
8141 | 1698 gaim_set_accessible_label (entry, label); |
5440 | 1699 #endif /* _WIN32 */ |
9150 | 1700 |
1701 vbox = gaim_gtk_make_frame(ret, _("Sound Events")); | |
1702 | |
1703 /* The following is an ugly hack to make the frame expand so the | |
1704 * sound events list is big enough to be usable */ | |
1705 gtk_box_set_child_packing(GTK_BOX(vbox->parent), vbox, TRUE, TRUE, 0, | |
1706 GTK_PACK_START); | |
1707 gtk_box_set_child_packing(GTK_BOX(vbox->parent->parent), vbox->parent, TRUE, | |
1708 TRUE, 0, GTK_PACK_START); | |
1709 gtk_box_set_child_packing(GTK_BOX(vbox->parent->parent->parent), | |
1710 vbox->parent->parent, TRUE, TRUE, 0, GTK_PACK_START); | |
1711 | |
1712 sw = gtk_scrolled_window_new(NULL,NULL); | |
1713 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); | |
1714 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); | |
1715 | |
1716 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); | |
1717 event_store = gtk_list_store_new (4, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT); | |
1718 | |
1719 for (j=0; j < GAIM_NUM_SOUNDS; j++) { | |
1720 char *pref = g_strdup_printf("/gaim/gtk/sound/enabled/%s", | |
1721 gaim_gtk_sound_get_event_option(j)); | |
1722 const char *label = gaim_gtk_sound_get_event_label(j); | |
1723 | |
1724 if (label == NULL) { | |
1725 g_free(pref); | |
1726 continue; | |
1727 } | |
1728 | |
1729 gtk_list_store_append (event_store, &iter); | |
1730 gtk_list_store_set(event_store, &iter, | |
1731 0, gaim_prefs_get_bool(pref), | |
1732 1, _(label), | |
1733 2, pref, | |
1734 3, j, | |
1735 -1); | |
1736 g_free(pref); | |
1737 } | |
1738 | |
1739 event_view = gtk_tree_view_new_with_model (GTK_TREE_MODEL(event_store)); | |
1740 | |
1741 rend = gtk_cell_renderer_toggle_new(); | |
1742 sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (event_view)); | |
1743 g_signal_connect (G_OBJECT (sel), "changed", | |
1744 G_CALLBACK (prefs_sound_sel), | |
1745 NULL); | |
1746 g_signal_connect (G_OBJECT(rend), "toggled", | |
1747 G_CALLBACK(event_toggled), event_store); | |
1748 path = gtk_tree_path_new_first(); | |
1749 gtk_tree_selection_select_path(sel, path); | |
1750 gtk_tree_path_free(path); | |
1751 | |
1752 col = gtk_tree_view_column_new_with_attributes (_("Play"), | |
1753 rend, | |
1754 "active", 0, | |
1755 NULL); | |
1756 gtk_tree_view_append_column (GTK_TREE_VIEW(event_view), col); | |
1757 | |
1758 rend = gtk_cell_renderer_text_new(); | |
1759 col = gtk_tree_view_column_new_with_attributes (_("Event"), | |
1760 rend, | |
1761 "text", 1, | |
1762 NULL); | |
1763 gtk_tree_view_append_column (GTK_TREE_VIEW(event_view), col); | |
1764 g_object_unref(G_OBJECT(event_store)); | |
1765 gtk_container_add(GTK_CONTAINER(sw), event_view); | |
1766 | |
1767 hbox = gtk_hbox_new(FALSE, 6); | |
1768 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
1769 sound_entry = gtk_entry_new(); | |
1770 pref = g_strdup_printf("/gaim/gtk/sound/file/%s", | |
1771 gaim_gtk_sound_get_event_option(0)); | |
1772 file = gaim_prefs_get_string(pref); | |
1773 g_free(pref); | |
1774 gtk_entry_set_text(GTK_ENTRY(sound_entry), (file && *file != '\0') ? file : "(default)"); | |
1775 gtk_editable_set_editable(GTK_EDITABLE(sound_entry), FALSE); | |
1776 gtk_box_pack_start(GTK_BOX(hbox), sound_entry, FALSE, FALSE, 5); | |
1777 | |
1778 button = gtk_button_new_with_label(_("Test")); | |
1779 g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(test_sound), NULL); | |
1780 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1); | |
1781 | |
1782 button = gtk_button_new_with_label(_("Reset")); | |
1783 g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(reset_sound), NULL); | |
1784 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1); | |
1785 | |
1786 button = gtk_button_new_with_label(_("Choose...")); | |
9508 | 1787 g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(select_sound), NULL); |
9150 | 1788 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1); |
5440 | 1789 gtk_widget_show_all(ret); |
9118 | 1790 |
5440 | 1791 return ret; |
1792 } | |
1793 | |
1794 GtkWidget *away_page() { | |
1795 GtkWidget *ret; | |
1796 GtkWidget *vbox; | |
1797 GtkWidget *hbox; | |
1798 GtkWidget *label; | |
1799 GtkWidget *button; | |
1800 GtkWidget *select; | |
1801 GtkWidget *dd; | |
1802 GtkSizeGroup *sg; | |
1803 | |
1804 ret = gtk_vbox_new(FALSE, 18); | |
1805 gtk_container_set_border_width (GTK_CONTAINER (ret), 12); | |
1806 | |
1807 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); | |
1808 | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1809 vbox = gaim_gtk_make_frame (ret, _("Away")); |
7987 | 1810 gaim_gtk_prefs_checkbox(_("_Queue new messages when away"), |
5573
5e7de337a053
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5568
diff
changeset
|
1811 "/gaim/gtk/away/queue_messages", vbox); |
5440 | 1812 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1813 vbox = gaim_gtk_make_frame (ret, _("Auto-response")); |
7987 | 1814 gaim_gtk_prefs_checkbox(_("_Send auto-response"), |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1815 "/core/away/auto_response/enabled", vbox); |
7987 | 1816 gaim_gtk_prefs_checkbox(_("_Only send auto-response when idle"), |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1817 "/core/away/auto_response/idle_only", vbox); |
6142 | 1818 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1819 vbox = gaim_gtk_make_frame (ret, _("Idle")); |
7987 | 1820 dd = gaim_gtk_prefs_dropdown(vbox, _("Idle _time reporting:"), |
1821 GAIM_PREF_STRING, "/gaim/gtk/idle/reporting_method", | |
1822 _("None"), "none", | |
1823 _("Gaim usage"), "gaim", | |
5440 | 1824 #ifdef USE_SCREENSAVER |
1825 #ifndef _WIN32 | |
7987 | 1826 _("X usage"), "system", |
5440 | 1827 #else |
7987 | 1828 _("Windows usage"), "system", |
5440 | 1829 #endif |
1830 #endif | |
7987 | 1831 NULL); |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1832 |
5440 | 1833 gtk_size_group_add_widget(sg, dd); |
1834 gtk_misc_set_alignment(GTK_MISC(dd), 0, 0); | |
1835 | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1836 vbox = gaim_gtk_make_frame (ret, _("Auto-away")); |
7987 | 1837 button = gaim_gtk_prefs_checkbox(_("Set away _when idle"), |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1838 "/core/away/away_when_idle", vbox); |
8238 | 1839 |
7987 | 1840 select = gaim_gtk_prefs_labeled_spin_button(vbox, |
1841 _("_Minutes before setting away:"), "/core/away/mins_before_away", | |
1842 1, 24 * 60, sg); | |
5440 | 1843 g_signal_connect(G_OBJECT(button), "clicked", |
1844 G_CALLBACK(gaim_gtk_toggle_sensitive), select); | |
1845 | |
8238 | 1846 hbox = gtk_hbox_new(FALSE, 0); |
1847 gtk_container_add(GTK_CONTAINER(vbox), hbox); | |
1848 | |
5440 | 1849 label = gtk_label_new_with_mnemonic(_("Away m_essage:")); |
1850 gtk_size_group_add_widget(sg, label); | |
1851 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
8238 | 1852 g_signal_connect(G_OBJECT(button), "clicked", |
1853 G_CALLBACK(gaim_gtk_toggle_sensitive), label); | |
5440 | 1854 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
8238 | 1855 |
5440 | 1856 prefs_away_menu = gtk_option_menu_new(); |
1857 gtk_label_set_mnemonic_widget(GTK_LABEL(label), prefs_away_menu); | |
1858 g_signal_connect(G_OBJECT(button), "clicked", | |
1859 G_CALLBACK(gaim_gtk_toggle_sensitive), prefs_away_menu); | |
1860 default_away_menu_init(prefs_away_menu); | |
1861 gtk_widget_show(prefs_away_menu); | |
1862 gtk_box_pack_start(GTK_BOX(hbox), prefs_away_menu, FALSE, FALSE, 0); | |
8238 | 1863 gaim_set_accessible_label (prefs_away_menu, label); |
1864 | |
5440 | 1865 |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1866 if (!gaim_prefs_get_bool("/core/away/away_when_idle")) { |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1867 gtk_widget_set_sensitive(GTK_WIDGET(select), FALSE); |
8238 | 1868 gtk_widget_set_sensitive(GTK_WIDGET(label), FALSE); |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1869 gtk_widget_set_sensitive(GTK_WIDGET(prefs_away_menu), FALSE); |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1870 } |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1871 |
5440 | 1872 gtk_widget_show_all(ret); |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1873 |
5440 | 1874 return ret; |
1875 } | |
1876 | |
9150 | 1877 #if 0 |
8170 | 1878 static GtkWidget * |
1879 protocol_page() { | |
1880 GtkWidget *ret; | |
8998 | 1881 |
8170 | 1882 ret = gtk_label_new(NULL); |
1883 gtk_widget_show(ret); | |
8998 | 1884 |
8170 | 1885 return ret; |
1886 } | |
9150 | 1887 #endif |
8170 | 1888 |
5440 | 1889 static GtkWidget *plugin_description=NULL, *plugin_details=NULL; |
1890 | |
1891 static void prefs_plugin_sel (GtkTreeSelection *sel, GtkTreeModel *model) | |
1892 { | |
1893 gchar *buf, *pname, *perr, *pdesc, *pauth, *pweb; | |
1894 GtkTreeIter iter; | |
1895 GValue val = { 0, }; | |
1896 GaimPlugin *plug; | |
1897 | |
1898 if (! gtk_tree_selection_get_selected (sel, &model, &iter)) | |
1899 return; | |
8104 | 1900 gtk_tree_model_get_value (model, &iter, 3, &val); |
5440 | 1901 plug = g_value_get_pointer(&val); |
8998 | 1902 |
5440 | 1903 pname = g_markup_escape_text(_(plug->info->name), -1); |
9307 | 1904 pdesc = (plug->info->description) ? |
1905 g_markup_escape_text(_(plug->info->description), -1) : NULL; | |
1906 pauth = (plug->info->author) ? | |
1907 g_markup_escape_text(_(plug->info->author), -1) : NULL; | |
1908 pweb = (plug->info->homepage) ? | |
1909 g_markup_escape_text(_(plug->info->homepage), -1) : NULL; | |
1910 | |
5440 | 1911 if (plug->error != NULL) { |
1912 perr = g_markup_escape_text(_(plug->error), -1); | |
1913 buf = g_strdup_printf( | |
1914 "<span size=\"larger\">%s %s</span>\n\n" | |
1915 "<span weight=\"bold\" color=\"red\">%s</span>\n\n" | |
1916 "%s", | |
1917 pname, plug->info->version, perr, pdesc); | |
1918 g_free(perr); | |
1919 } | |
1920 else { | |
1921 buf = g_strdup_printf( | |
1922 "<span size=\"larger\">%s %s</span>\n\n%s", | |
1923 pname, plug->info->version, pdesc); | |
1924 } | |
1925 gtk_label_set_markup(GTK_LABEL(plugin_description), buf); | |
1926 g_free(buf); | |
1927 | |
1928 buf = g_strdup_printf( | |
1929 #ifndef _WIN32 | |
1930 _("<span size=\"larger\">%s %s</span>\n\n" | |
1931 "<span weight=\"bold\">Written by:</span>\t%s\n" | |
1932 "<span weight=\"bold\">Web site:</span>\t\t%s\n" | |
1933 "<span weight=\"bold\">File name:</span>\t%s"), | |
1934 #else | |
1935 _("<span size=\"larger\">%s %s</span>\n\n" | |
1936 "<span weight=\"bold\">Written by:</span> %s\n" | |
1937 "<span weight=\"bold\">URL:</span> %s\n" | |
1938 "<span weight=\"bold\">File name:</span> %s"), | |
1939 #endif | |
1940 pname, plug->info->version, pauth, pweb, plug->path); | |
1941 | |
1942 gtk_label_set_markup(GTK_LABEL(plugin_details), buf); | |
1943 g_value_unset(&val); | |
1944 g_free(buf); | |
1945 g_free(pname); | |
1946 g_free(pdesc); | |
1947 g_free(pauth); | |
1948 g_free(pweb); | |
1949 } | |
1950 | |
1951 static void plugin_load (GtkCellRendererToggle *cell, gchar *pth, gpointer data) | |
1952 { | |
1953 GtkTreeModel *model = (GtkTreeModel *)data; | |
1954 GtkTreeIter iter; | |
1955 GtkTreePath *path = gtk_tree_path_new_from_string(pth); | |
1956 GaimPlugin *plug; | |
1957 gchar buf[1024]; | |
6040 | 1958 gchar *name = NULL, *description = NULL; |
6928
6ed0a1c045b4
[gaim-migrate @ 7475]
Christian Hammond <chipx86@chipx86.com>
parents:
6861
diff
changeset
|
1959 |
5440 | 1960 GdkCursor *wait = gdk_cursor_new (GDK_WATCH); |
1961 gdk_window_set_cursor(prefs->window, wait); | |
1962 gdk_cursor_unref(wait); | |
6928
6ed0a1c045b4
[gaim-migrate @ 7475]
Christian Hammond <chipx86@chipx86.com>
parents:
6861
diff
changeset
|
1963 |
5440 | 1964 gtk_tree_model_get_iter (model, &iter, path); |
8104 | 1965 gtk_tree_model_get (model, &iter, 3, &plug, -1); |
6928
6ed0a1c045b4
[gaim-migrate @ 7475]
Christian Hammond <chipx86@chipx86.com>
parents:
6861
diff
changeset
|
1966 |
5440 | 1967 if (!gaim_plugin_is_loaded(plug)) { |
1968 gaim_plugin_load(plug); | |
1969 | |
1970 /* | |
1971 * NOTE: This is basically the same check as before | |
1972 * (plug->type == plugin), but now there aren't plugin types. | |
1973 * Not yet, anyway. I want to do a V2 of the plugin API. | |
1974 * The thing is, we should have a flag specifying the UI type, | |
1975 * or just whether it's a general plugin or a UI-specific | |
1976 * plugin. We should only load this if it's UI-specific. | |
1977 * | |
1978 * -- ChipX86 | |
1979 */ | |
1980 if (GAIM_IS_GTK_PLUGIN(plug)) | |
1981 { | |
1982 GtkWidget *config_frame; | |
1983 GaimGtkPluginUiInfo *ui_info; | |
1984 | |
1985 ui_info = GAIM_GTK_PLUGIN_UI_INFO(plug); | |
1986 config_frame = gaim_gtk_plugin_get_config_frame(plug); | |
1987 | |
1988 if (config_frame != NULL) { | |
1989 ui_info->iter = g_new0(GtkTreeIter, 1); | |
1990 prefs_notebook_add_page(_(plug->info->name), NULL, | |
1991 config_frame, ui_info->iter, | |
1992 &plugin_iter, notebook_page++); | |
1993 | |
1994 if (gtk_tree_model_iter_n_children(GTK_TREE_MODEL(prefstree), | |
1995 &plugin_iter) == 1) { | |
1996 | |
1997 /* Expand the tree for the first plugin added */ | |
1998 GtkTreePath *path2; | |
6928
6ed0a1c045b4
[gaim-migrate @ 7475]
Christian Hammond <chipx86@chipx86.com>
parents:
6861
diff
changeset
|
1999 |
5440 | 2000 path2 = gtk_tree_model_get_path(GTK_TREE_MODEL(prefstree), |
2001 &plugin_iter); | |
2002 gtk_tree_view_expand_row(GTK_TREE_VIEW(tree_v), | |
2003 path2, TRUE); | |
2004 gtk_tree_path_free(path2); | |
2005 } | |
2006 } | |
2007 } | |
8713 | 2008 |
2009 if(GAIM_PLUGIN_HAS_PREF_FRAME(plug)) { | |
8998 | 2010 GtkTreeIter iter; |
8713 | 2011 GtkWidget *pref_frame; |
2012 GaimPluginUiInfo *prefs_info; | |
2013 | |
2014 if(plug->info->type == GAIM_PLUGIN_PROTOCOL) | |
2015 iter = proto_iter; | |
2016 else | |
2017 iter = plugin_iter; | |
2018 | |
2019 prefs_info = GAIM_PLUGIN_UI_INFO(plug); | |
8814 | 2020 prefs_info->frame = prefs_info->get_plugin_pref_frame(plug); |
2021 pref_frame = gaim_gtk_plugin_pref_create_frame(prefs_info->frame); | |
8713 | 2022 |
2023 if(pref_frame != NULL) { | |
2024 prefs_info->iter = g_new0(GtkTreeIter, 1); | |
2025 prefs_notebook_add_page(_(plug->info->name), NULL, | |
2026 pref_frame, prefs_info->iter, | |
2027 &iter, notebook_page++); | |
2028 | |
2029 if(gtk_tree_model_iter_n_children(GTK_TREE_MODEL(prefstree), &iter) == 1) | |
2030 { | |
2031 GtkTreePath *path2; | |
2032 | |
2033 path2 = gtk_tree_model_get_path(GTK_TREE_MODEL(prefstree), &iter); | |
2034 gtk_tree_view_expand_row(GTK_TREE_VIEW(tree_v), path2, TRUE); | |
2035 gtk_tree_path_free(path2); | |
2036 } | |
2037 } | |
2038 } | |
5440 | 2039 } |
2040 else { | |
2041 if (GAIM_IS_GTK_PLUGIN(plug)) { | |
2042 GaimGtkPluginUiInfo *ui_info; | |
2043 | |
2044 ui_info = GAIM_GTK_PLUGIN_UI_INFO(plug); | |
2045 | |
2046 if (ui_info != NULL && ui_info->iter != NULL) { | |
2047 gtk_tree_store_remove(GTK_TREE_STORE(prefstree), ui_info->iter); | |
2048 g_free(ui_info->iter); | |
2049 ui_info->iter = NULL; | |
2050 } | |
8745 | 2051 } |
2052 | |
2053 if (GAIM_PLUGIN_HAS_PREF_FRAME(plug)) { | |
8713 | 2054 GaimPluginUiInfo *prefs_info; |
2055 | |
2056 prefs_info = GAIM_PLUGIN_UI_INFO(plug); | |
2057 | |
8745 | 2058 if(prefs_info != NULL) { |
8814 | 2059 if(prefs_info->frame != NULL) { |
2060 gaim_plugin_pref_frame_destroy(prefs_info->frame); | |
2061 prefs_info->frame = NULL; | |
2062 } | |
2063 | |
8745 | 2064 if(prefs_info->iter != NULL) { |
2065 gtk_tree_store_remove(GTK_TREE_STORE(prefstree), prefs_info->iter); | |
2066 g_free(prefs_info->iter); | |
2067 prefs_info->iter = NULL; | |
2068 } | |
8713 | 2069 } |
5440 | 2070 } |
2071 | |
2072 gaim_plugin_unload(plug); | |
2073 } | |
2074 | |
2075 gdk_window_set_cursor(prefs->window, NULL); | |
2076 | |
6040 | 2077 name = g_markup_escape_text(_(plug->info->name), -1); |
2078 description = g_markup_escape_text(_(plug->info->description), -1); | |
5440 | 2079 if (plug->error != NULL) { |
6040 | 2080 gchar *error = g_markup_escape_text(plug->error, -1); |
5440 | 2081 g_snprintf(buf, sizeof(buf), |
2082 "<span size=\"larger\">%s %s</span>\n\n" | |
2083 "<span weight=\"bold\" color=\"red\">%s</span>\n\n" | |
2084 "%s", | |
6040 | 2085 name, plug->info->version, error, description); |
2086 g_free(error); | |
2087 } else { | |
5440 | 2088 g_snprintf(buf, sizeof(buf), |
2089 "<span size=\"larger\">%s %s</span>\n\n%s", | |
6040 | 2090 name, plug->info->version, description); |
5440 | 2091 } |
6040 | 2092 g_free(name); |
2093 g_free(description); | |
5440 | 2094 |
2095 gtk_label_set_markup(GTK_LABEL(plugin_description), buf); | |
2096 gtk_list_store_set (GTK_LIST_STORE (model), &iter, 0, | |
2097 gaim_plugin_is_loaded(plug), -1); | |
6928
6ed0a1c045b4
[gaim-migrate @ 7475]
Christian Hammond <chipx86@chipx86.com>
parents:
6861
diff
changeset
|
2098 |
5440 | 2099 gtk_label_set_markup(GTK_LABEL(plugin_description), buf); |
2100 gtk_tree_path_free(path); | |
5981
81564bb4db68
[gaim-migrate @ 6429]
Christian Hammond <chipx86@chipx86.com>
parents:
5966
diff
changeset
|
2101 |
81564bb4db68
[gaim-migrate @ 6429]
Christian Hammond <chipx86@chipx86.com>
parents:
5966
diff
changeset
|
2102 gaim_gtk_plugins_save(); |
5440 | 2103 } |
2104 | |
2105 static void | |
2106 update_plugin_list(void *data) | |
2107 { | |
2108 GtkListStore *ls = GTK_LIST_STORE(data); | |
2109 GtkTreeIter iter; | |
2110 GList *probes; | |
2111 GaimPlugin *plug; | |
2112 | |
2113 gtk_list_store_clear(ls); | |
2114 | |
2115 for (probes = gaim_plugins_get_all(); | |
2116 probes != NULL; | |
6928
6ed0a1c045b4
[gaim-migrate @ 7475]
Christian Hammond <chipx86@chipx86.com>
parents:
6861
diff
changeset
|
2117 probes = probes->next) |
6ed0a1c045b4
[gaim-migrate @ 7475]
Christian Hammond <chipx86@chipx86.com>
parents:
6861
diff
changeset
|
2118 { |
5440 | 2119 plug = probes->data; |
2120 | |
6928
6ed0a1c045b4
[gaim-migrate @ 7475]
Christian Hammond <chipx86@chipx86.com>
parents:
6861
diff
changeset
|
2121 if (plug->info->type != GAIM_PLUGIN_STANDARD || |
6930
31c45d99e1a8
[gaim-migrate @ 7477]
Christian Hammond <chipx86@chipx86.com>
parents:
6928
diff
changeset
|
2122 (plug->info->flags & GAIM_PLUGIN_FLAG_INVISIBLE)) |
6928
6ed0a1c045b4
[gaim-migrate @ 7475]
Christian Hammond <chipx86@chipx86.com>
parents:
6861
diff
changeset
|
2123 { |
5440 | 2124 continue; |
6928
6ed0a1c045b4
[gaim-migrate @ 7475]
Christian Hammond <chipx86@chipx86.com>
parents:
6861
diff
changeset
|
2125 } |
5440 | 2126 |
2127 gtk_list_store_append (ls, &iter); | |
2128 gtk_list_store_set(ls, &iter, | |
2129 0, gaim_plugin_is_loaded(plug), | |
6928
6ed0a1c045b4
[gaim-migrate @ 7475]
Christian Hammond <chipx86@chipx86.com>
parents:
6861
diff
changeset
|
2130 1, plug->info->name ? _(plug->info->name) : plug->path, |
8162 | 2131 2, _(plug->info->summary), |
8104 | 2132 3, plug, -1); |
5440 | 2133 } |
2134 } | |
2135 | |
2136 static GtkWidget *plugin_page () | |
2137 { | |
2138 GtkWidget *ret; | |
2139 GtkWidget *sw, *vp; | |
2140 GtkWidget *event_view; | |
2141 GtkListStore *ls; | |
2142 GtkCellRenderer *rend, *rendt; | |
2143 GtkTreeViewColumn *col; | |
2144 GtkTreeSelection *sel; | |
2145 GtkTreePath *path; | |
2146 GtkWidget *nb; | |
2147 | |
2148 ret = gtk_vbox_new(FALSE, 18); | |
2149 gtk_container_set_border_width (GTK_CONTAINER (ret), 12); | |
2150 | |
2151 sw = gtk_scrolled_window_new(NULL,NULL); | |
8104 | 2152 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); |
5440 | 2153 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); |
2154 | |
2155 gtk_box_pack_start(GTK_BOX(ret), sw, TRUE, TRUE, 0); | |
2156 | |
8104 | 2157 ls = gtk_list_store_new (4, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER); |
7939 | 2158 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(ls), |
2159 1, GTK_SORT_ASCENDING); | |
5440 | 2160 |
2161 update_plugin_list(ls); | |
2162 | |
2163 event_view = gtk_tree_view_new_with_model (GTK_TREE_MODEL(ls)); | |
2164 | |
2165 rend = gtk_cell_renderer_toggle_new(); | |
2166 sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (event_view)); | |
2167 | |
2168 col = gtk_tree_view_column_new_with_attributes (_("Load"), | |
2169 rend, | |
2170 "active", 0, | |
2171 NULL); | |
2172 gtk_tree_view_append_column (GTK_TREE_VIEW(event_view), col); | |
2173 | |
2174 rendt = gtk_cell_renderer_text_new(); | |
2175 col = gtk_tree_view_column_new_with_attributes (_("Name"), | |
2176 rendt, | |
2177 "text", 1, | |
2178 NULL); | |
2179 gtk_tree_view_append_column (GTK_TREE_VIEW(event_view), col); | |
8998 | 2180 |
8104 | 2181 rendt = gtk_cell_renderer_text_new(); |
2182 col = gtk_tree_view_column_new_with_attributes(_("Summary"), | |
2183 rendt, | |
2184 "text", 2, | |
2185 NULL); | |
2186 gtk_tree_view_append_column(GTK_TREE_VIEW(event_view), col); | |
8998 | 2187 |
5440 | 2188 g_object_unref(G_OBJECT(ls)); |
2189 gtk_container_add(GTK_CONTAINER(sw), event_view); | |
8998 | 2190 |
5440 | 2191 |
2192 nb = gtk_notebook_new(); | |
2193 gtk_notebook_set_tab_pos (GTK_NOTEBOOK(nb), GTK_POS_BOTTOM); | |
2194 gtk_notebook_popup_disable(GTK_NOTEBOOK(nb)); | |
8998 | 2195 |
5440 | 2196 /* Description */ |
2197 sw = gtk_scrolled_window_new(NULL, NULL); | |
2198 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); | |
2199 plugin_description = gtk_label_new(NULL); | |
8998 | 2200 |
5440 | 2201 vp = gtk_viewport_new(NULL, NULL); |
2202 gtk_viewport_set_shadow_type(GTK_VIEWPORT(vp), GTK_SHADOW_NONE); | |
2203 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_NONE); | |
2204 | |
2205 gtk_container_add(GTK_CONTAINER(vp), plugin_description); | |
2206 gtk_container_add(GTK_CONTAINER(sw), vp); | |
2207 | |
8998 | 2208 gtk_label_set_selectable(GTK_LABEL(plugin_description), TRUE); |
5440 | 2209 gtk_label_set_line_wrap(GTK_LABEL(plugin_description), TRUE); |
2210 gtk_misc_set_alignment(GTK_MISC(plugin_description), 0, 0); | |
2211 gtk_misc_set_padding(GTK_MISC(plugin_description), 6, 6); | |
2212 gtk_notebook_append_page(GTK_NOTEBOOK(nb), sw, gtk_label_new(_("Description"))); | |
2213 | |
2214 /* Details */ | |
2215 sw = gtk_scrolled_window_new(NULL, NULL); | |
2216 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); | |
2217 plugin_details = gtk_label_new(NULL); | |
8998 | 2218 |
5440 | 2219 vp = gtk_viewport_new(NULL, NULL); |
2220 gtk_viewport_set_shadow_type(GTK_VIEWPORT(vp), GTK_SHADOW_NONE); | |
2221 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_NONE); | |
2222 | |
2223 gtk_container_add(GTK_CONTAINER(vp), plugin_details); | |
2224 gtk_container_add(GTK_CONTAINER(sw), vp); | |
2225 | |
8998 | 2226 gtk_label_set_selectable(GTK_LABEL(plugin_details), TRUE); |
5440 | 2227 gtk_label_set_line_wrap(GTK_LABEL(plugin_details), TRUE); |
2228 gtk_misc_set_alignment(GTK_MISC(plugin_details), 0, 0); | |
8998 | 2229 gtk_misc_set_padding(GTK_MISC(plugin_details), 6, 6); |
5440 | 2230 gtk_notebook_append_page(GTK_NOTEBOOK(nb), sw, gtk_label_new(_("Details"))); |
2231 gtk_box_pack_start(GTK_BOX(ret), nb, TRUE, TRUE, 0); | |
2232 | |
2233 g_signal_connect (G_OBJECT (sel), "changed", | |
2234 G_CALLBACK (prefs_plugin_sel), | |
8998 | 2235 NULL); |
5440 | 2236 g_signal_connect (G_OBJECT(rend), "toggled", |
2237 G_CALLBACK(plugin_load), ls); | |
2238 | |
2239 path = gtk_tree_path_new_first(); | |
2240 gtk_tree_selection_select_path(sel, path); | |
2241 gtk_tree_path_free(path); | |
2242 | |
2243 gaim_plugins_register_probe_notify_cb(update_plugin_list, ls); | |
2244 | |
2245 gtk_widget_show_all(ret); | |
2246 return ret; | |
2247 } | |
2248 | |
6979 | 2249 static void away_message_sel_cb(GtkTreeSelection *sel, GtkTreeModel *model) |
5440 | 2250 { |
2251 GtkTreeIter iter; | |
2252 GValue val = { 0, }; | |
2253 gchar buffer[BUF_LONG]; | |
2254 char *tmp; | |
2255 struct away_message *am; | |
2256 | |
2257 if (! gtk_tree_selection_get_selected (sel, &model, &iter)) | |
2258 return; | |
2259 gtk_tree_model_get_value (model, &iter, 1, &val); | |
2260 am = g_value_get_pointer(&val); | |
2261 gtk_imhtml_clear(GTK_IMHTML(away_text)); | |
2262 strncpy(buffer, am->message, BUF_LONG); | |
2263 tmp = stylize(buffer, BUF_LONG); | |
6982 | 2264 gtk_imhtml_append_text(GTK_IMHTML(away_text), tmp, GTK_IMHTML_NO_TITLE | |
5440 | 2265 GTK_IMHTML_NO_COMMENTS | GTK_IMHTML_NO_SCROLL); |
6982 | 2266 gtk_imhtml_append_text(GTK_IMHTML(away_text), "<BR>", GTK_IMHTML_NO_TITLE | |
5440 | 2267 GTK_IMHTML_NO_COMMENTS | GTK_IMHTML_NO_SCROLL); |
2268 g_free(tmp); | |
2269 g_value_unset (&val); | |
2270 | |
2271 } | |
2272 | |
6979 | 2273 static gboolean away_message_click_cb(GtkWidget *tv, GdkEventButton *event, gpointer null) |
2274 { | |
2275 /* Only respond to double click on button 1 */ | |
2276 if ((event->button != 1) || (event->type != GDK_2BUTTON_PRESS)) | |
2277 return FALSE; | |
2278 | |
2279 /* Show the edit away message dialog */ | |
2280 create_away_mess(NULL, tv); | |
2281 | |
2282 return FALSE; | |
2283 } | |
2284 | |
5440 | 2285 void remove_away_message(GtkWidget *widget, GtkTreeView *tv) { |
6016 | 2286 struct away_message *am; |
5440 | 2287 GtkTreeIter iter; |
2288 GtkTreeSelection *sel = gtk_tree_view_get_selection(tv); | |
2289 GtkTreeModel *model = GTK_TREE_MODEL(prefs_away_store); | |
2290 GValue val = { 0, }; | |
2291 | |
2292 if (! gtk_tree_selection_get_selected (sel, &model, &iter)) | |
2293 return; | |
2294 gtk_tree_model_get_value (GTK_TREE_MODEL(prefs_away_store), &iter, 1, &val); | |
2295 am = g_value_get_pointer (&val); | |
2296 gtk_imhtml_clear(GTK_IMHTML(away_text)); | |
2297 rem_away_mess(NULL, am); | |
2298 } | |
2299 | |
2300 GtkWidget *away_message_page() { | |
2301 GtkWidget *ret; | |
2302 GtkWidget *hbox; | |
2303 GtkWidget *button; | |
2304 GtkWidget *sw; | |
2305 GtkTreeIter iter; | |
2306 GtkWidget *event_view; | |
2307 GtkCellRenderer *rend; | |
2308 GtkTreeViewColumn *col; | |
2309 GtkTreeSelection *sel; | |
2310 GSList *awy = away_messages; | |
2311 struct away_message *a; | |
2312 GtkSizeGroup *sg; | |
2313 | |
2314 ret = gtk_vbox_new(FALSE, 18); | |
2315 gtk_container_set_border_width (GTK_CONTAINER (ret), 12); | |
2316 | |
2317 sg = gtk_size_group_new(GTK_SIZE_GROUP_BOTH); | |
2318 | |
2319 sw = gtk_scrolled_window_new(NULL,NULL); | |
7931 | 2320 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); |
7929 | 2321 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); |
5440 | 2322 gtk_box_pack_start(GTK_BOX(ret), sw, TRUE, TRUE, 0); |
2323 | |
7940 | 2324 prefs_away_store = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_POINTER); |
5440 | 2325 while (awy) { |
2326 a = (struct away_message *)awy->data; | |
2327 gtk_list_store_append (prefs_away_store, &iter); | |
2328 gtk_list_store_set(prefs_away_store, &iter, | |
2329 0, a->name, | |
2330 1, a, -1); | |
2331 awy = awy->next; | |
2332 } | |
7939 | 2333 event_view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(prefs_away_store)); |
5440 | 2334 |
2335 rend = gtk_cell_renderer_text_new(); | |
2336 col = gtk_tree_view_column_new_with_attributes ("NULL", | |
2337 rend, | |
2338 "text", 0, | |
2339 NULL); | |
2340 gtk_tree_view_append_column (GTK_TREE_VIEW(event_view), col); | |
2341 gtk_tree_view_set_headers_visible (GTK_TREE_VIEW(event_view), FALSE); | |
2342 gtk_widget_show(event_view); | |
7931 | 2343 gtk_container_add(GTK_CONTAINER(sw), event_view); |
5440 | 2344 |
7929 | 2345 sw = gtk_scrolled_window_new(NULL, NULL); |
7931 | 2346 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); |
7929 | 2347 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), |
5440 | 2348 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); |
7929 | 2349 gtk_box_pack_start(GTK_BOX(ret), sw, TRUE, TRUE, 0); |
2350 | |
2351 away_text = gtk_imhtml_new(NULL, NULL); | |
7931 | 2352 gtk_container_add(GTK_CONTAINER(sw), away_text); |
2353 | |
5440 | 2354 gaim_setup_imhtml(away_text); |
2355 sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (event_view)); | |
6979 | 2356 g_signal_connect(G_OBJECT(sel), "changed", |
2357 G_CALLBACK(away_message_sel_cb), NULL); | |
2358 g_signal_connect(G_OBJECT(event_view), "button-press-event", | |
2359 G_CALLBACK(away_message_click_cb), NULL); | |
5440 | 2360 hbox = gtk_hbox_new(TRUE, 5); |
2361 gtk_box_pack_start(GTK_BOX(ret), hbox, FALSE, FALSE, 0); | |
2362 button = gtk_button_new_from_stock (GTK_STOCK_ADD); | |
2363 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
2364 gtk_size_group_add_widget(sg, button); | |
2365 g_signal_connect(G_OBJECT(button), "clicked", | |
2366 G_CALLBACK(create_away_mess), NULL); | |
2367 | |
2368 button = gtk_button_new_from_stock (GTK_STOCK_REMOVE); | |
2369 gtk_size_group_add_widget(sg, button); | |
2370 g_signal_connect(G_OBJECT(button), "clicked", | |
2371 G_CALLBACK(remove_away_message), event_view); | |
2372 | |
2373 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
2374 | |
2375 button = gaim_pixbuf_button_from_stock(_("_Edit"), GAIM_STOCK_EDIT, GAIM_BUTTON_HORIZONTAL); | |
2376 gtk_size_group_add_widget(sg, button); | |
2377 g_signal_connect(G_OBJECT(button), "clicked", | |
2378 G_CALLBACK(create_away_mess), event_view); | |
2379 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
2380 | |
2381 gtk_widget_show_all(ret); | |
2382 return ret; | |
2383 } | |
2384 | |
2385 GtkTreeIter *prefs_notebook_add_page(const char *text, | |
2386 GdkPixbuf *pixbuf, | |
2387 GtkWidget *page, | |
2388 GtkTreeIter *iter, | |
2389 GtkTreeIter *parent, | |
2390 int ind) { | |
2391 GdkPixbuf *icon = NULL; | |
2392 | |
2393 if (pixbuf) | |
2394 icon = gdk_pixbuf_scale_simple (pixbuf, 18, 18, GDK_INTERP_BILINEAR); | |
2395 | |
2396 gtk_tree_store_append (prefstree, iter, parent); | |
2397 gtk_tree_store_set (prefstree, iter, 0, icon, 1, text, 2, ind, -1); | |
2398 | |
2399 if (pixbuf) | |
2400 g_object_unref(pixbuf); | |
2401 if (icon) | |
2402 g_object_unref(icon); | |
2403 gtk_notebook_append_page(GTK_NOTEBOOK(prefsnotebook), page, gtk_label_new(text)); | |
2404 return iter; | |
2405 } | |
2406 | |
2407 void prefs_notebook_init() { | |
9267 | 2408 GtkTreeIter p, c, c2; |
5440 | 2409 GList *l; |
2410 GaimPlugin *plug; | |
2411 prefs_notebook_add_page(_("Interface"), NULL, interface_page(), &p, NULL, notebook_page++); | |
2412 prefs_notebook_add_page(_("Buddy List"), NULL, list_page(), &c, &p, notebook_page++); | |
9150 | 2413 prefs_notebook_add_page(_("Conversations"), NULL, conv_page(), &c, &p, notebook_page++); |
9267 | 2414 prefs_notebook_add_page(_("Message Text"), NULL, messages_page(), &c2, &c, notebook_page++); |
2415 prefs_notebook_add_page(_("Shortcuts"), NULL, hotkeys_page(), &c2, &c, notebook_page++); | |
2416 prefs_notebook_add_page(_("Smiley Themes"), NULL, theme_page(), &c2, &c, notebook_page++); | |
9150 | 2417 prefs_notebook_add_page(_("Sounds"), NULL, sound_page(), &c, &p, notebook_page++); |
8238 | 2418 prefs_notebook_add_page(_("Network"), NULL, network_page(), &p, NULL, notebook_page++); |
5440 | 2419 #ifndef _WIN32 |
2420 /* We use the registered default browser in windows */ | |
2421 prefs_notebook_add_page(_("Browser"), NULL, browser_page(), &p, NULL, notebook_page++); | |
2422 #endif | |
2423 prefs_notebook_add_page(_("Logging"), NULL, logging_page(), &p, NULL, notebook_page++); | |
2424 prefs_notebook_add_page(_("Away / Idle"), NULL, away_page(), &p, NULL, notebook_page++); | |
2425 prefs_notebook_add_page(_("Away Messages"), NULL, away_message_page(), &c, &p, notebook_page++); | |
2426 | |
2427 if (gaim_plugins_enabled()) { | |
2428 prefs_notebook_add_page(_("Plugins"), NULL, plugin_page(), &plugin_iter, NULL, notebook_page++); | |
2429 | |
2430 for (l = gaim_plugins_get_loaded(); l != NULL; l = l->next) { | |
8713 | 2431 plug = (GaimPlugin *)l->data; |
5440 | 2432 |
2433 if (GAIM_IS_GTK_PLUGIN(plug)) { | |
2434 GtkWidget *config_frame; | |
2435 GaimGtkPluginUiInfo *ui_info; | |
2436 | |
2437 ui_info = GAIM_GTK_PLUGIN_UI_INFO(plug); | |
2438 config_frame = gaim_gtk_plugin_get_config_frame(plug); | |
2439 | |
2440 if (config_frame != NULL) { | |
2441 ui_info->iter = g_new0(GtkTreeIter, 1); | |
2442 prefs_notebook_add_page(_(plug->info->name), NULL, | |
2443 config_frame, ui_info->iter, | |
2444 &plugin_iter, notebook_page++); | |
2445 } | |
2446 } | |
8713 | 2447 |
2448 if(GAIM_PLUGIN_HAS_PREF_FRAME(plug)) { | |
8745 | 2449 GtkWidget *gtk_frame; |
8713 | 2450 GaimPluginUiInfo *prefs_info; |
2451 | |
2452 prefs_info = GAIM_PLUGIN_UI_INFO(plug); | |
8814 | 2453 prefs_info->frame = prefs_info->get_plugin_pref_frame(plug); |
2454 gtk_frame = gaim_gtk_plugin_pref_create_frame(prefs_info->frame); | |
8745 | 2455 |
2456 if(GTK_IS_WIDGET(gtk_frame)) { | |
8713 | 2457 prefs_info->iter = g_new0(GtkTreeIter, 1); |
2458 prefs_notebook_add_page(_(plug->info->name), NULL, | |
8745 | 2459 gtk_frame, prefs_info->iter, |
9150 | 2460 (plug->info->type == GAIM_PLUGIN_PROTOCOL) ? NULL : &plugin_iter, |
8713 | 2461 notebook_page++); |
8814 | 2462 } else if(prefs_info->frame) { |
2463 /* in the event that there is a pref frame and we can | |
2464 * not make a widget out of it, we free the | |
2465 * pluginpref frame --Gary | |
2466 */ | |
2467 gaim_plugin_pref_frame_destroy(prefs_info->frame); | |
8713 | 2468 } |
2469 } | |
5440 | 2470 } |
2471 } | |
2472 } | |
2473 | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
2474 void gaim_gtk_prefs_show(void) |
5440 | 2475 { |
2476 GtkWidget *vbox, *vbox2; | |
2477 GtkWidget *hbox; | |
8292
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
2478 GtkWidget *bbox; |
5440 | 2479 GtkWidget *frame; |
8335 | 2480 GtkWidget *scrolled_window; |
5440 | 2481 GtkTreeViewColumn *column; |
2482 GtkCellRenderer *cell; | |
2483 GtkTreeSelection *sel; | |
2484 GtkWidget *notebook; | |
2485 GtkWidget *sep; | |
2486 GtkWidget *button; | |
2487 | |
2488 if (prefs) { | |
2489 gtk_window_present(GTK_WINDOW(prefs)); | |
2490 return; | |
2491 } | |
2492 | |
2493 /* copy the preferences to tmp values... | |
2494 * I liked "take affect immediately" Oh well :-( */ | |
6016 | 2495 /* (that should have been "effect," right?) */ |
2496 | |
5440 | 2497 /* Back to instant-apply! I win! BU-HAHAHA! */ |
2498 | |
2499 /* Create the window */ | |
2500 prefs = gtk_window_new(GTK_WINDOW_TOPLEVEL); | |
2501 gtk_window_set_role(GTK_WINDOW(prefs), "preferences"); | |
2502 gtk_widget_realize(prefs); | |
2503 gtk_window_set_title(GTK_WINDOW(prefs), _("Preferences")); | |
2504 gtk_window_set_resizable (GTK_WINDOW(prefs), FALSE); | |
8292
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
2505 gtk_container_set_border_width(GTK_CONTAINER(prefs), 12); |
5440 | 2506 g_signal_connect(G_OBJECT(prefs), "destroy", |
2507 G_CALLBACK(delete_prefs), NULL); | |
2508 | |
8292
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
2509 vbox = gtk_vbox_new(FALSE, 12); |
5440 | 2510 gtk_container_add(GTK_CONTAINER(prefs), vbox); |
2511 gtk_widget_show(vbox); | |
2512 | |
2513 hbox = gtk_hbox_new (FALSE, 6); | |
2514 gtk_container_add (GTK_CONTAINER(vbox), hbox); | |
2515 gtk_widget_show (hbox); | |
2516 | |
2517 frame = gtk_frame_new (NULL); | |
2518 gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN); | |
2519 gtk_box_pack_start (GTK_BOX (hbox), frame, FALSE, FALSE, 0); | |
2520 gtk_widget_show (frame); | |
2521 | |
8335 | 2522 scrolled_window = gtk_scrolled_window_new(NULL, NULL); |
2523 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window), | |
8340 | 2524 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); |
8335 | 2525 gtk_container_add(GTK_CONTAINER(frame), scrolled_window); |
2526 gtk_widget_show(scrolled_window); | |
8998 | 2527 |
5440 | 2528 /* The tree -- much inspired by the Gimp */ |
2529 prefstree = gtk_tree_store_new (3, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_INT); | |
2530 tree_v = gtk_tree_view_new_with_model (GTK_TREE_MODEL (prefstree)); | |
8335 | 2531 gtk_container_add(GTK_CONTAINER(scrolled_window), tree_v); |
5440 | 2532 |
2533 gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (tree_v), FALSE); | |
2534 gtk_widget_show(tree_v); | |
2535 /* icons */ | |
2536 /* XXX: to be used at a later date | |
2537 cell = gtk_cell_renderer_pixbuf_new (); | |
2538 column = gtk_tree_view_column_new_with_attributes ("icons", cell, "pixbuf", 0, NULL); | |
2539 */ | |
2540 | |
2541 /* text */ | |
2542 cell = gtk_cell_renderer_text_new (); | |
2543 column = gtk_tree_view_column_new_with_attributes ("text", cell, "text", 1, NULL); | |
2544 | |
2545 gtk_tree_view_append_column (GTK_TREE_VIEW (tree_v), column); | |
2546 | |
2547 /* The right side */ | |
2548 frame = gtk_frame_new (NULL); | |
2549 gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN); | |
2550 gtk_box_pack_start (GTK_BOX (hbox), frame, TRUE, TRUE, 0); | |
2551 gtk_widget_show (frame); | |
2552 | |
2553 vbox2 = gtk_vbox_new (FALSE, 4); | |
2554 gtk_container_add (GTK_CONTAINER (frame), vbox2); | |
2555 gtk_widget_show (vbox2); | |
2556 | |
2557 frame = gtk_frame_new (NULL); | |
2558 gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_OUT); | |
2559 gtk_box_pack_start (GTK_BOX (vbox2), frame, FALSE, TRUE, 0); | |
2560 gtk_widget_show (frame); | |
2561 | |
2562 hbox = gtk_hbox_new (FALSE, 4); | |
2563 gtk_container_set_border_width (GTK_CONTAINER (hbox), 4); | |
2564 gtk_container_add (GTK_CONTAINER (frame), hbox); | |
2565 gtk_widget_show (hbox); | |
2566 | |
2567 preflabel = gtk_label_new(NULL); | |
2568 gtk_box_pack_end (GTK_BOX (hbox), preflabel, FALSE, FALSE, 0); | |
2569 gtk_widget_show (preflabel); | |
2570 | |
2571 /* The notebook */ | |
2572 prefsnotebook = notebook = gtk_notebook_new (); | |
2573 gtk_notebook_set_show_tabs (GTK_NOTEBOOK (notebook), FALSE); | |
2574 gtk_notebook_set_show_border (GTK_NOTEBOOK (notebook), FALSE); | |
2575 gtk_box_pack_start (GTK_BOX (vbox2), notebook, FALSE, FALSE, 0); | |
2576 | |
2577 sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_v)); | |
2578 g_signal_connect (G_OBJECT (sel), "changed", | |
2579 G_CALLBACK (pref_nb_select), | |
2580 notebook); | |
2581 gtk_widget_show(notebook); | |
2582 sep = gtk_hseparator_new(); | |
2583 gtk_widget_show(sep); | |
2584 gtk_box_pack_start (GTK_BOX (vbox), sep, FALSE, FALSE, 0); | |
2585 | |
8713 | 2586 /* The buttons to press! */ |
8292
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
2587 bbox = gtk_hbutton_box_new(); |
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
2588 gtk_box_set_spacing(GTK_BOX(bbox), 6); |
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
2589 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
|
2590 gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 0); |
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
2591 gtk_widget_show (bbox); |
5440 | 2592 |
2593 button = gtk_button_new_from_stock (GTK_STOCK_CLOSE); | |
2594 g_signal_connect_swapped(G_OBJECT(button), "clicked", | |
2595 G_CALLBACK(gtk_widget_destroy), prefs); | |
8292
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
2596 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); |
5440 | 2597 gtk_widget_show(button); |
2598 | |
2599 prefs_notebook_init(); | |
2600 | |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
2601 /* Show everything. */ |
5440 | 2602 gtk_tree_view_expand_all (GTK_TREE_VIEW(tree_v)); |
2603 gtk_widget_show(prefs); | |
2604 } | |
2605 | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2606 static void |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2607 set_bool_pref(GtkWidget *w, const char *key) |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2608 { |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2609 gaim_prefs_set_bool(key, |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2610 gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2611 } |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2612 |
7976 | 2613 GtkWidget * |
7987 | 2614 gaim_gtk_prefs_checkbox(const char *text, const char *key, GtkWidget *page) |
5440 | 2615 { |
2616 GtkWidget *button; | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2617 |
5440 | 2618 button = gtk_check_button_new_with_mnemonic(text); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2619 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2620 gaim_prefs_get_bool(key)); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2621 |
5440 | 2622 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
|
2623 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2624 g_signal_connect(G_OBJECT(button), "clicked", |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2625 G_CALLBACK(set_bool_pref), (char *)key); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2626 |
5440 | 2627 gtk_widget_show(button); |
2628 | |
2629 return button; | |
2630 } | |
2631 | |
2632 void default_away_menu_init(GtkWidget *omenu) | |
2633 { | |
2634 GtkWidget *menu, *opt; | |
6216 | 2635 int index = 0, default_index = 0; |
5440 | 2636 GSList *awy = away_messages; |
2637 struct away_message *a; | |
6216 | 2638 const char *default_name; |
5440 | 2639 |
2640 menu = gtk_menu_new(); | |
2641 | |
6216 | 2642 default_name = gaim_prefs_get_string("/core/away/default_message"); |
2643 | |
5440 | 2644 while (awy) { |
2645 a = (struct away_message *)awy->data; | |
2646 opt = gtk_menu_item_new_with_label(a->name); | |
2647 g_signal_connect(G_OBJECT(opt), "activate", | |
6478
338147ea6896
[gaim-migrate @ 6991]
Christian Hammond <chipx86@chipx86.com>
parents:
6455
diff
changeset
|
2648 G_CALLBACK(set_default_away), GINT_TO_POINTER(index)); |
5440 | 2649 gtk_widget_show(opt); |
2650 gtk_menu_shell_append(GTK_MENU_SHELL(menu), opt); | |
2651 | |
6216 | 2652 if(!strcmp(default_name, a->name)) |
2653 default_index = index; | |
2654 | |
5440 | 2655 awy = awy->next; |
2656 index++; | |
2657 } | |
2658 | |
2659 gtk_option_menu_remove_menu(GTK_OPTION_MENU(omenu)); | |
2660 gtk_option_menu_set_menu(GTK_OPTION_MENU(omenu), menu); | |
6216 | 2661 gtk_option_menu_set_history(GTK_OPTION_MENU(omenu), default_index); |
5440 | 2662 } |
2663 | |
6478
338147ea6896
[gaim-migrate @ 6991]
Christian Hammond <chipx86@chipx86.com>
parents:
6455
diff
changeset
|
2664 void set_default_away(GtkWidget *w, gpointer data) |
5440 | 2665 { |
6216 | 2666 struct away_message *default_away = NULL; |
5440 | 2667 int length = g_slist_length(away_messages); |
6478
338147ea6896
[gaim-migrate @ 6991]
Christian Hammond <chipx86@chipx86.com>
parents:
6455
diff
changeset
|
2668 int i = GPOINTER_TO_INT(data); |
5440 | 2669 |
2670 if (away_messages == NULL) | |
2671 default_away = NULL; | |
6478
338147ea6896
[gaim-migrate @ 6991]
Christian Hammond <chipx86@chipx86.com>
parents:
6455
diff
changeset
|
2672 else if (i >= length) |
5440 | 2673 default_away = g_slist_nth_data(away_messages, length - 1); |
2674 else | |
6478
338147ea6896
[gaim-migrate @ 6991]
Christian Hammond <chipx86@chipx86.com>
parents:
6455
diff
changeset
|
2675 default_away = g_slist_nth_data(away_messages, i); |
6216 | 2676 |
2677 if(default_away) | |
2678 gaim_prefs_set_string("/core/away/default_message", default_away->name); | |
2679 else | |
2680 gaim_prefs_set_string("/core/away/default_message", ""); | |
5440 | 2681 } |
2682 | |
5770
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
2683 static void |
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
2684 smiley_theme_pref_cb(const char *name, GaimPrefType type, gpointer value, |
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
2685 gpointer data) |
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
2686 { |
5841 | 2687 if (!strcmp(name, "/gaim/gtk/smileys/theme")) |
5771
f63a008726c6
[gaim-migrate @ 6196]
Christian Hammond <chipx86@chipx86.com>
parents:
5770
diff
changeset
|
2688 load_smiley_theme((const char *)value, TRUE); |
5770
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
2689 } |
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
2690 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
2691 void |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
2692 gaim_gtk_prefs_init(void) |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
2693 { |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
2694 gaim_prefs_add_none("/gaim"); |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
2695 gaim_prefs_add_none("/gaim/gtk"); |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
2696 gaim_prefs_add_none("/plugins/gtk"); |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
2697 |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
2698 /* XXX Move this! HACK! :( Aww... */ |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
2699 gaim_prefs_add_none("/plugins/gtk/docklet"); |
5554
7b36d02031a2
[gaim-migrate @ 5955]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2700 gaim_prefs_add_bool("/plugins/gtk/docklet/queue_messages", FALSE); |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
2701 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
2702 /* Accounts Dialog */ |
5567
cc9ddec20010
[gaim-migrate @ 5969]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
2703 gaim_prefs_add_none("/gaim/gtk/accounts"); |
cc9ddec20010
[gaim-migrate @ 5969]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
2704 gaim_prefs_add_none("/gaim/gtk/accounts/dialog"); |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
2705 gaim_prefs_add_int("/gaim/gtk/accounts/dialog/width", 550); |
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
2706 gaim_prefs_add_int("/gaim/gtk/accounts/dialog/height", 250); |
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
2707 |
5573
5e7de337a053
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5568
diff
changeset
|
2708 /* Away Queueing */ |
5e7de337a053
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5568
diff
changeset
|
2709 gaim_prefs_add_none("/gaim/gtk/away"); |
5e7de337a053
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5568
diff
changeset
|
2710 gaim_prefs_add_bool("/gaim/gtk/away/queue_messages", FALSE); |
5e7de337a053
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5568
diff
changeset
|
2711 |
8283 | 2712 #ifndef _WIN32 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2713 /* Browsers */ |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2714 gaim_prefs_add_none("/gaim/gtk/browsers"); |
8272 | 2715 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
|
2716 gaim_prefs_add_string("/gaim/gtk/browsers/command", ""); |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
2717 gaim_prefs_add_string("/gaim/gtk/browsers/browser", "mozilla"); |
8283 | 2718 #endif |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2719 |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
2720 /* Idle */ |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
2721 gaim_prefs_add_none("/gaim/gtk/idle"); |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
2722 gaim_prefs_add_string("/gaim/gtk/idle/reporting_method", "system"); |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
2723 |
5949
90d0849abd3c
[gaim-migrate @ 6393]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
2724 /* Plugins */ |
5982
35d3c1ac5ece
[gaim-migrate @ 6430]
Christian Hammond <chipx86@chipx86.com>
parents:
5981
diff
changeset
|
2725 gaim_prefs_add_none("/gaim/gtk/plugins"); |
5949
90d0849abd3c
[gaim-migrate @ 6393]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
2726 gaim_prefs_add_string_list("/gaim/gtk/plugins/loaded", NULL); |
90d0849abd3c
[gaim-migrate @ 6393]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
2727 |
5539
de09863bd4b5
[gaim-migrate @ 5939]
Christian Hammond <chipx86@chipx86.com>
parents:
5535
diff
changeset
|
2728 /* Smiley Themes */ |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
2729 gaim_prefs_add_none("/gaim/gtk/smileys"); |
5771
f63a008726c6
[gaim-migrate @ 6196]
Christian Hammond <chipx86@chipx86.com>
parents:
5770
diff
changeset
|
2730 gaim_prefs_add_string("/gaim/gtk/smileys/theme", ""); |
5770
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
2731 |
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
2732 /* Smiley Callbacks */ |
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
2733 gaim_prefs_connect_callback("/gaim/gtk/smileys/theme", |
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
2734 smiley_theme_pref_cb, NULL); |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
2735 } |
8905 | 2736 |
2737 void gaim_gtk_prefs_update_old() { | |
2738 /* Rename some old prefs */ | |
2739 gaim_prefs_rename("/gaim/gtk/logging/log_ims", "/core/logging/log_ims"); | |
2740 gaim_prefs_rename("/gaim/gtk/logging/log_chats", "/core/logging/log_chats"); | |
2741 gaim_prefs_rename("/core/conversations/placement", | |
8998 | 2742 "/gaim/gtk/conversations/placement"); |
8905 | 2743 |
9025 | 2744 gaim_prefs_rename("/gaim/gtk/conversations/use_custom_font", |
2745 "/gaim/gtk/conversations/send_formatting"); | |
2746 | |
9150 | 2747 gaim_prefs_rename("/gaim/gtk/conversations/im/button_type", |
2748 "/gaim/gtk/conversations/button_type"); | |
2749 | |
8905 | 2750 /* Remove some no-longer-used prefs */ |
8945 | 2751 gaim_prefs_remove("/gaim/gtk/blist/show_group_count"); |
8946 | 2752 gaim_prefs_remove("/gaim/gtk/conversations/icons_on_tabs"); |
9049 | 2753 #if 0 /* PREFSLASH04 */ |
8944 | 2754 gaim_prefs_remove("/gaim/gtk/conversations/ignore_colors"); |
2755 gaim_prefs_remove("/gaim/gtk/conversations/ignore_fonts"); | |
2756 gaim_prefs_remove("/gaim/gtk/conversations/ignore_font_sizes"); | |
9049 | 2757 #endif |
8905 | 2758 gaim_prefs_remove("/gaim/gtk/conversations/show_urls_as_links"); |
2759 gaim_prefs_remove("/gaim/gtk/conversations/show_smileys"); | |
8941 | 2760 gaim_prefs_remove("/gaim/gtk/conversations/chat/tab_completion"); |
2761 gaim_prefs_remove("/gaim/gtk/conversations/chat/old_tab_complete"); | |
8947 | 2762 gaim_prefs_remove("/gaim/gtk/sound/signon"); |
2763 gaim_prefs_remove("/gaim/gtk/sound/silent_signon"); | |
8998 | 2764 gaim_prefs_remove("/gaim/gtk/logging/individual_logs"); |
9025 | 2765 gaim_prefs_remove("/gaim/gtk/conversations/use_custom_bgcolor"); |
2766 gaim_prefs_remove("/gaim/gtk/conversations/use_custom_fgcolor"); | |
2767 gaim_prefs_remove("/gaim/gtk/conversations/use_custom_size"); | |
9301 | 2768 gaim_prefs_remove("/gaim/gtk/conversations/im/hide_on_send"); |
8905 | 2769 } |