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