Mercurial > pidgin
annotate src/gtkprefs.c @ 8999:8f838ae3e710
[gaim-migrate @ 9774]
" This patch renames the existing received-*-msg signals
to receiving-*msg to fit the naming of other signals
where a pointer to the message is passed (writing,
sending, displaying)
It adds new received-*-msg signals which are emitted
after the receiving signals, in line with the other
conversation signals (wrote, sent, displayed)
This is necessary to allow plugins which depend on the
final received message to work alongside plugins which
may modify the message.
One known example of this is festival-gaim alongside
gaim-encryption - festival-gaim would try to "speak"
the encrypted text:
http://sf.net/tracker/?func=detail&aid=943216&group_id=89763&atid=591320
I've tested this with gaim-encryption and festival-gaim
(locally modified so gaim-encryption uses the receiving
signal and festival uses the received signal)
All in-tree users of received-*-msg are updated to use
receiving-*-msg if they do modify the message, the
conversation-signals documentation is updated, the
signals-test.c & signal-test.tcl plugins are also updated." --Stu Tomlinson
committer: Tailor Script <tailor@pidgin.im>
author | Luke Schierer <lschiere@pidgin.im> |
---|---|
date | Fri, 21 May 2004 14:33:32 +0000 |
parents | 3738d1eac0ad |
children | b24967757d46 |
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 | |
8994 | 922 label = gaim_gtk_prefs_labeled_spin_button(vbox, _("Number of conversations per window"), |
8979 | 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; | |
8998 | 993 #if 1 /* 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")); |
8998 | 1004 #if 1 /* 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; | |
8998 | 1036 #if 1 /* 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")); |
8998 | 1046 #if 1 /* 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")); |
8152 | 1061 gaim_gtk_prefs_checkbox(_("Co_lorize screen names"), |
7987 | 1062 "/gaim/gtk/conversations/chat/color_nicks", vbox); |
5440 | 1063 |
1064 gtk_widget_show_all(ret); | |
1065 return ret; | |
1066 } | |
1067 | |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1068 static void network_ip_changed(GtkEntry *entry, gpointer data) |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1069 { |
8834 | 1070 gaim_network_set_public_ip(gtk_entry_get_text(entry)); |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1071 } |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1072 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1073 GtkWidget *network_page() { |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1074 GtkWidget *ret; |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1075 GtkWidget *vbox, *entry; |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1076 GtkWidget *table, *label, *auto_ip_checkbox, *ports_checkbox, *spin_button; |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1077 GtkSizeGroup *sg; |
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 ret = gtk_vbox_new(FALSE, 18); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1080 gtk_container_set_border_width (GTK_CONTAINER (ret), 12); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1081 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1082 vbox = gaim_gtk_make_frame (ret, _("IP Address")); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1083 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1084 auto_ip_checkbox = gaim_gtk_prefs_checkbox(_("_Autodetect IP Address"), |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1085 "/core/network/auto_ip", vbox); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1086 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1087 table = gtk_table_new(2, 1, FALSE); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1088 gtk_container_set_border_width(GTK_CONTAINER(table), 5); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1089 gtk_table_set_col_spacings(GTK_TABLE(table), 5); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1090 gtk_table_set_row_spacings(GTK_TABLE(table), 10); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1091 gtk_container_add(GTK_CONTAINER(vbox), table); |
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 label = gtk_label_new_with_mnemonic(_("Public _IP:")); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1094 gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1095 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
|
1096 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1097 entry = gtk_entry_new(); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1098 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1099 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
|
1100 g_signal_connect(G_OBJECT(entry), "changed", |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1101 G_CALLBACK(network_ip_changed), NULL); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1102 |
8834 | 1103 if (gaim_network_get_public_ip() != NULL) |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1104 gtk_entry_set_text(GTK_ENTRY(entry), |
8834 | 1105 gaim_network_get_public_ip()); |
8231
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1106 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1107 gaim_set_accessible_label (entry, label); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1108 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1109 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1110 if (gaim_prefs_get_bool("/core/network/auto_ip")) { |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1111 gtk_widget_set_sensitive(GTK_WIDGET(table), FALSE); |
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 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1114 g_signal_connect(G_OBJECT(auto_ip_checkbox), "clicked", |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1115 G_CALLBACK(gaim_gtk_toggle_sensitive), table); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1116 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1117 vbox = gaim_gtk_make_frame (ret, _("Ports")); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1118 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); |
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 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
|
1121 "/core/network/ports_range_use", vbox); |
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 spin_button = gaim_gtk_prefs_labeled_spin_button(vbox, _("_Start Port:"), |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1124 "/core/network/ports_range_start", 0, 65535, sg); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1125 if (!gaim_prefs_get_bool("/core/network/ports_range_use")) |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1126 gtk_widget_set_sensitive(GTK_WIDGET(spin_button), FALSE); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1127 g_signal_connect(G_OBJECT(ports_checkbox), "clicked", |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1128 G_CALLBACK(gaim_gtk_toggle_sensitive), spin_button); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1129 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1130 spin_button = gaim_gtk_prefs_labeled_spin_button(vbox, _("_End Port:"), |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1131 "/core/network/ports_range_end", 0, 65535, sg); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1132 if (!gaim_prefs_get_bool("/core/network/ports_range_use")) |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1133 gtk_widget_set_sensitive(GTK_WIDGET(spin_button), FALSE); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1134 g_signal_connect(G_OBJECT(ports_checkbox), "clicked", |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1135 G_CALLBACK(gaim_gtk_toggle_sensitive), spin_button); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1136 |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1137 gtk_widget_show_all(ret); |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1138 return ret; |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1139 } |
f50c059b6384
[gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents:
8188
diff
changeset
|
1140 |
6001 | 1141 static void |
1142 proxy_changed_cb(const char *name, GaimPrefType type, gpointer value, | |
7987 | 1143 gpointer data) |
6001 | 1144 { |
1145 GtkWidget *frame = data; | |
1146 const char *proxy = value; | |
1147 | |
6621 | 1148 if (strcmp(proxy, "none") && strcmp(proxy, "envvar")) |
1149 gtk_widget_set_sensitive(frame, TRUE); | |
1150 else | |
1151 gtk_widget_set_sensitive(frame, FALSE); | |
6001 | 1152 } |
1153 | |
6006 | 1154 static void proxy_print_option(GtkEntry *entry, int entrynum) |
1155 { | |
1156 if (entrynum == PROXYHOST) | |
1157 gaim_prefs_set_string("/core/proxy/host", gtk_entry_get_text(entry)); | |
1158 else if (entrynum == PROXYPORT) | |
1159 gaim_prefs_set_int("/core/proxy/port", atoi(gtk_entry_get_text(entry))); | |
1160 else if (entrynum == PROXYUSER) | |
1161 gaim_prefs_set_string("/core/proxy/username", gtk_entry_get_text(entry)); | |
1162 else if (entrynum == PROXYPASS) | |
1163 gaim_prefs_set_string("/core/proxy/password", gtk_entry_get_text(entry)); | |
1164 } | |
1165 | |
5440 | 1166 GtkWidget *proxy_page() { |
1167 GtkWidget *ret; | |
1168 GtkWidget *vbox; | |
1169 GtkWidget *entry; | |
1170 GtkWidget *label; | |
1171 GtkWidget *hbox; | |
1172 GtkWidget *table; | |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1173 GaimProxyInfo *proxy_info; |
5440 | 1174 |
1175 ret = gtk_vbox_new(FALSE, 18); | |
1176 gtk_container_set_border_width (GTK_CONTAINER (ret), 12); | |
1177 | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1178 vbox = gaim_gtk_make_frame (ret, _("Proxy Type")); |
7987 | 1179 gaim_gtk_prefs_dropdown(vbox, _("Proxy _type:"), GAIM_PREF_STRING, |
1180 "/core/proxy/type", | |
1181 _("No proxy"), "none", | |
1182 "SOCKS 4", "socks4", | |
1183 "SOCKS 5", "socks5", | |
1184 "HTTP", "http", | |
1185 _("Use Environmental Settings"), "envvar", | |
1186 NULL); | |
5440 | 1187 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1188 vbox = gaim_gtk_make_frame(ret, _("Proxy Server")); |
5440 | 1189 prefs_proxy_frame = vbox; |
1190 | |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1191 proxy_info = gaim_global_proxy_get_info(); |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1192 |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1193 if (proxy_info == NULL || |
6621 | 1194 gaim_proxy_info_get_type(proxy_info) == GAIM_PROXY_NONE || |
1195 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
|
1196 |
6001 | 1197 gtk_widget_set_sensitive(GTK_WIDGET(prefs_proxy_frame), FALSE); |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1198 } |
6001 | 1199 proxy_pref_id = gaim_prefs_connect_callback("/core/proxy/type", |
1200 proxy_changed_cb, prefs_proxy_frame); | |
1201 | |
5440 | 1202 table = gtk_table_new(2, 4, FALSE); |
1203 gtk_container_set_border_width(GTK_CONTAINER(table), 5); | |
1204 gtk_table_set_col_spacings(GTK_TABLE(table), 5); | |
1205 gtk_table_set_row_spacings(GTK_TABLE(table), 10); | |
1206 gtk_container_add(GTK_CONTAINER(vbox), table); | |
1207 | |
1208 | |
7797 | 1209 label = gtk_label_new_with_mnemonic(_("_Host:")); |
5440 | 1210 gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); |
1211 gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1, GTK_FILL, 0, 0, 0); | |
1212 | |
1213 entry = gtk_entry_new(); | |
1214 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
1215 gtk_table_attach(GTK_TABLE(table), entry, 1, 2, 0, 1, GTK_FILL, 0, 0, 0); | |
1216 g_signal_connect(G_OBJECT(entry), "changed", | |
1217 G_CALLBACK(proxy_print_option), (void *)PROXYHOST); | |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1218 |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1219 if (proxy_info != NULL && gaim_proxy_info_get_host(proxy_info)) |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1220 gtk_entry_set_text(GTK_ENTRY(entry), |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1221 gaim_proxy_info_get_host(proxy_info)); |
5440 | 1222 |
1223 hbox = gtk_hbox_new(TRUE, 5); | |
1224 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
8137 | 1225 gaim_set_accessible_label (entry, label); |
5440 | 1226 |
7870 | 1227 label = gtk_label_new_with_mnemonic(_("_Port:")); |
5440 | 1228 gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); |
1229 gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2, GTK_FILL, 0, 0, 0); | |
1230 | |
1231 entry = gtk_entry_new(); | |
1232 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
1233 gtk_table_attach(GTK_TABLE(table), entry, 1, 2, 1, 2, GTK_FILL, 0, 0, 0); | |
1234 g_signal_connect(G_OBJECT(entry), "changed", | |
1235 G_CALLBACK(proxy_print_option), (void *)PROXYPORT); | |
1236 | |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1237 if (proxy_info != NULL && gaim_proxy_info_get_port(proxy_info) != 0) { |
5440 | 1238 char buf[128]; |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1239 g_snprintf(buf, sizeof(buf), "%d", |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1240 gaim_proxy_info_get_port(proxy_info)); |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1241 |
5440 | 1242 gtk_entry_set_text(GTK_ENTRY(entry), buf); |
1243 } | |
8137 | 1244 gaim_set_accessible_label (entry, label); |
5440 | 1245 |
7797 | 1246 label = gtk_label_new_with_mnemonic(_("_User:")); |
5440 | 1247 gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); |
1248 gtk_table_attach(GTK_TABLE(table), label, 0, 1, 2, 3, GTK_FILL, 0, 0, 0); | |
1249 | |
1250 entry = gtk_entry_new(); | |
1251 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
1252 gtk_table_attach(GTK_TABLE(table), entry, 1, 2, 2, 3, GTK_FILL, 0, 0, 0); | |
1253 g_signal_connect(G_OBJECT(entry), "changed", | |
1254 G_CALLBACK(proxy_print_option), (void *)PROXYUSER); | |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1255 |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1256 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
|
1257 gtk_entry_set_text(GTK_ENTRY(entry), |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1258 gaim_proxy_info_get_username(proxy_info)); |
5440 | 1259 |
1260 hbox = gtk_hbox_new(TRUE, 5); | |
1261 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
8137 | 1262 gaim_set_accessible_label (entry, label); |
5440 | 1263 |
7797 | 1264 label = gtk_label_new_with_mnemonic(_("Pa_ssword:")); |
5440 | 1265 gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); |
1266 gtk_table_attach(GTK_TABLE(table), label, 0, 1, 3, 4, GTK_FILL, 0, 0, 0); | |
1267 | |
1268 entry = gtk_entry_new(); | |
1269 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
1270 gtk_table_attach(GTK_TABLE(table), entry, 1, 2, 3, 4, GTK_FILL , 0, 0, 0); | |
1271 gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE); | |
1272 g_signal_connect(G_OBJECT(entry), "changed", | |
1273 G_CALLBACK(proxy_print_option), (void *)PROXYPASS); | |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1274 |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1275 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
|
1276 gtk_entry_set_text(GTK_ENTRY(entry), |
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
1277 gaim_proxy_info_get_password(proxy_info)); |
8137 | 1278 gaim_set_accessible_label (entry, label); |
5440 | 1279 |
1280 gtk_widget_show_all(ret); | |
1281 return ret; | |
1282 } | |
1283 | |
1284 #ifndef _WIN32 | |
1285 static gboolean manual_browser_set(GtkWidget *entry, GdkEventFocus *event, gpointer data) { | |
1286 const char *program = gtk_entry_get_text(GTK_ENTRY(entry)); | |
1287 | |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1288 gaim_prefs_set_string("/gaim/gtk/browsers/command", program); |
5440 | 1289 |
1290 /* carry on normally */ | |
1291 return FALSE; | |
1292 } | |
1293 | |
5633 | 1294 static GList *get_available_browsers() |
5440 | 1295 { |
1296 struct browser { | |
1297 char *name; | |
1298 char *command; | |
1299 }; | |
1300 | |
1301 static struct browser possible_browsers[] = { | |
5633 | 1302 {N_("Opera"), "opera"}, |
1303 {N_("Netscape"), "netscape"}, | |
1304 {N_("Mozilla"), "mozilla"}, | |
6070 | 1305 {N_("Konqueror"), "kfmclient"}, |
7916 | 1306 {N_("Galeon"), "galeon"}, |
8267 | 1307 {N_("Firebird"), "mozilla-firebird"}, |
8356 | 1308 {N_("Firefox"), "firefox"}, |
1309 {N_("Gnome Default"), "gnome-open"} | |
5440 | 1310 }; |
8356 | 1311 static const int num_possible_browsers = 8; |
5440 | 1312 |
1313 GList *browsers = NULL; | |
1314 int i = 0; | |
5819 | 1315 char *browser_setting = (char *)gaim_prefs_get_string("/gaim/gtk/browsers/browser"); |
5440 | 1316 |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1317 browsers = g_list_prepend(browsers, "custom"); |
5440 | 1318 browsers = g_list_prepend(browsers, _("Manual")); |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1319 |
5440 | 1320 for (i = 0; i < num_possible_browsers; i++) { |
7108
6faeeecab0dc
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7095
diff
changeset
|
1321 if (gaim_program_is_valid(possible_browsers[i].command)) { |
5633 | 1322 browsers = g_list_prepend(browsers, |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
1323 possible_browsers[i].command); |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1324 browsers = g_list_prepend(browsers, _(possible_browsers[i].name)); |
5825 | 1325 if(browser_setting && !strcmp(possible_browsers[i].command, browser_setting)) |
5819 | 1326 browser_setting = NULL; |
5440 | 1327 } |
1328 } | |
1329 | |
5819 | 1330 if(browser_setting) |
1331 gaim_prefs_set_string("/gaim/gtk/browsers/browser", "custom"); | |
1332 | |
5440 | 1333 return browsers; |
1334 } | |
1335 | |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1336 static void |
8274 | 1337 browser_changed1_cb(const char *name, GaimPrefType type, gpointer value, |
1338 gpointer data) | |
1339 { | |
1340 GtkWidget *hbox = data; | |
1341 const char *browser = value; | |
1342 | |
1343 gtk_widget_set_sensitive(hbox, strcmp(browser, "custom")); | |
1344 } | |
1345 | |
1346 static void | |
1347 browser_changed2_cb(const char *name, GaimPrefType type, gpointer value, | |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1348 gpointer data) |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1349 { |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1350 GtkWidget *hbox = data; |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1351 const char *browser = value; |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1352 |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1353 gtk_widget_set_sensitive(hbox, !strcmp(browser, "custom")); |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1354 } |
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
1355 |
5440 | 1356 GtkWidget *browser_page() { |
1357 GtkWidget *ret; | |
1358 GtkWidget *vbox; | |
1359 GtkWidget *hbox; | |
1360 GtkWidget *label; | |
6007 | 1361 GtkWidget *entry; |
5440 | 1362 GtkSizeGroup *sg; |
1363 GList *browsers = NULL; | |
1364 | |
1365 ret = gtk_vbox_new(FALSE, 18); | |
1366 gtk_container_set_border_width (GTK_CONTAINER (ret), 12); | |
1367 | |
1368 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1369 vbox = gaim_gtk_make_frame (ret, _("Browser Selection")); |
5440 | 1370 |
1371 browsers = get_available_browsers(); | |
1372 if (browsers != NULL) { | |
7987 | 1373 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
|
1374 "/gaim/gtk/browsers/browser", |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1375 browsers); |
5440 | 1376 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); |
1377 gtk_size_group_add_widget(sg, label); | |
8274 | 1378 |
1379 hbox = gtk_hbox_new(FALSE, 0); | |
1380 label = gaim_gtk_prefs_dropdown(hbox, _("_Open link in:"), GAIM_PREF_INT, | |
1381 "/gaim/gtk/browsers/place", | |
1382 _("Browser default"), GAIM_BROWSER_DEFAULT, | |
1383 _("Existing window"), GAIM_BROWSER_CURRENT, | |
1384 _("New window"), GAIM_BROWSER_NEW_WINDOW, | |
1385 _("New tab"), GAIM_BROWSER_NEW_TAB, | |
1386 NULL); | |
1387 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
1388 gtk_size_group_add_widget(sg, label); | |
1389 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
1390 | |
1391 if (!strcmp(gaim_prefs_get_string("/gaim/gtk/browsers/browser"), "custom")) | |
1392 gtk_widget_set_sensitive(hbox, FALSE); | |
1393 browser_pref1_id = gaim_prefs_connect_callback("/gaim/gtk/browsers/browser", | |
1394 browser_changed1_cb, hbox); | |
5440 | 1395 } |
1396 | |
1397 hbox = gtk_hbox_new(FALSE, 5); | |
1398 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
6031 | 1399 label = gtk_label_new_with_mnemonic(_("_Manual:\n(%s for URL)")); |
5440 | 1400 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); |
1401 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
1402 gtk_size_group_add_widget(sg, label); | |
1403 | |
6007 | 1404 entry = gtk_entry_new(); |
1405 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1406 |
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1407 if (strcmp(gaim_prefs_get_string("/gaim/gtk/browsers/browser"), "custom")) |
5440 | 1408 gtk_widget_set_sensitive(hbox, FALSE); |
8274 | 1409 browser_pref2_id = gaim_prefs_connect_callback("/gaim/gtk/browsers/browser", |
1410 browser_changed2_cb, hbox); | |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1411 |
6007 | 1412 gtk_box_pack_start (GTK_BOX (hbox), entry, FALSE, FALSE, 0); |
1413 | |
1414 gtk_entry_set_text(GTK_ENTRY(entry), | |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1415 gaim_prefs_get_string("/gaim/gtk/browsers/command")); |
6007 | 1416 g_signal_connect(G_OBJECT(entry), "focus-out-event", |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
1417 G_CALLBACK(manual_browser_set), NULL); |
8188
cd9ea20cd8ed
[gaim-migrate @ 8909]
Christian Hammond <chipx86@chipx86.com>
parents:
8170
diff
changeset
|
1418 gaim_set_accessible_label (entry, label); |
5440 | 1419 |
1420 gtk_widget_show_all(ret); | |
1421 return ret; | |
1422 } | |
1423 #endif /*_WIN32*/ | |
1424 | |
1425 GtkWidget *logging_page() { | |
1426 GtkWidget *ret; | |
1427 GtkWidget *vbox; | |
7431 | 1428 GList *names; |
8573 | 1429 GtkWidget *sys_box; |
1430 GtkWidget *box; | |
1431 int syslog_enabled = gaim_prefs_get_bool("/core/logging/log_system"); | |
1432 | |
5440 | 1433 ret = gtk_vbox_new(FALSE, 18); |
1434 gtk_container_set_border_width (GTK_CONTAINER (ret), 12); | |
1435 | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1436 vbox = gaim_gtk_make_frame (ret, _("Message Logs")); |
7431 | 1437 names = gaim_log_logger_get_options(); |
1438 | |
7987 | 1439 gaim_gtk_prefs_dropdown_from_list(vbox, _("Log _Format:"), GAIM_PREF_STRING, |
1440 "/core/logging/format", names); | |
1441 | |
1442 gaim_gtk_prefs_checkbox(_("_Log all instant messages"), | |
7562
b859cfb5f31a
[gaim-migrate @ 8176]
Christian Hammond <chipx86@chipx86.com>
parents:
7561
diff
changeset
|
1443 "/core/logging/log_ims", vbox); |
7987 | 1444 gaim_gtk_prefs_checkbox(_("Log all c_hats"), |
7562
b859cfb5f31a
[gaim-migrate @ 8176]
Christian Hammond <chipx86@chipx86.com>
parents:
7561
diff
changeset
|
1445 "/core/logging/log_chats", vbox); |
8573 | 1446 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1447 vbox = gaim_gtk_make_frame (ret, _("System Logs")); |
8573 | 1448 |
1449 sys_box = gaim_gtk_prefs_checkbox(_("_Enable system log"), | |
1450 "/core/logging/log_system", vbox); | |
1451 | |
1452 box = gaim_gtk_prefs_checkbox(_("Log when buddies _sign on/sign off"), | |
1453 "/core/logging/log_signon_signoff", vbox); | |
1454 g_signal_connect(G_OBJECT(sys_box), "clicked", | |
1455 G_CALLBACK(gaim_gtk_toggle_sensitive), box); | |
1456 gtk_widget_set_sensitive(box, syslog_enabled); | |
1457 | |
1458 box = gaim_gtk_prefs_checkbox(_("Log when buddies become _idle/un-idle"), | |
1459 "/core/logging/log_idle_state", 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 go away/come _back"), | |
1465 "/core/logging/log_away_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 your _own signons/idleness/awayness"), | |
1471 "/core/logging/log_own_states", 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 | |
5440 | 1476 gtk_widget_show_all(ret); |
1477 return ret; | |
1478 } | |
1479 | |
1480 #ifndef _WIN32 | |
1481 static gint sound_cmd_yeah(GtkEntry *entry, gpointer d) | |
1482 { | |
5684 | 1483 gaim_prefs_set_string("/gaim/gtk/sound/command", |
6007 | 1484 gtk_entry_get_text(GTK_ENTRY(entry))); |
5440 | 1485 return TRUE; |
1486 } | |
6005 | 1487 |
1488 static void | |
1489 sound_changed_cb(const char *name, GaimPrefType type, gpointer value, | |
1490 gpointer data) | |
1491 { | |
1492 GtkWidget *hbox = data; | |
1493 const char *method = value; | |
1494 | |
1495 gtk_widget_set_sensitive(hbox, !strcmp(method, "custom")); | |
1496 } | |
5440 | 1497 #endif |
1498 | |
1499 GtkWidget *sound_page() { | |
1500 GtkWidget *ret; | |
1501 GtkWidget *vbox; | |
1502 GtkSizeGroup *sg; | |
1503 #ifndef _WIN32 | |
1504 GtkWidget *dd; | |
1505 GtkWidget *hbox; | |
1506 GtkWidget *label; | |
6007 | 1507 GtkWidget *entry; |
5684 | 1508 const char *cmd; |
5440 | 1509 #endif |
1510 | |
1511 ret = gtk_vbox_new(FALSE, 18); | |
1512 gtk_container_set_border_width (GTK_CONTAINER (ret), 12); | |
1513 | |
1514 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); | |
1515 | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1516 vbox = gaim_gtk_make_frame (ret, _("Sound Options")); |
8633 | 1517 gaim_gtk_prefs_checkbox(_("Sounds when conversation has _focus"), |
1518 "/gaim/gtk/sound/conv_focus", vbox); | |
7987 | 1519 gaim_gtk_prefs_checkbox(_("_Sounds while away"), |
5684 | 1520 "/core/sound/while_away", vbox); |
5440 | 1521 |
1522 #ifndef _WIN32 | |
6033 | 1523 vbox = gaim_gtk_make_frame (ret, _("Sound Method")); |
7987 | 1524 dd = gaim_gtk_prefs_dropdown(vbox, _("_Method:"), GAIM_PREF_STRING, |
1525 "/gaim/gtk/sound/method", | |
1526 _("Console beep"), "beep", | |
5440 | 1527 #ifdef USE_AO |
7987 | 1528 _("Automatic"), "automatic", |
1529 "ESD", "esd", | |
1530 "Arts", "arts", | |
5440 | 1531 #endif |
1532 #ifdef USE_NAS_AUDIO | |
7987 | 1533 "NAS", "nas", |
5440 | 1534 #endif |
7987 | 1535 _("Command"), "custom", |
1536 NULL); | |
5440 | 1537 gtk_size_group_add_widget(sg, dd); |
1538 gtk_misc_set_alignment(GTK_MISC(dd), 0, 0); | |
1539 | |
1540 hbox = gtk_hbox_new(FALSE, 5); | |
1541 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5); | |
1542 | |
1543 hbox = gtk_hbox_new(FALSE, 5); | |
1544 gtk_container_add(GTK_CONTAINER(vbox), hbox); | |
6031 | 1545 label = gtk_label_new_with_mnemonic(_("Sound c_ommand:\n(%s for filename)")); |
5440 | 1546 gtk_size_group_add_widget(sg, label); |
1547 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
1548 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5); | |
1549 | |
6007 | 1550 entry = gtk_entry_new(); |
1551 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
1552 | |
1553 gtk_editable_set_editable(GTK_EDITABLE(entry), TRUE); | |
5684 | 1554 cmd = gaim_prefs_get_string("/gaim/gtk/sound/command"); |
5440 | 1555 if(cmd) |
6007 | 1556 gtk_entry_set_text(GTK_ENTRY(entry), cmd); |
1557 gtk_widget_set_size_request(entry, 75, -1); | |
1558 | |
1559 gtk_box_pack_start(GTK_BOX(hbox), entry, TRUE, TRUE, 5); | |
1560 g_signal_connect(G_OBJECT(entry), "changed", | |
5440 | 1561 G_CALLBACK(sound_cmd_yeah), NULL); |
6005 | 1562 |
1563 gtk_widget_set_sensitive(hbox, | |
1564 !strcmp(gaim_prefs_get_string("/gaim/gtk/sound/method"), | |
1565 "custom")); | |
1566 sound_pref_id = gaim_prefs_connect_callback("/gaim/gtk/sound/method", | |
1567 sound_changed_cb, hbox); | |
1568 | |
8141 | 1569 gaim_set_accessible_label (entry, label); |
5440 | 1570 #endif /* _WIN32 */ |
1571 gtk_widget_show_all(ret); | |
8137 | 1572 |
5440 | 1573 return ret; |
1574 } | |
1575 | |
1576 GtkWidget *away_page() { | |
1577 GtkWidget *ret; | |
1578 GtkWidget *vbox; | |
1579 GtkWidget *hbox; | |
1580 GtkWidget *label; | |
1581 GtkWidget *button; | |
1582 GtkWidget *select; | |
1583 GtkWidget *dd; | |
1584 GtkSizeGroup *sg; | |
1585 | |
1586 ret = gtk_vbox_new(FALSE, 18); | |
1587 gtk_container_set_border_width (GTK_CONTAINER (ret), 12); | |
1588 | |
1589 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); | |
1590 | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1591 vbox = gaim_gtk_make_frame (ret, _("Away")); |
7987 | 1592 gaim_gtk_prefs_checkbox(_("_Queue new messages when away"), |
5573
5e7de337a053
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5568
diff
changeset
|
1593 "/gaim/gtk/away/queue_messages", vbox); |
5440 | 1594 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1595 vbox = gaim_gtk_make_frame (ret, _("Auto-response")); |
7987 | 1596 gaim_gtk_prefs_checkbox(_("_Send auto-response"), |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1597 "/core/away/auto_response/enabled", vbox); |
7987 | 1598 gaim_gtk_prefs_checkbox(_("_Only send auto-response when idle"), |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1599 "/core/away/auto_response/idle_only", vbox); |
6142 | 1600 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1601 vbox = gaim_gtk_make_frame (ret, _("Idle")); |
7987 | 1602 dd = gaim_gtk_prefs_dropdown(vbox, _("Idle _time reporting:"), |
1603 GAIM_PREF_STRING, "/gaim/gtk/idle/reporting_method", | |
1604 _("None"), "none", | |
1605 _("Gaim usage"), "gaim", | |
5440 | 1606 #ifdef USE_SCREENSAVER |
1607 #ifndef _WIN32 | |
7987 | 1608 _("X usage"), "system", |
5440 | 1609 #else |
7987 | 1610 _("Windows usage"), "system", |
5440 | 1611 #endif |
1612 #endif | |
7987 | 1613 NULL); |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1614 |
5440 | 1615 gtk_size_group_add_widget(sg, dd); |
1616 gtk_misc_set_alignment(GTK_MISC(dd), 0, 0); | |
1617 | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
1618 vbox = gaim_gtk_make_frame (ret, _("Auto-away")); |
7987 | 1619 button = gaim_gtk_prefs_checkbox(_("Set away _when idle"), |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1620 "/core/away/away_when_idle", vbox); |
8238 | 1621 |
7987 | 1622 select = gaim_gtk_prefs_labeled_spin_button(vbox, |
1623 _("_Minutes before setting away:"), "/core/away/mins_before_away", | |
1624 1, 24 * 60, sg); | |
5440 | 1625 g_signal_connect(G_OBJECT(button), "clicked", |
1626 G_CALLBACK(gaim_gtk_toggle_sensitive), select); | |
1627 | |
8238 | 1628 hbox = gtk_hbox_new(FALSE, 0); |
1629 gtk_container_add(GTK_CONTAINER(vbox), hbox); | |
1630 | |
5440 | 1631 label = gtk_label_new_with_mnemonic(_("Away m_essage:")); |
1632 gtk_size_group_add_widget(sg, label); | |
1633 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
8238 | 1634 g_signal_connect(G_OBJECT(button), "clicked", |
1635 G_CALLBACK(gaim_gtk_toggle_sensitive), label); | |
5440 | 1636 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
8238 | 1637 |
5440 | 1638 prefs_away_menu = gtk_option_menu_new(); |
1639 gtk_label_set_mnemonic_widget(GTK_LABEL(label), prefs_away_menu); | |
1640 g_signal_connect(G_OBJECT(button), "clicked", | |
1641 G_CALLBACK(gaim_gtk_toggle_sensitive), prefs_away_menu); | |
1642 default_away_menu_init(prefs_away_menu); | |
1643 gtk_widget_show(prefs_away_menu); | |
1644 gtk_box_pack_start(GTK_BOX(hbox), prefs_away_menu, FALSE, FALSE, 0); | |
8238 | 1645 gaim_set_accessible_label (prefs_away_menu, label); |
1646 | |
5440 | 1647 |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1648 if (!gaim_prefs_get_bool("/core/away/away_when_idle")) { |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1649 gtk_widget_set_sensitive(GTK_WIDGET(select), FALSE); |
8238 | 1650 gtk_widget_set_sensitive(GTK_WIDGET(label), FALSE); |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1651 gtk_widget_set_sensitive(GTK_WIDGET(prefs_away_menu), FALSE); |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1652 } |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1653 |
5440 | 1654 gtk_widget_show_all(ret); |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
1655 |
5440 | 1656 return ret; |
1657 } | |
1658 | |
8170 | 1659 static GtkWidget * |
1660 protocol_page() { | |
1661 GtkWidget *ret; | |
8998 | 1662 |
8170 | 1663 ret = gtk_label_new(NULL); |
1664 gtk_widget_show(ret); | |
8998 | 1665 |
8170 | 1666 return ret; |
1667 } | |
1668 | |
5440 | 1669 static GtkWidget *plugin_description=NULL, *plugin_details=NULL; |
1670 | |
1671 static void prefs_plugin_sel (GtkTreeSelection *sel, GtkTreeModel *model) | |
1672 { | |
1673 gchar *buf, *pname, *perr, *pdesc, *pauth, *pweb; | |
1674 GtkTreeIter iter; | |
1675 GValue val = { 0, }; | |
1676 GaimPlugin *plug; | |
1677 | |
1678 if (! gtk_tree_selection_get_selected (sel, &model, &iter)) | |
1679 return; | |
8104 | 1680 gtk_tree_model_get_value (model, &iter, 3, &val); |
5440 | 1681 plug = g_value_get_pointer(&val); |
8998 | 1682 |
5440 | 1683 pname = g_markup_escape_text(_(plug->info->name), -1); |
1684 pdesc = g_markup_escape_text(_(plug->info->description), -1); | |
1685 pauth = g_markup_escape_text(_(plug->info->author), -1); | |
1686 pweb = g_markup_escape_text(_(plug->info->homepage), -1); | |
1687 if (plug->error != NULL) { | |
1688 perr = g_markup_escape_text(_(plug->error), -1); | |
1689 buf = g_strdup_printf( | |
1690 "<span size=\"larger\">%s %s</span>\n\n" | |
1691 "<span weight=\"bold\" color=\"red\">%s</span>\n\n" | |
1692 "%s", | |
1693 pname, plug->info->version, perr, pdesc); | |
1694 g_free(perr); | |
1695 } | |
1696 else { | |
1697 buf = g_strdup_printf( | |
1698 "<span size=\"larger\">%s %s</span>\n\n%s", | |
1699 pname, plug->info->version, pdesc); | |
1700 } | |
1701 gtk_label_set_markup(GTK_LABEL(plugin_description), buf); | |
1702 g_free(buf); | |
1703 | |
1704 buf = g_strdup_printf( | |
1705 #ifndef _WIN32 | |
1706 _("<span size=\"larger\">%s %s</span>\n\n" | |
1707 "<span weight=\"bold\">Written by:</span>\t%s\n" | |
1708 "<span weight=\"bold\">Web site:</span>\t\t%s\n" | |
1709 "<span weight=\"bold\">File name:</span>\t%s"), | |
1710 #else | |
1711 _("<span size=\"larger\">%s %s</span>\n\n" | |
1712 "<span weight=\"bold\">Written by:</span> %s\n" | |
1713 "<span weight=\"bold\">URL:</span> %s\n" | |
1714 "<span weight=\"bold\">File name:</span> %s"), | |
1715 #endif | |
1716 pname, plug->info->version, pauth, pweb, plug->path); | |
1717 | |
1718 gtk_label_set_markup(GTK_LABEL(plugin_details), buf); | |
1719 g_value_unset(&val); | |
1720 g_free(buf); | |
1721 g_free(pname); | |
1722 g_free(pdesc); | |
1723 g_free(pauth); | |
1724 g_free(pweb); | |
1725 } | |
1726 | |
1727 static void plugin_load (GtkCellRendererToggle *cell, gchar *pth, gpointer data) | |
1728 { | |
1729 GtkTreeModel *model = (GtkTreeModel *)data; | |
1730 GtkTreeIter iter; | |
1731 GtkTreePath *path = gtk_tree_path_new_from_string(pth); | |
1732 GaimPlugin *plug; | |
1733 gchar buf[1024]; | |
6040 | 1734 gchar *name = NULL, *description = NULL; |
6928
6ed0a1c045b4
[gaim-migrate @ 7475]
Christian Hammond <chipx86@chipx86.com>
parents:
6861
diff
changeset
|
1735 |
5440 | 1736 GdkCursor *wait = gdk_cursor_new (GDK_WATCH); |
1737 gdk_window_set_cursor(prefs->window, wait); | |
1738 gdk_cursor_unref(wait); | |
6928
6ed0a1c045b4
[gaim-migrate @ 7475]
Christian Hammond <chipx86@chipx86.com>
parents:
6861
diff
changeset
|
1739 |
5440 | 1740 gtk_tree_model_get_iter (model, &iter, path); |
8104 | 1741 gtk_tree_model_get (model, &iter, 3, &plug, -1); |
6928
6ed0a1c045b4
[gaim-migrate @ 7475]
Christian Hammond <chipx86@chipx86.com>
parents:
6861
diff
changeset
|
1742 |
5440 | 1743 if (!gaim_plugin_is_loaded(plug)) { |
1744 gaim_plugin_load(plug); | |
1745 | |
1746 /* | |
1747 * NOTE: This is basically the same check as before | |
1748 * (plug->type == plugin), but now there aren't plugin types. | |
1749 * Not yet, anyway. I want to do a V2 of the plugin API. | |
1750 * The thing is, we should have a flag specifying the UI type, | |
1751 * or just whether it's a general plugin or a UI-specific | |
1752 * plugin. We should only load this if it's UI-specific. | |
1753 * | |
1754 * -- ChipX86 | |
1755 */ | |
1756 if (GAIM_IS_GTK_PLUGIN(plug)) | |
1757 { | |
1758 GtkWidget *config_frame; | |
1759 GaimGtkPluginUiInfo *ui_info; | |
1760 | |
1761 ui_info = GAIM_GTK_PLUGIN_UI_INFO(plug); | |
1762 config_frame = gaim_gtk_plugin_get_config_frame(plug); | |
1763 | |
1764 if (config_frame != NULL) { | |
1765 ui_info->iter = g_new0(GtkTreeIter, 1); | |
1766 prefs_notebook_add_page(_(plug->info->name), NULL, | |
1767 config_frame, ui_info->iter, | |
1768 &plugin_iter, notebook_page++); | |
1769 | |
1770 if (gtk_tree_model_iter_n_children(GTK_TREE_MODEL(prefstree), | |
1771 &plugin_iter) == 1) { | |
1772 | |
1773 /* Expand the tree for the first plugin added */ | |
1774 GtkTreePath *path2; | |
6928
6ed0a1c045b4
[gaim-migrate @ 7475]
Christian Hammond <chipx86@chipx86.com>
parents:
6861
diff
changeset
|
1775 |
5440 | 1776 path2 = gtk_tree_model_get_path(GTK_TREE_MODEL(prefstree), |
1777 &plugin_iter); | |
1778 gtk_tree_view_expand_row(GTK_TREE_VIEW(tree_v), | |
1779 path2, TRUE); | |
1780 gtk_tree_path_free(path2); | |
1781 } | |
1782 } | |
1783 } | |
8713 | 1784 |
1785 if(GAIM_PLUGIN_HAS_PREF_FRAME(plug)) { | |
8998 | 1786 GtkTreeIter iter; |
8713 | 1787 GtkWidget *pref_frame; |
1788 GaimPluginUiInfo *prefs_info; | |
1789 | |
1790 if(plug->info->type == GAIM_PLUGIN_PROTOCOL) | |
1791 iter = proto_iter; | |
1792 else | |
1793 iter = plugin_iter; | |
1794 | |
1795 prefs_info = GAIM_PLUGIN_UI_INFO(plug); | |
8814 | 1796 prefs_info->frame = prefs_info->get_plugin_pref_frame(plug); |
1797 pref_frame = gaim_gtk_plugin_pref_create_frame(prefs_info->frame); | |
8713 | 1798 |
1799 if(pref_frame != NULL) { | |
1800 prefs_info->iter = g_new0(GtkTreeIter, 1); | |
1801 prefs_notebook_add_page(_(plug->info->name), NULL, | |
1802 pref_frame, prefs_info->iter, | |
1803 &iter, notebook_page++); | |
1804 | |
1805 if(gtk_tree_model_iter_n_children(GTK_TREE_MODEL(prefstree), &iter) == 1) | |
1806 { | |
1807 GtkTreePath *path2; | |
1808 | |
1809 path2 = gtk_tree_model_get_path(GTK_TREE_MODEL(prefstree), &iter); | |
1810 gtk_tree_view_expand_row(GTK_TREE_VIEW(tree_v), path2, TRUE); | |
1811 gtk_tree_path_free(path2); | |
1812 } | |
1813 } | |
1814 } | |
5440 | 1815 } |
1816 else { | |
1817 if (GAIM_IS_GTK_PLUGIN(plug)) { | |
1818 GaimGtkPluginUiInfo *ui_info; | |
1819 | |
1820 ui_info = GAIM_GTK_PLUGIN_UI_INFO(plug); | |
1821 | |
1822 if (ui_info != NULL && ui_info->iter != NULL) { | |
1823 gtk_tree_store_remove(GTK_TREE_STORE(prefstree), ui_info->iter); | |
1824 g_free(ui_info->iter); | |
1825 ui_info->iter = NULL; | |
1826 } | |
8745 | 1827 } |
1828 | |
1829 if (GAIM_PLUGIN_HAS_PREF_FRAME(plug)) { | |
8713 | 1830 GaimPluginUiInfo *prefs_info; |
1831 | |
1832 prefs_info = GAIM_PLUGIN_UI_INFO(plug); | |
1833 | |
8745 | 1834 if(prefs_info != NULL) { |
8814 | 1835 if(prefs_info->frame != NULL) { |
1836 gaim_plugin_pref_frame_destroy(prefs_info->frame); | |
1837 prefs_info->frame = NULL; | |
1838 } | |
1839 | |
8745 | 1840 if(prefs_info->iter != NULL) { |
1841 gtk_tree_store_remove(GTK_TREE_STORE(prefstree), prefs_info->iter); | |
1842 g_free(prefs_info->iter); | |
1843 prefs_info->iter = NULL; | |
1844 } | |
8713 | 1845 } |
5440 | 1846 } |
1847 | |
1848 gaim_plugin_unload(plug); | |
1849 } | |
1850 | |
1851 gdk_window_set_cursor(prefs->window, NULL); | |
1852 | |
6040 | 1853 name = g_markup_escape_text(_(plug->info->name), -1); |
1854 description = g_markup_escape_text(_(plug->info->description), -1); | |
5440 | 1855 if (plug->error != NULL) { |
6040 | 1856 gchar *error = g_markup_escape_text(plug->error, -1); |
5440 | 1857 g_snprintf(buf, sizeof(buf), |
1858 "<span size=\"larger\">%s %s</span>\n\n" | |
1859 "<span weight=\"bold\" color=\"red\">%s</span>\n\n" | |
1860 "%s", | |
6040 | 1861 name, plug->info->version, error, description); |
1862 g_free(error); | |
1863 } else { | |
5440 | 1864 g_snprintf(buf, sizeof(buf), |
1865 "<span size=\"larger\">%s %s</span>\n\n%s", | |
6040 | 1866 name, plug->info->version, description); |
5440 | 1867 } |
6040 | 1868 g_free(name); |
1869 g_free(description); | |
5440 | 1870 |
1871 gtk_label_set_markup(GTK_LABEL(plugin_description), buf); | |
1872 gtk_list_store_set (GTK_LIST_STORE (model), &iter, 0, | |
1873 gaim_plugin_is_loaded(plug), -1); | |
6928
6ed0a1c045b4
[gaim-migrate @ 7475]
Christian Hammond <chipx86@chipx86.com>
parents:
6861
diff
changeset
|
1874 |
5440 | 1875 gtk_label_set_markup(GTK_LABEL(plugin_description), buf); |
1876 gtk_tree_path_free(path); | |
5981
81564bb4db68
[gaim-migrate @ 6429]
Christian Hammond <chipx86@chipx86.com>
parents:
5966
diff
changeset
|
1877 |
81564bb4db68
[gaim-migrate @ 6429]
Christian Hammond <chipx86@chipx86.com>
parents:
5966
diff
changeset
|
1878 gaim_gtk_plugins_save(); |
5440 | 1879 } |
1880 | |
1881 static void | |
1882 update_plugin_list(void *data) | |
1883 { | |
1884 GtkListStore *ls = GTK_LIST_STORE(data); | |
1885 GtkTreeIter iter; | |
1886 GList *probes; | |
1887 GaimPlugin *plug; | |
1888 | |
1889 gtk_list_store_clear(ls); | |
1890 | |
1891 for (probes = gaim_plugins_get_all(); | |
1892 probes != NULL; | |
6928
6ed0a1c045b4
[gaim-migrate @ 7475]
Christian Hammond <chipx86@chipx86.com>
parents:
6861
diff
changeset
|
1893 probes = probes->next) |
6ed0a1c045b4
[gaim-migrate @ 7475]
Christian Hammond <chipx86@chipx86.com>
parents:
6861
diff
changeset
|
1894 { |
5440 | 1895 plug = probes->data; |
1896 | |
6928
6ed0a1c045b4
[gaim-migrate @ 7475]
Christian Hammond <chipx86@chipx86.com>
parents:
6861
diff
changeset
|
1897 if (plug->info->type != GAIM_PLUGIN_STANDARD || |
6930
31c45d99e1a8
[gaim-migrate @ 7477]
Christian Hammond <chipx86@chipx86.com>
parents:
6928
diff
changeset
|
1898 (plug->info->flags & GAIM_PLUGIN_FLAG_INVISIBLE)) |
6928
6ed0a1c045b4
[gaim-migrate @ 7475]
Christian Hammond <chipx86@chipx86.com>
parents:
6861
diff
changeset
|
1899 { |
5440 | 1900 continue; |
6928
6ed0a1c045b4
[gaim-migrate @ 7475]
Christian Hammond <chipx86@chipx86.com>
parents:
6861
diff
changeset
|
1901 } |
5440 | 1902 |
1903 gtk_list_store_append (ls, &iter); | |
1904 gtk_list_store_set(ls, &iter, | |
1905 0, gaim_plugin_is_loaded(plug), | |
6928
6ed0a1c045b4
[gaim-migrate @ 7475]
Christian Hammond <chipx86@chipx86.com>
parents:
6861
diff
changeset
|
1906 1, plug->info->name ? _(plug->info->name) : plug->path, |
8162 | 1907 2, _(plug->info->summary), |
8104 | 1908 3, plug, -1); |
5440 | 1909 } |
1910 } | |
1911 | |
1912 static GtkWidget *plugin_page () | |
1913 { | |
1914 GtkWidget *ret; | |
1915 GtkWidget *sw, *vp; | |
1916 GtkWidget *event_view; | |
1917 GtkListStore *ls; | |
1918 GtkCellRenderer *rend, *rendt; | |
1919 GtkTreeViewColumn *col; | |
1920 GtkTreeSelection *sel; | |
1921 GtkTreePath *path; | |
1922 GtkWidget *nb; | |
1923 | |
1924 ret = gtk_vbox_new(FALSE, 18); | |
1925 gtk_container_set_border_width (GTK_CONTAINER (ret), 12); | |
1926 | |
1927 sw = gtk_scrolled_window_new(NULL,NULL); | |
8104 | 1928 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); |
5440 | 1929 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); |
1930 | |
1931 gtk_box_pack_start(GTK_BOX(ret), sw, TRUE, TRUE, 0); | |
1932 | |
8104 | 1933 ls = gtk_list_store_new (4, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER); |
7939 | 1934 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(ls), |
1935 1, GTK_SORT_ASCENDING); | |
5440 | 1936 |
1937 update_plugin_list(ls); | |
1938 | |
1939 event_view = gtk_tree_view_new_with_model (GTK_TREE_MODEL(ls)); | |
1940 | |
1941 rend = gtk_cell_renderer_toggle_new(); | |
1942 sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (event_view)); | |
1943 | |
1944 col = gtk_tree_view_column_new_with_attributes (_("Load"), | |
1945 rend, | |
1946 "active", 0, | |
1947 NULL); | |
1948 gtk_tree_view_append_column (GTK_TREE_VIEW(event_view), col); | |
1949 | |
1950 rendt = gtk_cell_renderer_text_new(); | |
1951 col = gtk_tree_view_column_new_with_attributes (_("Name"), | |
1952 rendt, | |
1953 "text", 1, | |
1954 NULL); | |
1955 gtk_tree_view_append_column (GTK_TREE_VIEW(event_view), col); | |
8998 | 1956 |
8104 | 1957 rendt = gtk_cell_renderer_text_new(); |
1958 col = gtk_tree_view_column_new_with_attributes(_("Summary"), | |
1959 rendt, | |
1960 "text", 2, | |
1961 NULL); | |
1962 gtk_tree_view_append_column(GTK_TREE_VIEW(event_view), col); | |
8998 | 1963 |
5440 | 1964 g_object_unref(G_OBJECT(ls)); |
1965 gtk_container_add(GTK_CONTAINER(sw), event_view); | |
8998 | 1966 |
5440 | 1967 |
1968 nb = gtk_notebook_new(); | |
1969 gtk_notebook_set_tab_pos (GTK_NOTEBOOK(nb), GTK_POS_BOTTOM); | |
1970 gtk_notebook_popup_disable(GTK_NOTEBOOK(nb)); | |
8998 | 1971 |
5440 | 1972 /* Description */ |
1973 sw = gtk_scrolled_window_new(NULL, NULL); | |
1974 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); | |
1975 plugin_description = gtk_label_new(NULL); | |
8998 | 1976 |
5440 | 1977 vp = gtk_viewport_new(NULL, NULL); |
1978 gtk_viewport_set_shadow_type(GTK_VIEWPORT(vp), GTK_SHADOW_NONE); | |
1979 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_NONE); | |
1980 | |
1981 gtk_container_add(GTK_CONTAINER(vp), plugin_description); | |
1982 gtk_container_add(GTK_CONTAINER(sw), vp); | |
1983 | |
8998 | 1984 gtk_label_set_selectable(GTK_LABEL(plugin_description), TRUE); |
5440 | 1985 gtk_label_set_line_wrap(GTK_LABEL(plugin_description), TRUE); |
1986 gtk_misc_set_alignment(GTK_MISC(plugin_description), 0, 0); | |
1987 gtk_misc_set_padding(GTK_MISC(plugin_description), 6, 6); | |
1988 gtk_notebook_append_page(GTK_NOTEBOOK(nb), sw, gtk_label_new(_("Description"))); | |
1989 | |
1990 /* Details */ | |
1991 sw = gtk_scrolled_window_new(NULL, NULL); | |
1992 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); | |
1993 plugin_details = gtk_label_new(NULL); | |
8998 | 1994 |
5440 | 1995 vp = gtk_viewport_new(NULL, NULL); |
1996 gtk_viewport_set_shadow_type(GTK_VIEWPORT(vp), GTK_SHADOW_NONE); | |
1997 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_NONE); | |
1998 | |
1999 gtk_container_add(GTK_CONTAINER(vp), plugin_details); | |
2000 gtk_container_add(GTK_CONTAINER(sw), vp); | |
2001 | |
8998 | 2002 gtk_label_set_selectable(GTK_LABEL(plugin_details), TRUE); |
5440 | 2003 gtk_label_set_line_wrap(GTK_LABEL(plugin_details), TRUE); |
2004 gtk_misc_set_alignment(GTK_MISC(plugin_details), 0, 0); | |
8998 | 2005 gtk_misc_set_padding(GTK_MISC(plugin_details), 6, 6); |
5440 | 2006 gtk_notebook_append_page(GTK_NOTEBOOK(nb), sw, gtk_label_new(_("Details"))); |
2007 gtk_box_pack_start(GTK_BOX(ret), nb, TRUE, TRUE, 0); | |
2008 | |
2009 g_signal_connect (G_OBJECT (sel), "changed", | |
2010 G_CALLBACK (prefs_plugin_sel), | |
8998 | 2011 NULL); |
5440 | 2012 g_signal_connect (G_OBJECT(rend), "toggled", |
2013 G_CALLBACK(plugin_load), ls); | |
2014 | |
2015 path = gtk_tree_path_new_first(); | |
2016 gtk_tree_selection_select_path(sel, path); | |
2017 gtk_tree_path_free(path); | |
2018 | |
2019 gaim_plugins_register_probe_notify_cb(update_plugin_list, ls); | |
2020 | |
2021 gtk_widget_show_all(ret); | |
2022 return ret; | |
2023 } | |
2024 | |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2025 static void |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2026 event_toggled(GtkCellRendererToggle *cell, gchar *pth, gpointer data) |
5440 | 2027 { |
2028 GtkTreeModel *model = (GtkTreeModel *)data; | |
2029 GtkTreeIter iter; | |
2030 GtkTreePath *path = gtk_tree_path_new_from_string(pth); | |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2031 const char *pref; |
5440 | 2032 |
2033 gtk_tree_model_get_iter (model, &iter, path); | |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2034 gtk_tree_model_get (model, &iter, |
5612 | 2035 2, &pref, |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2036 -1); |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2037 |
5684 | 2038 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
|
2039 |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2040 gtk_list_store_set(GTK_LIST_STORE (model), &iter, |
5612 | 2041 0, !gtk_cell_renderer_toggle_get_active(cell), |
2042 -1); | |
5440 | 2043 |
2044 gtk_tree_path_free(path); | |
2045 } | |
2046 | |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2047 static void |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2048 test_sound(GtkWidget *button, gpointer i_am_NULL) |
5440 | 2049 { |
5684 | 2050 char *pref; |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2051 gboolean temp_value1, temp_value2; |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2052 |
5684 | 2053 pref = g_strdup_printf("/gaim/gtk/sound/enabled/%s", |
2054 gaim_gtk_sound_get_event_option(sound_row_sel)); | |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2055 |
5821 | 2056 temp_value1 = gaim_prefs_get_bool("/core/sound/while_away"); |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2057 temp_value2 = gaim_prefs_get_bool(pref); |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2058 |
5821 | 2059 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
|
2060 if (!temp_value2) gaim_prefs_set_bool(pref, TRUE); |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2061 |
5440 | 2062 gaim_sound_play_event(sound_row_sel); |
2063 | |
5821 | 2064 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
|
2065 if (!temp_value2) gaim_prefs_set_bool(pref, FALSE); |
5684 | 2066 |
2067 g_free(pref); | |
5440 | 2068 } |
2069 | |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2070 static void |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2071 reset_sound(GtkWidget *button, gpointer i_am_also_NULL) |
5440 | 2072 { |
5684 | 2073 char *pref = g_strdup_printf("/gaim/gtk/sound/file/%s", |
2074 gaim_gtk_sound_get_event_option(sound_row_sel)); | |
2075 | |
5440 | 2076 /* This just resets a sound file back to default */ |
5684 | 2077 gaim_prefs_set_string(pref, ""); |
2078 g_free(pref); | |
5440 | 2079 |
2080 gtk_entry_set_text(GTK_ENTRY(sound_entry), "(default)"); | |
2081 } | |
2082 | |
2083 void close_sounddialog(GtkWidget *w, GtkWidget *w2) | |
2084 { | |
2085 | |
2086 GtkWidget *dest; | |
2087 | |
2088 if (!GTK_IS_WIDGET(w2)) | |
2089 dest = w; | |
2090 else | |
2091 dest = w2; | |
2092 | |
2093 sounddialog = NULL; | |
2094 | |
2095 gtk_widget_destroy(dest); | |
2096 } | |
2097 | |
6478
338147ea6896
[gaim-migrate @ 6991]
Christian Hammond <chipx86@chipx86.com>
parents:
6455
diff
changeset
|
2098 void do_select_sound(GtkWidget *w, gpointer data) |
5440 | 2099 { |
2100 const char *file; | |
5684 | 2101 char *pref; |
6478
338147ea6896
[gaim-migrate @ 6991]
Christian Hammond <chipx86@chipx86.com>
parents:
6455
diff
changeset
|
2102 int snd; |
5440 | 2103 |
2104 file = gtk_file_selection_get_filename(GTK_FILE_SELECTION(sounddialog)); | |
6478
338147ea6896
[gaim-migrate @ 6991]
Christian Hammond <chipx86@chipx86.com>
parents:
6455
diff
changeset
|
2105 snd = GPOINTER_TO_INT(data); |
5440 | 2106 |
2107 /* If they type in a directory, change there */ | |
5966 | 2108 if (gaim_gtk_check_if_dir(file, GTK_FILE_SELECTION(sounddialog))) |
5440 | 2109 return; |
2110 | |
2111 /* Set it -- and forget it */ | |
5684 | 2112 pref = g_strdup_printf("/gaim/gtk/sound/file/%s", |
2113 gaim_gtk_sound_get_event_option(snd)); | |
2114 gaim_prefs_set_string(pref, file); | |
2115 g_free(pref); | |
5440 | 2116 |
2117 /* Set our text entry */ | |
2118 gtk_entry_set_text(GTK_ENTRY(sound_entry), file); | |
2119 | |
2120 /* Close the window! It's getting cold in here! */ | |
2121 close_sounddialog(NULL, sounddialog); | |
2122 | |
2123 if (last_sound_dir) | |
2124 g_free(last_sound_dir); | |
2125 last_sound_dir = g_path_get_dirname(file); | |
2126 } | |
2127 | |
2128 static void sel_sound(GtkWidget *button, gpointer being_NULL_is_fun) | |
2129 { | |
2130 char *buf = g_malloc(BUF_LEN); | |
2131 | |
2132 if (!sounddialog) { | |
2133 sounddialog = gtk_file_selection_new(_("Sound Selection")); | |
2134 | |
2135 gtk_file_selection_hide_fileop_buttons(GTK_FILE_SELECTION(sounddialog)); | |
2136 | |
2137 g_snprintf(buf, BUF_LEN - 1, "%s" G_DIR_SEPARATOR_S, last_sound_dir ? last_sound_dir : gaim_home_dir()); | |
2138 | |
2139 gtk_file_selection_set_filename(GTK_FILE_SELECTION(sounddialog), buf); | |
2140 | |
2141 g_signal_connect(G_OBJECT(sounddialog), "destroy", | |
2142 G_CALLBACK(close_sounddialog), sounddialog); | |
2143 | |
2144 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(sounddialog)->ok_button), | |
2145 "clicked", | |
6478
338147ea6896
[gaim-migrate @ 6991]
Christian Hammond <chipx86@chipx86.com>
parents:
6455
diff
changeset
|
2146 G_CALLBACK(do_select_sound), GINT_TO_POINTER(sound_row_sel)); |
5440 | 2147 |
2148 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(sounddialog)->cancel_button), | |
2149 "clicked", | |
2150 G_CALLBACK(close_sounddialog), sounddialog); | |
2151 } | |
2152 | |
2153 g_free(buf); | |
2154 gtk_widget_show(sounddialog); | |
2155 gdk_window_raise(sounddialog->window); | |
2156 } | |
2157 | |
2158 | |
2159 static void prefs_sound_sel (GtkTreeSelection *sel, GtkTreeModel *model) { | |
2160 GtkTreeIter iter; | |
2161 GValue val = { 0, }; | |
5684 | 2162 const char *file; |
2163 char *pref; | |
5440 | 2164 |
2165 if (! gtk_tree_selection_get_selected (sel, &model, &iter)) | |
2166 return; | |
5612 | 2167 gtk_tree_model_get_value (model, &iter, 3, &val); |
5440 | 2168 sound_row_sel = g_value_get_uint(&val); |
5684 | 2169 |
2170 pref = g_strdup_printf("/gaim/gtk/sound/file/%s", | |
2171 gaim_gtk_sound_get_event_option(sound_row_sel)); | |
2172 file = gaim_prefs_get_string(pref); | |
2173 g_free(pref); | |
5440 | 2174 if (sound_entry) |
6088 | 2175 gtk_entry_set_text(GTK_ENTRY(sound_entry), (file && *file != '\0') ? file : "(default)"); |
5440 | 2176 g_value_unset (&val); |
2177 if (sounddialog) | |
2178 gtk_widget_destroy(sounddialog); | |
2179 } | |
2180 | |
2181 GtkWidget *sound_events_page() { | |
2182 | |
2183 GtkWidget *ret; | |
2184 GtkWidget *sw; | |
2185 GtkWidget *button, *hbox; | |
2186 GtkTreeIter iter; | |
2187 GtkWidget *event_view; | |
2188 GtkListStore *event_store; | |
2189 GtkCellRenderer *rend; | |
2190 GtkTreeViewColumn *col; | |
2191 GtkTreeSelection *sel; | |
2192 GtkTreePath *path; | |
2193 int j; | |
5684 | 2194 const char *file; |
2195 char *pref; | |
5440 | 2196 |
2197 ret = gtk_vbox_new(FALSE, 18); | |
2198 gtk_container_set_border_width (GTK_CONTAINER (ret), 12); | |
2199 | |
2200 sw = gtk_scrolled_window_new(NULL,NULL); | |
2201 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); | |
2202 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); | |
2203 | |
2204 gtk_box_pack_start(GTK_BOX(ret), sw, TRUE, TRUE, 0); | |
5612 | 2205 event_store = gtk_list_store_new (4, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT); |
5440 | 2206 |
2207 for (j=0; j < GAIM_NUM_SOUNDS; j++) { | |
5684 | 2208 char *pref = g_strdup_printf("/gaim/gtk/sound/enabled/%s", |
2209 gaim_gtk_sound_get_event_option(j)); | |
2210 const char *label = gaim_gtk_sound_get_event_label(j); | |
2211 | |
5870 | 2212 if (label == NULL) { |
2213 g_free(pref); | |
5440 | 2214 continue; |
5870 | 2215 } |
5440 | 2216 |
2217 gtk_list_store_append (event_store, &iter); | |
2218 gtk_list_store_set(event_store, &iter, | |
5612 | 2219 0, gaim_prefs_get_bool(pref), |
5684 | 2220 1, _(label), |
5612 | 2221 2, pref, |
2222 3, j, | |
2223 -1); | |
5684 | 2224 g_free(pref); |
5440 | 2225 } |
2226 | |
2227 event_view = gtk_tree_view_new_with_model (GTK_TREE_MODEL(event_store)); | |
2228 | |
2229 rend = gtk_cell_renderer_toggle_new(); | |
2230 sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (event_view)); | |
2231 g_signal_connect (G_OBJECT (sel), "changed", | |
2232 G_CALLBACK (prefs_sound_sel), | |
2233 NULL); | |
2234 g_signal_connect (G_OBJECT(rend), "toggled", | |
2235 G_CALLBACK(event_toggled), event_store); | |
2236 path = gtk_tree_path_new_first(); | |
2237 gtk_tree_selection_select_path(sel, path); | |
2238 gtk_tree_path_free(path); | |
2239 | |
2240 col = gtk_tree_view_column_new_with_attributes (_("Play"), | |
2241 rend, | |
2242 "active", 0, | |
2243 NULL); | |
2244 gtk_tree_view_append_column (GTK_TREE_VIEW(event_view), col); | |
2245 | |
2246 rend = gtk_cell_renderer_text_new(); | |
2247 col = gtk_tree_view_column_new_with_attributes (_("Event"), | |
2248 rend, | |
2249 "text", 1, | |
2250 NULL); | |
2251 gtk_tree_view_append_column (GTK_TREE_VIEW(event_view), col); | |
2252 g_object_unref(G_OBJECT(event_store)); | |
2253 gtk_container_add(GTK_CONTAINER(sw), event_view); | |
2254 | |
2255 hbox = gtk_hbox_new(FALSE, 6); | |
2256 gtk_box_pack_start(GTK_BOX(ret), hbox, FALSE, FALSE, 0); | |
2257 sound_entry = gtk_entry_new(); | |
5684 | 2258 pref = g_strdup_printf("/gaim/gtk/sound/file/%s", |
2259 gaim_gtk_sound_get_event_option(0)); | |
2260 file = gaim_prefs_get_string(pref); | |
2261 g_free(pref); | |
6088 | 2262 gtk_entry_set_text(GTK_ENTRY(sound_entry), (file && *file != '\0') ? file : "(default)"); |
5440 | 2263 gtk_editable_set_editable(GTK_EDITABLE(sound_entry), FALSE); |
2264 gtk_box_pack_start(GTK_BOX(hbox), sound_entry, FALSE, FALSE, 5); | |
2265 | |
2266 button = gtk_button_new_with_label(_("Test")); | |
2267 g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(test_sound), NULL); | |
2268 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1); | |
2269 | |
2270 button = gtk_button_new_with_label(_("Reset")); | |
2271 g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(reset_sound), NULL); | |
2272 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1); | |
2273 | |
2274 button = gtk_button_new_with_label(_("Choose...")); | |
2275 g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(sel_sound), NULL); | |
2276 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1); | |
2277 | |
2278 gtk_widget_show_all (ret); | |
2279 | |
2280 return ret; | |
2281 } | |
2282 | |
6979 | 2283 static void away_message_sel_cb(GtkTreeSelection *sel, GtkTreeModel *model) |
5440 | 2284 { |
2285 GtkTreeIter iter; | |
2286 GValue val = { 0, }; | |
2287 gchar buffer[BUF_LONG]; | |
2288 char *tmp; | |
2289 struct away_message *am; | |
2290 | |
2291 if (! gtk_tree_selection_get_selected (sel, &model, &iter)) | |
2292 return; | |
2293 gtk_tree_model_get_value (model, &iter, 1, &val); | |
2294 am = g_value_get_pointer(&val); | |
2295 gtk_imhtml_clear(GTK_IMHTML(away_text)); | |
2296 strncpy(buffer, am->message, BUF_LONG); | |
2297 tmp = stylize(buffer, BUF_LONG); | |
6982 | 2298 gtk_imhtml_append_text(GTK_IMHTML(away_text), tmp, GTK_IMHTML_NO_TITLE | |
5440 | 2299 GTK_IMHTML_NO_COMMENTS | GTK_IMHTML_NO_SCROLL); |
6982 | 2300 gtk_imhtml_append_text(GTK_IMHTML(away_text), "<BR>", GTK_IMHTML_NO_TITLE | |
5440 | 2301 GTK_IMHTML_NO_COMMENTS | GTK_IMHTML_NO_SCROLL); |
2302 g_free(tmp); | |
2303 g_value_unset (&val); | |
2304 | |
2305 } | |
2306 | |
6979 | 2307 static gboolean away_message_click_cb(GtkWidget *tv, GdkEventButton *event, gpointer null) |
2308 { | |
2309 /* Only respond to double click on button 1 */ | |
2310 if ((event->button != 1) || (event->type != GDK_2BUTTON_PRESS)) | |
2311 return FALSE; | |
2312 | |
2313 /* Show the edit away message dialog */ | |
2314 create_away_mess(NULL, tv); | |
2315 | |
2316 return FALSE; | |
2317 } | |
2318 | |
5440 | 2319 void remove_away_message(GtkWidget *widget, GtkTreeView *tv) { |
6016 | 2320 struct away_message *am; |
5440 | 2321 GtkTreeIter iter; |
2322 GtkTreeSelection *sel = gtk_tree_view_get_selection(tv); | |
2323 GtkTreeModel *model = GTK_TREE_MODEL(prefs_away_store); | |
2324 GValue val = { 0, }; | |
2325 | |
2326 if (! gtk_tree_selection_get_selected (sel, &model, &iter)) | |
2327 return; | |
2328 gtk_tree_model_get_value (GTK_TREE_MODEL(prefs_away_store), &iter, 1, &val); | |
2329 am = g_value_get_pointer (&val); | |
2330 gtk_imhtml_clear(GTK_IMHTML(away_text)); | |
2331 rem_away_mess(NULL, am); | |
2332 } | |
2333 | |
2334 GtkWidget *away_message_page() { | |
2335 GtkWidget *ret; | |
2336 GtkWidget *hbox; | |
2337 GtkWidget *button; | |
2338 GtkWidget *sw; | |
2339 GtkTreeIter iter; | |
2340 GtkWidget *event_view; | |
2341 GtkCellRenderer *rend; | |
2342 GtkTreeViewColumn *col; | |
2343 GtkTreeSelection *sel; | |
2344 GSList *awy = away_messages; | |
2345 struct away_message *a; | |
2346 GtkSizeGroup *sg; | |
2347 | |
2348 ret = gtk_vbox_new(FALSE, 18); | |
2349 gtk_container_set_border_width (GTK_CONTAINER (ret), 12); | |
2350 | |
2351 sg = gtk_size_group_new(GTK_SIZE_GROUP_BOTH); | |
2352 | |
2353 sw = gtk_scrolled_window_new(NULL,NULL); | |
7931 | 2354 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); |
7929 | 2355 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); |
5440 | 2356 gtk_box_pack_start(GTK_BOX(ret), sw, TRUE, TRUE, 0); |
2357 | |
7940 | 2358 prefs_away_store = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_POINTER); |
5440 | 2359 while (awy) { |
2360 a = (struct away_message *)awy->data; | |
2361 gtk_list_store_append (prefs_away_store, &iter); | |
2362 gtk_list_store_set(prefs_away_store, &iter, | |
2363 0, a->name, | |
2364 1, a, -1); | |
2365 awy = awy->next; | |
2366 } | |
7939 | 2367 event_view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(prefs_away_store)); |
5440 | 2368 |
2369 rend = gtk_cell_renderer_text_new(); | |
2370 col = gtk_tree_view_column_new_with_attributes ("NULL", | |
2371 rend, | |
2372 "text", 0, | |
2373 NULL); | |
2374 gtk_tree_view_append_column (GTK_TREE_VIEW(event_view), col); | |
2375 gtk_tree_view_set_headers_visible (GTK_TREE_VIEW(event_view), FALSE); | |
2376 gtk_widget_show(event_view); | |
7931 | 2377 gtk_container_add(GTK_CONTAINER(sw), event_view); |
5440 | 2378 |
7929 | 2379 sw = gtk_scrolled_window_new(NULL, NULL); |
7931 | 2380 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); |
7929 | 2381 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), |
5440 | 2382 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); |
7929 | 2383 gtk_box_pack_start(GTK_BOX(ret), sw, TRUE, TRUE, 0); |
2384 | |
2385 away_text = gtk_imhtml_new(NULL, NULL); | |
7931 | 2386 gtk_container_add(GTK_CONTAINER(sw), away_text); |
2387 | |
5440 | 2388 gaim_setup_imhtml(away_text); |
2389 sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (event_view)); | |
6979 | 2390 g_signal_connect(G_OBJECT(sel), "changed", |
2391 G_CALLBACK(away_message_sel_cb), NULL); | |
2392 g_signal_connect(G_OBJECT(event_view), "button-press-event", | |
2393 G_CALLBACK(away_message_click_cb), NULL); | |
5440 | 2394 hbox = gtk_hbox_new(TRUE, 5); |
2395 gtk_box_pack_start(GTK_BOX(ret), hbox, FALSE, FALSE, 0); | |
2396 button = gtk_button_new_from_stock (GTK_STOCK_ADD); | |
2397 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
2398 gtk_size_group_add_widget(sg, button); | |
2399 g_signal_connect(G_OBJECT(button), "clicked", | |
2400 G_CALLBACK(create_away_mess), NULL); | |
2401 | |
2402 button = gtk_button_new_from_stock (GTK_STOCK_REMOVE); | |
2403 gtk_size_group_add_widget(sg, button); | |
2404 g_signal_connect(G_OBJECT(button), "clicked", | |
2405 G_CALLBACK(remove_away_message), event_view); | |
2406 | |
2407 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
2408 | |
2409 button = gaim_pixbuf_button_from_stock(_("_Edit"), GAIM_STOCK_EDIT, GAIM_BUTTON_HORIZONTAL); | |
2410 gtk_size_group_add_widget(sg, button); | |
2411 g_signal_connect(G_OBJECT(button), "clicked", | |
2412 G_CALLBACK(create_away_mess), event_view); | |
2413 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
2414 | |
2415 gtk_widget_show_all(ret); | |
2416 return ret; | |
2417 } | |
2418 | |
2419 GtkTreeIter *prefs_notebook_add_page(const char *text, | |
2420 GdkPixbuf *pixbuf, | |
2421 GtkWidget *page, | |
2422 GtkTreeIter *iter, | |
2423 GtkTreeIter *parent, | |
2424 int ind) { | |
2425 GdkPixbuf *icon = NULL; | |
2426 | |
2427 if (pixbuf) | |
2428 icon = gdk_pixbuf_scale_simple (pixbuf, 18, 18, GDK_INTERP_BILINEAR); | |
2429 | |
2430 gtk_tree_store_append (prefstree, iter, parent); | |
2431 gtk_tree_store_set (prefstree, iter, 0, icon, 1, text, 2, ind, -1); | |
2432 | |
2433 if (pixbuf) | |
2434 g_object_unref(pixbuf); | |
2435 if (icon) | |
2436 g_object_unref(icon); | |
2437 gtk_notebook_append_page(GTK_NOTEBOOK(prefsnotebook), page, gtk_label_new(text)); | |
2438 return iter; | |
2439 } | |
2440 | |
2441 void prefs_notebook_init() { | |
2442 GtkTreeIter p, p2, c; | |
2443 GList *l; | |
2444 GaimPlugin *plug; | |
2445 prefs_notebook_add_page(_("Interface"), NULL, interface_page(), &p, NULL, notebook_page++); | |
2446 prefs_notebook_add_page(_("Smiley Themes"), NULL, theme_page(), &c, &p, notebook_page++); | |
2447 prefs_notebook_add_page(_("Message Text"), NULL, messages_page(), &c, &p, notebook_page++); | |
2448 prefs_notebook_add_page(_("Shortcuts"), NULL, hotkeys_page(), &c, &p, notebook_page++); | |
2449 prefs_notebook_add_page(_("Buddy List"), NULL, list_page(), &c, &p, notebook_page++); | |
2450 prefs_notebook_add_page(_("Conversations"), NULL, conv_page(), &p2, NULL, notebook_page++); | |
2451 prefs_notebook_add_page(_("IMs"), NULL, im_page(), &c, &p2, notebook_page++); | |
2452 prefs_notebook_add_page(_("Chats"), NULL, chat_page(), &c, &p2, notebook_page++); | |
8238 | 2453 prefs_notebook_add_page(_("Network"), NULL, network_page(), &p, NULL, notebook_page++); |
5440 | 2454 prefs_notebook_add_page(_("Proxy"), NULL, proxy_page(), &p, NULL, notebook_page++); |
2455 #ifndef _WIN32 | |
2456 /* We use the registered default browser in windows */ | |
2457 prefs_notebook_add_page(_("Browser"), NULL, browser_page(), &p, NULL, notebook_page++); | |
2458 #endif | |
2459 prefs_notebook_add_page(_("Logging"), NULL, logging_page(), &p, NULL, notebook_page++); | |
2460 prefs_notebook_add_page(_("Sounds"), NULL, sound_page(), &p, NULL, notebook_page++); | |
2461 prefs_notebook_add_page(_("Sound Events"), NULL, sound_events_page(), &c, &p, notebook_page++); | |
2462 prefs_notebook_add_page(_("Away / Idle"), NULL, away_page(), &p, NULL, notebook_page++); | |
2463 prefs_notebook_add_page(_("Away Messages"), NULL, away_message_page(), &c, &p, notebook_page++); | |
2464 | |
2465 if (gaim_plugins_enabled()) { | |
8713 | 2466 prefs_notebook_add_page(_("Protocols"), NULL, protocol_page(), &proto_iter, NULL, notebook_page++); |
5440 | 2467 prefs_notebook_add_page(_("Plugins"), NULL, plugin_page(), &plugin_iter, NULL, notebook_page++); |
2468 | |
2469 for (l = gaim_plugins_get_loaded(); l != NULL; l = l->next) { | |
8713 | 2470 plug = (GaimPlugin *)l->data; |
5440 | 2471 |
2472 if (GAIM_IS_GTK_PLUGIN(plug)) { | |
2473 GtkWidget *config_frame; | |
2474 GaimGtkPluginUiInfo *ui_info; | |
2475 | |
2476 ui_info = GAIM_GTK_PLUGIN_UI_INFO(plug); | |
2477 config_frame = gaim_gtk_plugin_get_config_frame(plug); | |
2478 | |
2479 if (config_frame != NULL) { | |
2480 ui_info->iter = g_new0(GtkTreeIter, 1); | |
2481 prefs_notebook_add_page(_(plug->info->name), NULL, | |
2482 config_frame, ui_info->iter, | |
2483 &plugin_iter, notebook_page++); | |
2484 } | |
2485 } | |
8713 | 2486 |
2487 if(GAIM_PLUGIN_HAS_PREF_FRAME(plug)) { | |
8745 | 2488 GtkWidget *gtk_frame; |
8713 | 2489 GaimPluginUiInfo *prefs_info; |
2490 | |
2491 prefs_info = GAIM_PLUGIN_UI_INFO(plug); | |
8814 | 2492 prefs_info->frame = prefs_info->get_plugin_pref_frame(plug); |
2493 gtk_frame = gaim_gtk_plugin_pref_create_frame(prefs_info->frame); | |
8745 | 2494 |
2495 if(GTK_IS_WIDGET(gtk_frame)) { | |
8713 | 2496 prefs_info->iter = g_new0(GtkTreeIter, 1); |
2497 prefs_notebook_add_page(_(plug->info->name), NULL, | |
8745 | 2498 gtk_frame, prefs_info->iter, |
8713 | 2499 (plug->info->type == GAIM_PLUGIN_PROTOCOL) ? &proto_iter : &plugin_iter, |
2500 notebook_page++); | |
8814 | 2501 } else if(prefs_info->frame) { |
2502 /* in the event that there is a pref frame and we can | |
2503 * not make a widget out of it, we free the | |
2504 * pluginpref frame --Gary | |
2505 */ | |
2506 gaim_plugin_pref_frame_destroy(prefs_info->frame); | |
8713 | 2507 } |
2508 } | |
5440 | 2509 } |
2510 } | |
2511 } | |
2512 | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
2513 void gaim_gtk_prefs_show(void) |
5440 | 2514 { |
2515 GtkWidget *vbox, *vbox2; | |
2516 GtkWidget *hbox; | |
8292
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
2517 GtkWidget *bbox; |
5440 | 2518 GtkWidget *frame; |
8335 | 2519 GtkWidget *scrolled_window; |
5440 | 2520 GtkTreeViewColumn *column; |
2521 GtkCellRenderer *cell; | |
2522 GtkTreeSelection *sel; | |
2523 GtkWidget *notebook; | |
2524 GtkWidget *sep; | |
2525 GtkWidget *button; | |
2526 | |
2527 if (prefs) { | |
2528 gtk_window_present(GTK_WINDOW(prefs)); | |
2529 return; | |
2530 } | |
2531 | |
2532 /* copy the preferences to tmp values... | |
2533 * I liked "take affect immediately" Oh well :-( */ | |
6016 | 2534 /* (that should have been "effect," right?) */ |
2535 | |
5440 | 2536 /* Back to instant-apply! I win! BU-HAHAHA! */ |
2537 | |
2538 /* Create the window */ | |
2539 prefs = gtk_window_new(GTK_WINDOW_TOPLEVEL); | |
2540 gtk_window_set_role(GTK_WINDOW(prefs), "preferences"); | |
2541 gtk_widget_realize(prefs); | |
2542 gtk_window_set_title(GTK_WINDOW(prefs), _("Preferences")); | |
2543 gtk_window_set_resizable (GTK_WINDOW(prefs), FALSE); | |
8292
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
2544 gtk_container_set_border_width(GTK_CONTAINER(prefs), 12); |
5440 | 2545 g_signal_connect(G_OBJECT(prefs), "destroy", |
2546 G_CALLBACK(delete_prefs), NULL); | |
2547 | |
8292
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
2548 vbox = gtk_vbox_new(FALSE, 12); |
5440 | 2549 gtk_container_add(GTK_CONTAINER(prefs), vbox); |
2550 gtk_widget_show(vbox); | |
2551 | |
2552 hbox = gtk_hbox_new (FALSE, 6); | |
2553 gtk_container_add (GTK_CONTAINER(vbox), hbox); | |
2554 gtk_widget_show (hbox); | |
2555 | |
2556 frame = gtk_frame_new (NULL); | |
2557 gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN); | |
2558 gtk_box_pack_start (GTK_BOX (hbox), frame, FALSE, FALSE, 0); | |
2559 gtk_widget_show (frame); | |
2560 | |
8335 | 2561 scrolled_window = gtk_scrolled_window_new(NULL, NULL); |
2562 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window), | |
8340 | 2563 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); |
8335 | 2564 gtk_container_add(GTK_CONTAINER(frame), scrolled_window); |
2565 gtk_widget_show(scrolled_window); | |
8998 | 2566 |
5440 | 2567 /* The tree -- much inspired by the Gimp */ |
2568 prefstree = gtk_tree_store_new (3, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_INT); | |
2569 tree_v = gtk_tree_view_new_with_model (GTK_TREE_MODEL (prefstree)); | |
8335 | 2570 gtk_container_add(GTK_CONTAINER(scrolled_window), tree_v); |
5440 | 2571 |
2572 gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (tree_v), FALSE); | |
2573 gtk_widget_show(tree_v); | |
2574 /* icons */ | |
2575 /* XXX: to be used at a later date | |
2576 cell = gtk_cell_renderer_pixbuf_new (); | |
2577 column = gtk_tree_view_column_new_with_attributes ("icons", cell, "pixbuf", 0, NULL); | |
2578 */ | |
2579 | |
2580 /* text */ | |
2581 cell = gtk_cell_renderer_text_new (); | |
2582 column = gtk_tree_view_column_new_with_attributes ("text", cell, "text", 1, NULL); | |
2583 | |
2584 gtk_tree_view_append_column (GTK_TREE_VIEW (tree_v), column); | |
2585 | |
2586 /* The right side */ | |
2587 frame = gtk_frame_new (NULL); | |
2588 gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN); | |
2589 gtk_box_pack_start (GTK_BOX (hbox), frame, TRUE, TRUE, 0); | |
2590 gtk_widget_show (frame); | |
2591 | |
2592 vbox2 = gtk_vbox_new (FALSE, 4); | |
2593 gtk_container_add (GTK_CONTAINER (frame), vbox2); | |
2594 gtk_widget_show (vbox2); | |
2595 | |
2596 frame = gtk_frame_new (NULL); | |
2597 gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_OUT); | |
2598 gtk_box_pack_start (GTK_BOX (vbox2), frame, FALSE, TRUE, 0); | |
2599 gtk_widget_show (frame); | |
2600 | |
2601 hbox = gtk_hbox_new (FALSE, 4); | |
2602 gtk_container_set_border_width (GTK_CONTAINER (hbox), 4); | |
2603 gtk_container_add (GTK_CONTAINER (frame), hbox); | |
2604 gtk_widget_show (hbox); | |
2605 | |
2606 preflabel = gtk_label_new(NULL); | |
2607 gtk_box_pack_end (GTK_BOX (hbox), preflabel, FALSE, FALSE, 0); | |
2608 gtk_widget_show (preflabel); | |
2609 | |
2610 /* The notebook */ | |
2611 prefsnotebook = notebook = gtk_notebook_new (); | |
2612 gtk_notebook_set_show_tabs (GTK_NOTEBOOK (notebook), FALSE); | |
2613 gtk_notebook_set_show_border (GTK_NOTEBOOK (notebook), FALSE); | |
2614 gtk_box_pack_start (GTK_BOX (vbox2), notebook, FALSE, FALSE, 0); | |
2615 | |
2616 sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_v)); | |
2617 g_signal_connect (G_OBJECT (sel), "changed", | |
2618 G_CALLBACK (pref_nb_select), | |
2619 notebook); | |
2620 gtk_widget_show(notebook); | |
2621 sep = gtk_hseparator_new(); | |
2622 gtk_widget_show(sep); | |
2623 gtk_box_pack_start (GTK_BOX (vbox), sep, FALSE, FALSE, 0); | |
2624 | |
8713 | 2625 /* The buttons to press! */ |
8292
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
2626 bbox = gtk_hbutton_box_new(); |
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
2627 gtk_box_set_spacing(GTK_BOX(bbox), 6); |
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
2628 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
|
2629 gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 0); |
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
2630 gtk_widget_show (bbox); |
5440 | 2631 |
2632 button = gtk_button_new_from_stock (GTK_STOCK_CLOSE); | |
2633 g_signal_connect_swapped(G_OBJECT(button), "clicked", | |
2634 G_CALLBACK(gtk_widget_destroy), prefs); | |
8292
90ed519c6645
[gaim-migrate @ 9016]
Christian Hammond <chipx86@chipx86.com>
parents:
8283
diff
changeset
|
2635 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); |
5440 | 2636 gtk_widget_show(button); |
2637 | |
2638 prefs_notebook_init(); | |
2639 | |
5568
fb4f7bd7525c
[gaim-migrate @ 5970]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
2640 /* Show everything. */ |
5440 | 2641 gtk_tree_view_expand_all (GTK_TREE_VIEW(tree_v)); |
2642 gtk_widget_show(prefs); | |
2643 } | |
2644 | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2645 static void |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2646 set_bool_pref(GtkWidget *w, const char *key) |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2647 { |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2648 gaim_prefs_set_bool(key, |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2649 gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2650 } |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2651 |
7976 | 2652 GtkWidget * |
7987 | 2653 gaim_gtk_prefs_checkbox(const char *text, const char *key, GtkWidget *page) |
5440 | 2654 { |
2655 GtkWidget *button; | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2656 |
5440 | 2657 button = gtk_check_button_new_with_mnemonic(text); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2658 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2659 gaim_prefs_get_bool(key)); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2660 |
5440 | 2661 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
|
2662 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2663 g_signal_connect(G_OBJECT(button), "clicked", |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2664 G_CALLBACK(set_bool_pref), (char *)key); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2665 |
5440 | 2666 gtk_widget_show(button); |
2667 | |
2668 return button; | |
2669 } | |
2670 | |
2671 void default_away_menu_init(GtkWidget *omenu) | |
2672 { | |
2673 GtkWidget *menu, *opt; | |
6216 | 2674 int index = 0, default_index = 0; |
5440 | 2675 GSList *awy = away_messages; |
2676 struct away_message *a; | |
6216 | 2677 const char *default_name; |
5440 | 2678 |
2679 menu = gtk_menu_new(); | |
2680 | |
6216 | 2681 default_name = gaim_prefs_get_string("/core/away/default_message"); |
2682 | |
5440 | 2683 while (awy) { |
2684 a = (struct away_message *)awy->data; | |
2685 opt = gtk_menu_item_new_with_label(a->name); | |
2686 g_signal_connect(G_OBJECT(opt), "activate", | |
6478
338147ea6896
[gaim-migrate @ 6991]
Christian Hammond <chipx86@chipx86.com>
parents:
6455
diff
changeset
|
2687 G_CALLBACK(set_default_away), GINT_TO_POINTER(index)); |
5440 | 2688 gtk_widget_show(opt); |
2689 gtk_menu_shell_append(GTK_MENU_SHELL(menu), opt); | |
2690 | |
6216 | 2691 if(!strcmp(default_name, a->name)) |
2692 default_index = index; | |
2693 | |
5440 | 2694 awy = awy->next; |
2695 index++; | |
2696 } | |
2697 | |
2698 gtk_option_menu_remove_menu(GTK_OPTION_MENU(omenu)); | |
2699 gtk_option_menu_set_menu(GTK_OPTION_MENU(omenu), menu); | |
6216 | 2700 gtk_option_menu_set_history(GTK_OPTION_MENU(omenu), default_index); |
5440 | 2701 } |
2702 | |
2703 GtkWidget *pref_fg_picture = NULL; | |
2704 GtkWidget *pref_bg_picture = NULL; | |
2705 | |
2706 void destroy_colorsel(GtkWidget *w, gpointer d) | |
2707 { | |
2708 if (d) { | |
2709 gtk_widget_destroy(fgcseld); | |
2710 fgcseld = NULL; | |
2711 } else { | |
2712 gtk_widget_destroy(bgcseld); | |
2713 bgcseld = NULL; | |
2714 } | |
2715 } | |
2716 | |
2717 void apply_color_dlg(GtkWidget *w, gpointer d) | |
2718 { | |
5671 | 2719 char buf[14]; |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2720 |
6478
338147ea6896
[gaim-migrate @ 6991]
Christian Hammond <chipx86@chipx86.com>
parents:
6455
diff
changeset
|
2721 if (GPOINTER_TO_INT(d) == 1) { |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2722 GdkColor fgcolor; |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2723 |
5440 | 2724 gtk_color_selection_get_current_color(GTK_COLOR_SELECTION |
2725 (GTK_COLOR_SELECTION_DIALOG(fgcseld)->colorsel), | |
2726 &fgcolor); | |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2727 |
5671 | 2728 g_snprintf(buf, sizeof(buf), "#%04x%04x%04x", |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2729 fgcolor.red, fgcolor.green, fgcolor.blue); |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2730 |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2731 gaim_prefs_set_string("/gaim/gtk/conversations/fgcolor", buf); |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2732 |
5440 | 2733 destroy_colorsel(NULL, (void *)1); |
2734 update_color(NULL, pref_fg_picture); | |
2735 } else { | |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2736 GdkColor bgcolor; |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2737 |
5440 | 2738 gtk_color_selection_get_current_color(GTK_COLOR_SELECTION |
2739 (GTK_COLOR_SELECTION_DIALOG(bgcseld)->colorsel), | |
2740 &bgcolor); | |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2741 |
5671 | 2742 g_snprintf(buf, sizeof(buf), "#%04x%04x%04x", |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2743 bgcolor.red, bgcolor.green, bgcolor.blue); |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2744 |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2745 gaim_prefs_set_string("/gaim/gtk/conversations/bgcolor", buf); |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2746 |
5440 | 2747 destroy_colorsel(NULL, (void *)0); |
2748 update_color(NULL, pref_bg_picture); | |
2749 } | |
2750 gaim_conversation_foreach(gaim_gtkconv_update_font_colors); | |
2751 } | |
2752 | |
6478
338147ea6896
[gaim-migrate @ 6991]
Christian Hammond <chipx86@chipx86.com>
parents:
6455
diff
changeset
|
2753 void set_default_away(GtkWidget *w, gpointer data) |
5440 | 2754 { |
6216 | 2755 struct away_message *default_away = NULL; |
5440 | 2756 int length = g_slist_length(away_messages); |
6478
338147ea6896
[gaim-migrate @ 6991]
Christian Hammond <chipx86@chipx86.com>
parents:
6455
diff
changeset
|
2757 int i = GPOINTER_TO_INT(data); |
5440 | 2758 |
2759 if (away_messages == NULL) | |
2760 default_away = NULL; | |
6478
338147ea6896
[gaim-migrate @ 6991]
Christian Hammond <chipx86@chipx86.com>
parents:
6455
diff
changeset
|
2761 else if (i >= length) |
5440 | 2762 default_away = g_slist_nth_data(away_messages, length - 1); |
2763 else | |
6478
338147ea6896
[gaim-migrate @ 6991]
Christian Hammond <chipx86@chipx86.com>
parents:
6455
diff
changeset
|
2764 default_away = g_slist_nth_data(away_messages, i); |
6216 | 2765 |
2766 if(default_away) | |
2767 gaim_prefs_set_string("/core/away/default_message", default_away->name); | |
2768 else | |
2769 gaim_prefs_set_string("/core/away/default_message", ""); | |
5440 | 2770 } |
2771 | |
8881 | 2772 #if 0 /* PREFSLASH04 */ |
5440 | 2773 static GtkWidget *show_color_pref(GtkWidget *box, gboolean fgc) |
2774 { | |
2775 /* more stuff stolen from X-Chat */ | |
2776 GtkWidget *swid; | |
2777 GdkColor c; | |
2778 GtkStyle *style; | |
2779 c.pixel = 0; | |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2780 |
5440 | 2781 if (fgc) { |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2782 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
|
2783 GdkColor fgcolor; |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2784 |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2785 gdk_color_parse( |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2786 gaim_prefs_get_string("/gaim/gtk/conversations/fgcolor"), |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2787 &fgcolor); |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2788 |
5440 | 2789 c.red = fgcolor.red; |
2790 c.blue = fgcolor.blue; | |
2791 c.green = fgcolor.green; | |
2792 } else { | |
2793 c.red = 0; | |
2794 c.blue = 0; | |
2795 c.green = 0; | |
2796 } | |
2797 } else { | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2798 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
|
2799 GdkColor bgcolor; |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2800 |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2801 gdk_color_parse( |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2802 gaim_prefs_get_string("/gaim/gtk/conversations/bgcolor"), |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2803 &bgcolor); |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2804 |
5440 | 2805 c.red = bgcolor.red; |
2806 c.blue = bgcolor.blue; | |
2807 c.green = bgcolor.green; | |
2808 } else { | |
2809 c.red = 0xffff; | |
2810 c.blue = 0xffff; | |
2811 c.green = 0xffff; | |
2812 } | |
2813 } | |
2814 | |
2815 style = gtk_style_new(); | |
2816 style->bg[0] = c; | |
2817 | |
2818 swid = gtk_event_box_new(); | |
2819 gtk_widget_set_style(GTK_WIDGET(swid), style); | |
2820 g_object_unref(style); | |
2821 gtk_widget_set_size_request(GTK_WIDGET(swid), 40, -1); | |
2822 gtk_box_pack_start(GTK_BOX(box), swid, FALSE, FALSE, 5); | |
2823 gtk_widget_show(swid); | |
2824 return swid; | |
2825 } | |
8881 | 2826 #endif /* PREFSLASH04 */ |
5440 | 2827 |
2828 void apply_font_dlg(GtkWidget *w, GtkWidget *f) | |
2829 { | |
7079 | 2830 char *fontname, *space; |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2831 |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2832 fontname = |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2833 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
|
2834 |
5440 | 2835 destroy_fontsel(0, 0); |
2836 | |
7079 | 2837 space = strrchr(fontname, ' '); |
2838 if(space && isdigit(*(space+1))) | |
2839 *space = '\0'; | |
5440 | 2840 |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2841 gaim_prefs_set_string("/gaim/gtk/conversations/font_face", fontname); |
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
2842 |
5440 | 2843 g_free(fontname); |
2844 | |
2845 gaim_conversation_foreach(gaim_gtkconv_update_font_face); | |
2846 } | |
2847 | |
5770
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
2848 static void |
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
2849 smiley_theme_pref_cb(const char *name, GaimPrefType type, gpointer value, |
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
2850 gpointer data) |
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
2851 { |
5841 | 2852 if (!strcmp(name, "/gaim/gtk/smileys/theme")) |
5771
f63a008726c6
[gaim-migrate @ 6196]
Christian Hammond <chipx86@chipx86.com>
parents:
5770
diff
changeset
|
2853 load_smiley_theme((const char *)value, TRUE); |
5770
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
2854 } |
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
2855 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
2856 void |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
2857 gaim_gtk_prefs_init(void) |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
2858 { |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
2859 gaim_prefs_add_none("/gaim"); |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
2860 gaim_prefs_add_none("/gaim/gtk"); |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
2861 gaim_prefs_add_none("/plugins/gtk"); |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
2862 |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
2863 /* XXX Move this! HACK! :( Aww... */ |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
2864 gaim_prefs_add_none("/plugins/gtk/docklet"); |
5554
7b36d02031a2
[gaim-migrate @ 5955]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2865 gaim_prefs_add_bool("/plugins/gtk/docklet/queue_messages", FALSE); |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
2866 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
2867 /* Accounts Dialog */ |
5567
cc9ddec20010
[gaim-migrate @ 5969]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
2868 gaim_prefs_add_none("/gaim/gtk/accounts"); |
cc9ddec20010
[gaim-migrate @ 5969]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
2869 gaim_prefs_add_none("/gaim/gtk/accounts/dialog"); |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
2870 gaim_prefs_add_int("/gaim/gtk/accounts/dialog/width", 550); |
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
2871 gaim_prefs_add_int("/gaim/gtk/accounts/dialog/height", 250); |
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
2872 |
5573
5e7de337a053
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5568
diff
changeset
|
2873 /* Away Queueing */ |
5e7de337a053
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5568
diff
changeset
|
2874 gaim_prefs_add_none("/gaim/gtk/away"); |
5e7de337a053
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5568
diff
changeset
|
2875 gaim_prefs_add_bool("/gaim/gtk/away/queue_messages", FALSE); |
5e7de337a053
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5568
diff
changeset
|
2876 |
8283 | 2877 #ifndef _WIN32 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2878 /* Browsers */ |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2879 gaim_prefs_add_none("/gaim/gtk/browsers"); |
8272 | 2880 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
|
2881 gaim_prefs_add_string("/gaim/gtk/browsers/command", ""); |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
2882 gaim_prefs_add_string("/gaim/gtk/browsers/browser", "mozilla"); |
8283 | 2883 #endif |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
2884 |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
2885 /* Idle */ |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
2886 gaim_prefs_add_none("/gaim/gtk/idle"); |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
2887 gaim_prefs_add_string("/gaim/gtk/idle/reporting_method", "system"); |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5547
diff
changeset
|
2888 |
5949
90d0849abd3c
[gaim-migrate @ 6393]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
2889 /* Plugins */ |
5982
35d3c1ac5ece
[gaim-migrate @ 6430]
Christian Hammond <chipx86@chipx86.com>
parents:
5981
diff
changeset
|
2890 gaim_prefs_add_none("/gaim/gtk/plugins"); |
5949
90d0849abd3c
[gaim-migrate @ 6393]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
2891 gaim_prefs_add_string_list("/gaim/gtk/plugins/loaded", NULL); |
90d0849abd3c
[gaim-migrate @ 6393]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
2892 |
5539
de09863bd4b5
[gaim-migrate @ 5939]
Christian Hammond <chipx86@chipx86.com>
parents:
5535
diff
changeset
|
2893 /* Smiley Themes */ |
5546
22cf337e8b8f
[gaim-migrate @ 5947]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
2894 gaim_prefs_add_none("/gaim/gtk/smileys"); |
5771
f63a008726c6
[gaim-migrate @ 6196]
Christian Hammond <chipx86@chipx86.com>
parents:
5770
diff
changeset
|
2895 gaim_prefs_add_string("/gaim/gtk/smileys/theme", ""); |
5770
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
2896 |
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
2897 /* Smiley Callbacks */ |
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
2898 gaim_prefs_connect_callback("/gaim/gtk/smileys/theme", |
a86051df9122
[gaim-migrate @ 6195]
Christian Hammond <chipx86@chipx86.com>
parents:
5753
diff
changeset
|
2899 smiley_theme_pref_cb, NULL); |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
2900 } |
8905 | 2901 |
2902 void gaim_gtk_prefs_update_old() { | |
2903 /* Rename some old prefs */ | |
2904 gaim_prefs_rename("/gaim/gtk/logging/log_ims", "/core/logging/log_ims"); | |
2905 gaim_prefs_rename("/gaim/gtk/logging/log_chats", "/core/logging/log_chats"); | |
2906 gaim_prefs_rename("/core/conversations/placement", | |
8998 | 2907 "/gaim/gtk/conversations/placement"); |
8905 | 2908 |
2909 /* Remove some no-longer-used prefs */ | |
8945 | 2910 gaim_prefs_remove("/gaim/gtk/blist/show_group_count"); |
8946 | 2911 gaim_prefs_remove("/gaim/gtk/conversations/icons_on_tabs"); |
8944 | 2912 gaim_prefs_remove("/gaim/gtk/conversations/ignore_colors"); |
2913 gaim_prefs_remove("/gaim/gtk/conversations/ignore_fonts"); | |
2914 gaim_prefs_remove("/gaim/gtk/conversations/ignore_font_sizes"); | |
8905 | 2915 gaim_prefs_remove("/gaim/gtk/conversations/show_urls_as_links"); |
2916 gaim_prefs_remove("/gaim/gtk/conversations/show_smileys"); | |
8941 | 2917 gaim_prefs_remove("/gaim/gtk/conversations/chat/tab_completion"); |
2918 gaim_prefs_remove("/gaim/gtk/conversations/chat/old_tab_complete"); | |
8947 | 2919 gaim_prefs_remove("/gaim/gtk/sound/signon"); |
2920 gaim_prefs_remove("/gaim/gtk/sound/silent_signon"); | |
8998 | 2921 gaim_prefs_remove("/gaim/gtk/logging/individual_logs"); |
8905 | 2922 } |