Mercurial > pidgin
annotate src/gtkprefs.c @ 14126:b71bfeaaed58
[gaim-migrate @ 16764]
Add a savedstatus dialog, and a "status" command to bring it up. You an
also select "Saved..." from the dropdown in the buddylist.
The 'Add' and 'Edit' buttons don't do anything yet. They will probably get
to work some time tomorrow.
committer: Tailor Script <tailor@pidgin.im>
author | Sadrul Habib Chowdhury <imadil@gmail.com> |
---|---|
date | Tue, 15 Aug 2006 06:21:39 +0000 |
parents | 8bda65b88e49 |
children |
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); |
13682 | 126 gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); |
5545
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); | |
13682 | 151 gtk_box_pack_start(GTK_BOX(page), hbox, FALSE, FALSE, 0); |
9422 | 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); | |
13682 | 170 gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); |
9422 | 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; |
13663
b76c6de0c3b5
[gaim-migrate @ 16065]
Richard Laager <rlaager@wiktel.com>
parents:
13327
diff
changeset
|
966 GtkWidget *table, *label, *auto_ip_checkbox, *ports_checkbox, *spin_button; |
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")); |
13682 | 974 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); |
975 gaim_gtk_prefs_labeled_entry(vbox,_("ST_UN server:"), | |
976 "/core/network/stun_server", sg); | |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
977 |
13682 | 978 hbox = gtk_hbox_new(FALSE, GAIM_HIG_BOX_SPACE); |
979 gtk_container_add(GTK_CONTAINER(vbox), hbox); | |
980 | |
981 label = gtk_label_new(NULL); | |
982 gtk_container_add(GTK_CONTAINER(hbox), label); | |
983 gtk_size_group_add_widget(sg, label); | |
984 | |
985 label = gtk_label_new(NULL); | |
986 gtk_label_set_markup(GTK_LABEL(label), | |
987 _("<span style=\"italic\">Example: stunserver.org</span>")); | |
988 gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); | |
989 gtk_container_add(GTK_CONTAINER(hbox), label); | |
11442
73f7cfa46f1b
[gaim-migrate @ 13681]
Richard Laager <rlaager@wiktel.com>
parents:
11424
diff
changeset
|
990 |
12152
cda86ce5b026
[gaim-migrate @ 14453]
Richard Laager <rlaager@wiktel.com>
parents:
12134
diff
changeset
|
991 auto_ip_checkbox = gaim_gtk_prefs_checkbox(_("_Autodetect IP address"), |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
992 "/core/network/auto_ip", vbox); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
993 |
13682 | 994 table = gtk_table_new(2, 2, FALSE); |
11442
73f7cfa46f1b
[gaim-migrate @ 13681]
Richard Laager <rlaager@wiktel.com>
parents:
11424
diff
changeset
|
995 gtk_container_set_border_width(GTK_CONTAINER(table), 0); |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
996 gtk_table_set_col_spacings(GTK_TABLE(table), 5); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
997 gtk_table_set_row_spacings(GTK_TABLE(table), 10); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
998 gtk_container_add(GTK_CONTAINER(vbox), table); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
999 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1000 label = gtk_label_new_with_mnemonic(_("Public _IP:")); |
13682 | 1001 gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1002 gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1, GTK_FILL, 0, 0, 0); |
13682 | 1003 gtk_size_group_add_widget(sg, label); |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1004 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1005 entry = gtk_entry_new(); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1006 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1007 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
|
1008 g_signal_connect(G_OBJECT(entry), "changed", |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1009 G_CALLBACK(network_ip_changed), NULL); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1010 |
13129 | 1011 /* |
1012 * TODO: This could be better by showing the autodeteced | |
1013 * IP separately from the user-specified IP. | |
1014 */ | |
1015 if (gaim_network_get_my_ip(-1) != NULL) | |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1016 gtk_entry_set_text(GTK_ENTRY(entry), |
13129 | 1017 gaim_network_get_my_ip(-1)); |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1018 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1019 gaim_set_accessible_label (entry, label); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1020 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1021 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1022 if (gaim_prefs_get_bool("/core/network/auto_ip")) { |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1023 gtk_widget_set_sensitive(GTK_WIDGET(table), FALSE); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1024 } |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1025 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1026 g_signal_connect(G_OBJECT(auto_ip_checkbox), "clicked", |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1027 G_CALLBACK(gaim_gtk_toggle_sensitive), table); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1028 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1029 vbox = gaim_gtk_make_frame (ret, _("Ports")); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1030 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1031 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1032 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
|
1033 "/core/network/ports_range_use", vbox); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1034 |
12152
cda86ce5b026
[gaim-migrate @ 14453]
Richard Laager <rlaager@wiktel.com>
parents:
12134
diff
changeset
|
1035 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
|
1036 "/core/network/ports_range_start", 0, 65535, sg); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1037 if (!gaim_prefs_get_bool("/core/network/ports_range_use")) |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1038 gtk_widget_set_sensitive(GTK_WIDGET(spin_button), FALSE); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1039 g_signal_connect(G_OBJECT(ports_checkbox), "clicked", |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1040 G_CALLBACK(gaim_gtk_toggle_sensitive), spin_button); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1041 |
12152
cda86ce5b026
[gaim-migrate @ 14453]
Richard Laager <rlaager@wiktel.com>
parents:
12134
diff
changeset
|
1042 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
|
1043 "/core/network/ports_range_end", 0, 65535, sg); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1044 if (!gaim_prefs_get_bool("/core/network/ports_range_use")) |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1045 gtk_widget_set_sensitive(GTK_WIDGET(spin_button), FALSE); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1046 g_signal_connect(G_OBJECT(ports_checkbox), "clicked", |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1047 G_CALLBACK(gaim_gtk_toggle_sensitive), spin_button); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1048 |
11878 | 1049 if (!gaim_running_gnome()) { |
1050 vbox = gaim_gtk_make_frame(ret, _("Proxy Server")); | |
1051 prefs_proxy_frame = gtk_vbox_new(FALSE, 0); | |
1052 gaim_gtk_prefs_dropdown(vbox, _("Proxy _type:"), GAIM_PREF_STRING, | |
1053 "/core/proxy/type", | |
1054 _("No proxy"), "none", | |
1055 "SOCKS 4", "socks4", | |
1056 "SOCKS 5", "socks5", | |
1057 "HTTP", "http", | |
1058 _("Use Environmental Settings"), "envvar", | |
1059 NULL); | |
1060 gtk_box_pack_start(GTK_BOX(vbox), prefs_proxy_frame, 0, 0, 0); | |
1061 proxy_info = gaim_global_proxy_get_info(); | |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1062 |
11878 | 1063 gaim_prefs_connect_callback(prefs, "/core/proxy/type", |
1064 proxy_changed_cb, prefs_proxy_frame); | |
13682 | 1065 |
11878 | 1066 table = gtk_table_new(4, 2, FALSE); |
1067 gtk_container_set_border_width(GTK_CONTAINER(table), 0); | |
1068 gtk_table_set_col_spacings(GTK_TABLE(table), 5); | |
1069 gtk_table_set_row_spacings(GTK_TABLE(table), 10); | |
1070 gtk_container_add(GTK_CONTAINER(prefs_proxy_frame), table); | |
5440 | 1071 |
1072 | |
11878 | 1073 label = gtk_label_new_with_mnemonic(_("_Host:")); |
1074 gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); | |
1075 gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1, GTK_FILL, 0, 0, 0); | |
5440 | 1076 |
11878 | 1077 entry = gtk_entry_new(); |
1078 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
1079 gtk_table_attach(GTK_TABLE(table), entry, 1, 2, 0, 1, GTK_FILL, 0, 0, 0); | |
1080 g_signal_connect(G_OBJECT(entry), "changed", | |
1081 G_CALLBACK(proxy_print_option), (void *)PROXYHOST); | |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1082 |
11878 | 1083 if (proxy_info != NULL && gaim_proxy_info_get_host(proxy_info)) |
1084 gtk_entry_set_text(GTK_ENTRY(entry), | |
1085 gaim_proxy_info_get_host(proxy_info)); | |
5440 | 1086 |
11878 | 1087 hbox = gtk_hbox_new(TRUE, 5); |
1088 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
1089 gaim_set_accessible_label (entry, label); | |
5440 | 1090 |
11878 | 1091 label = gtk_label_new_with_mnemonic(_("_Port:")); |
1092 gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); | |
1093 gtk_table_attach(GTK_TABLE(table), label, 2, 3, 0, 1, GTK_FILL, 0, 0, 0); | |
5440 | 1094 |
11878 | 1095 entry = gtk_entry_new(); |
1096 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
1097 gtk_table_attach(GTK_TABLE(table), entry, 3, 4, 0, 1, GTK_FILL, 0, 0, 0); | |
1098 g_signal_connect(G_OBJECT(entry), "changed", | |
1099 G_CALLBACK(proxy_print_option), (void *)PROXYPORT); | |
5440 | 1100 |
11878 | 1101 if (proxy_info != NULL && gaim_proxy_info_get_port(proxy_info) != 0) { |
1102 char buf[128]; | |
1103 g_snprintf(buf, sizeof(buf), "%d", | |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1104 gaim_proxy_info_get_port(proxy_info)); |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1105 |
11878 | 1106 gtk_entry_set_text(GTK_ENTRY(entry), buf); |
1107 } | |
1108 gaim_set_accessible_label (entry, label); | |
5440 | 1109 |
11878 | 1110 label = gtk_label_new_with_mnemonic(_("_User:")); |
1111 gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); | |
1112 gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2, GTK_FILL, 0, 0, 0); | |
5440 | 1113 |
11878 | 1114 entry = gtk_entry_new(); |
1115 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
1116 gtk_table_attach(GTK_TABLE(table), entry, 1, 2, 1, 2, GTK_FILL, 0, 0, 0); | |
1117 g_signal_connect(G_OBJECT(entry), "changed", | |
1118 G_CALLBACK(proxy_print_option), (void *)PROXYUSER); | |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1119 |
11878 | 1120 if (proxy_info != NULL && gaim_proxy_info_get_username(proxy_info) != NULL) |
1121 gtk_entry_set_text(GTK_ENTRY(entry), | |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1122 gaim_proxy_info_get_username(proxy_info)); |
5440 | 1123 |
11878 | 1124 hbox = gtk_hbox_new(TRUE, 5); |
1125 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
1126 gaim_set_accessible_label (entry, label); | |
5440 | 1127 |
11878 | 1128 label = gtk_label_new_with_mnemonic(_("Pa_ssword:")); |
1129 gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); | |
1130 gtk_table_attach(GTK_TABLE(table), label, 2, 3, 1, 2, GTK_FILL, 0, 0, 0); | |
5440 | 1131 |
11878 | 1132 entry = gtk_entry_new(); |
1133 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
1134 gtk_table_attach(GTK_TABLE(table), entry, 3, 4, 1, 2, GTK_FILL , 0, 0, 0); | |
1135 gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE); | |
11986 | 1136 gtk_entry_set_invisible_char(GTK_ENTRY(entry), GAIM_INVISIBLE_CHAR); |
11878 | 1137 g_signal_connect(G_OBJECT(entry), "changed", |
1138 G_CALLBACK(proxy_print_option), (void *)PROXYPASS); | |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1139 |
11878 | 1140 if (proxy_info != NULL && gaim_proxy_info_get_password(proxy_info) != NULL) |
1141 gtk_entry_set_text(GTK_ENTRY(entry), | |
1142 gaim_proxy_info_get_password(proxy_info)); | |
1143 gaim_set_accessible_label (entry, label); | |
1144 } | |
5440 | 1145 |
1146 gtk_widget_show_all(ret); | |
11740 | 1147 if (proxy_info == NULL || |
1148 gaim_proxy_info_get_type(proxy_info) == GAIM_PROXY_NONE || | |
1149 gaim_proxy_info_get_type(proxy_info) == GAIM_PROXY_USE_ENVVAR) | |
1150 gtk_widget_hide(table); | |
5440 | 1151 return ret; |
1152 } | |
1153 | |
1154 #ifndef _WIN32 | |
1155 static gboolean manual_browser_set(GtkWidget *entry, GdkEventFocus *event, gpointer data) { | |
1156 const char *program = gtk_entry_get_text(GTK_ENTRY(entry)); | |
1157 | |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1158 gaim_prefs_set_string("/gaim/gtk/browsers/command", program); |
5440 | 1159 |
1160 /* carry on normally */ | |
1161 return FALSE; | |
1162 } | |
1163 | |
5633 | 1164 static GList *get_available_browsers() |
5440 | 1165 { |
1166 struct browser { | |
1167 char *name; | |
1168 char *command; | |
1169 }; | |
1170 | |
1171 static struct browser possible_browsers[] = { | |
9405 | 1172 {N_("Epiphany"), "epiphany"}, |
8267 | 1173 {N_("Firebird"), "mozilla-firebird"}, |
8356 | 1174 {N_("Firefox"), "firefox"}, |
9405 | 1175 {N_("Galeon"), "galeon"}, |
11816
60fcaea41fc0
[gaim-migrate @ 14107]
Richard Laager <rlaager@wiktel.com>
parents:
11811
diff
changeset
|
1176 {N_("GNOME Default"), "gnome-open"}, |
9405 | 1177 {N_("Konqueror"), "kfmclient"}, |
1178 {N_("Mozilla"), "mozilla"}, | |
1179 {N_("Netscape"), "netscape"}, | |
1180 {N_("Opera"), "opera"} | |
5440 | 1181 }; |
9405 | 1182 static const int num_possible_browsers = 9; |
5440 | 1183 |
1184 GList *browsers = NULL; | |
1185 int i = 0; | |
5819 | 1186 char *browser_setting = (char *)gaim_prefs_get_string("/gaim/gtk/browsers/browser"); |
5440 | 1187 |
13106
a0a4b44239e8
[gaim-migrate @ 15468]
Richard Laager <rlaager@wiktel.com>
parents:
13046
diff
changeset
|
1188 browsers = g_list_prepend(browsers, (gpointer)"custom"); |
a0a4b44239e8
[gaim-migrate @ 15468]
Richard Laager <rlaager@wiktel.com>
parents:
13046
diff
changeset
|
1189 browsers = g_list_prepend(browsers, (gpointer)_("Manual")); |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1190 |
5440 | 1191 for (i = 0; i < num_possible_browsers; i++) { |
7108
6faeeecab0dc
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7095
diff
changeset
|
1192 if (gaim_program_is_valid(possible_browsers[i].command)) { |
5633 | 1193 browsers = g_list_prepend(browsers, |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
1194 possible_browsers[i].command); |
13106
a0a4b44239e8
[gaim-migrate @ 15468]
Richard Laager <rlaager@wiktel.com>
parents:
13046
diff
changeset
|
1195 browsers = g_list_prepend(browsers, (gpointer)_(possible_browsers[i].name)); |
5825 | 1196 if(browser_setting && !strcmp(possible_browsers[i].command, browser_setting)) |
5819 | 1197 browser_setting = NULL; |
5440 | 1198 } |
1199 } | |
1200 | |
5819 | 1201 if(browser_setting) |
1202 gaim_prefs_set_string("/gaim/gtk/browsers/browser", "custom"); | |
1203 | |
5440 | 1204 return browsers; |
1205 } | |
1206 | |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1207 static void |
12816 | 1208 browser_changed1_cb(const char *name, GaimPrefType type, |
1209 gconstpointer value, gpointer data) | |
8274 | 1210 { |
1211 GtkWidget *hbox = data; | |
1212 const char *browser = value; | |
1213 | |
1214 gtk_widget_set_sensitive(hbox, strcmp(browser, "custom")); | |
1215 } | |
1216 | |
1217 static void | |
12816 | 1218 browser_changed2_cb(const char *name, GaimPrefType type, |
1219 gconstpointer value, gpointer data) | |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1220 { |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1221 GtkWidget *hbox = data; |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1222 const char *browser = value; |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1223 |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1224 gtk_widget_set_sensitive(hbox, !strcmp(browser, "custom")); |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1225 } |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1226 |
10850 | 1227 static GtkWidget * |
1228 browser_page() | |
1229 { | |
5440 | 1230 GtkWidget *ret; |
1231 GtkWidget *vbox; | |
1232 GtkWidget *hbox; | |
1233 GtkWidget *label; | |
6007 | 1234 GtkWidget *entry; |
5440 | 1235 GtkSizeGroup *sg; |
1236 GList *browsers = NULL; | |
1237 | |
11243 | 1238 ret = gtk_vbox_new(FALSE, GAIM_HIG_CAT_SPACE); |
1239 gtk_container_set_border_width (GTK_CONTAINER (ret), GAIM_HIG_BORDER); | |
5440 | 1240 |
1241 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1242 vbox = gaim_gtk_make_frame (ret, _("Browser Selection")); |
5440 | 1243 |
1244 browsers = get_available_browsers(); | |
1245 if (browsers != NULL) { | |
7987 | 1246 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
|
1247 "/gaim/gtk/browsers/browser", |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1248 browsers); |
11638 | 1249 g_list_free(browsers); |
10973 | 1250 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
5440 | 1251 gtk_size_group_add_widget(sg, label); |
8274 | 1252 |
1253 hbox = gtk_hbox_new(FALSE, 0); | |
1254 label = gaim_gtk_prefs_dropdown(hbox, _("_Open link in:"), GAIM_PREF_INT, | |
1255 "/gaim/gtk/browsers/place", | |
1256 _("Browser default"), GAIM_BROWSER_DEFAULT, | |
1257 _("Existing window"), GAIM_BROWSER_CURRENT, | |
1258 _("New window"), GAIM_BROWSER_NEW_WINDOW, | |
1259 _("New tab"), GAIM_BROWSER_NEW_TAB, | |
1260 NULL); | |
10973 | 1261 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
8274 | 1262 gtk_size_group_add_widget(sg, label); |
1263 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
1264 | |
1265 if (!strcmp(gaim_prefs_get_string("/gaim/gtk/browsers/browser"), "custom")) | |
1266 gtk_widget_set_sensitive(hbox, FALSE); | |
10087 | 1267 gaim_prefs_connect_callback(prefs, "/gaim/gtk/browsers/browser", |
1268 browser_changed1_cb, hbox); | |
5440 | 1269 } |
1270 | |
1271 hbox = gtk_hbox_new(FALSE, 5); | |
1272 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
6031 | 1273 label = gtk_label_new_with_mnemonic(_("_Manual:\n(%s for URL)")); |
5440 | 1274 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); |
1275 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
1276 gtk_size_group_add_widget(sg, label); | |
1277 | |
6007 | 1278 entry = gtk_entry_new(); |
1279 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1280 |
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1281 if (strcmp(gaim_prefs_get_string("/gaim/gtk/browsers/browser"), "custom")) |
5440 | 1282 gtk_widget_set_sensitive(hbox, FALSE); |
10087 | 1283 gaim_prefs_connect_callback(prefs, "/gaim/gtk/browsers/browser", |
1284 browser_changed2_cb, hbox); | |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1285 |
6007 | 1286 gtk_box_pack_start (GTK_BOX (hbox), entry, FALSE, FALSE, 0); |
1287 | |
1288 gtk_entry_set_text(GTK_ENTRY(entry), | |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1289 gaim_prefs_get_string("/gaim/gtk/browsers/command")); |
6007 | 1290 g_signal_connect(G_OBJECT(entry), "focus-out-event", |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1291 G_CALLBACK(manual_browser_set), NULL); |
8188
cd9ea20cd8ed
[gaim-migrate @ 8909]
Christian Hammond <chipx86@chipx86.com>
parents:
8170
diff
changeset
|
1292 gaim_set_accessible_label (entry, label); |
5440 | 1293 |
1294 gtk_widget_show_all(ret); | |
1295 return ret; | |
1296 } | |
1297 #endif /*_WIN32*/ | |
1298 | |
10850 | 1299 static GtkWidget * |
1300 logging_page() | |
1301 { | |
5440 | 1302 GtkWidget *ret; |
1303 GtkWidget *vbox; | |
7431 | 1304 GList *names; |
8573 | 1305 |
11243 | 1306 ret = gtk_vbox_new(FALSE, GAIM_HIG_CAT_SPACE); |
1307 gtk_container_set_border_width (GTK_CONTAINER (ret), GAIM_HIG_BORDER); | |
5440 | 1308 |
11698 | 1309 vbox = gaim_gtk_make_frame (ret, _("Logging")); |
7431 | 1310 names = gaim_log_logger_get_options(); |
1311 | |
12152
cda86ce5b026
[gaim-migrate @ 14453]
Richard Laager <rlaager@wiktel.com>
parents:
12134
diff
changeset
|
1312 gaim_gtk_prefs_dropdown_from_list(vbox, _("Log _format:"), GAIM_PREF_STRING, |
7987 | 1313 "/core/logging/format", names); |
1314 | |
11638 | 1315 g_list_free(names); |
1316 | |
11698 | 1317 gaim_gtk_prefs_checkbox(_("Log all _instant messages"), |
7562
b859cfb5f31a
[gaim-migrate @ 8176]
Christian Hammond <chipx86@chipx86.com>
parents:
7561
diff
changeset
|
1318 "/core/logging/log_ims", vbox); |
7987 | 1319 gaim_gtk_prefs_checkbox(_("Log all c_hats"), |
7562
b859cfb5f31a
[gaim-migrate @ 8176]
Christian Hammond <chipx86@chipx86.com>
parents:
7561
diff
changeset
|
1320 "/core/logging/log_chats", vbox); |
11699 | 1321 gaim_gtk_prefs_checkbox(_("Log all _status changes to system log"), |
11698 | 1322 "/core/logging/log_system", vbox); |
8573 | 1323 |
5440 | 1324 gtk_widget_show_all(ret); |
11698 | 1325 |
5440 | 1326 return ret; |
1327 } | |
1328 | |
1329 #ifndef _WIN32 | |
1330 static gint sound_cmd_yeah(GtkEntry *entry, gpointer d) | |
1331 { | |
5684 | 1332 gaim_prefs_set_string("/gaim/gtk/sound/command", |
6007 | 1333 gtk_entry_get_text(GTK_ENTRY(entry))); |
5440 | 1334 return TRUE; |
1335 } | |
6005 | 1336 |
1337 static void | |
12816 | 1338 sound_changed1_cb(const char *name, GaimPrefType type, |
1339 gconstpointer value, gpointer data) | |
6005 | 1340 { |
1341 GtkWidget *hbox = data; | |
1342 const char *method = value; | |
1343 | |
1344 gtk_widget_set_sensitive(hbox, !strcmp(method, "custom")); | |
1345 } | |
10074 | 1346 |
1347 static void | |
12816 | 1348 sound_changed2_cb(const char *name, GaimPrefType type, |
1349 gconstpointer value, gpointer data) | |
10074 | 1350 { |
1351 GtkWidget *vbox = data; | |
1352 const char *method = value; | |
1353 | |
1354 gtk_widget_set_sensitive(vbox, strcmp(method, "none")); | |
1355 } | |
12815
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1356 |
13718 | 1357 #ifdef USE_GSTREAMER |
12815
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1358 static void |
12816 | 1359 sound_changed3_cb(const char *name, GaimPrefType type, |
1360 gconstpointer value, gpointer data) | |
12815
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1361 { |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1362 GtkWidget *hbox = data; |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1363 const char *method = value; |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1364 |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1365 gtk_widget_set_sensitive(hbox, |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1366 !strcmp(method, "automatic") || |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1367 !strcmp(method, "arts") || |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1368 !strcmp(method, "esd") || |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1369 !strcmp(method, "nas")); |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1370 } |
13718 | 1371 #endif /* USE_GSTREAMER */ |
12845 | 1372 #endif /* !_WIN32 */ |
5440 | 1373 |
9150 | 1374 |
1375 static void | |
1376 event_toggled(GtkCellRendererToggle *cell, gchar *pth, gpointer data) | |
1377 { | |
1378 GtkTreeModel *model = (GtkTreeModel *)data; | |
1379 GtkTreeIter iter; | |
1380 GtkTreePath *path = gtk_tree_path_new_from_string(pth); | |
10930 | 1381 char *pref; |
9150 | 1382 |
1383 gtk_tree_model_get_iter (model, &iter, path); | |
1384 gtk_tree_model_get (model, &iter, | |
1385 2, &pref, | |
1386 -1); | |
1387 | |
1388 gaim_prefs_set_bool(pref, !gtk_cell_renderer_toggle_get_active(cell)); | |
10930 | 1389 g_free(pref); |
9150 | 1390 |
1391 gtk_list_store_set(GTK_LIST_STORE (model), &iter, | |
1392 0, !gtk_cell_renderer_toggle_get_active(cell), | |
1393 -1); | |
1394 | |
1395 gtk_tree_path_free(path); | |
1396 } | |
1397 | |
1398 static void | |
1399 test_sound(GtkWidget *button, gpointer i_am_NULL) | |
1400 { | |
1401 char *pref; | |
11642 | 1402 gboolean temp_value; |
9150 | 1403 |
1404 pref = g_strdup_printf("/gaim/gtk/sound/enabled/%s", | |
1405 gaim_gtk_sound_get_event_option(sound_row_sel)); | |
1406 | |
11642 | 1407 temp_value = gaim_prefs_get_bool(pref); |
1408 | |
1409 if (!temp_value) gaim_prefs_set_bool(pref, TRUE); | |
1410 | |
1411 gaim_sound_play_event(sound_row_sel, NULL); | |
1412 | |
1413 if (!temp_value) gaim_prefs_set_bool(pref, FALSE); | |
9150 | 1414 |
1415 g_free(pref); | |
1416 } | |
1417 | |
9508 | 1418 /* |
1419 * Resets a sound file back to default. | |
1420 */ | |
9150 | 1421 static void |
1422 reset_sound(GtkWidget *button, gpointer i_am_also_NULL) | |
1423 { | |
9508 | 1424 gchar *pref; |
1425 | |
1426 pref = g_strdup_printf("/gaim/gtk/sound/file/%s", | |
1427 gaim_gtk_sound_get_event_option(sound_row_sel)); | |
9150 | 1428 gaim_prefs_set_string(pref, ""); |
1429 g_free(pref); | |
1430 | |
1431 gtk_entry_set_text(GTK_ENTRY(sound_entry), "(default)"); | |
1432 } | |
1433 | |
9508 | 1434 static void |
1435 sound_chosen_cb(void *user_data, const char *filename) | |
9150 | 1436 { |
9508 | 1437 gchar *pref; |
1438 int sound; | |
1439 | |
1440 sound = GPOINTER_TO_INT(user_data); | |
9150 | 1441 |
1442 /* Set it -- and forget it */ | |
1443 pref = g_strdup_printf("/gaim/gtk/sound/file/%s", | |
9508 | 1444 gaim_gtk_sound_get_event_option(sound)); |
1445 gaim_prefs_set_string(pref, filename); | |
9150 | 1446 g_free(pref); |
1447 | |
9508 | 1448 /* |
1449 * If the sound we just changed is still the currently selected | |
1450 * sound, then update the box showing the file name. | |
1451 */ | |
1452 if (sound == sound_row_sel) | |
1453 gtk_entry_set_text(GTK_ENTRY(sound_entry), filename); | |
9150 | 1454 } |
1455 | |
9508 | 1456 static void select_sound(GtkWidget *button, gpointer being_NULL_is_fun) |
9150 | 1457 { |
9508 | 1458 gchar *pref; |
1459 const char *filename; | |
1460 | |
1461 pref = g_strdup_printf("/gaim/gtk/sound/file/%s", | |
1462 gaim_gtk_sound_get_event_option(sound_row_sel)); | |
1463 filename = gaim_prefs_get_string(pref); | |
1464 g_free(pref); | |
1465 | |
1466 if (*filename == '\0') | |
1467 filename = NULL; | |
1468 | |
1469 gaim_request_file(prefs, _("Sound Selection"), filename, FALSE, | |
1470 G_CALLBACK(sound_chosen_cb), NULL, GINT_TO_POINTER(sound_row_sel)); | |
9150 | 1471 } |
1472 | |
13718 | 1473 #ifdef USE_GSTREAMER |
12815
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1474 static gchar* prefs_sound_volume_format(GtkScale *scale, gdouble val) |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1475 { |
13046
1becdaf72e6d
[gaim-migrate @ 15405]
Richard Laager <rlaager@wiktel.com>
parents:
12900
diff
changeset
|
1476 if(val < 15) { |
14035 | 1477 return g_strdup_printf(_("Quietest")); |
13046
1becdaf72e6d
[gaim-migrate @ 15405]
Richard Laager <rlaager@wiktel.com>
parents:
12900
diff
changeset
|
1478 } else if(val < 30) { |
1becdaf72e6d
[gaim-migrate @ 15405]
Richard Laager <rlaager@wiktel.com>
parents:
12900
diff
changeset
|
1479 return g_strdup_printf(_("Quieter")); |
1becdaf72e6d
[gaim-migrate @ 15405]
Richard Laager <rlaager@wiktel.com>
parents:
12900
diff
changeset
|
1480 } else if(val < 45) { |
1becdaf72e6d
[gaim-migrate @ 15405]
Richard Laager <rlaager@wiktel.com>
parents:
12900
diff
changeset
|
1481 return g_strdup_printf(_("Quiet")); |
1becdaf72e6d
[gaim-migrate @ 15405]
Richard Laager <rlaager@wiktel.com>
parents:
12900
diff
changeset
|
1482 } else if(val < 55) { |
1becdaf72e6d
[gaim-migrate @ 15405]
Richard Laager <rlaager@wiktel.com>
parents:
12900
diff
changeset
|
1483 return g_strdup_printf(_("Normal")); |
1becdaf72e6d
[gaim-migrate @ 15405]
Richard Laager <rlaager@wiktel.com>
parents:
12900
diff
changeset
|
1484 } else if(val < 70) { |
1becdaf72e6d
[gaim-migrate @ 15405]
Richard Laager <rlaager@wiktel.com>
parents:
12900
diff
changeset
|
1485 return g_strdup_printf(_("Loud")); |
1becdaf72e6d
[gaim-migrate @ 15405]
Richard Laager <rlaager@wiktel.com>
parents:
12900
diff
changeset
|
1486 } else if(val < 85) { |
1becdaf72e6d
[gaim-migrate @ 15405]
Richard Laager <rlaager@wiktel.com>
parents:
12900
diff
changeset
|
1487 return g_strdup_printf(_("Louder")); |
12815
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1488 } else { |
13046
1becdaf72e6d
[gaim-migrate @ 15405]
Richard Laager <rlaager@wiktel.com>
parents:
12900
diff
changeset
|
1489 return g_strdup_printf(_("Loudest")); |
12815
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1490 } |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1491 } |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1492 |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1493 static void prefs_sound_volume_changed(GtkRange *range) |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1494 { |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1495 int val = (int)gtk_range_get_value(GTK_RANGE(range)); |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1496 gaim_prefs_set_int("/gaim/gtk/sound/volume", val); |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1497 } |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1498 #endif |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1499 |
9508 | 1500 static void prefs_sound_sel(GtkTreeSelection *sel, GtkTreeModel *model) { |
9150 | 1501 GtkTreeIter iter; |
12600
e856f985a0b9
[gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents:
12580
diff
changeset
|
1502 GValue val; |
9150 | 1503 const char *file; |
1504 char *pref; | |
1505 | |
1506 if (! gtk_tree_selection_get_selected (sel, &model, &iter)) | |
1507 return; | |
12600
e856f985a0b9
[gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents:
12580
diff
changeset
|
1508 |
e856f985a0b9
[gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents:
12580
diff
changeset
|
1509 val.g_type = 0; |
9150 | 1510 gtk_tree_model_get_value (model, &iter, 3, &val); |
1511 sound_row_sel = g_value_get_uint(&val); | |
1512 | |
1513 pref = g_strdup_printf("/gaim/gtk/sound/file/%s", | |
1514 gaim_gtk_sound_get_event_option(sound_row_sel)); | |
1515 file = gaim_prefs_get_string(pref); | |
1516 g_free(pref); | |
1517 if (sound_entry) | |
1518 gtk_entry_set_text(GTK_ENTRY(sound_entry), (file && *file != '\0') ? file : "(default)"); | |
1519 g_value_unset (&val); | |
1520 } | |
1521 | |
10850 | 1522 static GtkWidget * |
1523 sound_page() | |
1524 { | |
5440 | 1525 GtkWidget *ret; |
9150 | 1526 GtkWidget *vbox, *sw, *button; |
5440 | 1527 GtkSizeGroup *sg; |
9150 | 1528 GtkTreeIter iter; |
1529 GtkWidget *event_view; | |
1530 GtkListStore *event_store; | |
1531 GtkCellRenderer *rend; | |
1532 GtkTreeViewColumn *col; | |
1533 GtkTreeSelection *sel; | |
1534 GtkTreePath *path; | |
1535 GtkWidget *hbox; | |
1536 int j; | |
1537 const char *file; | |
11082 | 1538 char *pref; |
5440 | 1539 #ifndef _WIN32 |
1540 GtkWidget *dd; | |
1541 GtkWidget *label; | |
6007 | 1542 GtkWidget *entry; |
5684 | 1543 const char *cmd; |
5440 | 1544 #endif |
1545 | |
11243 | 1546 ret = gtk_vbox_new(FALSE, GAIM_HIG_CAT_SPACE); |
1547 gtk_container_set_border_width (GTK_CONTAINER (ret), GAIM_HIG_BORDER); | |
5440 | 1548 |
1549 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); | |
1550 | |
1551 #ifndef _WIN32 | |
6033 | 1552 vbox = gaim_gtk_make_frame (ret, _("Sound Method")); |
7987 | 1553 dd = gaim_gtk_prefs_dropdown(vbox, _("_Method:"), GAIM_PREF_STRING, |
1554 "/gaim/gtk/sound/method", | |
1555 _("Console beep"), "beep", | |
13718 | 1556 #ifdef USE_GSTREAMER |
7987 | 1557 _("Automatic"), "automatic", |
11082 | 1558 "Arts", "arts", |
7987 | 1559 "ESD", "esd", |
1560 "NAS", "nas", | |
5440 | 1561 #endif |
7987 | 1562 _("Command"), "custom", |
10074 | 1563 _("No sounds"), "none", |
7987 | 1564 NULL); |
5440 | 1565 gtk_size_group_add_widget(sg, dd); |
10973 | 1566 gtk_misc_set_alignment(GTK_MISC(dd), 0, 0.5); |
5440 | 1567 |
12815
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1568 hbox = gtk_hbox_new(FALSE, GAIM_HIG_BOX_SPACE); |
11442
73f7cfa46f1b
[gaim-migrate @ 13681]
Richard Laager <rlaager@wiktel.com>
parents:
11424
diff
changeset
|
1569 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
5440 | 1570 |
6031 | 1571 label = gtk_label_new_with_mnemonic(_("Sound c_ommand:\n(%s for filename)")); |
5440 | 1572 gtk_size_group_add_widget(sg, label); |
1573 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
11442
73f7cfa46f1b
[gaim-migrate @ 13681]
Richard Laager <rlaager@wiktel.com>
parents:
11424
diff
changeset
|
1574 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
5440 | 1575 |
6007 | 1576 entry = gtk_entry_new(); |
1577 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
1578 | |
1579 gtk_editable_set_editable(GTK_EDITABLE(entry), TRUE); | |
5684 | 1580 cmd = gaim_prefs_get_string("/gaim/gtk/sound/command"); |
5440 | 1581 if(cmd) |
6007 | 1582 gtk_entry_set_text(GTK_ENTRY(entry), cmd); |
11442
73f7cfa46f1b
[gaim-migrate @ 13681]
Richard Laager <rlaager@wiktel.com>
parents:
11424
diff
changeset
|
1583 |
73f7cfa46f1b
[gaim-migrate @ 13681]
Richard Laager <rlaager@wiktel.com>
parents:
11424
diff
changeset
|
1584 gtk_box_pack_start(GTK_BOX(hbox), entry, TRUE, TRUE, 0); |
6007 | 1585 g_signal_connect(G_OBJECT(entry), "changed", |
5440 | 1586 G_CALLBACK(sound_cmd_yeah), NULL); |
6005 | 1587 |
12815
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1588 gaim_prefs_connect_callback(prefs, "/gaim/gtk/sound/method", |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1589 sound_changed1_cb, hbox); |
6005 | 1590 gtk_widget_set_sensitive(hbox, |
1591 !strcmp(gaim_prefs_get_string("/gaim/gtk/sound/method"), | |
1592 "custom")); | |
1593 | |
8141 | 1594 gaim_set_accessible_label (entry, label); |
5440 | 1595 #endif /* _WIN32 */ |
9150 | 1596 |
10074 | 1597 vbox = gaim_gtk_make_frame (ret, _("Sound Options")); |
1598 gaim_gtk_prefs_checkbox(_("Sounds when conversation has _focus"), | |
1599 "/gaim/gtk/sound/conv_focus", vbox); | |
1600 gaim_gtk_prefs_checkbox(_("_Sounds while away"), | |
1601 "/core/sound/while_away", vbox); | |
1602 | |
13718 | 1603 #ifdef USE_GSTREAMER |
12815
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1604 hbox = gtk_hbox_new(FALSE, GAIM_HIG_BOX_SPACE); |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1605 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 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 label = gtk_label_new_with_mnemonic(_("Volume:")); |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1608 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1609 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1610 |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1611 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
|
1612 gtk_range_set_increments(GTK_RANGE(sw), 5.0, 25.0); |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1613 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
|
1614 g_signal_connect (G_OBJECT (sw), "format-value", |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1615 G_CALLBACK (prefs_sound_volume_format), |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1616 NULL); |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1617 g_signal_connect (G_OBJECT (sw), "value-changed", |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1618 G_CALLBACK (prefs_sound_volume_changed), |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1619 NULL); |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1620 gtk_box_pack_start(GTK_BOX(hbox), sw, TRUE, TRUE, 0); |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1621 |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1622 gaim_prefs_connect_callback(prefs, "/gaim/gtk/sound/method", |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1623 sound_changed3_cb, hbox); |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1624 sound_changed3_cb("/gaim/gtk/sound/method", GAIM_PREF_STRING, |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1625 gaim_prefs_get_string("/gaim/gtk/sound/method"), hbox); |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1626 #endif |
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1627 |
10075 | 1628 #ifndef _WIN32 |
10074 | 1629 gtk_widget_set_sensitive(vbox, |
1630 strcmp(gaim_prefs_get_string("/gaim/gtk/sound/method"), "none")); | |
10087 | 1631 gaim_prefs_connect_callback(prefs, "/gaim/gtk/sound/method", |
1632 sound_changed2_cb, vbox); | |
10075 | 1633 #endif |
10074 | 1634 |
9150 | 1635 vbox = gaim_gtk_make_frame(ret, _("Sound Events")); |
1636 | |
1637 /* The following is an ugly hack to make the frame expand so the | |
1638 * sound events list is big enough to be usable */ | |
1639 gtk_box_set_child_packing(GTK_BOX(vbox->parent), vbox, TRUE, TRUE, 0, | |
1640 GTK_PACK_START); | |
1641 gtk_box_set_child_packing(GTK_BOX(vbox->parent->parent), vbox->parent, TRUE, | |
1642 TRUE, 0, GTK_PACK_START); | |
1643 gtk_box_set_child_packing(GTK_BOX(vbox->parent->parent->parent), | |
1644 vbox->parent->parent, TRUE, TRUE, 0, GTK_PACK_START); | |
1645 | |
1646 sw = gtk_scrolled_window_new(NULL,NULL); | |
1647 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); | |
1648 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); | |
1649 | |
1650 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); | |
1651 event_store = gtk_list_store_new (4, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT); | |
1652 | |
1653 for (j=0; j < GAIM_NUM_SOUNDS; j++) { | |
1654 char *pref = g_strdup_printf("/gaim/gtk/sound/enabled/%s", | |
1655 gaim_gtk_sound_get_event_option(j)); | |
1656 const char *label = gaim_gtk_sound_get_event_label(j); | |
1657 | |
1658 if (label == NULL) { | |
1659 g_free(pref); | |
1660 continue; | |
1661 } | |
1662 | |
1663 gtk_list_store_append (event_store, &iter); | |
1664 gtk_list_store_set(event_store, &iter, | |
1665 0, gaim_prefs_get_bool(pref), | |
1666 1, _(label), | |
1667 2, pref, | |
1668 3, j, | |
1669 -1); | |
1670 g_free(pref); | |
1671 } | |
1672 | |
1673 event_view = gtk_tree_view_new_with_model (GTK_TREE_MODEL(event_store)); | |
1674 | |
1675 rend = gtk_cell_renderer_toggle_new(); | |
1676 sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (event_view)); | |
1677 g_signal_connect (G_OBJECT (sel), "changed", | |
1678 G_CALLBACK (prefs_sound_sel), | |
1679 NULL); | |
1680 g_signal_connect (G_OBJECT(rend), "toggled", | |
1681 G_CALLBACK(event_toggled), event_store); | |
1682 path = gtk_tree_path_new_first(); | |
1683 gtk_tree_selection_select_path(sel, path); | |
1684 gtk_tree_path_free(path); | |
1685 | |
1686 col = gtk_tree_view_column_new_with_attributes (_("Play"), | |
1687 rend, | |
1688 "active", 0, | |
1689 NULL); | |
1690 gtk_tree_view_append_column (GTK_TREE_VIEW(event_view), col); | |
1691 | |
1692 rend = gtk_cell_renderer_text_new(); | |
1693 col = gtk_tree_view_column_new_with_attributes (_("Event"), | |
1694 rend, | |
1695 "text", 1, | |
1696 NULL); | |
1697 gtk_tree_view_append_column (GTK_TREE_VIEW(event_view), col); | |
1698 g_object_unref(G_OBJECT(event_store)); | |
1699 gtk_container_add(GTK_CONTAINER(sw), event_view); | |
1700 | |
11243 | 1701 hbox = gtk_hbox_new(FALSE, GAIM_HIG_BOX_SPACE); |
9150 | 1702 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
1703 sound_entry = gtk_entry_new(); | |
1704 pref = g_strdup_printf("/gaim/gtk/sound/file/%s", | |
1705 gaim_gtk_sound_get_event_option(0)); | |
1706 file = gaim_prefs_get_string(pref); | |
1707 g_free(pref); | |
1708 gtk_entry_set_text(GTK_ENTRY(sound_entry), (file && *file != '\0') ? file : "(default)"); | |
1709 gtk_editable_set_editable(GTK_EDITABLE(sound_entry), FALSE); | |
12815
a8bffa7fb6ac
[gaim-migrate @ 15163]
Richard Laager <rlaager@wiktel.com>
parents:
12812
diff
changeset
|
1710 gtk_box_pack_start(GTK_BOX(hbox), sound_entry, FALSE, FALSE, GAIM_HIG_BOX_SPACE); |
9150 | 1711 |
1712 button = gtk_button_new_with_label(_("Test")); | |
1713 g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(test_sound), NULL); | |
1714 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1); | |
1715 | |
1716 button = gtk_button_new_with_label(_("Reset")); | |
1717 g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(reset_sound), NULL); | |
1718 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1); | |
1719 | |
1720 button = gtk_button_new_with_label(_("Choose...")); | |
9508 | 1721 g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(select_sound), NULL); |
9150 | 1722 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1); |
5440 | 1723 gtk_widget_show_all(ret); |
9118 | 1724 |
5440 | 1725 return ret; |
1726 } | |
1727 | |
12195 | 1728 |
10182 | 1729 static void |
12195 | 1730 set_idle_away(GaimSavedStatus *status) |
10182 | 1731 { |
12195 | 1732 gaim_prefs_set_int("/core/savedstatus/idleaway", gaim_savedstatus_get_creation_time(status)); |
10182 | 1733 } |
1734 | |
12857
e5f780a6137b
[gaim-migrate @ 15208]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
12845
diff
changeset
|
1735 static void |
e5f780a6137b
[gaim-migrate @ 15208]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
12845
diff
changeset
|
1736 set_startupstatus(GaimSavedStatus *status) |
e5f780a6137b
[gaim-migrate @ 15208]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
12845
diff
changeset
|
1737 { |
e5f780a6137b
[gaim-migrate @ 15208]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
12845
diff
changeset
|
1738 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
|
1739 } |
e5f780a6137b
[gaim-migrate @ 15208]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
12845
diff
changeset
|
1740 |
10850 | 1741 static GtkWidget * |
1742 away_page() | |
1743 { | |
5440 | 1744 GtkWidget *ret; |
1745 GtkWidget *vbox; | |
1746 GtkWidget *hbox; | |
12575 | 1747 GtkWidget *dd; |
5440 | 1748 GtkWidget *label; |
1749 GtkWidget *button; | |
1750 GtkWidget *select; | |
12195 | 1751 GtkWidget *menu; |
5440 | 1752 GtkSizeGroup *sg; |
1753 | |
11243 | 1754 ret = gtk_vbox_new(FALSE, GAIM_HIG_CAT_SPACE); |
1755 gtk_container_set_border_width (GTK_CONTAINER (ret), GAIM_HIG_BORDER); | |
5440 | 1756 |
1757 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); | |
1758 | |
12573 | 1759 /* Idle stuff */ |
1760 vbox = gaim_gtk_make_frame(ret, _("Idle")); | |
1761 | |
12812
7e6de7079eeb
[gaim-migrate @ 15160]
Richard Laager <rlaager@wiktel.com>
parents:
12763
diff
changeset
|
1762 dd = gaim_gtk_prefs_dropdown(vbox, _("_Report idle time:"), |
12573 | 1763 GAIM_PREF_STRING, "/core/away/idle_reporting", |
12812
7e6de7079eeb
[gaim-migrate @ 15160]
Richard Laager <rlaager@wiktel.com>
parents:
12763
diff
changeset
|
1764 _("Never"), "none", |
7e6de7079eeb
[gaim-migrate @ 15160]
Richard Laager <rlaager@wiktel.com>
parents:
12763
diff
changeset
|
1765 _("From last sent message"), "gaim", |
13327 | 1766 #if defined(USE_SCREENSAVER) || defined(HAVE_IOKIT) |
12812
7e6de7079eeb
[gaim-migrate @ 15160]
Richard Laager <rlaager@wiktel.com>
parents:
12763
diff
changeset
|
1767 _("Based on keyboard or mouse use"), "system", |
12573 | 1768 #endif |
1769 NULL); | |
12575 | 1770 gtk_size_group_add_widget(sg, dd); |
1771 gtk_misc_set_alignment(GTK_MISC(dd), 0, 0.5); | |
12573 | 1772 |
1773 /* Away stuff */ | |
1774 vbox = gaim_gtk_make_frame(ret, _("Away")); | |
5440 | 1775 |
12575 | 1776 dd = gaim_gtk_prefs_dropdown(vbox, _("_Auto-reply:"), |
9596 | 1777 GAIM_PREF_STRING, "/core/away/auto_reply", |
1778 _("Never"), "never", | |
9736 | 1779 _("When away"), "away", |
10859 | 1780 _("When both away and idle"), "awayidle", |
9596 | 1781 NULL); |
12575 | 1782 gtk_size_group_add_widget(sg, dd); |
1783 gtk_misc_set_alignment(GTK_MISC(dd), 0, 0.5); | |
6142 | 1784 |
12573 | 1785 /* Auto-away stuff */ |
1786 vbox = gaim_gtk_make_frame(ret, _("Auto-away")); | |
11287
fb6e85c55fb8
[gaim-migrate @ 13484]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11275
diff
changeset
|
1787 |
11811 | 1788 button = gaim_gtk_prefs_checkbox(_("Change status when _idle"), |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1789 "/core/away/away_when_idle", vbox); |
8238 | 1790 |
7987 | 1791 select = gaim_gtk_prefs_labeled_spin_button(vbox, |
11811 | 1792 _("_Minutes before changing status:"), "/core/away/mins_before_away", |
7987 | 1793 1, 24 * 60, sg); |
5440 | 1794 g_signal_connect(G_OBJECT(button), "clicked", |
1795 G_CALLBACK(gaim_gtk_toggle_sensitive), select); | |
1796 | |
8238 | 1797 hbox = gtk_hbox_new(FALSE, 0); |
1798 gtk_container_add(GTK_CONTAINER(vbox), hbox); | |
1799 | |
11811 | 1800 label = gtk_label_new_with_mnemonic(_("Change _status to:")); |
5440 | 1801 gtk_size_group_add_widget(sg, label); |
10973 | 1802 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
8238 | 1803 g_signal_connect(G_OBJECT(button), "clicked", |
1804 G_CALLBACK(gaim_gtk_toggle_sensitive), label); | |
5440 | 1805 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
12656 | 1806 |
1807 /* TODO: Show something useful if we don't have any saved statuses. */ | |
12195 | 1808 menu = gaim_gtk_status_menu(gaim_savedstatus_get_idleaway(), G_CALLBACK(set_idle_away)); |
1809 gtk_box_pack_start(GTK_BOX(hbox), menu, FALSE, FALSE, 0); | |
1810 g_signal_connect(G_OBJECT(button), "clicked", | |
1811 G_CALLBACK(gaim_gtk_toggle_sensitive), menu); | |
12575 | 1812 gtk_label_set_mnemonic_widget(GTK_LABEL(label), menu); |
8238 | 1813 |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1814 if (!gaim_prefs_get_bool("/core/away/away_when_idle")) { |
12195 | 1815 gtk_widget_set_sensitive(GTK_WIDGET(menu), FALSE); |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1816 gtk_widget_set_sensitive(GTK_WIDGET(select), FALSE); |
8238 | 1817 gtk_widget_set_sensitive(GTK_WIDGET(label), FALSE); |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1818 } |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1819 |
12857
e5f780a6137b
[gaim-migrate @ 15208]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
12845
diff
changeset
|
1820 /* Signon status stuff */ |
13924 | 1821 vbox = gaim_gtk_make_frame(ret, _("Status at Startup")); |
12857
e5f780a6137b
[gaim-migrate @ 15208]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
12845
diff
changeset
|
1822 |
e5f780a6137b
[gaim-migrate @ 15208]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
12845
diff
changeset
|
1823 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
|
1824 "/core/savedstatus/startup_current_status", vbox); |
e5f780a6137b
[gaim-migrate @ 15208]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
12845
diff
changeset
|
1825 |
e5f780a6137b
[gaim-migrate @ 15208]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
12845
diff
changeset
|
1826 hbox = gtk_hbox_new(FALSE, 0); |
e5f780a6137b
[gaim-migrate @ 15208]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
12845
diff
changeset
|
1827 gtk_container_add(GTK_CONTAINER(vbox), hbox); |
e5f780a6137b
[gaim-migrate @ 15208]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
12845
diff
changeset
|
1828 |
e5f780a6137b
[gaim-migrate @ 15208]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
12845
diff
changeset
|
1829 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
|
1830 gtk_size_group_add_widget(sg, label); |
e5f780a6137b
[gaim-migrate @ 15208]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
12845
diff
changeset
|
1831 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
e5f780a6137b
[gaim-migrate @ 15208]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
12845
diff
changeset
|
1832 g_signal_connect(G_OBJECT(button), "clicked", |
e5f780a6137b
[gaim-migrate @ 15208]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
12845
diff
changeset
|
1833 G_CALLBACK(gaim_gtk_toggle_sensitive), label); |
e5f780a6137b
[gaim-migrate @ 15208]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
12845
diff
changeset
|
1834 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
|
1835 |
e5f780a6137b
[gaim-migrate @ 15208]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
12845
diff
changeset
|
1836 /* 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
|
1837 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
|
1838 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
|
1839 g_signal_connect(G_OBJECT(button), "clicked", |
e5f780a6137b
[gaim-migrate @ 15208]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
12845
diff
changeset
|
1840 G_CALLBACK(gaim_gtk_toggle_sensitive), menu); |
e5f780a6137b
[gaim-migrate @ 15208]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
12845
diff
changeset
|
1841 gtk_label_set_mnemonic_widget(GTK_LABEL(label), menu); |
e5f780a6137b
[gaim-migrate @ 15208]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
12845
diff
changeset
|
1842 |
e5f780a6137b
[gaim-migrate @ 15208]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
12845
diff
changeset
|
1843 if (gaim_prefs_get_bool("/core/savedstatus/startup_current_status")) { |
e5f780a6137b
[gaim-migrate @ 15208]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
12845
diff
changeset
|
1844 gtk_widget_set_sensitive(GTK_WIDGET(menu), FALSE); |
e5f780a6137b
[gaim-migrate @ 15208]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
12845
diff
changeset
|
1845 gtk_widget_set_sensitive(GTK_WIDGET(label), FALSE); |
e5f780a6137b
[gaim-migrate @ 15208]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
12845
diff
changeset
|
1846 } |
e5f780a6137b
[gaim-migrate @ 15208]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
12845
diff
changeset
|
1847 |
5440 | 1848 gtk_widget_show_all(ret); |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1849 |
5440 | 1850 return ret; |
1851 } | |
1852 | |
10759 | 1853 int prefs_notebook_add_page(const char *text, |
5440 | 1854 GdkPixbuf *pixbuf, |
1855 GtkWidget *page, | |
1856 GtkTreeIter *iter, | |
1857 GtkTreeIter *parent, | |
1858 int ind) { | |
1859 GdkPixbuf *icon = NULL; | |
1860 | |
1861 if (pixbuf) | |
1862 icon = gdk_pixbuf_scale_simple (pixbuf, 18, 18, GDK_INTERP_BILINEAR); | |
1863 | |
1864 if (pixbuf) | |
1865 g_object_unref(pixbuf); | |
1866 if (icon) | |
1867 g_object_unref(icon); | |
10759 | 1868 |
11380 | 1869 #if GTK_CHECK_VERSION(2,4,0) |
10759 | 1870 return gtk_notebook_append_page(GTK_NOTEBOOK(prefsnotebook), page, gtk_label_new(text)); |
11380 | 1871 #else |
1872 gtk_notebook_append_page(GTK_NOTEBOOK(prefsnotebook), page, gtk_label_new(text)); | |
1873 return gtk_notebook_page_num(GTK_NOTEBOOK(prefsnotebook), page); | |
1874 #endif | |
5440 | 1875 } |
1876 | |
10871 | 1877 static void prefs_notebook_init() { |
9267 | 1878 GtkTreeIter p, c, c2; |
9150 | 1879 prefs_notebook_add_page(_("Conversations"), NULL, conv_page(), &c, &p, notebook_page++); |
9267 | 1880 prefs_notebook_add_page(_("Smiley Themes"), NULL, theme_page(), &c2, &c, notebook_page++); |
9150 | 1881 prefs_notebook_add_page(_("Sounds"), NULL, sound_page(), &c, &p, notebook_page++); |
8238 | 1882 prefs_notebook_add_page(_("Network"), NULL, network_page(), &p, NULL, notebook_page++); |
5440 | 1883 #ifndef _WIN32 |
1884 /* We use the registered default browser in windows */ | |
10060 | 1885 /* if the user is running gnome 2.x, hide the browsers tab */ |
10061 | 1886 if (gaim_running_gnome() == FALSE) { |
10060 | 1887 prefs_notebook_add_page(_("Browser"), NULL, browser_page(), &p, NULL, notebook_page++); |
1888 } | |
5440 | 1889 #endif |
1890 prefs_notebook_add_page(_("Logging"), NULL, logging_page(), &p, NULL, notebook_page++); | |
1891 prefs_notebook_add_page(_("Away / Idle"), NULL, away_page(), &p, NULL, notebook_page++); | |
1892 } | |
1893 | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1894 void gaim_gtk_prefs_show(void) |
5440 | 1895 { |
10078 | 1896 GtkWidget *vbox; |
8292
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
1897 GtkWidget *bbox; |
5440 | 1898 GtkWidget *notebook; |
1899 GtkWidget *button; | |
1900 | |
1901 if (prefs) { | |
1902 gtk_window_present(GTK_WINDOW(prefs)); | |
1903 return; | |
1904 } | |
1905 | |
1906 /* copy the preferences to tmp values... | |
1907 * I liked "take affect immediately" Oh well :-( */ | |
6016 | 1908 /* (that should have been "effect," right?) */ |
1909 | |
5440 | 1910 /* Back to instant-apply! I win! BU-HAHAHA! */ |
1911 | |
1912 /* Create the window */ | |
1913 prefs = gtk_window_new(GTK_WINDOW_TOPLEVEL); | |
1914 gtk_window_set_role(GTK_WINDOW(prefs), "preferences"); | |
1915 gtk_window_set_title(GTK_WINDOW(prefs), _("Preferences")); | |
1916 gtk_window_set_resizable (GTK_WINDOW(prefs), FALSE); | |
11243 | 1917 gtk_container_set_border_width(GTK_CONTAINER(prefs), GAIM_HIG_BORDER); |
5440 | 1918 g_signal_connect(G_OBJECT(prefs), "destroy", |
1919 G_CALLBACK(delete_prefs), NULL); | |
1920 | |
11243 | 1921 vbox = gtk_vbox_new(FALSE, GAIM_HIG_BORDER); |
5440 | 1922 gtk_container_add(GTK_CONTAINER(prefs), vbox); |
1923 gtk_widget_show(vbox); | |
1924 | |
1925 /* The notebook */ | |
1926 prefsnotebook = notebook = gtk_notebook_new (); | |
10078 | 1927 gtk_box_pack_start (GTK_BOX (vbox), notebook, FALSE, FALSE, 0); |
11740 | 1928 gtk_widget_show(prefsnotebook); |
5440 | 1929 |
8713 | 1930 /* The buttons to press! */ |
8292
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
1931 bbox = gtk_hbutton_box_new(); |
11243 | 1932 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
|
1933 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
|
1934 gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 0); |
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
1935 gtk_widget_show (bbox); |
5440 | 1936 |
1937 button = gtk_button_new_from_stock (GTK_STOCK_CLOSE); | |
1938 g_signal_connect_swapped(G_OBJECT(button), "clicked", | |
1939 G_CALLBACK(gtk_widget_destroy), prefs); | |
8292
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
1940 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); |
5440 | 1941 gtk_widget_show(button); |
1942 | |
1943 prefs_notebook_init(); | |
1944 | |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1945 /* Show everything. */ |
11740 | 1946 gtk_widget_show(prefs); |
5440 | 1947 } |
1948 | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1949 static void |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1950 set_bool_pref(GtkWidget *w, const char *key) |
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 gaim_prefs_set_bool(key, |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1953 gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1954 } |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1955 |
7976 | 1956 GtkWidget * |
7987 | 1957 gaim_gtk_prefs_checkbox(const char *text, const char *key, GtkWidget *page) |
5440 | 1958 { |
1959 GtkWidget *button; | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1960 |
5440 | 1961 button = gtk_check_button_new_with_mnemonic(text); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1962 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1963 gaim_prefs_get_bool(key)); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1964 |
5440 | 1965 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
|
1966 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1967 g_signal_connect(G_OBJECT(button), "clicked", |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
1968 G_CALLBACK(set_bool_pref), (char *)key); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1969 |
5440 | 1970 gtk_widget_show(button); |
1971 | |
1972 return button; | |
1973 } | |
1974 | |
5770
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
1975 static void |
12816 | 1976 smiley_theme_pref_cb(const char *name, GaimPrefType type, |
1977 gconstpointer value, gpointer data) | |
5770
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
1978 { |
11557
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1979 const char *themename = value; |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1980 GSList *themes; |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1981 |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1982 for (themes = smiley_themes; themes; themes = themes->next) { |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1983 struct smiley_theme *smile = themes->data; |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1984 if (smile->name && strcmp(themename, smile->name) == 0) { |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1985 gaim_gtkthemes_load_smiley_theme(smile->path, TRUE); |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1986 break; |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1987 } |
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
1988 } |
5770
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
1989 } |
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
1990 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1991 void |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1992 gaim_gtk_prefs_init(void) |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1993 { |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1994 gaim_prefs_add_none("/gaim"); |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1995 gaim_prefs_add_none("/gaim/gtk"); |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1996 gaim_prefs_add_none("/plugins/gtk"); |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1997 |
8283 | 1998 #ifndef _WIN32 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1999 /* Browsers */ |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2000 gaim_prefs_add_none("/gaim/gtk/browsers"); |
8272 | 2001 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
|
2002 gaim_prefs_add_string("/gaim/gtk/browsers/command", ""); |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
2003 gaim_prefs_add_string("/gaim/gtk/browsers/browser", "mozilla"); |
8283 | 2004 #endif |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2005 |
5949
90d0849abd3c
[gaim-migrate @ 6393]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
2006 /* Plugins */ |
5982
35d3c1ac5ece
[gaim-migrate @ 6430]
Christian Hammond <chipx86@chipx86.com>
parents:
5981
diff
changeset
|
2007 gaim_prefs_add_none("/gaim/gtk/plugins"); |
5949
90d0849abd3c
[gaim-migrate @ 6393]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
2008 gaim_prefs_add_string_list("/gaim/gtk/plugins/loaded", NULL); |
90d0849abd3c
[gaim-migrate @ 6393]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
2009 |
10605 | 2010 /* File locations */ |
2011 gaim_prefs_add_none("/gaim/gtk/filelocations"); | |
2012 gaim_prefs_add_string("/gaim/gtk/filelocations/last_save_folder", ""); | |
2013 gaim_prefs_add_string("/gaim/gtk/filelocations/last_open_folder", ""); | |
2014 gaim_prefs_add_string("/gaim/gtk/filelocations/last_icon_folder", ""); | |
2015 | |
5539
de09863bd4b5
[gaim-migrate @ 5939]
Christian Hammond <chipx86@chipx86.com>
parents:
5535
diff
changeset
|
2016 /* Smiley Themes */ |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
2017 gaim_prefs_add_none("/gaim/gtk/smileys"); |
11557
1e7c0773380f
[gaim-migrate @ 13819]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11550
diff
changeset
|
2018 gaim_prefs_add_string("/gaim/gtk/smileys/theme", "Default"); |
5770
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
2019 |
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
2020 /* Smiley Callbacks */ |
10087 | 2021 gaim_prefs_connect_callback(prefs, "/gaim/gtk/smileys/theme", |
5770
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
2022 smiley_theme_pref_cb, NULL); |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
2023 } |
8905 | 2024 |
2025 void gaim_gtk_prefs_update_old() { | |
2026 /* Rename some old prefs */ | |
2027 gaim_prefs_rename("/gaim/gtk/logging/log_ims", "/core/logging/log_ims"); | |
2028 gaim_prefs_rename("/gaim/gtk/logging/log_chats", "/core/logging/log_chats"); | |
2029 gaim_prefs_rename("/core/conversations/placement", | |
8998 | 2030 "/gaim/gtk/conversations/placement"); |
8905 | 2031 |
10307 | 2032 gaim_prefs_rename("/gaim/gtk/debug/timestamps", "/core/debug/timestamps"); |
10701 | 2033 gaim_prefs_rename("/gaim/gtk/conversations/im/raise_on_events", "/plugins/gtk/X11/notify/method_raise"); |
10307 | 2034 |
11267
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
2035 gaim_prefs_rename_boolean_toggle("/gaim/gtk/conversations/ignore_colors", |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
2036 "/gaim/gtk/conversations/show_incoming_formatting"); |
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
2037 |
12573 | 2038 /* this string pref moved into the core, try to be friendly */ |
2039 gaim_prefs_rename("/gaim/gtk/idle/reporting_method", "/core/away/idle_reporting"); | |
12154 | 2040 |
8905 | 2041 /* Remove some no-longer-used prefs */ |
10398 | 2042 gaim_prefs_remove("/gaim/gtk/blist/auto_expand_contacts"); |
10133 | 2043 gaim_prefs_remove("/gaim/gtk/blist/button_style"); |
10168 | 2044 gaim_prefs_remove("/gaim/gtk/blist/grey_idle_buddies"); |
10133 | 2045 gaim_prefs_remove("/gaim/gtk/blist/raise_on_events"); |
8945 | 2046 gaim_prefs_remove("/gaim/gtk/blist/show_group_count"); |
10353 | 2047 gaim_prefs_remove("/gaim/gtk/blist/show_warning_level"); |
10358 | 2048 gaim_prefs_remove("/gaim/gtk/conversations/button_type"); |
10398 | 2049 gaim_prefs_remove("/gaim/gtk/conversations/ctrl_enter_sends"); |
2050 gaim_prefs_remove("/gaim/gtk/conversations/enter_sends"); | |
11697 | 2051 gaim_prefs_remove("/gaim/gtk/conversations/escape_closes"); |
10164 | 2052 gaim_prefs_remove("/gaim/gtk/conversations/html_shortcuts"); |
8946 | 2053 gaim_prefs_remove("/gaim/gtk/conversations/icons_on_tabs"); |
11267
477e5cca8287
[gaim-migrate @ 13449]
Richard Laager <rlaager@wiktel.com>
parents:
11256
diff
changeset
|
2054 gaim_prefs_remove("/gaim/gtk/conversations/send_formatting"); |
10398 | 2055 gaim_prefs_remove("/gaim/gtk/conversations/show_smileys"); |
8905 | 2056 gaim_prefs_remove("/gaim/gtk/conversations/show_urls_as_links"); |
10164 | 2057 gaim_prefs_remove("/gaim/gtk/conversations/smiley_shortcuts"); |
9025 | 2058 gaim_prefs_remove("/gaim/gtk/conversations/use_custom_bgcolor"); |
2059 gaim_prefs_remove("/gaim/gtk/conversations/use_custom_fgcolor"); | |
11269
1cbe76d30e81
[gaim-migrate @ 13451]
Richard Laager <rlaager@wiktel.com>
parents:
11267
diff
changeset
|
2060 gaim_prefs_remove("/gaim/gtk/conversations/use_custom_font"); |
9025 | 2061 gaim_prefs_remove("/gaim/gtk/conversations/use_custom_size"); |
10398 | 2062 gaim_prefs_remove("/gaim/gtk/conversations/chat/old_tab_complete"); |
2063 gaim_prefs_remove("/gaim/gtk/conversations/chat/tab_completion"); | |
9301 | 2064 gaim_prefs_remove("/gaim/gtk/conversations/im/hide_on_send"); |
10398 | 2065 gaim_prefs_remove("/gaim/gtk/conversations/chat/color_nicks"); |
2066 gaim_prefs_remove("/gaim/gtk/conversations/chat/raise_on_events"); | |
10492 | 2067 gaim_prefs_remove("/gaim/gtk/conversations/ignore_fonts"); |
2068 gaim_prefs_remove("/gaim/gtk/conversations/ignore_font_sizes"); | |
12272 | 2069 gaim_prefs_remove("/gaim/gtk/idle"); |
10398 | 2070 gaim_prefs_remove("/gaim/gtk/logging/individual_logs"); |
2071 gaim_prefs_remove("/gaim/gtk/sound/signon"); | |
2072 gaim_prefs_remove("/gaim/gtk/sound/silent_signon"); | |
12616
eee2042ad4f4
[gaim-migrate @ 14952]
Richard Laager <rlaager@wiktel.com>
parents:
12613
diff
changeset
|
2073 |
eee2042ad4f4
[gaim-migrate @ 14952]
Richard Laager <rlaager@wiktel.com>
parents:
12613
diff
changeset
|
2074 /* Convert old queuing prefs to hide_new 3-way pref. */ |
eee2042ad4f4
[gaim-migrate @ 14952]
Richard Laager <rlaager@wiktel.com>
parents:
12613
diff
changeset
|
2075 if (gaim_prefs_exists("/plugins/gtk/docklet/queue_messages") && |
eee2042ad4f4
[gaim-migrate @ 14952]
Richard Laager <rlaager@wiktel.com>
parents:
12613
diff
changeset
|
2076 gaim_prefs_get_bool("/plugins/gtk/docklet/queue_messages")) |
eee2042ad4f4
[gaim-migrate @ 14952]
Richard Laager <rlaager@wiktel.com>
parents:
12613
diff
changeset
|
2077 { |
eee2042ad4f4
[gaim-migrate @ 14952]
Richard Laager <rlaager@wiktel.com>
parents:
12613
diff
changeset
|
2078 gaim_prefs_set_string("/gaim/gtk/conversations/im/hide_new", "always"); |
eee2042ad4f4
[gaim-migrate @ 14952]
Richard Laager <rlaager@wiktel.com>
parents:
12613
diff
changeset
|
2079 } |
eee2042ad4f4
[gaim-migrate @ 14952]
Richard Laager <rlaager@wiktel.com>
parents:
12613
diff
changeset
|
2080 else if (gaim_prefs_exists("/gaim/gtk/away/queue_messages") && |
eee2042ad4f4
[gaim-migrate @ 14952]
Richard Laager <rlaager@wiktel.com>
parents:
12613
diff
changeset
|
2081 gaim_prefs_get_bool("/gaim/gtk/away/queue_messages")) |
eee2042ad4f4
[gaim-migrate @ 14952]
Richard Laager <rlaager@wiktel.com>
parents:
12613
diff
changeset
|
2082 { |
eee2042ad4f4
[gaim-migrate @ 14952]
Richard Laager <rlaager@wiktel.com>
parents:
12613
diff
changeset
|
2083 gaim_prefs_set_string("/gaim/gtk/conversations/im/hide_new", "away"); |
eee2042ad4f4
[gaim-migrate @ 14952]
Richard Laager <rlaager@wiktel.com>
parents:
12613
diff
changeset
|
2084 } |
12116
e75ef7aa913e
[gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents:
12067
diff
changeset
|
2085 gaim_prefs_remove("/gaim/gtk/away/queue_messages"); |
12281 | 2086 gaim_prefs_remove("/gaim/gtk/away"); |
12116
e75ef7aa913e
[gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents:
12067
diff
changeset
|
2087 gaim_prefs_remove("/plugins/gtk/docklet/queue_messages"); |
8905 | 2088 } |