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