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