pidgin/gtkrequest.c

Sat, 17 Nov 2007 17:44:21 +0000

author
Stu Tomlinson <nosnilmot@pidgin.im>
date
Sat, 17 Nov 2007 17:44:21 +0000
changeset 21656
acb7fa0ac03d
parent 21648
83ac1ce298b6
child 21985
bf0e936998e4
child 22000
5e7708f58d3d
permissions
-rw-r--r--

default the conversation close immediately pref to TRUE to prevent
unexpected change of behavior for everyone, people who want the persistent
conversations can turn this off

5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1 /**
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2 * @file gtkrequest.c GTK+ Request API
16254
eeb2bba4dc94 Rename the Doxygen group from gtkui to pidgin.
Richard Laager <rlaager@pidgin.im>
parents: 16123
diff changeset
3 * @ingroup pidgin
20147
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 20081
diff changeset
4 */
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 20081
diff changeset
5
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 20081
diff changeset
6 /* pidgin
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
7 *
15931
716b5fac1895 Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
8 * Pidgin is the legal property of its developers, whose names are too numerous
8046
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 7964
diff changeset
9 * to list here. Please refer to the COPYRIGHT file distributed with this
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 7964
diff changeset
10 * source distribution.
7035
76bca80cd91d [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
11 *
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
12 * This program is free software; you can redistribute it and/or modify
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
13 * it under the terms of the GNU General Public License as published by
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
14 * the Free Software Foundation; either version 2 of the License, or
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
15 * (at your option) any later version.
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
16 *
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
17 * This program is distributed in the hope that it will be useful,
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
20 * GNU General Public License for more details.
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
21 *
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
22 * You should have received a copy of the GNU General Public License
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
23 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19789
diff changeset
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
25 */
9791
f5c5bda0b96b [gaim-migrate @ 10659]
Gary Kramlich <grim@pidgin.im>
parents: 9730
diff changeset
26 #include "internal.h"
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15570
diff changeset
27 #include "pidgin.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5846
diff changeset
28
7066
2d8321bf0491 [gaim-migrate @ 7630]
Christian Hammond <chipx86@chipx86.com>
parents: 7048
diff changeset
29 #include "prefs.h"
11780
9aee3bde84b9 [gaim-migrate @ 14071]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11458
diff changeset
30 #include "util.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5846
diff changeset
31
9709
2e73f176cc80 [gaim-migrate @ 10570]
Mark Doliner <markdoliner@pidgin.im>
parents: 9573
diff changeset
32 #include "gtkimhtml.h"
2e73f176cc80 [gaim-migrate @ 10570]
Mark Doliner <markdoliner@pidgin.im>
parents: 9573
diff changeset
33 #include "gtkimhtmltoolbar.h"
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
34 #include "gtkrequest.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5846
diff changeset
35 #include "gtkutils.h"
15883
969b74a3e27a According to etags, pidgin/ should be completely clean of references to 'gaim' as a client
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
36 #include "pidginstock.h"
19301
314d14687846 Forgot to refer to gtkblist.h
Gabriel Schulhof <nix@go-nix.ca>
parents: 19300
diff changeset
37 #include "gtkblist.h"
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
38
8294
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
39 #include <gdk/gdkkeysyms.h>
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
40
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
41 static GtkWidget * create_account_field(PurpleRequestField *field);
8294
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
42
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
43 typedef struct
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
44 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
45 PurpleRequestType type;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
46
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
47 void *user_data;
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
48 GtkWidget *dialog;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
49
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
50 GtkWidget *ok_button;
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
51
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
52 size_t cb_count;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
53 GCallback *cbs;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
54
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
55 union
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
56 {
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
57 struct
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
58 {
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
59 GtkWidget *entry;
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
60
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
61 gboolean multiline;
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
62 gchar *hint;
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
63
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
64 } input;
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
65
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
66 struct
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
67 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
68 PurpleRequestFields *fields;
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
69
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
70 } multifield;
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
71
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
72 struct
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
73 {
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
74 gboolean savedialog;
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
75 gchar *name;
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
76
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
77 } file;
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
78
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
79 } u;
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
80
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
81 } PidginRequestData;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
82
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
83 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
84 generic_response_start(PidginRequestData *data)
12234
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
85 {
13435
4c22eed6e0a6 [gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents: 13373
diff changeset
86 g_return_if_fail(data != NULL);
4c22eed6e0a6 [gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents: 13373
diff changeset
87
12234
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
88 /* Tell the user we're doing something. */
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
89 pidgin_set_cursor(GTK_WIDGET(data->dialog), GDK_WATCH);
12234
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
90 }
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
91
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
92 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
93 input_response_cb(GtkDialog *dialog, gint id, PidginRequestData *data)
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
94 {
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
95 const char *value;
7174
2f3cab1045d6 [gaim-migrate @ 7742]
Nathan Walp <nwalp@pidgin.im>
parents: 7172
diff changeset
96 char *multiline_value = NULL;
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
97
12234
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
98 generic_response_start(data);
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
99
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
100 if (data->u.input.multiline) {
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
101 GtkTextIter start_iter, end_iter;
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
102 GtkTextBuffer *buffer =
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
103 gtk_text_view_get_buffer(GTK_TEXT_VIEW(data->u.input.entry));
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
104
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
105 gtk_text_buffer_get_start_iter(buffer, &start_iter);
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
106 gtk_text_buffer_get_end_iter(buffer, &end_iter);
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
107
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
108 if ((data->u.input.hint != NULL) && (!strcmp(data->u.input.hint, "html")))
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
109 multiline_value = gtk_imhtml_get_markup(GTK_IMHTML(data->u.input.entry));
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
110 else
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
111 multiline_value = gtk_text_buffer_get_text(buffer, &start_iter, &end_iter,
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
112 FALSE);
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
113
7172
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7142
diff changeset
114 value = multiline_value;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
115 }
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
116 else
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
117 value = gtk_entry_get_text(GTK_ENTRY(data->u.input.entry));
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
118
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
119 if (id < data->cb_count && data->cbs[id] != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
120 ((PurpleRequestInputCb)data->cbs[id])(data->user_data, value);
6110
8c703c3453c7 [gaim-migrate @ 6572]
Mark Doliner <markdoliner@pidgin.im>
parents: 6109
diff changeset
121 else if (data->cbs[1] != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
122 ((PurpleRequestInputCb)data->cbs[1])(data->user_data, value);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
123
7172
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7142
diff changeset
124 if (data->u.input.multiline)
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7142
diff changeset
125 g_free(multiline_value);
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7142
diff changeset
126
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
127 purple_request_close(PURPLE_REQUEST_INPUT, data);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
128 }
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
129
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
130 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
131 action_response_cb(GtkDialog *dialog, gint id, PidginRequestData *data)
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
132 {
12234
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
133 generic_response_start(data);
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
134
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
135 if (id < data->cb_count && data->cbs[id] != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
136 ((PurpleRequestActionCb)data->cbs[id])(data->user_data, id);
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
137
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
138 purple_request_close(PURPLE_REQUEST_INPUT, data);
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
139 }
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
140
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
141
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
142 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
143 choice_response_cb(GtkDialog *dialog, gint id, PidginRequestData *data)
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
144 {
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
145 GtkWidget *radio = g_object_get_data(G_OBJECT(dialog), "radio");
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
146 GSList *group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radio));
12234
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
147
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
148 generic_response_start(data);
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
149
10980
a193f3a01a34 [gaim-migrate @ 12810]
Daniel Atallah <datallah@pidgin.im>
parents: 10943
diff changeset
150 if (id < data->cb_count && data->cbs[id] != NULL)
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
151 while (group) {
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
152 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(group->data))) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
153 ((PurpleRequestChoiceCb)data->cbs[id])(data->user_data, GPOINTER_TO_INT(g_object_get_data(G_OBJECT(group->data), "choice_id")));
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
154 break;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
155 }
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
156 group = group->next;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
157 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
158 purple_request_close(PURPLE_REQUEST_INPUT, data);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
159 }
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
160
5835
2d496d6d967d [gaim-migrate @ 6266]
Christian Hammond <chipx86@chipx86.com>
parents: 5834
diff changeset
161 static gboolean
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
162 field_string_focus_out_cb(GtkWidget *entry, GdkEventFocus *event,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
163 PurpleRequestField *field)
5832
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
164 {
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
165 const char *value;
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
166
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
167 if (purple_request_field_string_is_multiline(field))
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
168 {
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
169 GtkTextBuffer *buffer;
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
170 GtkTextIter start_iter, end_iter;
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
171
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
172 buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(entry));
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
173
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
174 gtk_text_buffer_get_start_iter(buffer, &start_iter);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
175 gtk_text_buffer_get_end_iter(buffer, &end_iter);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
176
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
177 value = gtk_text_buffer_get_text(buffer, &start_iter, &end_iter, FALSE);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
178 }
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
179 else
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
180 value = gtk_entry_get_text(GTK_ENTRY(entry));
5834
c7945c10cff3 [gaim-migrate @ 6265]
Christian Hammond <chipx86@chipx86.com>
parents: 5832
diff changeset
181
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
182 purple_request_field_string_set_value(field,
5834
c7945c10cff3 [gaim-migrate @ 6265]
Christian Hammond <chipx86@chipx86.com>
parents: 5832
diff changeset
183 (*value == '\0' ? NULL : value));
5835
2d496d6d967d [gaim-migrate @ 6266]
Christian Hammond <chipx86@chipx86.com>
parents: 5834
diff changeset
184
2d496d6d967d [gaim-migrate @ 6266]
Christian Hammond <chipx86@chipx86.com>
parents: 5834
diff changeset
185 return FALSE;
5832
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
186 }
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
187
5835
2d496d6d967d [gaim-migrate @ 6266]
Christian Hammond <chipx86@chipx86.com>
parents: 5834
diff changeset
188 static gboolean
5846
d2c9503ad8a8 [gaim-migrate @ 6277]
Christian Hammond <chipx86@chipx86.com>
parents: 5845
diff changeset
189 field_int_focus_out_cb(GtkEntry *entry, GdkEventFocus *event,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
190 PurpleRequestField *field)
5832
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
191 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
192 purple_request_field_int_set_value(field,
5832
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
193 atoi(gtk_entry_get_text(entry)));
5835
2d496d6d967d [gaim-migrate @ 6266]
Christian Hammond <chipx86@chipx86.com>
parents: 5834
diff changeset
194
2d496d6d967d [gaim-migrate @ 6266]
Christian Hammond <chipx86@chipx86.com>
parents: 5834
diff changeset
195 return FALSE;
5832
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
196 }
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
197
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
198 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
199 field_bool_cb(GtkToggleButton *button, PurpleRequestField *field)
5832
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
200 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
201 purple_request_field_bool_set_value(field,
5832
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
202 gtk_toggle_button_get_active(button));
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
203 }
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
204
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
205 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
206 field_choice_menu_cb(GtkOptionMenu *menu, PurpleRequestField *field)
5832
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
207 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
208 purple_request_field_choice_set_value(field,
5832
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
209 gtk_option_menu_get_history(menu));
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
210 }
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
211
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
212 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
213 field_choice_option_cb(GtkRadioButton *button, PurpleRequestField *field)
5832
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
214 {
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
215 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
216 purple_request_field_choice_set_value(field,
10943
729674da8959 [gaim-migrate @ 12735]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10871
diff changeset
217 (g_slist_length(gtk_radio_button_get_group(button)) -
729674da8959 [gaim-migrate @ 12735]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10871
diff changeset
218 g_slist_index(gtk_radio_button_get_group(button), button)) - 1);
5832
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
219 }
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
220
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
221 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
222 field_account_cb(GObject *w, PurpleAccount *account, PurpleRequestField *field)
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
223 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
224 purple_request_field_account_set_value(field, account);
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
225 }
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
226
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
227 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
228 multifield_ok_cb(GtkWidget *button, PidginRequestData *data)
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
229 {
12234
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
230 generic_response_start(data);
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
231
8521
0f0e26a59d47 [gaim-migrate @ 9260]
Gary Kramlich <grim@pidgin.im>
parents: 8332
diff changeset
232 if (!GTK_WIDGET_HAS_FOCUS(button))
0f0e26a59d47 [gaim-migrate @ 9260]
Gary Kramlich <grim@pidgin.im>
parents: 8332
diff changeset
233 gtk_widget_grab_focus(button);
0f0e26a59d47 [gaim-migrate @ 9260]
Gary Kramlich <grim@pidgin.im>
parents: 8332
diff changeset
234
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
235 if (data->cbs[0] != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
236 ((PurpleRequestFieldsCb)data->cbs[0])(data->user_data,
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
237 data->u.multifield.fields);
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
238
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
239 purple_request_close(PURPLE_REQUEST_FIELDS, data);
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
240 }
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
241
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
242 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
243 multifield_cancel_cb(GtkWidget *button, PidginRequestData *data)
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
244 {
12234
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
245 generic_response_start(data);
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
246
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
247 if (data->cbs[1] != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
248 ((PurpleRequestFieldsCb)data->cbs[1])(data->user_data,
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
249 data->u.multifield.fields);
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
250
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
251 purple_request_close(PURPLE_REQUEST_FIELDS, data);
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
252 }
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
253
8323
d962d280c523 [gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
254 static void
d962d280c523 [gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
255 destroy_multifield_cb(GtkWidget *dialog, GdkEvent *event,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
256 PidginRequestData *data)
8323
d962d280c523 [gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
257 {
d962d280c523 [gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
258 multifield_cancel_cb(NULL, data);
d962d280c523 [gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
259 }
d962d280c523 [gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
260
d962d280c523 [gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
261
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
262 #define STOCK_ITEMIZE(r, l) \
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
263 if (!strcmp((r), text)) \
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
264 return (l);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
265
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
266 static const char *
5794
ebdbb7dc6658 [gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents: 5510
diff changeset
267 text_to_stock(const char *text)
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
268 {
6334
47a748d6fb0f [gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents: 6326
diff changeset
269 STOCK_ITEMIZE(_("Yes"), GTK_STOCK_YES);
47a748d6fb0f [gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents: 6326
diff changeset
270 STOCK_ITEMIZE(_("No"), GTK_STOCK_NO);
47a748d6fb0f [gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents: 6326
diff changeset
271 STOCK_ITEMIZE(_("OK"), GTK_STOCK_OK);
47a748d6fb0f [gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents: 6326
diff changeset
272 STOCK_ITEMIZE(_("Cancel"), GTK_STOCK_CANCEL);
47a748d6fb0f [gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents: 6326
diff changeset
273 STOCK_ITEMIZE(_("Apply"), GTK_STOCK_APPLY);
47a748d6fb0f [gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents: 6326
diff changeset
274 STOCK_ITEMIZE(_("Close"), GTK_STOCK_CLOSE);
47a748d6fb0f [gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents: 6326
diff changeset
275 STOCK_ITEMIZE(_("Delete"), GTK_STOCK_DELETE);
47a748d6fb0f [gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents: 6326
diff changeset
276 STOCK_ITEMIZE(_("Add"), GTK_STOCK_ADD);
47a748d6fb0f [gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents: 6326
diff changeset
277 STOCK_ITEMIZE(_("Remove"), GTK_STOCK_REMOVE);
47a748d6fb0f [gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents: 6326
diff changeset
278 STOCK_ITEMIZE(_("Save"), GTK_STOCK_SAVE);
15570
81e9b7d13875 stock to pidgin
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
279 STOCK_ITEMIZE(_("Alias"), PIDGIN_STOCK_ALIAS);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
280
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
281 return text;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
282 }
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
283
6363
6e0fa4b64fe6 [gaim-migrate @ 6868]
Christian Hammond <chipx86@chipx86.com>
parents: 6338
diff changeset
284 static void *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
285 pidgin_request_input(const char *title, const char *primary,
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
286 const char *secondary, const char *default_value,
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
287 gboolean multiline, gboolean masked, gchar *hint,
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
288 const char *ok_text, GCallback ok_cb,
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
289 const char *cancel_text, GCallback cancel_cb,
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16259
diff changeset
290 PurpleAccount *account, const char *who, PurpleConversation *conv,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
291 void *user_data)
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
292 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
293 PidginRequestData *data;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
294 GtkWidget *dialog;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
295 GtkWidget *vbox;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
296 GtkWidget *hbox;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
297 GtkWidget *label;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
298 GtkWidget *entry;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
299 GtkWidget *img;
8782
eb3f9bf7d69c [gaim-migrate @ 9544]
Ignacio J. Elia
parents: 8697
diff changeset
300 GtkWidget *toolbar;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
301 char *label_text;
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
302 char *primary_esc, *secondary_esc;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
303
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
304 data = g_new0(PidginRequestData, 1);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
305 data->type = PURPLE_REQUEST_INPUT;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
306 data->user_data = user_data;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
307
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
308 data->cb_count = 2;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
309 data->cbs = g_new0(GCallback, 2);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
310
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
311 data->cbs[0] = ok_cb;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
312 data->cbs[1] = cancel_cb;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
313
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
314 /* Create the dialog. */
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
315 dialog = gtk_dialog_new_with_buttons(title ? title : PIDGIN_ALERT_TITLE,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
316 NULL, 0,
5794
ebdbb7dc6658 [gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents: 5510
diff changeset
317 text_to_stock(cancel_text), 1,
ebdbb7dc6658 [gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents: 5510
diff changeset
318 text_to_stock(ok_text), 0,
5485
a0e3152b4bbb [gaim-migrate @ 5881]
Sean Egan <seanegan@pidgin.im>
parents: 5480
diff changeset
319 NULL);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
320 data->dialog = dialog;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
321
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
322 g_signal_connect(G_OBJECT(dialog), "response",
5794
ebdbb7dc6658 [gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents: 5510
diff changeset
323 G_CALLBACK(input_response_cb), data);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
324
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
325 /* Setup the dialog */
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
326 gtk_container_set_border_width(GTK_CONTAINER(dialog), PIDGIN_HIG_BORDER/2);
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
327 gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), PIDGIN_HIG_BORDER/2);
17646
07c2c5edec11 Make multiline pidgin_request_input() windows resizable, and make
Mark Doliner <markdoliner@pidgin.im>
parents: 16873
diff changeset
328 if (!multiline)
07c2c5edec11 Make multiline pidgin_request_input() windows resizable, and make
Mark Doliner <markdoliner@pidgin.im>
parents: 16873
diff changeset
329 gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
330 gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE);
5510
15d2eca03c1d [gaim-migrate @ 5909]
Christian Hammond <chipx86@chipx86.com>
parents: 5498
diff changeset
331 gtk_dialog_set_default_response(GTK_DIALOG(dialog), 0);
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
332 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog)->vbox), PIDGIN_HIG_BORDER);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
333
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
334 /* Setup the main horizontal box */
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
335 hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
336 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), hbox);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
337
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
338 /* Dialog icon. */
15497
92f02f4bd5ee Dialog icon changes
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
339 img = gtk_image_new_from_stock(PIDGIN_STOCK_DIALOG_QUESTION,
92f02f4bd5ee Dialog icon changes
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
340 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_HUGE));
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
341 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
342 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
343
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
344 /* Vertical box */
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
345 vbox = gtk_vbox_new(FALSE, PIDGIN_HIG_BORDER);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
346
17646
07c2c5edec11 Make multiline pidgin_request_input() windows resizable, and make
Mark Doliner <markdoliner@pidgin.im>
parents: 16873
diff changeset
347 gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 0);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
348
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
349 /* Descriptive label */
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
350 primary_esc = (primary != NULL) ? g_markup_escape_text(primary, -1) : NULL;
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
351 secondary_esc = (secondary != NULL) ? g_markup_escape_text(secondary, -1) : NULL;
7843
d771eecc9717 [gaim-migrate @ 8497]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7678
diff changeset
352 label_text = g_strdup_printf((primary ? "<span weight=\"bold\" size=\"larger\">"
d771eecc9717 [gaim-migrate @ 8497]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7678
diff changeset
353 "%s</span>%s%s" : "%s%s%s"),
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
354 (primary ? primary_esc : ""),
7843
d771eecc9717 [gaim-migrate @ 8497]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7678
diff changeset
355 ((primary && secondary) ? "\n\n" : ""),
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
356 (secondary ? secondary_esc : ""));
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
357 g_free(primary_esc);
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
358 g_free(secondary_esc);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
359
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
360 label = gtk_label_new(NULL);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
361
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
362 gtk_label_set_markup(GTK_LABEL(label), label_text);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
363 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
364 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
17646
07c2c5edec11 Make multiline pidgin_request_input() windows resizable, and make
Mark Doliner <markdoliner@pidgin.im>
parents: 16873
diff changeset
365 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
366
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
367 g_free(label_text);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
368
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
369 /* Entry field. */
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
370 data->u.input.multiline = multiline;
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13536
diff changeset
371 data->u.input.hint = g_strdup(hint);
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
372
19789
5d323c4bd855 And don't show everything here either.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19585
diff changeset
373 gtk_widget_show_all(hbox);
5d323c4bd855 And don't show everything here either.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19585
diff changeset
374
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
375 if ((data->u.input.hint != NULL) && (!strcmp(data->u.input.hint, "html"))) {
10146
cd4abe598b61 [gaim-migrate @ 11222]
Mark Doliner <markdoliner@pidgin.im>
parents: 10116
diff changeset
376 GtkWidget *frame;
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
377
10181
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10164
diff changeset
378 /* imhtml */
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
379 frame = pidgin_create_imhtml(TRUE, &entry, &toolbar, NULL);
10181
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10164
diff changeset
380 gtk_widget_set_size_request(entry, 320, 130);
16259
73b7c796c8d3 I don't like the pidginfoo_bar widget names that resulted from the sed.
Richard Laager <rlaager@pidgin.im>
parents: 16254
diff changeset
381 gtk_widget_set_name(entry, "pidgin_request_imhtml");
10181
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10164
diff changeset
382 if (default_value != NULL)
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10164
diff changeset
383 gtk_imhtml_append_text(GTK_IMHTML(entry), default_value, GTK_IMHTML_NO_SCROLL);
10146
cd4abe598b61 [gaim-migrate @ 11222]
Mark Doliner <markdoliner@pidgin.im>
parents: 10116
diff changeset
384 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0);
cd4abe598b61 [gaim-migrate @ 11222]
Mark Doliner <markdoliner@pidgin.im>
parents: 10116
diff changeset
385 gtk_widget_show(frame);
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
386 }
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
387 else {
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
388 if (multiline) {
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
389 GtkWidget *sw;
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
390
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
391 sw = gtk_scrolled_window_new(NULL, NULL);
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
392 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
393 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
394 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
395 GTK_SHADOW_IN);
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
396
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
397 gtk_widget_set_size_request(sw, 320, 130);
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
398
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
399 /* GtkTextView */
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
400 entry = gtk_text_view_new();
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
401 gtk_text_view_set_editable(GTK_TEXT_VIEW(entry), TRUE);
5510
15d2eca03c1d [gaim-migrate @ 5909]
Christian Hammond <chipx86@chipx86.com>
parents: 5498
diff changeset
402
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
403 if (default_value != NULL) {
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
404 GtkTextBuffer *buffer;
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
405
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
406 buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(entry));
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
407 gtk_text_buffer_set_text(buffer, default_value, -1);
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
408 }
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
409
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
410 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(entry), GTK_WRAP_WORD_CHAR);
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
411
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
412 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0);
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
413
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15931
diff changeset
414 if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/spellcheck"))
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
415 pidgin_setup_gtkspell(GTK_TEXT_VIEW(entry));
6035
b245be9cbe3b [gaim-migrate @ 6485]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
416
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
417 gtk_container_add(GTK_CONTAINER(sw), entry);
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
418 }
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
419 else {
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
420 entry = gtk_entry_new();
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
421
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
422 gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE);
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
423
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
424 gtk_box_pack_start(GTK_BOX(vbox), entry, FALSE, FALSE, 0);
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
425
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
426 if (default_value != NULL)
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
427 gtk_entry_set_text(GTK_ENTRY(entry), default_value);
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
428
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
429 if (masked)
11986
21d2ab6421a7 [gaim-migrate @ 14279]
Mark Doliner <markdoliner@pidgin.im>
parents: 11780
diff changeset
430 {
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
431 gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE);
15390
d429e03fc755 [gaim-migrate @ 18119]
Mark Doliner <markdoliner@pidgin.im>
parents: 15383
diff changeset
432 if (gtk_entry_get_invisible_char(GTK_ENTRY(entry)) == '*')
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
433 gtk_entry_set_invisible_char(GTK_ENTRY(entry), PIDGIN_INVISIBLE_CHAR);
11986
21d2ab6421a7 [gaim-migrate @ 14279]
Mark Doliner <markdoliner@pidgin.im>
parents: 11780
diff changeset
434 }
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
435 }
19789
5d323c4bd855 And don't show everything here either.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19585
diff changeset
436 gtk_widget_show_all(vbox);
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
437 }
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
438
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
439 pidgin_set_accessible_label (entry, label);
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
440 data->u.input.entry = entry;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
441
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
442 /* Show everything. */
19789
5d323c4bd855 And don't show everything here either.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19585
diff changeset
443 gtk_widget_show(dialog);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
444
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
445 return data;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
446 }
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
447
6363
6e0fa4b64fe6 [gaim-migrate @ 6868]
Christian Hammond <chipx86@chipx86.com>
parents: 6338
diff changeset
448 static void *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
449 pidgin_request_choice(const char *title, const char *primary,
19585
14b519abcc26 Fix some conversion warnings about using negative values with unsigned types. There are more, but these were easy fixes. You may think that I'm changing the API, but I'm really not - it was just wrong.
Daniel Atallah <datallah@pidgin.im>
parents: 19369
diff changeset
450 const char *secondary, int default_value,
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
451 const char *ok_text, GCallback ok_cb,
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
452 const char *cancel_text, GCallback cancel_cb,
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16259
diff changeset
453 PurpleAccount *account, const char *who, PurpleConversation *conv,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
454 void *user_data, va_list args)
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
455 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
456 PidginRequestData *data;
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
457 GtkWidget *dialog;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
458 GtkWidget *vbox, *vbox2;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
459 GtkWidget *hbox;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
460 GtkWidget *label;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
461 GtkWidget *img;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
462 GtkWidget *radio = NULL;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
463 char *label_text;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
464 char *radio_text;
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
465 char *primary_esc, *secondary_esc;
10233
7b542749ccb6 [gaim-migrate @ 11368]
Mark Doliner <markdoliner@pidgin.im>
parents: 10229
diff changeset
466
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
467 data = g_new0(PidginRequestData, 1);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
468 data->type = PURPLE_REQUEST_ACTION;
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
469 data->user_data = user_data;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
470
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
471 data->cb_count = 2;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
472 data->cbs = g_new0(GCallback, 2);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
473 data->cbs[0] = cancel_cb;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
474 data->cbs[1] = ok_cb;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
475
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
476 /* Create the dialog. */
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
477 data->dialog = dialog = gtk_dialog_new();
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
478
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
479 if (title != NULL)
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
480 gtk_window_set_title(GTK_WINDOW(dialog), title);
16686
1ebd9e4ae3f0 Prevent request dialog titles being "pidgin.exe".
Daniel Atallah <datallah@pidgin.im>
parents: 16490
diff changeset
481 #ifdef _WIN32
1ebd9e4ae3f0 Prevent request dialog titles being "pidgin.exe".
Daniel Atallah <datallah@pidgin.im>
parents: 16490
diff changeset
482 gtk_window_set_title(GTK_WINDOW(dialog), PIDGIN_ALERT_TITLE);
1ebd9e4ae3f0 Prevent request dialog titles being "pidgin.exe".
Daniel Atallah <datallah@pidgin.im>
parents: 16490
diff changeset
483 #endif
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
484
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
485 gtk_dialog_add_button(GTK_DIALOG(dialog),
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
486 text_to_stock(cancel_text), 0);
10233
7b542749ccb6 [gaim-migrate @ 11368]
Mark Doliner <markdoliner@pidgin.im>
parents: 10229
diff changeset
487
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
488 gtk_dialog_add_button(GTK_DIALOG(dialog),
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
489 text_to_stock(ok_text), 1);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
490
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
491 g_signal_connect(G_OBJECT(dialog), "response",
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
492 G_CALLBACK(choice_response_cb), data);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
493
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
494 /* Setup the dialog */
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
495 gtk_container_set_border_width(GTK_CONTAINER(dialog), PIDGIN_HIG_BORDER/2);
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
496 gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), PIDGIN_HIG_BORDER/2);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
497 gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
498 gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE);
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
499 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog)->vbox), PIDGIN_HIG_BORDER);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
500
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
501 /* Setup the main horizontal box */
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
502 hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
503 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), hbox);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
504
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
505 /* Dialog icon. */
15497
92f02f4bd5ee Dialog icon changes
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
506 img = gtk_image_new_from_stock(PIDGIN_STOCK_DIALOG_QUESTION,
92f02f4bd5ee Dialog icon changes
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
507 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_HUGE));
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
508 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
509 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
510
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
511 /* Vertical box */
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
512 vbox = gtk_vbox_new(FALSE, PIDGIN_HIG_BORDER);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
513 gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0);
10233
7b542749ccb6 [gaim-migrate @ 11368]
Mark Doliner <markdoliner@pidgin.im>
parents: 10229
diff changeset
514
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
515 /* Descriptive label */
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
516 primary_esc = (primary != NULL) ? g_markup_escape_text(primary, -1) : NULL;
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
517 secondary_esc = (secondary != NULL) ? g_markup_escape_text(secondary, -1) : NULL;
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
518 label_text = g_strdup_printf((primary ? "<span weight=\"bold\" size=\"larger\">"
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
519 "%s</span>%s%s" : "%s%s%s"),
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
520 (primary ? primary_esc : ""),
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
521 ((primary && secondary) ? "\n\n" : ""),
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
522 (secondary ? secondary_esc : ""));
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
523 g_free(primary_esc);
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
524 g_free(secondary_esc);
10233
7b542749ccb6 [gaim-migrate @ 11368]
Mark Doliner <markdoliner@pidgin.im>
parents: 10229
diff changeset
525
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
526 label = gtk_label_new(NULL);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
527
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
528 gtk_label_set_markup(GTK_LABEL(label), label_text);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
529 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
530 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
531 gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
532
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
533 g_free(label_text);
10233
7b542749ccb6 [gaim-migrate @ 11368]
Mark Doliner <markdoliner@pidgin.im>
parents: 10229
diff changeset
534
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
535 vbox2 = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
536 gtk_box_pack_start(GTK_BOX(vbox), vbox2, FALSE, FALSE, 0);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
537 while ((radio_text = va_arg(args, char*))) {
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
538 int resp = va_arg(args, int);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
539 radio = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(radio), radio_text);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
540 gtk_box_pack_start(GTK_BOX(vbox2), radio, FALSE, FALSE, 0);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
541 g_object_set_data(G_OBJECT(radio), "choice_id", GINT_TO_POINTER(resp));
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
542 if (resp == default_value)
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
543 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio), TRUE);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
544 }
10233
7b542749ccb6 [gaim-migrate @ 11368]
Mark Doliner <markdoliner@pidgin.im>
parents: 10229
diff changeset
545
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
546 g_object_set_data(G_OBJECT(dialog), "radio", radio);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
547
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
548 /* Show everything. */
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
549 gtk_widget_show_all(dialog);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
550
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
551 return data;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
552 }
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
553
6363
6e0fa4b64fe6 [gaim-migrate @ 6868]
Christian Hammond <chipx86@chipx86.com>
parents: 6338
diff changeset
554 static void *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
555 pidgin_request_action(const char *title, const char *primary,
19585
14b519abcc26 Fix some conversion warnings about using negative values with unsigned types. There are more, but these were easy fixes. You may think that I'm changing the API, but I'm really not - it was just wrong.
Daniel Atallah <datallah@pidgin.im>
parents: 19369
diff changeset
556 const char *secondary, int default_action,
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16259
diff changeset
557 PurpleAccount *account, const char *who, PurpleConversation *conv,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
558 void *user_data, size_t action_count, va_list actions)
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
559 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
560 PidginRequestData *data;
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
561 GtkWidget *dialog;
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
562 GtkWidget *vbox;
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
563 GtkWidget *hbox;
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
564 GtkWidget *label;
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
565 GtkWidget *img;
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
566 void **buttons;
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
567 char *label_text;
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
568 char *primary_esc, *secondary_esc;
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
569 int i;
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
570
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
571 data = g_new0(PidginRequestData, 1);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
572 data->type = PURPLE_REQUEST_ACTION;
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
573 data->user_data = user_data;
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
574
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
575 data->cb_count = action_count;
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
576 data->cbs = g_new0(GCallback, action_count);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
577
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
578 /* Reverse the buttons */
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
579 buttons = g_new0(void *, action_count * 2);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
580
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
581 for (i = 0; i < action_count * 2; i += 2) {
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
582 buttons[(action_count * 2) - i - 2] = va_arg(actions, char *);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
583 buttons[(action_count * 2) - i - 1] = va_arg(actions, GCallback);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
584 }
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
585
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
586 /* Create the dialog. */
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
587 data->dialog = dialog = gtk_dialog_new();
18883
ebbd338319d4 gtk_window_set_deletable() is GTK+ >= 2.10.0. References #1947. Also fix a bug where on Windows, the default title is always applied.
Daniel Atallah <datallah@pidgin.im>
parents: 18865
diff changeset
588
ebbd338319d4 gtk_window_set_deletable() is GTK+ >= 2.10.0. References #1947. Also fix a bug where on Windows, the default title is always applied.
Daniel Atallah <datallah@pidgin.im>
parents: 18865
diff changeset
589 #if GTK_CHECK_VERSION(2,10,0)
18865
41e0c131611f purple_request_action doesn't call any callbacks if the user closes the
Ka-Hing Cheung <khc@pidgin.im>
parents: 18190
diff changeset
590 gtk_window_set_deletable(GTK_WINDOW(data->dialog), FALSE);
18883
ebbd338319d4 gtk_window_set_deletable() is GTK+ >= 2.10.0. References #1947. Also fix a bug where on Windows, the default title is always applied.
Daniel Atallah <datallah@pidgin.im>
parents: 18865
diff changeset
591 #endif
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6363
diff changeset
592
6109
44e5eb92b617 [gaim-migrate @ 6571]
Mark Doliner <markdoliner@pidgin.im>
parents: 6035
diff changeset
593 if (title != NULL)
44e5eb92b617 [gaim-migrate @ 6571]
Mark Doliner <markdoliner@pidgin.im>
parents: 6035
diff changeset
594 gtk_window_set_title(GTK_WINDOW(dialog), title);
16686
1ebd9e4ae3f0 Prevent request dialog titles being "pidgin.exe".
Daniel Atallah <datallah@pidgin.im>
parents: 16490
diff changeset
595 #ifdef _WIN32
18883
ebbd338319d4 gtk_window_set_deletable() is GTK+ >= 2.10.0. References #1947. Also fix a bug where on Windows, the default title is always applied.
Daniel Atallah <datallah@pidgin.im>
parents: 18865
diff changeset
596 else
16686
1ebd9e4ae3f0 Prevent request dialog titles being "pidgin.exe".
Daniel Atallah <datallah@pidgin.im>
parents: 16490
diff changeset
597 gtk_window_set_title(GTK_WINDOW(dialog), PIDGIN_ALERT_TITLE);
1ebd9e4ae3f0 Prevent request dialog titles being "pidgin.exe".
Daniel Atallah <datallah@pidgin.im>
parents: 16490
diff changeset
598 #endif
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
599
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
600 for (i = 0; i < action_count; i++) {
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
601 gtk_dialog_add_button(GTK_DIALOG(dialog),
5794
ebdbb7dc6658 [gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents: 5510
diff changeset
602 text_to_stock(buttons[2 * i]), i);
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
603
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
604 data->cbs[i] = buttons[2 * i + 1];
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
605 }
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
606
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
607 g_free(buttons);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
608
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
609 g_signal_connect(G_OBJECT(dialog), "response",
5794
ebdbb7dc6658 [gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents: 5510
diff changeset
610 G_CALLBACK(action_response_cb), data);
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
611
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
612 /* Setup the dialog */
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
613 gtk_container_set_border_width(GTK_CONTAINER(dialog), PIDGIN_HIG_BORDER/2);
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
614 gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), PIDGIN_HIG_BORDER/2);
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
615 gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
616 gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE);
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
617 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog)->vbox), PIDGIN_HIG_BORDER);
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
618
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
619 /* Setup the main horizontal box */
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
620 hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER);
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
621 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), hbox);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
622
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
623 /* Dialog icon. */
15497
92f02f4bd5ee Dialog icon changes
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
624 img = gtk_image_new_from_stock(PIDGIN_STOCK_DIALOG_QUESTION,
92f02f4bd5ee Dialog icon changes
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
625 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_HUGE));
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
626 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
627 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
628
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
629 /* Vertical box */
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
630 vbox = gtk_vbox_new(FALSE, PIDGIN_HIG_BORDER);
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
631 gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
632
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
633 /* Descriptive label */
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
634 primary_esc = (primary != NULL) ? g_markup_escape_text(primary, -1) : NULL;
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
635 secondary_esc = (secondary != NULL) ? g_markup_escape_text(secondary, -1) : NULL;
7843
d771eecc9717 [gaim-migrate @ 8497]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7678
diff changeset
636 label_text = g_strdup_printf((primary ? "<span weight=\"bold\" size=\"larger\">"
d771eecc9717 [gaim-migrate @ 8497]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7678
diff changeset
637 "%s</span>%s%s" : "%s%s%s"),
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
638 (primary ? primary_esc : ""),
7843
d771eecc9717 [gaim-migrate @ 8497]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7678
diff changeset
639 ((primary && secondary) ? "\n\n" : ""),
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
640 (secondary ? secondary_esc : ""));
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
641 g_free(primary_esc);
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
642 g_free(secondary_esc);
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
643
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
644 label = gtk_label_new(NULL);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
645
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
646 gtk_label_set_markup(GTK_LABEL(label), label_text);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
647 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
648 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
15065
88e8707318de [gaim-migrate @ 17783]
Richard Laager <rlaager@pidgin.im>
parents: 15022
diff changeset
649 gtk_label_set_selectable(GTK_LABEL(label), TRUE);
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
650 gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
651
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
652 g_free(label_text);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
653
9948
2642975ffb85 [gaim-migrate @ 10844]
Dave West <kat@users.sourceforge.net>
parents: 9791
diff changeset
654
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
655 if (default_action == PURPLE_DEFAULT_ACTION_NONE) {
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents: 10297
diff changeset
656 GTK_WIDGET_SET_FLAGS(img, GTK_CAN_DEFAULT);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents: 10297
diff changeset
657 GTK_WIDGET_SET_FLAGS(img, GTK_CAN_FOCUS);
9948
2642975ffb85 [gaim-migrate @ 10844]
Dave West <kat@users.sourceforge.net>
parents: 9791
diff changeset
658 gtk_widget_grab_focus(img);
2642975ffb85 [gaim-migrate @ 10844]
Dave West <kat@users.sourceforge.net>
parents: 9791
diff changeset
659 gtk_widget_grab_default(img);
12286
08d994091c36 [gaim-migrate @ 14590]
Etan Reisner <deryni@pidgin.im>
parents: 12234
diff changeset
660 } else
5510
15d2eca03c1d [gaim-migrate @ 5909]
Christian Hammond <chipx86@chipx86.com>
parents: 5498
diff changeset
661 gtk_dialog_set_default_response(GTK_DIALOG(dialog), default_action);
15d2eca03c1d [gaim-migrate @ 5909]
Christian Hammond <chipx86@chipx86.com>
parents: 5498
diff changeset
662
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
663 /* Show everything. */
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
664 gtk_widget_show_all(dialog);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
665
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
666 return data;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
667 }
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
668
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
669 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
670 req_entry_field_changed_cb(GtkWidget *entry, PurpleRequestField *field)
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
671 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
672 PidginRequestData *req_data;
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
673 const char *text = gtk_entry_get_text(GTK_ENTRY(entry));
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
674
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
675 purple_request_field_string_set_value(field, (*text == '\0' ? NULL : text));
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
676
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
677 req_data = (PidginRequestData *)field->group->fields_list->ui_data;
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
678
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
679 gtk_widget_set_sensitive(req_data->ok_button,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
680 purple_request_fields_all_required_filled(field->group->fields_list));
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
681 }
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
682
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
683 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
684 setup_entry_field(GtkWidget *entry, PurpleRequestField *field)
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
685 {
8294
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
686 const char *type_hint;
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
687
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
688 gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE);
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
689
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
690 if (purple_request_field_is_required(field))
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
691 {
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
692 g_signal_connect(G_OBJECT(entry), "changed",
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
693 G_CALLBACK(req_entry_field_changed_cb), field);
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
694 }
8294
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
695
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
696 if ((type_hint = purple_request_field_get_type_hint(field)) != NULL)
8294
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
697 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
698 if (purple_str_has_prefix(type_hint, "screenname"))
8294
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
699 {
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13356
diff changeset
700 GtkWidget *optmenu = NULL;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13356
diff changeset
701 GList *fields = field->group->fields;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13356
diff changeset
702 while (fields)
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13356
diff changeset
703 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
704 PurpleRequestField *fld = fields->data;
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13356
diff changeset
705 fields = fields->next;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13356
diff changeset
706
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
707 if (purple_request_field_get_type(fld) == PURPLE_REQUEST_FIELD_ACCOUNT)
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13356
diff changeset
708 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
709 const char *type_hint = purple_request_field_get_type_hint(fld);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13356
diff changeset
710 if (type_hint != NULL && strcmp(type_hint, "account") == 0)
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13356
diff changeset
711 {
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13356
diff changeset
712 if (fld->ui_data == NULL)
13362
b9ce19616b59 [gaim-migrate @ 15734]
Richard Laager <rlaager@pidgin.im>
parents: 13361
diff changeset
713 fld->ui_data = create_account_field(fld);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13356
diff changeset
714 optmenu = GTK_WIDGET(fld->ui_data);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13356
diff changeset
715 break;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13356
diff changeset
716 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13356
diff changeset
717 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13356
diff changeset
718 }
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18883
diff changeset
719 pidgin_setup_screenname_autocomplete_with_filter(entry, optmenu, pidgin_screenname_autocomplete_default_filter, GINT_TO_POINTER(!strcmp(type_hint, "screenname-all")));
8294
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
720 }
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
721 }
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
722 }
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
723
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
724 static GtkWidget *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
725 create_string_field(PurpleRequestField *field)
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
726 {
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
727 const char *value;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
728 GtkWidget *widget;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
729
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
730 value = purple_request_field_string_get_default_value(field);
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
731
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
732 if (purple_request_field_string_is_multiline(field))
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
733 {
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
734 GtkWidget *textview;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
735
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
736 widget = gtk_scrolled_window_new(NULL, NULL);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
737 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(widget),
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
738 GTK_SHADOW_IN);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
739 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(widget),
8916
8a8ce5bb293a [gaim-migrate @ 9686]
Nathan Walp <nwalp@pidgin.im>
parents: 8848
diff changeset
740 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
741
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
742 textview = gtk_text_view_new();
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
743 gtk_text_view_set_editable(GTK_TEXT_VIEW(textview),
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
744 TRUE);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
745 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(textview),
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
746 GTK_WRAP_WORD_CHAR);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
747
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15931
diff changeset
748 if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/spellcheck"))
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
749 pidgin_setup_gtkspell(GTK_TEXT_VIEW(textview));
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
750
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
751 gtk_container_add(GTK_CONTAINER(widget), textview);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
752 gtk_widget_show(textview);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
753
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
754 gtk_widget_set_size_request(widget, -1, 75);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
755
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
756 if (value != NULL)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
757 {
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
758 GtkTextBuffer *buffer;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
759
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
760 buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview));
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
761
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
762 gtk_text_buffer_set_text(buffer, value, -1);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
763 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
764
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
765 gtk_text_view_set_editable(GTK_TEXT_VIEW(textview),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
766 purple_request_field_string_is_editable(field));
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
767
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
768 g_signal_connect(G_OBJECT(textview), "focus-out-event",
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
769 G_CALLBACK(field_string_focus_out_cb), field);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
770 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
771 else
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
772 {
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
773 widget = gtk_entry_new();
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
774
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
775 setup_entry_field(widget, field);
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
776
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
777 if (value != NULL)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
778 gtk_entry_set_text(GTK_ENTRY(widget), value);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
779
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
780 if (purple_request_field_string_is_masked(field))
11986
21d2ab6421a7 [gaim-migrate @ 14279]
Mark Doliner <markdoliner@pidgin.im>
parents: 11780
diff changeset
781 {
21d2ab6421a7 [gaim-migrate @ 14279]
Mark Doliner <markdoliner@pidgin.im>
parents: 11780
diff changeset
782 gtk_entry_set_visibility(GTK_ENTRY(widget), FALSE);
15390
d429e03fc755 [gaim-migrate @ 18119]
Mark Doliner <markdoliner@pidgin.im>
parents: 15383
diff changeset
783 if (gtk_entry_get_invisible_char(GTK_ENTRY(widget)) == '*')
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
784 gtk_entry_set_invisible_char(GTK_ENTRY(widget), PIDGIN_INVISIBLE_CHAR);
11986
21d2ab6421a7 [gaim-migrate @ 14279]
Mark Doliner <markdoliner@pidgin.im>
parents: 11780
diff changeset
785 }
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
786
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
787 gtk_editable_set_editable(GTK_EDITABLE(widget),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
788 purple_request_field_string_is_editable(field));
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
789
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
790 g_signal_connect(G_OBJECT(widget), "focus-out-event",
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
791 G_CALLBACK(field_string_focus_out_cb), field);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
792 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
793
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
794 return widget;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
795 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
796
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
797 static GtkWidget *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
798 create_int_field(PurpleRequestField *field)
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
799 {
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
800 int value;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
801 GtkWidget *widget;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
802
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
803 widget = gtk_entry_new();
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
804
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
805 setup_entry_field(widget, field);
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
806
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
807 value = purple_request_field_int_get_default_value(field);
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
808
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
809 if (value != 0)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
810 {
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
811 char buf[32];
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
812
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
813 g_snprintf(buf, sizeof(buf), "%d", value);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
814
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
815 gtk_entry_set_text(GTK_ENTRY(widget), buf);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
816 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
817
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
818 g_signal_connect(G_OBJECT(widget), "focus-out-event",
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
819 G_CALLBACK(field_int_focus_out_cb), field);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
820
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
821 return widget;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
822 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
823
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
824 static GtkWidget *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
825 create_bool_field(PurpleRequestField *field)
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
826 {
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
827 GtkWidget *widget;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
828
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
829 widget = gtk_check_button_new_with_label(
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
830 purple_request_field_get_label(field));
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
831
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
832 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
833 purple_request_field_bool_get_default_value(field));
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
834
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
835 g_signal_connect(G_OBJECT(widget), "toggled",
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
836 G_CALLBACK(field_bool_cb), field);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
837
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
838 return widget;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
839 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
840
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
841 static GtkWidget *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
842 create_choice_field(PurpleRequestField *field)
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
843 {
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
844 GtkWidget *widget;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
845 GList *labels;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
846 GList *l;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
847
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
848 labels = purple_request_field_choice_get_labels(field);
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
849
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
850 if (g_list_length(labels) > 5)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
851 {
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
852 GtkWidget *menu;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
853 GtkWidget *item;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
854
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
855 widget = gtk_option_menu_new();
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
856
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
857 menu = gtk_menu_new();
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
858
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
859 for (l = labels; l != NULL; l = l->next)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
860 {
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
861 const char *text = l->data;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
862
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
863 item = gtk_menu_item_new_with_label(text);
10294
515c8395a4b6 [gaim-migrate @ 11473]
Gary Kramlich <grim@pidgin.im>
parents: 10233
diff changeset
864 gtk_widget_show(item);
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
865
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
866 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
867 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
868
10294
515c8395a4b6 [gaim-migrate @ 11473]
Gary Kramlich <grim@pidgin.im>
parents: 10233
diff changeset
869 gtk_widget_show(menu);
515c8395a4b6 [gaim-migrate @ 11473]
Gary Kramlich <grim@pidgin.im>
parents: 10233
diff changeset
870 gtk_option_menu_set_menu(GTK_OPTION_MENU(widget), menu);
515c8395a4b6 [gaim-migrate @ 11473]
Gary Kramlich <grim@pidgin.im>
parents: 10233
diff changeset
871 gtk_option_menu_set_history(GTK_OPTION_MENU(widget),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
872 purple_request_field_choice_get_default_value(field));
10294
515c8395a4b6 [gaim-migrate @ 11473]
Gary Kramlich <grim@pidgin.im>
parents: 10233
diff changeset
873
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
874 g_signal_connect(G_OBJECT(widget), "changed",
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
875 G_CALLBACK(field_choice_menu_cb), field);
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
876 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
877 else
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
878 {
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
879 GtkWidget *box;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
880 GtkWidget *first_radio = NULL;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
881 GtkWidget *radio;
10943
729674da8959 [gaim-migrate @ 12735]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10871
diff changeset
882 gint i;
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
883
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
884 if (g_list_length(labels) == 2)
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
885 box = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
886 else
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
887 box = gtk_vbox_new(FALSE, 0);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
888
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
889 widget = box;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
890
10943
729674da8959 [gaim-migrate @ 12735]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10871
diff changeset
891 for (l = labels, i = 0; l != NULL; l = l->next, i++)
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
892 {
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
893 const char *text = l->data;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
894
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
895 radio = gtk_radio_button_new_with_label_from_widget(
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
896 GTK_RADIO_BUTTON(first_radio), text);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
897
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
898 if (first_radio == NULL)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
899 first_radio = radio;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
900
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
901 if (i == purple_request_field_choice_get_default_value(field))
10943
729674da8959 [gaim-migrate @ 12735]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10871
diff changeset
902 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio), TRUE);
729674da8959 [gaim-migrate @ 12735]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10871
diff changeset
903
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
904 gtk_box_pack_start(GTK_BOX(box), radio, TRUE, TRUE, 0);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
905 gtk_widget_show(radio);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
906
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
907 g_signal_connect(G_OBJECT(radio), "toggled",
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
908 G_CALLBACK(field_choice_option_cb), field);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
909 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
910 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
911
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
912 return widget;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
913 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
914
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
915 static GtkWidget *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
916 create_image_field(PurpleRequestField *field)
11357
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
917 {
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
918 GtkWidget *widget;
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
919 GdkPixbuf *buf, *scale;
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
920 GdkPixbufLoader *loader;
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
921
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
922 loader = gdk_pixbuf_loader_new();
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
923 gdk_pixbuf_loader_write(loader,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
924 (const guchar *)purple_request_field_image_get_buffer(field),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
925 purple_request_field_image_get_size(field),
11357
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
926 NULL);
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
927 gdk_pixbuf_loader_close(loader, NULL);
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
928 buf = gdk_pixbuf_loader_get_pixbuf(loader);
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
929
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
930 scale = gdk_pixbuf_scale_simple(buf,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
931 purple_request_field_image_get_scale_x(field) * gdk_pixbuf_get_width(buf),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
932 purple_request_field_image_get_scale_y(field) * gdk_pixbuf_get_height(buf),
11357
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
933 GDK_INTERP_BILINEAR);
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
934 widget = gtk_image_new_from_pixbuf(scale);
20289
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 20147
diff changeset
935 g_object_unref(G_OBJECT(loader));
11357
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
936 g_object_unref(G_OBJECT(scale));
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
937
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
938 return widget;
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
939 }
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
940
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
941 static GtkWidget *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
942 create_account_field(PurpleRequestField *field)
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
943 {
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
944 GtkWidget *widget;
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
945
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
946 widget = pidgin_account_option_menu_new(
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
947 purple_request_field_account_get_default_value(field),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
948 purple_request_field_account_get_show_all(field),
8289
234429bac6b5 [gaim-migrate @ 9013]
Christian Hammond <chipx86@chipx86.com>
parents: 8286
diff changeset
949 G_CALLBACK(field_account_cb),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
950 purple_request_field_account_get_filter(field),
8289
234429bac6b5 [gaim-migrate @ 9013]
Christian Hammond <chipx86@chipx86.com>
parents: 8286
diff changeset
951 field);
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
952
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
953 return widget;
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
954 }
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
955
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
956 static void
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
957 select_field_list_item(GtkTreeModel *model, GtkTreePath *path,
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
958 GtkTreeIter *iter, gpointer data)
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
959 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
960 PurpleRequestField *field = (PurpleRequestField *)data;
13356
7a73221c8b6f [gaim-migrate @ 15728]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13283
diff changeset
961 char *text;
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
962
7909
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
963 gtk_tree_model_get(model, iter, 1, &text, -1);
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
964
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
965 purple_request_field_list_add_selected(field, text);
13356
7a73221c8b6f [gaim-migrate @ 15728]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13283
diff changeset
966 g_free(text);
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
967 }
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
968
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
969 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
970 list_field_select_changed_cb(GtkTreeSelection *sel, PurpleRequestField *field)
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
971 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
972 purple_request_field_list_clear_selected(field);
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
973
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
974 gtk_tree_selection_selected_foreach(sel, select_field_list_item, field);
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
975 }
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
976
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
977 static GtkWidget *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
978 create_list_field(PurpleRequestField *field)
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
979 {
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
980 GtkWidget *sw;
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
981 GtkWidget *treeview;
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
982 GtkListStore *store;
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
983 GtkCellRenderer *renderer;
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
984 GtkTreeSelection *sel;
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
985 GtkTreeViewColumn *column;
7909
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
986 GtkTreeIter iter;
18190
bcf28ef7e8ff Re-fix the DBus list handling code by killing const GList* / const GSList*
Richard Laager <rlaager@pidgin.im>
parents: 18130
diff changeset
987 GList *l;
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
988
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
989 /* Create the scrolled window */
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
990 sw = gtk_scrolled_window_new(NULL, NULL);
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
991 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
8332
b708d3d428a4 [gaim-migrate @ 9056]
Pekka Riikonen <priikone@silcnet.org>
parents: 8323
diff changeset
992 GTK_POLICY_AUTOMATIC,
b708d3d428a4 [gaim-migrate @ 9056]
Pekka Riikonen <priikone@silcnet.org>
parents: 8323
diff changeset
993 GTK_POLICY_AUTOMATIC);
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
994 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
995 GTK_SHADOW_IN);
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
996 gtk_widget_show(sw);
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
997
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
998 /* Create the list store */
7909
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
999 store = gtk_list_store_new(2, G_TYPE_POINTER, G_TYPE_STRING);
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1000
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1001 /* Create the tree view */
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1002 treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1003 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview), FALSE);
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1004
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1005 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1006
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1007 if (purple_request_field_list_get_multi_select(field))
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1008 gtk_tree_selection_set_mode(sel, GTK_SELECTION_MULTIPLE);
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1009
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1010 column = gtk_tree_view_column_new();
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1011 gtk_tree_view_insert_column(GTK_TREE_VIEW(treeview), column, -1);
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1012
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1013 renderer = gtk_cell_renderer_text_new();
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1014 gtk_tree_view_column_pack_start(column, renderer, TRUE);
7909
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1015 gtk_tree_view_column_add_attribute(column, renderer, "text", 1);
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1016
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1017 for (l = purple_request_field_list_get_items(field); l != NULL; l = l->next)
7909
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1018 {
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1019 const char *text = (const char *)l->data;
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1020
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1021 gtk_list_store_append(store, &iter);
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1022
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1023 gtk_list_store_set(store, &iter,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1024 0, purple_request_field_list_get_data(field, text),
7909
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1025 1, text,
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1026 -1);
7964
10d58eb8a16a [gaim-migrate @ 8641]
Christian Hammond <chipx86@chipx86.com>
parents: 7951
diff changeset
1027
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1028 if (purple_request_field_list_is_selected(field, text))
7964
10d58eb8a16a [gaim-migrate @ 8641]
Christian Hammond <chipx86@chipx86.com>
parents: 7951
diff changeset
1029 gtk_tree_selection_select_iter(sel, &iter);
7909
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1030 }
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1031
19052
5f49fa1c6f08 Fix a bug with multi-field selections in Pidgin's implementation of
Mark Doliner <markdoliner@pidgin.im>
parents: 18966
diff changeset
1032 /*
5f49fa1c6f08 Fix a bug with multi-field selections in Pidgin's implementation of
Mark Doliner <markdoliner@pidgin.im>
parents: 18966
diff changeset
1033 * We only want to catch changes made by the user, so it's important
5f49fa1c6f08 Fix a bug with multi-field selections in Pidgin's implementation of
Mark Doliner <markdoliner@pidgin.im>
parents: 18966
diff changeset
1034 * that we wait until after the list is created to connect this
5f49fa1c6f08 Fix a bug with multi-field selections in Pidgin's implementation of
Mark Doliner <markdoliner@pidgin.im>
parents: 18966
diff changeset
1035 * handler. If we connect the handler before the loop above and
5f49fa1c6f08 Fix a bug with multi-field selections in Pidgin's implementation of
Mark Doliner <markdoliner@pidgin.im>
parents: 18966
diff changeset
1036 * there are multiple items selected, then selecting the first iter
5f49fa1c6f08 Fix a bug with multi-field selections in Pidgin's implementation of
Mark Doliner <markdoliner@pidgin.im>
parents: 18966
diff changeset
1037 * in the tree causes list_field_select_changed_cb to be triggered
5f49fa1c6f08 Fix a bug with multi-field selections in Pidgin's implementation of
Mark Doliner <markdoliner@pidgin.im>
parents: 18966
diff changeset
1038 * which clears out the rest of the list of selected items.
5f49fa1c6f08 Fix a bug with multi-field selections in Pidgin's implementation of
Mark Doliner <markdoliner@pidgin.im>
parents: 18966
diff changeset
1039 */
5f49fa1c6f08 Fix a bug with multi-field selections in Pidgin's implementation of
Mark Doliner <markdoliner@pidgin.im>
parents: 18966
diff changeset
1040 g_signal_connect(G_OBJECT(sel), "changed",
5f49fa1c6f08 Fix a bug with multi-field selections in Pidgin's implementation of
Mark Doliner <markdoliner@pidgin.im>
parents: 18966
diff changeset
1041 G_CALLBACK(list_field_select_changed_cb), field);
5f49fa1c6f08 Fix a bug with multi-field selections in Pidgin's implementation of
Mark Doliner <markdoliner@pidgin.im>
parents: 18966
diff changeset
1042
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1043 gtk_container_add(GTK_CONTAINER(sw), treeview);
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1044 gtk_widget_show(treeview);
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1045
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1046 return sw;
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1047 }
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1048
6363
6e0fa4b64fe6 [gaim-migrate @ 6868]
Christian Hammond <chipx86@chipx86.com>
parents: 6338
diff changeset
1049 static void *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1050 pidgin_request_fields(const char *title, const char *primary,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1051 const char *secondary, PurpleRequestFields *fields,
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1052 const char *ok_text, GCallback ok_cb,
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1053 const char *cancel_text, GCallback cancel_cb,
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16259
diff changeset
1054 PurpleAccount *account, const char *who, PurpleConversation *conv,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1055 void *user_data)
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1056 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1057 PidginRequestData *data;
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1058 GtkWidget *win;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1059 GtkWidget *vbox;
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1060 GtkWidget *vbox2;
6326
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
1061 GtkWidget *hbox;
5815
cdd5b8d9caca [gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents: 5813
diff changeset
1062 GtkWidget *bbox;
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1063 GtkWidget *frame;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1064 GtkWidget *label;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1065 GtkWidget *table;
5815
cdd5b8d9caca [gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents: 5813
diff changeset
1066 GtkWidget *button;
6326
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
1067 GtkWidget *img;
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1068 GtkWidget *sw;
5813
ba2693e8db07 [gaim-migrate @ 6243]
Christian Hammond <chipx86@chipx86.com>
parents: 5811
diff changeset
1069 GtkSizeGroup *sg;
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1070 GList *gl, *fl;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1071 PurpleRequestFieldGroup *group;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1072 PurpleRequestField *field;
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1073 char *label_text;
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
1074 char *primary_esc, *secondary_esc;
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1075 int total_fields = 0;
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1076
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1077 data = g_new0(PidginRequestData, 1);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1078 data->type = PURPLE_REQUEST_FIELDS;
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1079 data->user_data = user_data;
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
1080 data->u.multifield.fields = fields;
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1081
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1082 fields->ui_data = data;
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1083
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1084 data->cb_count = 2;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1085 data->cbs = g_new0(GCallback, 2);
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1086
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1087 data->cbs[0] = ok_cb;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1088 data->cbs[1] = cancel_cb;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1089
19585
14b519abcc26 Fix some conversion warnings about using negative values with unsigned types. There are more, but these were easy fixes. You may think that I'm changing the API, but I'm really not - it was just wrong.
Daniel Atallah <datallah@pidgin.im>
parents: 19369
diff changeset
1090
16686
1ebd9e4ae3f0 Prevent request dialog titles being "pidgin.exe".
Daniel Atallah <datallah@pidgin.im>
parents: 16490
diff changeset
1091 #ifdef _WIN32
17213
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 16873
diff changeset
1092 data->dialog = win = pidgin_create_window(PIDGIN_ALERT_TITLE, PIDGIN_HIG_BORDER, "multifield", TRUE) ;
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 16873
diff changeset
1093 #else /* !_WIN32 */
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 16873
diff changeset
1094 data->dialog = win = pidgin_create_window(title, PIDGIN_HIG_BORDER, "multifield", TRUE) ;
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 16873
diff changeset
1095 #endif /* _WIN32 */
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1096
8323
d962d280c523 [gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
1097 g_signal_connect(G_OBJECT(win), "delete_event",
d962d280c523 [gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
1098 G_CALLBACK(destroy_multifield_cb), data);
d962d280c523 [gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
1099
6326
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
1100 /* Setup the main horizontal box */
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
1101 hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER);
6326
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
1102 gtk_container_add(GTK_CONTAINER(win), hbox);
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
1103 gtk_widget_show(hbox);
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
1104
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
1105 /* Dialog icon. */
15497
92f02f4bd5ee Dialog icon changes
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1106 img = gtk_image_new_from_stock(PIDGIN_STOCK_DIALOG_QUESTION,
92f02f4bd5ee Dialog icon changes
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1107 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_HUGE));
6326
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
1108 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
1109 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
1110 gtk_widget_show(img);
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
1111
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1112 /* Setup the vbox */
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
1113 vbox = gtk_vbox_new(FALSE, PIDGIN_HIG_BORDER);
19369
e2ad831e0f1a Two changes here
Mark Doliner <markdoliner@pidgin.im>
parents: 19052
diff changeset
1114 gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 0);
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1115 gtk_widget_show(vbox);
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1116
5813
ba2693e8db07 [gaim-migrate @ 6243]
Christian Hammond <chipx86@chipx86.com>
parents: 5811
diff changeset
1117 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
ba2693e8db07 [gaim-migrate @ 6243]
Christian Hammond <chipx86@chipx86.com>
parents: 5811
diff changeset
1118
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1119 if(primary) {
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
1120 primary_esc = g_markup_escape_text(primary, -1);
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1121 label_text = g_strdup_printf(
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
1122 "<span weight=\"bold\" size=\"larger\">%s</span>", primary_esc);
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
1123 g_free(primary_esc);
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1124 label = gtk_label_new(NULL);
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1125
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1126 gtk_label_set_markup(GTK_LABEL(label), label_text);
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1127 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1128 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
15383
80d48e553879 [gaim-migrate @ 18112]
Nathan Walp <nwalp@pidgin.im>
parents: 15382
diff changeset
1129 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
6325
35357b64dbb2 [gaim-migrate @ 6824]
Christian Hammond <chipx86@chipx86.com>
parents: 6324
diff changeset
1130 gtk_widget_show(label);
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1131 g_free(label_text);
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1132 }
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1133
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1134 for (gl = purple_request_fields_get_groups(fields); gl != NULL;
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1135 gl = gl->next)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1136 total_fields += g_list_length(purple_request_field_group_get_fields(gl->data));
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1137
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1138 if(total_fields > 9) {
19369
e2ad831e0f1a Two changes here
Mark Doliner <markdoliner@pidgin.im>
parents: 19052
diff changeset
1139 GtkWidget *hbox_for_spacing, *vbox_for_spacing;
e2ad831e0f1a Two changes here
Mark Doliner <markdoliner@pidgin.im>
parents: 19052
diff changeset
1140
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1141 sw = gtk_scrolled_window_new(NULL, NULL);
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1142 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1143 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1144 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1145 GTK_SHADOW_NONE);
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1146 gtk_widget_set_size_request(sw, -1, 200);
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1147 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0);
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1148 gtk_widget_show(sw);
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1149
19369
e2ad831e0f1a Two changes here
Mark Doliner <markdoliner@pidgin.im>
parents: 19052
diff changeset
1150 hbox_for_spacing = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER);
e2ad831e0f1a Two changes here
Mark Doliner <markdoliner@pidgin.im>
parents: 19052
diff changeset
1151 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sw),
e2ad831e0f1a Two changes here
Mark Doliner <markdoliner@pidgin.im>
parents: 19052
diff changeset
1152 hbox_for_spacing);
e2ad831e0f1a Two changes here
Mark Doliner <markdoliner@pidgin.im>
parents: 19052
diff changeset
1153 gtk_widget_show(hbox_for_spacing);
e2ad831e0f1a Two changes here
Mark Doliner <markdoliner@pidgin.im>
parents: 19052
diff changeset
1154
e2ad831e0f1a Two changes here
Mark Doliner <markdoliner@pidgin.im>
parents: 19052
diff changeset
1155 vbox_for_spacing = gtk_vbox_new(FALSE, PIDGIN_HIG_BORDER);
e2ad831e0f1a Two changes here
Mark Doliner <markdoliner@pidgin.im>
parents: 19052
diff changeset
1156 gtk_box_pack_start(GTK_BOX(hbox_for_spacing),
e2ad831e0f1a Two changes here
Mark Doliner <markdoliner@pidgin.im>
parents: 19052
diff changeset
1157 vbox_for_spacing, TRUE, TRUE, PIDGIN_HIG_BOX_SPACE);
e2ad831e0f1a Two changes here
Mark Doliner <markdoliner@pidgin.im>
parents: 19052
diff changeset
1158 gtk_widget_show(vbox_for_spacing);
e2ad831e0f1a Two changes here
Mark Doliner <markdoliner@pidgin.im>
parents: 19052
diff changeset
1159
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
1160 vbox2 = gtk_vbox_new(FALSE, PIDGIN_HIG_BORDER);
19369
e2ad831e0f1a Two changes here
Mark Doliner <markdoliner@pidgin.im>
parents: 19052
diff changeset
1161 gtk_box_pack_start(GTK_BOX(vbox_for_spacing),
e2ad831e0f1a Two changes here
Mark Doliner <markdoliner@pidgin.im>
parents: 19052
diff changeset
1162 vbox2, TRUE, TRUE, PIDGIN_HIG_BOX_SPACE);
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1163 gtk_widget_show(vbox2);
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1164 } else {
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1165 vbox2 = vbox;
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1166 }
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1167
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1168 if (secondary) {
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
1169 secondary_esc = g_markup_escape_text(secondary, -1);
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1170 label = gtk_label_new(NULL);
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1171
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
1172 gtk_label_set_markup(GTK_LABEL(label), secondary_esc);
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
1173 g_free(secondary_esc);
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1174 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1175 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1176 gtk_box_pack_start(GTK_BOX(vbox2), label, TRUE, TRUE, 0);
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1177 gtk_widget_show(label);
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1178 }
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1179
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1180 for (gl = purple_request_fields_get_groups(fields);
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1181 gl != NULL;
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1182 gl = gl->next)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1183 {
5816
44bbfb7f8904 [gaim-migrate @ 6246]
Christian Hammond <chipx86@chipx86.com>
parents: 5815
diff changeset
1184 GList *field_list;
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1185 size_t field_count = 0;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1186 size_t cols = 1;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1187 size_t rows;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1188 size_t col_num;
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1189 size_t row_num = 0;
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1190
5816
44bbfb7f8904 [gaim-migrate @ 6246]
Christian Hammond <chipx86@chipx86.com>
parents: 5815
diff changeset
1191 group = gl->data;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1192 field_list = purple_request_field_group_get_fields(group);
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1193
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1194 if (purple_request_field_group_get_title(group) != NULL)
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1195 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1196 frame = pidgin_make_frame(vbox2,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1197 purple_request_field_group_get_title(group));
6324
dddc1f8fe8e0 [gaim-migrate @ 6823]
Christian Hammond <chipx86@chipx86.com>
parents: 6110
diff changeset
1198 }
6325
35357b64dbb2 [gaim-migrate @ 6824]
Christian Hammond <chipx86@chipx86.com>
parents: 6324
diff changeset
1199 else
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1200 frame = vbox2;
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1201
5816
44bbfb7f8904 [gaim-migrate @ 6246]
Christian Hammond <chipx86@chipx86.com>
parents: 5815
diff changeset
1202 field_count = g_list_length(field_list);
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1203 /*
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1204 if (field_count > 9)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1205 {
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1206 rows = field_count / 2;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1207 cols++;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1208 }
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1209 else
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1210 */
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1211 rows = field_count;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1212
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1213 col_num = 0;
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1214
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1215 for (fl = field_list; fl != NULL; fl = fl->next)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1216 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1217 PurpleRequestFieldType type;
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1218
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1219 field = (PurpleRequestField *)fl->data;
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1220
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1221 type = purple_request_field_get_type(field);
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1222
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1223 if (type == PURPLE_REQUEST_FIELD_LABEL)
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1224 {
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1225 if (col_num > 0)
7921
cd7f211c784c [gaim-migrate @ 8589]
Nathan Walp <nwalp@pidgin.im>
parents: 7909
diff changeset
1226 rows++;
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1227
7921
cd7f211c784c [gaim-migrate @ 8589]
Nathan Walp <nwalp@pidgin.im>
parents: 7909
diff changeset
1228 rows++;
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1229 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1230 else if ((type == PURPLE_REQUEST_FIELD_LIST) ||
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1231 (type == PURPLE_REQUEST_FIELD_STRING &&
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1232 purple_request_field_string_is_multiline(field)))
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1233 {
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1234 if (col_num > 0)
7921
cd7f211c784c [gaim-migrate @ 8589]
Nathan Walp <nwalp@pidgin.im>
parents: 7909
diff changeset
1235 rows++;
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1236
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1237 rows += 2;
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1238 }
7921
cd7f211c784c [gaim-migrate @ 8589]
Nathan Walp <nwalp@pidgin.im>
parents: 7909
diff changeset
1239
cd7f211c784c [gaim-migrate @ 8589]
Nathan Walp <nwalp@pidgin.im>
parents: 7909
diff changeset
1240 col_num++;
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1241
8323
d962d280c523 [gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
1242 if (col_num >= cols)
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1243 col_num = 0;
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1244 }
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1245
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1246 table = gtk_table_new(rows, 2 * cols, FALSE);
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
1247 gtk_table_set_row_spacings(GTK_TABLE(table), PIDGIN_HIG_BOX_SPACE);
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
1248 gtk_table_set_col_spacings(GTK_TABLE(table), PIDGIN_HIG_BOX_SPACE);
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1249
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1250 gtk_container_add(GTK_CONTAINER(frame), table);
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1251 gtk_widget_show(table);
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1252
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1253 for (row_num = 0, fl = field_list;
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1254 row_num < rows && fl != NULL;
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1255 row_num++)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1256 {
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1257 for (col_num = 0;
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1258 col_num < cols && fl != NULL;
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1259 col_num++, fl = fl->next)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1260 {
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1261 size_t col_offset = col_num * 2;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1262 PurpleRequestFieldType type;
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1263 GtkWidget *widget = NULL;
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1264
12666
a02b23981ccb [gaim-migrate @ 15009]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
1265 label = NULL;
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1266 field = fl->data;
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1267
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1268 if (!purple_request_field_is_visible(field)) {
7922
160207a9feee [gaim-migrate @ 8591]
Nathan Walp <nwalp@pidgin.im>
parents: 7921
diff changeset
1269 col_num--;
7904
266d6d5c68ac [gaim-migrate @ 8564]
Christian Hammond <chipx86@chipx86.com>
parents: 7903
diff changeset
1270 continue;
7922
160207a9feee [gaim-migrate @ 8591]
Nathan Walp <nwalp@pidgin.im>
parents: 7921
diff changeset
1271 }
7904
266d6d5c68ac [gaim-migrate @ 8564]
Christian Hammond <chipx86@chipx86.com>
parents: 7903
diff changeset
1272
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1273 type = purple_request_field_get_type(field);
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1274
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1275 if (type != PURPLE_REQUEST_FIELD_BOOLEAN &&
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1276 purple_request_field_get_label(field))
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1277 {
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1278 char *text;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1279
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1280 text = g_strdup_printf("%s:",
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1281 purple_request_field_get_label(field));
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1282
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1283 label = gtk_label_new(NULL);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1284 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), text);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1285 g_free(text);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1286
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1287 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1288
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1289 gtk_size_group_add_widget(sg, label);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1290
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1291 if (type == PURPLE_REQUEST_FIELD_LABEL ||
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1292 type == PURPLE_REQUEST_FIELD_LIST ||
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1293 (type == PURPLE_REQUEST_FIELD_STRING &&
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1294 purple_request_field_string_is_multiline(field)))
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1295 {
7921
cd7f211c784c [gaim-migrate @ 8589]
Nathan Walp <nwalp@pidgin.im>
parents: 7909
diff changeset
1296 if(col_num > 0)
cd7f211c784c [gaim-migrate @ 8589]
Nathan Walp <nwalp@pidgin.im>
parents: 7909
diff changeset
1297 row_num++;
cd7f211c784c [gaim-migrate @ 8589]
Nathan Walp <nwalp@pidgin.im>
parents: 7909
diff changeset
1298
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1299 gtk_table_attach_defaults(GTK_TABLE(table), label,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1300 0, 2 * cols,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1301 row_num, row_num + 1);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1302
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1303 row_num++;
7921
cd7f211c784c [gaim-migrate @ 8589]
Nathan Walp <nwalp@pidgin.im>
parents: 7909
diff changeset
1304 col_num=cols;
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1305 }
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1306 else
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1307 {
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1308 gtk_table_attach_defaults(GTK_TABLE(table), label,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1309 col_offset, col_offset + 1,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1310 row_num, row_num + 1);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1311 }
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1312
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1313 gtk_widget_show(label);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1314 }
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1315
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13356
diff changeset
1316 if (field->ui_data != NULL)
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13356
diff changeset
1317 widget = GTK_WIDGET(field->ui_data);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1318 else if (type == PURPLE_REQUEST_FIELD_STRING)
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1319 widget = create_string_field(field);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1320 else if (type == PURPLE_REQUEST_FIELD_INTEGER)
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1321 widget = create_int_field(field);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1322 else if (type == PURPLE_REQUEST_FIELD_BOOLEAN)
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1323 widget = create_bool_field(field);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1324 else if (type == PURPLE_REQUEST_FIELD_CHOICE)
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1325 widget = create_choice_field(field);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1326 else if (type == PURPLE_REQUEST_FIELD_LIST)
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1327 widget = create_list_field(field);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1328 else if (type == PURPLE_REQUEST_FIELD_IMAGE)
11357
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1329 widget = create_image_field(field);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1330 else if (type == PURPLE_REQUEST_FIELD_ACCOUNT)
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1331 widget = create_account_field(field);
7904
266d6d5c68ac [gaim-migrate @ 8564]
Christian Hammond <chipx86@chipx86.com>
parents: 7903
diff changeset
1332 else
266d6d5c68ac [gaim-migrate @ 8564]
Christian Hammond <chipx86@chipx86.com>
parents: 7903
diff changeset
1333 continue;
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1334
12666
a02b23981ccb [gaim-migrate @ 15009]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
1335 if (label)
a02b23981ccb [gaim-migrate @ 15009]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
1336 gtk_label_set_mnemonic_widget(GTK_LABEL(label), widget);
a02b23981ccb [gaim-migrate @ 15009]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
1337
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1338 if (type == PURPLE_REQUEST_FIELD_STRING &&
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1339 purple_request_field_string_is_multiline(field))
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1340 {
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1341 gtk_table_attach(GTK_TABLE(table), widget,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1342 0, 2 * cols,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1343 row_num, row_num + 1,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1344 GTK_FILL | GTK_EXPAND,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1345 GTK_FILL | GTK_EXPAND,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1346 5, 0);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1347 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1348 else if (type == PURPLE_REQUEST_FIELD_LIST)
10627
ebbfa9f428e6 [gaim-migrate @ 12102]
Christopher O'Brien <siege@pidgin.im>
parents: 10605
diff changeset
1349 {
ebbfa9f428e6 [gaim-migrate @ 12102]
Christopher O'Brien <siege@pidgin.im>
parents: 10605
diff changeset
1350 gtk_table_attach(GTK_TABLE(table), widget,
ebbfa9f428e6 [gaim-migrate @ 12102]
Christopher O'Brien <siege@pidgin.im>
parents: 10605
diff changeset
1351 0, 2 * cols,
ebbfa9f428e6 [gaim-migrate @ 12102]
Christopher O'Brien <siege@pidgin.im>
parents: 10605
diff changeset
1352 row_num, row_num + 1,
ebbfa9f428e6 [gaim-migrate @ 12102]
Christopher O'Brien <siege@pidgin.im>
parents: 10605
diff changeset
1353 GTK_FILL | GTK_EXPAND,
ebbfa9f428e6 [gaim-migrate @ 12102]
Christopher O'Brien <siege@pidgin.im>
parents: 10605
diff changeset
1354 GTK_FILL | GTK_EXPAND,
ebbfa9f428e6 [gaim-migrate @ 12102]
Christopher O'Brien <siege@pidgin.im>
parents: 10605
diff changeset
1355 5, 0);
ebbfa9f428e6 [gaim-migrate @ 12102]
Christopher O'Brien <siege@pidgin.im>
parents: 10605
diff changeset
1356 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1357 else if (type == PURPLE_REQUEST_FIELD_BOOLEAN)
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1358 {
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1359 gtk_table_attach(GTK_TABLE(table), widget,
10627
ebbfa9f428e6 [gaim-migrate @ 12102]
Christopher O'Brien <siege@pidgin.im>
parents: 10605
diff changeset
1360 col_offset, col_offset + 1,
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1361 row_num, row_num + 1,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1362 GTK_FILL | GTK_EXPAND,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1363 GTK_FILL | GTK_EXPAND,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1364 5, 0);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1365 }
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1366 else
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1367 {
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1368 gtk_table_attach(GTK_TABLE(table), widget,
10627
ebbfa9f428e6 [gaim-migrate @ 12102]
Christopher O'Brien <siege@pidgin.im>
parents: 10605
diff changeset
1369 1, 2 * cols,
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1370 row_num, row_num + 1,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1371 GTK_FILL | GTK_EXPAND,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1372 GTK_FILL | GTK_EXPAND,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1373 5, 0);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1374 }
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1375
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1376 gtk_widget_show(widget);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1377
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1378 field->ui_data = widget;
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1379 }
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1380 }
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1381 }
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1382
5813
ba2693e8db07 [gaim-migrate @ 6243]
Christian Hammond <chipx86@chipx86.com>
parents: 5811
diff changeset
1383 g_object_unref(sg);
ba2693e8db07 [gaim-migrate @ 6243]
Christian Hammond <chipx86@chipx86.com>
parents: 5811
diff changeset
1384
5815
cdd5b8d9caca [gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents: 5813
diff changeset
1385 /* Button box. */
cdd5b8d9caca [gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents: 5813
diff changeset
1386 bbox = gtk_hbutton_box_new();
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
1387 gtk_box_set_spacing(GTK_BOX(bbox), PIDGIN_HIG_BOX_SPACE);
5815
cdd5b8d9caca [gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents: 5813
diff changeset
1388 gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END);
cdd5b8d9caca [gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents: 5813
diff changeset
1389 gtk_box_pack_end(GTK_BOX(vbox), bbox, FALSE, TRUE, 0);
cdd5b8d9caca [gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents: 5813
diff changeset
1390 gtk_widget_show(bbox);
cdd5b8d9caca [gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents: 5813
diff changeset
1391
cdd5b8d9caca [gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents: 5813
diff changeset
1392 /* Cancel button */
cdd5b8d9caca [gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents: 5813
diff changeset
1393 button = gtk_button_new_from_stock(text_to_stock(cancel_text));
cdd5b8d9caca [gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents: 5813
diff changeset
1394 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
cdd5b8d9caca [gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents: 5813
diff changeset
1395 gtk_widget_show(button);
cdd5b8d9caca [gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents: 5813
diff changeset
1396
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
1397 g_signal_connect(G_OBJECT(button), "clicked",
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
1398 G_CALLBACK(multifield_cancel_cb), data);
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
1399
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1400 GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1401
5815
cdd5b8d9caca [gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents: 5813
diff changeset
1402 /* OK button */
cdd5b8d9caca [gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents: 5813
diff changeset
1403 button = gtk_button_new_from_stock(text_to_stock(ok_text));
cdd5b8d9caca [gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents: 5813
diff changeset
1404 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
cdd5b8d9caca [gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents: 5813
diff changeset
1405 gtk_widget_show(button);
cdd5b8d9caca [gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents: 5813
diff changeset
1406
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1407 data->ok_button = button;
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1408
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1409 GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1410 gtk_window_set_default(GTK_WINDOW(win), button);
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1411
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
1412 g_signal_connect(G_OBJECT(button), "clicked",
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
1413 G_CALLBACK(multifield_ok_cb), data);
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
1414
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1415 if (!purple_request_fields_all_required_filled(fields))
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1416 gtk_widget_set_sensitive(button, FALSE);
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1417
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1418 gtk_widget_show(win);
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1419
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1420 return data;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1421 }
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1422
6363
6e0fa4b64fe6 [gaim-migrate @ 6868]
Christian Hammond <chipx86@chipx86.com>
parents: 6338
diff changeset
1423 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1424 file_yes_no_cb(PidginRequestData *data, gint id)
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1425 {
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1426 /* Only call the callback if yes was selected, otherwise the request
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1427 * (eg. file transfer) will be cancelled, then when a new filename is chosen
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1428 * things go BOOM */
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1429 if (id == 1) {
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1430 if (data->cbs[1] != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1431 ((PurpleRequestFileCb)data->cbs[1])(data->user_data, data->u.file.name);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1432 purple_request_close(data->type, data);
13373
c92b0e801f01 [gaim-migrate @ 15745]
Richard Laager <rlaager@pidgin.im>
parents: 13362
diff changeset
1433 } else {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1434 pidgin_clear_cursor(GTK_WIDGET(data->dialog));
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1435 }
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1436 }
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1437
9573
7fb26654aee8 [gaim-migrate @ 10416]
Mark Doliner <markdoliner@pidgin.im>
parents: 9513
diff changeset
1438 #if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1439 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1440 file_ok_check_if_exists_cb(GtkWidget *widget, gint response, PidginRequestData *data)
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1441 {
10536
c2e0b596b4ad [gaim-migrate @ 11888]
Lee Roach <phroggster@gmail.com>
parents: 10418
diff changeset
1442 gchar *current_folder;
c2e0b596b4ad [gaim-migrate @ 11888]
Lee Roach <phroggster@gmail.com>
parents: 10418
diff changeset
1443
12234
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
1444 generic_response_start(data);
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
1445
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1446 if (response != GTK_RESPONSE_ACCEPT) {
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1447 if (data->cbs[0] != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1448 ((PurpleRequestFileCb)data->cbs[0])(data->user_data, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1449 purple_request_close(data->type, data);
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1450 return;
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1451 }
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1452
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1453 data->u.file.name = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(data->dialog));
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1454 current_folder = gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(data->dialog));
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1455 if (current_folder != NULL) {
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1456 if (data->u.file.savedialog) {
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15931
diff changeset
1457 purple_prefs_set_path(PIDGIN_PREFS_ROOT "/filelocations/last_save_folder", current_folder);
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1458 } else {
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15931
diff changeset
1459 purple_prefs_set_path(PIDGIN_PREFS_ROOT "/filelocations/last_open_folder", current_folder);
10536
c2e0b596b4ad [gaim-migrate @ 11888]
Lee Roach <phroggster@gmail.com>
parents: 10418
diff changeset
1460 }
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1461 g_free(current_folder);
10536
c2e0b596b4ad [gaim-migrate @ 11888]
Lee Roach <phroggster@gmail.com>
parents: 10418
diff changeset
1462 }
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1463
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1464 #else /* FILECHOOSER */
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1465
9573
7fb26654aee8 [gaim-migrate @ 10416]
Mark Doliner <markdoliner@pidgin.im>
parents: 9513
diff changeset
1466 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1467 file_ok_check_if_exists_cb(GtkWidget *button, PidginRequestData *data)
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1468 {
9503
8593c276aed3 [gaim-migrate @ 10330]
Mark Doliner <markdoliner@pidgin.im>
parents: 9502
diff changeset
1469 const gchar *name;
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1470 gchar *current_folder;
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1471
12234
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
1472 generic_response_start(data);
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
1473
9503
8593c276aed3 [gaim-migrate @ 10330]
Mark Doliner <markdoliner@pidgin.im>
parents: 9502
diff changeset
1474 name = gtk_file_selection_get_filename(GTK_FILE_SELECTION(data->dialog));
9513
ec57f8faed31 [gaim-migrate @ 10340]
Mark Doliner <markdoliner@pidgin.im>
parents: 9506
diff changeset
1475
ec57f8faed31 [gaim-migrate @ 10340]
Mark Doliner <markdoliner@pidgin.im>
parents: 9506
diff changeset
1476 /* If name is a directory then change directories */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1477 if (data->type == PURPLE_REQUEST_FILE) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1478 if (pidgin_check_if_dir(name, GTK_FILE_SELECTION(data->dialog)))
13283
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1479 return;
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1480 }
9513
ec57f8faed31 [gaim-migrate @ 10340]
Mark Doliner <markdoliner@pidgin.im>
parents: 9506
diff changeset
1481
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1482 current_folder = g_path_get_dirname(name);
13283
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1483
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1484 g_free(data->u.file.name);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1485 if (data->type == PURPLE_REQUEST_FILE)
13283
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1486 data->u.file.name = g_strdup(name);
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1487 else
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1488 {
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1489 if (g_file_test(name, G_FILE_TEST_IS_DIR))
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1490 data->u.file.name = g_strdup(name);
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1491 else
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1492 data->u.file.name = g_strdup(current_folder);
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1493 }
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1494
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1495 if (current_folder != NULL) {
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1496 if (data->u.file.savedialog) {
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15931
diff changeset
1497 purple_prefs_set_path(PIDGIN_PREFS_ROOT "/filelocations/last_save_folder", current_folder);
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1498 } else {
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15931
diff changeset
1499 purple_prefs_set_path(PIDGIN_PREFS_ROOT "/filelocations/last_open_folder", current_folder);
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1500 }
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1501 g_free(current_folder);
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1502 }
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1503
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1504 #endif /* FILECHOOSER */
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1505
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1506 if ((data->u.file.savedialog == TRUE) &&
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1507 (g_file_test(data->u.file.name, G_FILE_TEST_EXISTS))) {
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1508 purple_request_action(data, NULL, _("That file already exists"),
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16259
diff changeset
1509 _("Would you like to overwrite it?"), 0,
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16259
diff changeset
1510 NULL, NULL, NULL,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1511 data, 2,
13535
aa70e0ac6469 [gaim-migrate @ 15911]
Richard Laager <rlaager@pidgin.im>
parents: 13475
diff changeset
1512 _("Overwrite"), G_CALLBACK(file_yes_no_cb),
aa70e0ac6469 [gaim-migrate @ 15911]
Richard Laager <rlaager@pidgin.im>
parents: 13475
diff changeset
1513 _("Choose New Name"), G_CALLBACK(file_yes_no_cb));
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1514 } else
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1515 file_yes_no_cb(data, 1);
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1516 }
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1517
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1518 #if !GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1519 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1520 file_cancel_cb(PidginRequestData *data)
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1521 {
12234
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
1522 generic_response_start(data);
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
1523
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1524 if (data->cbs[0] != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1525 ((PurpleRequestFileCb)data->cbs[0])(data->user_data, NULL);
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1526
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1527 purple_request_close(data->type, data);
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1528 }
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1529 #endif /* FILECHOOSER */
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1530
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1531 static void *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1532 pidgin_request_file(const char *title, const char *filename,
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1533 gboolean savedialog,
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1534 GCallback ok_cb, GCallback cancel_cb,
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16259
diff changeset
1535 PurpleAccount *account, const char *who, PurpleConversation *conv,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1536 void *user_data)
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1537 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1538 PidginRequestData *data;
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1539 GtkWidget *filesel;
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1540 const gchar *current_folder;
10673
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1541 #if GTK_CHECK_VERSION(2,4,0)
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1542 gboolean folder_set = FALSE;
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1543 #endif
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1544
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1545 data = g_new0(PidginRequestData, 1);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1546 data->type = PURPLE_REQUEST_FILE;
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1547 data->user_data = user_data;
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1548 data->cb_count = 2;
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1549 data->cbs = g_new0(GCallback, 2);
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1550 data->cbs[0] = cancel_cb;
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1551 data->cbs[1] = ok_cb;
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1552 data->u.file.savedialog = savedialog;
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1553
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1554 #if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1555 filesel = gtk_file_chooser_dialog_new(
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1556 title ? title : (savedialog ? _("Save File...")
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1557 : _("Open File...")),
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1558 NULL,
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1559 savedialog ? GTK_FILE_CHOOSER_ACTION_SAVE
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1560 : GTK_FILE_CHOOSER_ACTION_OPEN,
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1561 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1562 savedialog ? GTK_STOCK_SAVE
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1563 : GTK_STOCK_OPEN,
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1564 GTK_RESPONSE_ACCEPT,
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1565 NULL);
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1566 gtk_dialog_set_default_response(GTK_DIALOG(filesel), GTK_RESPONSE_ACCEPT);
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1567
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1568 if (savedialog) {
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15931
diff changeset
1569 current_folder = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/filelocations/last_save_folder");
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1570 } else {
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15931
diff changeset
1571 current_folder = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/filelocations/last_open_folder");
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1572 }
10673
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1573
15297
eb8632ad88d0 [gaim-migrate @ 18025]
Mark Doliner <markdoliner@pidgin.im>
parents: 15065
diff changeset
1574 if ((filename != NULL) && (*filename != '\0')) {
15022
4489e51a8d8b [gaim-migrate @ 17739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14922
diff changeset
1575 if (savedialog)
4489e51a8d8b [gaim-migrate @ 17739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14922
diff changeset
1576 gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(filesel), filename);
16849
f7b4c6d3ce11 This fixes #412. Apparently gtk_file_chooser_set_filename() doesn't like it when the filename specified doesn't actually exist. This is a GTK+ bug, which I will report.
Daniel Atallah <datallah@pidgin.im>
parents: 16752
diff changeset
1577 else if (g_file_test(filename, G_FILE_TEST_EXISTS))
15022
4489e51a8d8b [gaim-migrate @ 17739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14922
diff changeset
1578 gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(filesel), filename);
4489e51a8d8b [gaim-migrate @ 17739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14922
diff changeset
1579 }
16716
48db3a3d7044 disapproval of revision '8939617e03f8745cbe2ed5a7d82d97f2d4801c30'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16715
diff changeset
1580 if ((filename == NULL || *filename == '\0' || !g_file_test(filename, G_FILE_TEST_EXISTS)) &&
48db3a3d7044 disapproval of revision '8939617e03f8745cbe2ed5a7d82d97f2d4801c30'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16715
diff changeset
1581 (current_folder != NULL) && (*current_folder != '\0')) {
10673
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1582 folder_set = gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(filesel), current_folder);
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1583 }
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1584
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1585 #ifdef _WIN32
16873
f36f8e4a9cb4 Additional fix for another crash similar to #412.
Daniel Atallah <datallah@pidgin.im>
parents: 16849
diff changeset
1586 if (!folder_set && (filename == NULL || *filename == '\0' || !g_file_test(filename, G_FILE_TEST_EXISTS))) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1587 char *my_documents = wpurple_get_special_folder(CSIDL_PERSONAL);
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1588
10673
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1589 if (my_documents != NULL) {
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1590 gtk_file_chooser_set_current_folder(
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1591 GTK_FILE_CHOOSER(filesel), my_documents);
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1592
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1593 g_free(my_documents);
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1594 }
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1595 }
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1596
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1597 #endif
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1598 g_signal_connect(G_OBJECT(GTK_FILE_CHOOSER(filesel)), "response",
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1599 G_CALLBACK(file_ok_check_if_exists_cb), data);
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1600 #else /* FILECHOOSER */
10673
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1601 filesel = gtk_file_selection_new(
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1602 title ? title : (savedialog ? _("Save File...")
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1603 : _("Open File...")));
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1604 if (savedialog) {
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15931
diff changeset
1605 current_folder = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/filelocations/last_save_folder");
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1606 } else {
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15931
diff changeset
1607 current_folder = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/filelocations/last_open_folder");
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1608 }
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1609 if (current_folder != NULL) {
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1610 gchar *path = g_strdup_printf("%s%s", current_folder, G_DIR_SEPARATOR_S);
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1611 gtk_file_selection_set_filename(GTK_FILE_SELECTION(filesel), path);
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1612 g_free(path);
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1613 }
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10181
diff changeset
1614 if (filename != NULL)
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10181
diff changeset
1615 gtk_file_selection_set_filename(GTK_FILE_SELECTION(filesel), filename);
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1616
9506
11e355d544fa [gaim-migrate @ 10333]
Mark Doliner <markdoliner@pidgin.im>
parents: 9503
diff changeset
1617 g_signal_connect_swapped(G_OBJECT(GTK_FILE_SELECTION(filesel)), "delete_event",
11e355d544fa [gaim-migrate @ 10333]
Mark Doliner <markdoliner@pidgin.im>
parents: 9503
diff changeset
1618 G_CALLBACK(file_cancel_cb), data);
11e355d544fa [gaim-migrate @ 10333]
Mark Doliner <markdoliner@pidgin.im>
parents: 9503
diff changeset
1619 g_signal_connect_swapped(G_OBJECT(GTK_FILE_SELECTION(filesel)->cancel_button),
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1620 "clicked", G_CALLBACK(file_cancel_cb), data);
9506
11e355d544fa [gaim-migrate @ 10333]
Mark Doliner <markdoliner@pidgin.im>
parents: 9503
diff changeset
1621 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(filesel)->ok_button), "clicked",
11e355d544fa [gaim-migrate @ 10333]
Mark Doliner <markdoliner@pidgin.im>
parents: 9503
diff changeset
1622 G_CALLBACK(file_ok_check_if_exists_cb), data);
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1623 #endif /* FILECHOOSER */
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1624
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1625 data->dialog = filesel;
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1626 gtk_widget_show(filesel);
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1627
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1628 return (void *)data;
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1629 }
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1630
13283
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1631 static void *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1632 pidgin_request_folder(const char *title, const char *dirname,
13283
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1633 GCallback ok_cb, GCallback cancel_cb,
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16259
diff changeset
1634 PurpleAccount *account, const char *who, PurpleConversation *conv,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1635 void *user_data)
13283
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1636 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1637 PidginRequestData *data;
13283
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1638 GtkWidget *dirsel;
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13536
diff changeset
1639
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1640 data = g_new0(PidginRequestData, 1);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1641 data->type = PURPLE_REQUEST_FOLDER;
13283
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1642 data->user_data = user_data;
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1643 data->cb_count = 2;
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1644 data->cbs = g_new0(GCallback, 2);
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1645 data->cbs[0] = cancel_cb;
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1646 data->cbs[1] = ok_cb;
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1647 data->u.file.savedialog = FALSE;
16686
1ebd9e4ae3f0 Prevent request dialog titles being "pidgin.exe".
Daniel Atallah <datallah@pidgin.im>
parents: 16490
diff changeset
1648
13283
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1649 #if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1650 dirsel = gtk_file_chooser_dialog_new(
13536
345d4ac042f7 [gaim-migrate @ 15912]
Richard Laager <rlaager@pidgin.im>
parents: 13535
diff changeset
1651 title ? title : _("Select Folder..."),
13283
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1652 NULL,
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1653 GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1654 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1655 GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1656 NULL);
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1657 gtk_dialog_set_default_response(GTK_DIALOG(dirsel), GTK_RESPONSE_ACCEPT);
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1658
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1659 if ((dirname != NULL) && (*dirname != '\0'))
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1660 gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dirsel), dirname);
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1661
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1662 g_signal_connect(G_OBJECT(GTK_FILE_CHOOSER(dirsel)), "response",
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1663 G_CALLBACK(file_ok_check_if_exists_cb), data);
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1664 #else
13536
345d4ac042f7 [gaim-migrate @ 15912]
Richard Laager <rlaager@pidgin.im>
parents: 13535
diff changeset
1665 dirsel = gtk_file_selection_new(title ? title : _("Select Folder..."));
13283
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1666
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1667 g_signal_connect_swapped(G_OBJECT(dirsel), "delete_event",
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1668 G_CALLBACK(file_cancel_cb), data);
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1669 g_signal_connect_swapped(G_OBJECT(GTK_FILE_SELECTION(dirsel)->cancel_button),
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1670 "clicked", G_CALLBACK(file_cancel_cb), data);
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1671 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(dirsel)->ok_button), "clicked",
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1672 G_CALLBACK(file_ok_check_if_exists_cb), data);
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1673 #endif
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1674
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1675 data->dialog = dirsel;
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1676 gtk_widget_show(dirsel);
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1677
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1678 return (void *)data;
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1679 }
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1680
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1681 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1682 pidgin_close_request(PurpleRequestType type, void *ui_handle)
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1683 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1684 PidginRequestData *data = (PidginRequestData *)ui_handle;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1685
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13536
diff changeset
1686 g_free(data->cbs);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1687
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1688 gtk_widget_destroy(data->dialog);
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1689
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1690 if (type == PURPLE_REQUEST_FIELDS)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1691 purple_request_fields_destroy(data->u.multifield.fields);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1692 else if (type == PURPLE_REQUEST_FILE)
9513
ec57f8faed31 [gaim-migrate @ 10340]
Mark Doliner <markdoliner@pidgin.im>
parents: 9506
diff changeset
1693 g_free(data->u.file.name);
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
1694
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1695 g_free(data);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1696 }
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1697
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1698 static PurpleRequestUiOps ops =
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1699 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1700 pidgin_request_input,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1701 pidgin_request_choice,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1702 pidgin_request_action,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1703 pidgin_request_fields,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1704 pidgin_request_file,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1705 pidgin_close_request,
16752
e6bcb1628c57 Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 16718
diff changeset
1706 pidgin_request_folder,
e6bcb1628c57 Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 16718
diff changeset
1707 NULL,
e6bcb1628c57 Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 16718
diff changeset
1708 NULL,
e6bcb1628c57 Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 16718
diff changeset
1709 NULL,
e6bcb1628c57 Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 16718
diff changeset
1710 NULL
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1711 };
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1712
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1713 PurpleRequestUiOps *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1714 pidgin_request_get_ui_ops(void)
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1715 {
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1716 return &ops;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1717 }

mercurial