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