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