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