src/gtkrequest.c

Fri, 06 Jan 2006 04:46:00 +0000

author
Casey Harkins <charkins@pidgin.im>
date
Fri, 06 Jan 2006 04:46:00 +0000
changeset 12744
45d72d69f399
parent 12666
a02b23981ccb
child 12793
5add7e19d6c4
permissions
-rw-r--r--

[gaim-migrate @ 15091]
" Adds an emblem to a buddy if they have a queued message
(hidden conversation). In the large buddy list it is
added in the northwest corner, sliding the existing
northwest emblem (if specified) to the northeast
position and discarding the northeast emblem. In the
small buddy list, the emblem is added to the southeast.

Attached is a patch and an emblem image to be dropped
in pixmaps/status/default/. The emblem image is a
scaled down version of the send-im.png image." -- Casey Harkins

as I asked for this patch, and since there don't seem to be objections to
it (yet), I'm going ahead and applying it.

committer: Luke Schierer <lschiere@pidgin.im>

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
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3 * @ingroup gtkui
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4 *
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5 * gaim
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
6 *
8046
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 7964
diff changeset
7 * Gaim is the legal property of its developers, whose names are too numerous
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 7964
diff changeset
8 * 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
9 * source distribution.
7035
76bca80cd91d [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
10 *
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
11 * This program is free software; you can redistribute it and/or modify
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
12 * 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
13 * the Free Software Foundation; either version 2 of the License, or
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
14 * (at your option) any later version.
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
15 *
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
16 * This program is distributed in the hope that it will be useful,
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
19 * GNU General Public License for more details.
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
20 *
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
21 * You should have received a copy of the GNU General Public License
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
22 * along with this program; if not, write to the Free Software
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
24 */
9791
f5c5bda0b96b [gaim-migrate @ 10659]
Gary Kramlich <grim@pidgin.im>
parents: 9730
diff changeset
25 #include "internal.h"
f5c5bda0b96b [gaim-migrate @ 10659]
Gary Kramlich <grim@pidgin.im>
parents: 9730
diff changeset
26 #include "gtkgaim.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5846
diff changeset
27
7066
2d8321bf0491 [gaim-migrate @ 7630]
Christian Hammond <chipx86@chipx86.com>
parents: 7048
diff changeset
28 #include "prefs.h"
11780
9aee3bde84b9 [gaim-migrate @ 14071]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11458
diff changeset
29 #include "util.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5846
diff changeset
30
9709
2e73f176cc80 [gaim-migrate @ 10570]
Mark Doliner <markdoliner@pidgin.im>
parents: 9573
diff changeset
31 #include "gtkimhtml.h"
2e73f176cc80 [gaim-migrate @ 10570]
Mark Doliner <markdoliner@pidgin.im>
parents: 9573
diff changeset
32 #include "gtkimhtmltoolbar.h"
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
33 #include "gtkrequest.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5846
diff changeset
34 #include "gtkutils.h"
10297
b36800725b7a [gaim-migrate @ 11480]
Evan Schoenberg <evands@pidgin.im>
parents: 10294
diff changeset
35 #include "gtkstock.h"
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
36
8294
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
37 #include <gdk/gdkkeysyms.h>
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
38
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
39 #if GTK_CHECK_VERSION(2,3,0)
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
40 # define NEW_STYLE_COMPLETION
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
41 #endif
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 {
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
45 GaimRequestType type;
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 {
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
68 GaimRequestFields *fields;
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
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
81 } GaimGtkRequestData;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
82
8294
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
83 #ifndef NEW_STYLE_COMPLETION
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
84 typedef struct
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
85 {
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
86 GCompletion *completion;
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
87
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
88 gboolean completion_started;
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
89
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
90 } GaimGtkCompletionData;
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
91 #endif
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
92
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
93 static void
12234
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
94 generic_response_start(GaimGtkRequestData *data)
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
95 {
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
96 GdkWindow *window = GTK_WIDGET(data->dialog)->window;
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
97 GdkCursor *cursor;
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
98
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
99 /* Tell the user we're doing something. */
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
100 cursor = gdk_cursor_new(GDK_WATCH);
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
101 gdk_window_set_cursor(window, cursor);
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
102 gdk_cursor_unref(cursor);
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
103 while (gtk_events_pending())
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
104 gtk_main_iteration();
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
105
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
106 }
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
107
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
108 static void
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
109 input_response_cb(GtkDialog *dialog, gint id, GaimGtkRequestData *data)
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
110 {
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
111 const char *value;
7174
2f3cab1045d6 [gaim-migrate @ 7742]
Nathan Walp <nwalp@pidgin.im>
parents: 7172
diff changeset
112 char *multiline_value = NULL;
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
113
12234
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
114 generic_response_start(data);
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
115
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
116 if (data->u.input.multiline) {
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
117 GtkTextIter start_iter, end_iter;
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
118 GtkTextBuffer *buffer =
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
119 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
120
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
121 gtk_text_buffer_get_start_iter(buffer, &start_iter);
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
122 gtk_text_buffer_get_end_iter(buffer, &end_iter);
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
123
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
124 if ((data->u.input.hint != NULL) && (!strcmp(data->u.input.hint, "html")))
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
125 multiline_value = gtk_imhtml_get_markup(GTK_IMHTML(data->u.input.entry));
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
126 else
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
127 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
128 FALSE);
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
129
7172
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7142
diff changeset
130 value = multiline_value;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
131 }
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
132 else
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
133 value = gtk_entry_get_text(GTK_ENTRY(data->u.input.entry));
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
134
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
135 if (id < data->cb_count && data->cbs[id] != NULL)
5498
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5496
diff changeset
136 ((GaimRequestInputCb)data->cbs[id])(data->user_data, value);
6110
8c703c3453c7 [gaim-migrate @ 6572]
Mark Doliner <markdoliner@pidgin.im>
parents: 6109
diff changeset
137 else if (data->cbs[1] != NULL)
6109
44e5eb92b617 [gaim-migrate @ 6571]
Mark Doliner <markdoliner@pidgin.im>
parents: 6035
diff changeset
138 ((GaimRequestInputCb)data->cbs[1])(data->user_data, value);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
139
7172
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7142
diff changeset
140 if (data->u.input.multiline)
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7142
diff changeset
141 g_free(multiline_value);
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7142
diff changeset
142
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
143 gaim_request_close(GAIM_REQUEST_INPUT, data);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
144 }
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
145
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
146 static void
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
147 action_response_cb(GtkDialog *dialog, gint id, GaimGtkRequestData *data)
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
148 {
12234
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
149 generic_response_start(data);
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
150
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
151 if (id < data->cb_count && data->cbs[id] != NULL)
5498
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5496
diff changeset
152 ((GaimRequestActionCb)data->cbs[id])(data->user_data, id);
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
153
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
154 gaim_request_close(GAIM_REQUEST_INPUT, data);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
155 }
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
156
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
157
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
158 static void
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
159 choice_response_cb(GtkDialog *dialog, gint id, GaimGtkRequestData *data)
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
160 {
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
161 GtkWidget *radio = g_object_get_data(G_OBJECT(dialog), "radio");
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
162 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
163
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
164 generic_response_start(data);
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
165
10980
a193f3a01a34 [gaim-migrate @ 12810]
Daniel Atallah <datallah@pidgin.im>
parents: 10943
diff changeset
166 if (id < data->cb_count && data->cbs[id] != NULL)
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
167 while (group) {
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
168 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(group->data))) {
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
169 ((GaimRequestChoiceCb)data->cbs[id])(data->user_data, GPOINTER_TO_INT(g_object_get_data(G_OBJECT(group->data), "choice_id")));
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
170 break;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
171 }
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
172 group = group->next;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
173 }
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
174 gaim_request_close(GAIM_REQUEST_INPUT, data);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
175 }
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
176
5835
2d496d6d967d [gaim-migrate @ 6266]
Christian Hammond <chipx86@chipx86.com>
parents: 5834
diff changeset
177 static gboolean
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
178 field_string_focus_out_cb(GtkWidget *entry, GdkEventFocus *event,
5846
d2c9503ad8a8 [gaim-migrate @ 6277]
Christian Hammond <chipx86@chipx86.com>
parents: 5845
diff changeset
179 GaimRequestField *field)
5832
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
180 {
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
181 const char *value;
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
182
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
183 if (gaim_request_field_string_is_multiline(field))
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
184 {
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
185 GtkTextBuffer *buffer;
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
186 GtkTextIter start_iter, end_iter;
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
187
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
188 buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(entry));
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
189
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
190 gtk_text_buffer_get_start_iter(buffer, &start_iter);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
191 gtk_text_buffer_get_end_iter(buffer, &end_iter);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
192
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
193 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
194 }
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
195 else
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
196 value = gtk_entry_get_text(GTK_ENTRY(entry));
5834
c7945c10cff3 [gaim-migrate @ 6265]
Christian Hammond <chipx86@chipx86.com>
parents: 5832
diff changeset
197
5832
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
198 gaim_request_field_string_set_value(field,
5834
c7945c10cff3 [gaim-migrate @ 6265]
Christian Hammond <chipx86@chipx86.com>
parents: 5832
diff changeset
199 (*value == '\0' ? NULL : value));
5835
2d496d6d967d [gaim-migrate @ 6266]
Christian Hammond <chipx86@chipx86.com>
parents: 5834
diff changeset
200
2d496d6d967d [gaim-migrate @ 6266]
Christian Hammond <chipx86@chipx86.com>
parents: 5834
diff changeset
201 return FALSE;
5832
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
202 }
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
203
5835
2d496d6d967d [gaim-migrate @ 6266]
Christian Hammond <chipx86@chipx86.com>
parents: 5834
diff changeset
204 static gboolean
5846
d2c9503ad8a8 [gaim-migrate @ 6277]
Christian Hammond <chipx86@chipx86.com>
parents: 5845
diff changeset
205 field_int_focus_out_cb(GtkEntry *entry, GdkEventFocus *event,
d2c9503ad8a8 [gaim-migrate @ 6277]
Christian Hammond <chipx86@chipx86.com>
parents: 5845
diff changeset
206 GaimRequestField *field)
5832
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
207 {
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
208 gaim_request_field_int_set_value(field,
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
209 atoi(gtk_entry_get_text(entry)));
5835
2d496d6d967d [gaim-migrate @ 6266]
Christian Hammond <chipx86@chipx86.com>
parents: 5834
diff changeset
210
2d496d6d967d [gaim-migrate @ 6266]
Christian Hammond <chipx86@chipx86.com>
parents: 5834
diff changeset
211 return FALSE;
5832
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
212 }
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
213
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
214 static void
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
215 field_bool_cb(GtkToggleButton *button, GaimRequestField *field)
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
216 {
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
217 gaim_request_field_bool_set_value(field,
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
218 gtk_toggle_button_get_active(button));
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
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
222 field_choice_menu_cb(GtkOptionMenu *menu, GaimRequestField *field)
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
223 {
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
224 gaim_request_field_choice_set_value(field,
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
225 gtk_option_menu_get_history(menu));
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
226 }
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
227
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
228 static void
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
229 field_choice_option_cb(GtkRadioButton *button, GaimRequestField *field)
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
230 {
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
231 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
232 gaim_request_field_choice_set_value(field,
10943
729674da8959 [gaim-migrate @ 12735]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10871
diff changeset
233 (g_slist_length(gtk_radio_button_get_group(button)) -
729674da8959 [gaim-migrate @ 12735]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10871
diff changeset
234 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
235 }
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
236
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
237 static void
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
238 field_account_cb(GObject *w, GaimAccount *account, GaimRequestField *field)
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
239 {
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
240 gaim_request_field_account_set_value(field, account);
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
241 }
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
242
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
243 static void
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
244 multifield_ok_cb(GtkWidget *button, GaimGtkRequestData *data)
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
245 {
12234
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
246 generic_response_start(data);
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
247
8521
0f0e26a59d47 [gaim-migrate @ 9260]
Gary Kramlich <grim@pidgin.im>
parents: 8332
diff changeset
248 if (!GTK_WIDGET_HAS_FOCUS(button))
0f0e26a59d47 [gaim-migrate @ 9260]
Gary Kramlich <grim@pidgin.im>
parents: 8332
diff changeset
249 gtk_widget_grab_focus(button);
0f0e26a59d47 [gaim-migrate @ 9260]
Gary Kramlich <grim@pidgin.im>
parents: 8332
diff changeset
250
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
251 if (data->cbs[0] != NULL)
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
252 ((GaimRequestFieldsCb)data->cbs[0])(data->user_data,
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
253 data->u.multifield.fields);
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
254
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
255 gaim_request_close(GAIM_REQUEST_FIELDS, data);
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
256 }
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
257
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
258 static void
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
259 multifield_cancel_cb(GtkWidget *button, GaimGtkRequestData *data)
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
260 {
12234
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
261 generic_response_start(data);
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
262
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
263 if (data->cbs[1] != NULL)
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
264 ((GaimRequestFieldsCb)data->cbs[1])(data->user_data,
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
265 data->u.multifield.fields);
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
266
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
267 gaim_request_close(GAIM_REQUEST_FIELDS, data);
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
268 }
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
269
8323
d962d280c523 [gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
270 static void
d962d280c523 [gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
271 destroy_multifield_cb(GtkWidget *dialog, GdkEvent *event,
d962d280c523 [gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
272 GaimGtkRequestData *data)
d962d280c523 [gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
273 {
d962d280c523 [gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
274 multifield_cancel_cb(NULL, data);
d962d280c523 [gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
275 }
d962d280c523 [gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
276
d962d280c523 [gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
277
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
278 #define STOCK_ITEMIZE(r, l) \
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
279 if (!strcmp((r), text)) \
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
280 return (l);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
281
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
282 static const char *
5794
ebdbb7dc6658 [gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents: 5510
diff changeset
283 text_to_stock(const char *text)
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
284 {
6334
47a748d6fb0f [gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents: 6326
diff changeset
285 STOCK_ITEMIZE(_("Yes"), GTK_STOCK_YES);
47a748d6fb0f [gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents: 6326
diff changeset
286 STOCK_ITEMIZE(_("No"), GTK_STOCK_NO);
47a748d6fb0f [gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents: 6326
diff changeset
287 STOCK_ITEMIZE(_("OK"), GTK_STOCK_OK);
47a748d6fb0f [gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents: 6326
diff changeset
288 STOCK_ITEMIZE(_("Cancel"), GTK_STOCK_CANCEL);
47a748d6fb0f [gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents: 6326
diff changeset
289 STOCK_ITEMIZE(_("Apply"), GTK_STOCK_APPLY);
47a748d6fb0f [gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents: 6326
diff changeset
290 STOCK_ITEMIZE(_("Close"), GTK_STOCK_CLOSE);
47a748d6fb0f [gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents: 6326
diff changeset
291 STOCK_ITEMIZE(_("Delete"), GTK_STOCK_DELETE);
47a748d6fb0f [gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents: 6326
diff changeset
292 STOCK_ITEMIZE(_("Add"), GTK_STOCK_ADD);
47a748d6fb0f [gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents: 6326
diff changeset
293 STOCK_ITEMIZE(_("Remove"), GTK_STOCK_REMOVE);
47a748d6fb0f [gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents: 6326
diff changeset
294 STOCK_ITEMIZE(_("Save"), GTK_STOCK_SAVE);
8302
e23e9c8f05f7 [gaim-migrate @ 9026]
Christian Hammond <chipx86@chipx86.com>
parents: 8294
diff changeset
295 STOCK_ITEMIZE(_("Alias"), GAIM_STOCK_ALIAS);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
296
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
297 return text;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
298 }
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
299
6363
6e0fa4b64fe6 [gaim-migrate @ 6868]
Christian Hammond <chipx86@chipx86.com>
parents: 6338
diff changeset
300 static void *
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
301 gaim_gtk_request_input(const char *title, const char *primary,
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
302 const char *secondary, const char *default_value,
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
303 gboolean multiline, gboolean masked, gchar *hint,
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
304 const char *ok_text, GCallback ok_cb,
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
305 const char *cancel_text, GCallback cancel_cb,
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
306 void *user_data)
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
307 {
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
308 GaimGtkRequestData *data;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
309 GtkWidget *dialog;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
310 GtkWidget *vbox;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
311 GtkWidget *hbox;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
312 GtkWidget *label;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
313 GtkWidget *entry;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
314 GtkWidget *img;
8782
eb3f9bf7d69c [gaim-migrate @ 9544]
Ignacio J. Elia
parents: 8697
diff changeset
315 GtkWidget *toolbar;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
316 char *label_text;
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
317 char *primary_esc, *secondary_esc;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
318
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
319 data = g_new0(GaimGtkRequestData, 1);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
320 data->type = GAIM_REQUEST_INPUT;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
321 data->user_data = user_data;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
322
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
323 data->cb_count = 2;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
324 data->cbs = g_new0(GCallback, 2);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
325
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
326 data->cbs[0] = ok_cb;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
327 data->cbs[1] = cancel_cb;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
328
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
329 /* Create the dialog. */
7678
e71492542f69 [gaim-migrate @ 8322]
Sean Egan <seanegan@pidgin.im>
parents: 7538
diff changeset
330 dialog = gtk_dialog_new_with_buttons(title ? title : GAIM_ALERT_TITLE,
e71492542f69 [gaim-migrate @ 8322]
Sean Egan <seanegan@pidgin.im>
parents: 7538
diff changeset
331 NULL, 0,
5794
ebdbb7dc6658 [gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents: 5510
diff changeset
332 text_to_stock(cancel_text), 1,
ebdbb7dc6658 [gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents: 5510
diff changeset
333 text_to_stock(ok_text), 0,
5485
a0e3152b4bbb [gaim-migrate @ 5881]
Sean Egan <seanegan@pidgin.im>
parents: 5480
diff changeset
334 NULL);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
335 data->dialog = dialog;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
336
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
337 g_signal_connect(G_OBJECT(dialog), "response",
5794
ebdbb7dc6658 [gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents: 5510
diff changeset
338 G_CALLBACK(input_response_cb), data);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
339
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
340 /* Setup the dialog */
11243
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11212
diff changeset
341 gtk_container_set_border_width(GTK_CONTAINER(dialog), GAIM_HIG_BORDER/2);
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11212
diff changeset
342 gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), GAIM_HIG_BORDER/2);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
343 gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
344 gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE);
5510
15d2eca03c1d [gaim-migrate @ 5909]
Christian Hammond <chipx86@chipx86.com>
parents: 5498
diff changeset
345 gtk_dialog_set_default_response(GTK_DIALOG(dialog), 0);
11243
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11212
diff changeset
346 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog)->vbox), GAIM_HIG_BORDER);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
347
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
348 /* Setup the main horizontal box */
11243
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11212
diff changeset
349 hbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
350 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), hbox);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
351
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
352 /* Dialog icon. */
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
353 img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION,
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
354 GTK_ICON_SIZE_DIALOG);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
355 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
356 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
357
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
358 /* Vertical box */
11243
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11212
diff changeset
359 vbox = gtk_vbox_new(FALSE, GAIM_HIG_BORDER);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
360
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
361 gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
362
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
363 /* Descriptive label */
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
364 primary_esc = (primary != NULL) ? g_markup_escape_text(primary, -1) : NULL;
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
365 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
366 label_text = g_strdup_printf((primary ? "<span weight=\"bold\" size=\"larger\">"
d771eecc9717 [gaim-migrate @ 8497]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7678
diff changeset
367 "%s</span>%s%s" : "%s%s%s"),
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
368 (primary ? primary_esc : ""),
7843
d771eecc9717 [gaim-migrate @ 8497]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7678
diff changeset
369 ((primary && secondary) ? "\n\n" : ""),
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
370 (secondary ? secondary_esc : ""));
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
371 g_free(primary_esc);
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
372 g_free(secondary_esc);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
373
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
374 label = gtk_label_new(NULL);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
375
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
376 gtk_label_set_markup(GTK_LABEL(label), label_text);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
377 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
378 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
379 gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
380
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
381 g_free(label_text);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
382
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
383 /* Entry field. */
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
384 data->u.input.multiline = multiline;
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
385 data->u.input.hint = (hint == NULL ? NULL : g_strdup(hint));
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
386
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
387 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
388 GtkWidget *frame;
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
389
10181
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10164
diff changeset
390 /* imhtml */
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10164
diff changeset
391 frame = gaim_gtk_create_imhtml(TRUE, &entry, &toolbar);
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10164
diff changeset
392 gtk_widget_set_size_request(entry, 320, 130);
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10164
diff changeset
393 gtk_widget_set_name(entry, "gaim_gtkrequest_imhtml");
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10164
diff changeset
394 if (default_value != NULL)
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10164
diff changeset
395 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
396 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0);
cd4abe598b61 [gaim-migrate @ 11222]
Mark Doliner <markdoliner@pidgin.im>
parents: 10116
diff changeset
397 gtk_widget_show(frame);
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
398 }
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
399 else {
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
400 if (multiline) {
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
401 GtkWidget *sw;
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
402
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
403 sw = gtk_scrolled_window_new(NULL, NULL);
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
404 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
405 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
406 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
407 GTK_SHADOW_IN);
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
408
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
409 gtk_widget_set_size_request(sw, 320, 130);
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
410
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
411 /* GtkTextView */
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
412 entry = gtk_text_view_new();
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
413 gtk_text_view_set_editable(GTK_TEXT_VIEW(entry), TRUE);
5510
15d2eca03c1d [gaim-migrate @ 5909]
Christian Hammond <chipx86@chipx86.com>
parents: 5498
diff changeset
414
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
415 if (default_value != NULL) {
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
416 GtkTextBuffer *buffer;
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
417
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
418 buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(entry));
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
419 gtk_text_buffer_set_text(buffer, default_value, -1);
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
420 }
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
421
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
422 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(entry), GTK_WRAP_WORD_CHAR);
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), sw, TRUE, TRUE, 0);
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
425
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
426 if (gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck"))
12067
11fb53722956 [gaim-migrate @ 14362]
Richard Laager <rlaager@pidgin.im>
parents: 12061
diff changeset
427 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(entry));
6035
b245be9cbe3b [gaim-migrate @ 6485]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
428
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
429 gtk_container_add(GTK_CONTAINER(sw), entry);
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
430 }
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
431 else {
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
432 entry = gtk_entry_new();
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
433
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
434 gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE);
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
435
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
436 gtk_box_pack_start(GTK_BOX(vbox), entry, FALSE, FALSE, 0);
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
437
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
438 if (default_value != NULL)
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
439 gtk_entry_set_text(GTK_ENTRY(entry), default_value);
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
440
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
441 if (masked)
11986
21d2ab6421a7 [gaim-migrate @ 14279]
Mark Doliner <markdoliner@pidgin.im>
parents: 11780
diff changeset
442 {
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
443 gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE);
11986
21d2ab6421a7 [gaim-migrate @ 14279]
Mark Doliner <markdoliner@pidgin.im>
parents: 11780
diff changeset
444 gtk_entry_set_invisible_char(GTK_ENTRY(entry), GAIM_INVISIBLE_CHAR);
21d2ab6421a7 [gaim-migrate @ 14279]
Mark Doliner <markdoliner@pidgin.im>
parents: 11780
diff changeset
445 }
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
446 }
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
447 }
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
448
8137
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8046
diff changeset
449 gaim_set_accessible_label (entry, label);
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
450 data->u.input.entry = entry;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
451
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
452 /* Show everything. */
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
453 gtk_widget_show_all(dialog);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
454
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
455 return data;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
456 }
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
457
6363
6e0fa4b64fe6 [gaim-migrate @ 6868]
Christian Hammond <chipx86@chipx86.com>
parents: 6338
diff changeset
458 static void *
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
459 gaim_gtk_request_choice(const char *title, const char *primary,
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
460 const char *secondary, unsigned int default_value,
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
461 const char *ok_text, GCallback ok_cb,
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
462 const char *cancel_text, GCallback cancel_cb,
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
463 void *user_data, va_list args)
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
464 {
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
465 GaimGtkRequestData *data;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
466 GtkWidget *dialog;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
467 GtkWidget *vbox, *vbox2;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
468 GtkWidget *hbox;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
469 GtkWidget *label;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
470 GtkWidget *img;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
471 GtkWidget *radio = NULL;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
472 char *label_text;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
473 char *radio_text;
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
474 char *primary_esc, *secondary_esc;
10233
7b542749ccb6 [gaim-migrate @ 11368]
Mark Doliner <markdoliner@pidgin.im>
parents: 10229
diff changeset
475
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
476 data = g_new0(GaimGtkRequestData, 1);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
477 data->type = GAIM_REQUEST_ACTION;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
478 data->user_data = user_data;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
479
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
480 data->cb_count = 2;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
481 data->cbs = g_new0(GCallback, 2);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
482 data->cbs[0] = cancel_cb;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
483 data->cbs[1] = ok_cb;
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 /* Create the dialog. */
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
486 data->dialog = dialog = gtk_dialog_new();
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
487
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
488 if (title != NULL)
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
489 gtk_window_set_title(GTK_WINDOW(dialog), title);
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
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
492 gtk_dialog_add_button(GTK_DIALOG(dialog),
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
493 text_to_stock(cancel_text), 0);
10233
7b542749ccb6 [gaim-migrate @ 11368]
Mark Doliner <markdoliner@pidgin.im>
parents: 10229
diff changeset
494
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
495 gtk_dialog_add_button(GTK_DIALOG(dialog),
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
496 text_to_stock(ok_text), 1);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
497
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
498 g_signal_connect(G_OBJECT(dialog), "response",
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
499 G_CALLBACK(choice_response_cb), data);
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 dialog */
11243
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11212
diff changeset
502 gtk_container_set_border_width(GTK_CONTAINER(dialog), GAIM_HIG_BORDER/2);
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11212
diff changeset
503 gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), GAIM_HIG_BORDER/2);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
504 gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
505 gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE);
11243
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11212
diff changeset
506 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog)->vbox), GAIM_HIG_BORDER);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
507
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
508 /* Setup the main horizontal box */
11243
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11212
diff changeset
509 hbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
510 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), hbox);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
511
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
512 /* Dialog icon. */
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
513 img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION,
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
514 GTK_ICON_SIZE_DIALOG);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
515 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
516 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
517
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
518 /* Vertical box */
11243
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11212
diff changeset
519 vbox = gtk_vbox_new(FALSE, GAIM_HIG_BORDER);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
520 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
521
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
522 /* Descriptive label */
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
523 primary_esc = (primary != NULL) ? g_markup_escape_text(primary, -1) : NULL;
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
524 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
525 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
526 "%s</span>%s%s" : "%s%s%s"),
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
527 (primary ? primary_esc : ""),
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
528 ((primary && secondary) ? "\n\n" : ""),
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
529 (secondary ? secondary_esc : ""));
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
530 g_free(primary_esc);
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
531 g_free(secondary_esc);
10233
7b542749ccb6 [gaim-migrate @ 11368]
Mark Doliner <markdoliner@pidgin.im>
parents: 10229
diff changeset
532
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
533 label = gtk_label_new(NULL);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
534
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
535 gtk_label_set_markup(GTK_LABEL(label), label_text);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
536 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
537 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
538 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
539
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
540 g_free(label_text);
10233
7b542749ccb6 [gaim-migrate @ 11368]
Mark Doliner <markdoliner@pidgin.im>
parents: 10229
diff changeset
541
11243
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11212
diff changeset
542 vbox2 = gtk_vbox_new(FALSE, GAIM_HIG_BOX_SPACE);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
543 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
544 while ((radio_text = va_arg(args, char*))) {
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
545 int resp = va_arg(args, int);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
546 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
547 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
548 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
549 if (resp == default_value)
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
550 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio), TRUE);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
551 }
10233
7b542749ccb6 [gaim-migrate @ 11368]
Mark Doliner <markdoliner@pidgin.im>
parents: 10229
diff changeset
552
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
553 g_object_set_data(G_OBJECT(dialog), "radio", radio);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
554
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
555 /* Show everything. */
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
556 gtk_widget_show_all(dialog);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
557
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
558 return data;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
559 }
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
560
6363
6e0fa4b64fe6 [gaim-migrate @ 6868]
Christian Hammond <chipx86@chipx86.com>
parents: 6338
diff changeset
561 static void *
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
562 gaim_gtk_request_action(const char *title, const char *primary,
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
563 const char *secondary, unsigned int default_action,
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
564 void *user_data, size_t action_count, va_list actions)
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
565 {
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
566 GaimGtkRequestData *data;
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
567 GtkWidget *dialog;
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
568 GtkWidget *vbox;
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
569 GtkWidget *hbox;
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
570 GtkWidget *label;
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
571 GtkWidget *img;
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
572 void **buttons;
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
573 char *label_text;
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
574 char *primary_esc, *secondary_esc;
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
575 int i;
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
576
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
577 data = g_new0(GaimGtkRequestData, 1);
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
578 data->type = GAIM_REQUEST_ACTION;
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
579 data->user_data = user_data;
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 data->cb_count = action_count;
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
582 data->cbs = g_new0(GCallback, action_count);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
583
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
584 /* Reverse the buttons */
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
585 buttons = g_new0(void *, action_count * 2);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
586
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
587 for (i = 0; i < action_count * 2; i += 2) {
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
588 buttons[(action_count * 2) - i - 2] = va_arg(actions, char *);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
589 buttons[(action_count * 2) - i - 1] = va_arg(actions, GCallback);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
590 }
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
591
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
592 /* Create the dialog. */
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
593 data->dialog = dialog = gtk_dialog_new();
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6363
diff changeset
594
6109
44e5eb92b617 [gaim-migrate @ 6571]
Mark Doliner <markdoliner@pidgin.im>
parents: 6035
diff changeset
595 if (title != NULL)
44e5eb92b617 [gaim-migrate @ 6571]
Mark Doliner <markdoliner@pidgin.im>
parents: 6035
diff changeset
596 gtk_window_set_title(GTK_WINDOW(dialog), title);
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
597
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
598 for (i = 0; i < action_count; i++) {
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
599 gtk_dialog_add_button(GTK_DIALOG(dialog),
5794
ebdbb7dc6658 [gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents: 5510
diff changeset
600 text_to_stock(buttons[2 * i]), i);
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
601
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
602 data->cbs[i] = buttons[2 * i + 1];
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
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
605 g_free(buttons);
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_signal_connect(G_OBJECT(dialog), "response",
5794
ebdbb7dc6658 [gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents: 5510
diff changeset
608 G_CALLBACK(action_response_cb), data);
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
609
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
610 /* Setup the dialog */
11243
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11212
diff changeset
611 gtk_container_set_border_width(GTK_CONTAINER(dialog), GAIM_HIG_BORDER/2);
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11212
diff changeset
612 gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), GAIM_HIG_BORDER/2);
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
613 gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
614 gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE);
11243
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11212
diff changeset
615 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog)->vbox), GAIM_HIG_BORDER);
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
616
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
617 /* Setup the main horizontal box */
11243
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11212
diff changeset
618 hbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER);
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
619 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), hbox);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
620
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
621 /* Dialog icon. */
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
622 img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION,
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
623 GTK_ICON_SIZE_DIALOG);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
624 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
625 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
626
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
627 /* Vertical box */
11243
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11212
diff changeset
628 vbox = gtk_vbox_new(FALSE, GAIM_HIG_BORDER);
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
629 gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
630
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
631 /* Descriptive label */
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
632 primary_esc = (primary != NULL) ? g_markup_escape_text(primary, -1) : NULL;
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
633 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
634 label_text = g_strdup_printf((primary ? "<span weight=\"bold\" size=\"larger\">"
d771eecc9717 [gaim-migrate @ 8497]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7678
diff changeset
635 "%s</span>%s%s" : "%s%s%s"),
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
636 (primary ? primary_esc : ""),
7843
d771eecc9717 [gaim-migrate @ 8497]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7678
diff changeset
637 ((primary && secondary) ? "\n\n" : ""),
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
638 (secondary ? secondary_esc : ""));
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
639 g_free(primary_esc);
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
640 g_free(secondary_esc);
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
641
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
642 label = gtk_label_new(NULL);
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 gtk_label_set_markup(GTK_LABEL(label), label_text);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
645 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
646 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
647 gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
648
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
649 g_free(label_text);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
650
9948
2642975ffb85 [gaim-migrate @ 10844]
Dave West <kat@users.sourceforge.net>
parents: 9791
diff changeset
651
12286
08d994091c36 [gaim-migrate @ 14590]
Etan Reisner <deryni@pidgin.im>
parents: 12234
diff changeset
652 if (default_action == GAIM_DEFAULT_ACTION_NONE) {
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents: 10297
diff changeset
653 GTK_WIDGET_SET_FLAGS(img, GTK_CAN_DEFAULT);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents: 10297
diff changeset
654 GTK_WIDGET_SET_FLAGS(img, GTK_CAN_FOCUS);
9948
2642975ffb85 [gaim-migrate @ 10844]
Dave West <kat@users.sourceforge.net>
parents: 9791
diff changeset
655 gtk_widget_grab_focus(img);
2642975ffb85 [gaim-migrate @ 10844]
Dave West <kat@users.sourceforge.net>
parents: 9791
diff changeset
656 gtk_widget_grab_default(img);
12286
08d994091c36 [gaim-migrate @ 14590]
Etan Reisner <deryni@pidgin.im>
parents: 12234
diff changeset
657 } else
5510
15d2eca03c1d [gaim-migrate @ 5909]
Christian Hammond <chipx86@chipx86.com>
parents: 5498
diff changeset
658 gtk_dialog_set_default_response(GTK_DIALOG(dialog), default_action);
15d2eca03c1d [gaim-migrate @ 5909]
Christian Hammond <chipx86@chipx86.com>
parents: 5498
diff changeset
659
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
660 /* Show everything. */
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
661 gtk_widget_show_all(dialog);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
662
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
663 return data;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
664 }
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
665
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
666 static void
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
667 req_entry_field_changed_cb(GtkWidget *entry, GaimRequestField *field)
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
668 {
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
669 GaimGtkRequestData *req_data;
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
670 const char *text = gtk_entry_get_text(GTK_ENTRY(entry));
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
671
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
672 gaim_request_field_string_set_value(field, (*text == '\0' ? NULL : text));
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
673
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
674 req_data = (GaimGtkRequestData *)field->group->fields_list->ui_data;
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
675
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
676 gtk_widget_set_sensitive(req_data->ok_button,
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
677 gaim_request_fields_all_required_filled(field->group->fields_list));
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
8294
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
680 #ifndef NEW_STYLE_COMPLETION
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
681 static gboolean
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
682 completion_entry_event(GtkEditable *entry, GdkEventKey *event,
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
683 GaimGtkCompletionData *data)
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
684 {
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
685 int pos, end_pos;
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
686
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
687 if (event->type == GDK_KEY_PRESS && event->keyval == GDK_Tab)
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
688 {
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
689 gtk_editable_get_selection_bounds(entry, &pos, &end_pos);
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
690
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
691 if (data->completion_started &&
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
692 pos != end_pos && pos > 1 &&
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
693 end_pos == strlen(gtk_entry_get_text(GTK_ENTRY(entry))))
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
694 {
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
695 gtk_editable_select_region(entry, 0, 0);
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
696 gtk_editable_set_position(entry, -1);
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
697
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
698 return TRUE;
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
699 }
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
700 }
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
701 else if (event->type == GDK_KEY_PRESS && event->length > 0)
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
702 {
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
703 char *prefix, *nprefix;
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
704
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
705 gtk_editable_get_selection_bounds(entry, &pos, &end_pos);
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
706
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
707 if (data->completion_started &&
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
708 pos != end_pos && pos > 1 &&
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
709 end_pos == strlen(gtk_entry_get_text(GTK_ENTRY(entry))))
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
710 {
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
711 char *temp;
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
712
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
713 temp = gtk_editable_get_chars(entry, 0, pos);
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
714 prefix = g_strconcat(temp, event->string, NULL);
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
715 g_free(temp);
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
716 }
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
717 else if (pos == end_pos && pos > 1 &&
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
718 end_pos == strlen(gtk_entry_get_text(GTK_ENTRY(entry))))
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
719 {
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
720 prefix = g_strconcat(gtk_entry_get_text(GTK_ENTRY(entry)),
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
721 event->string, NULL);
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
722 }
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
723 else
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
724 return FALSE;
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
725
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
726 pos = strlen(prefix);
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
727 nprefix = NULL;
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
728
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
729 g_completion_complete(data->completion, prefix, &nprefix);
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
730
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
731 if (nprefix != NULL)
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
732 {
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
733 gtk_entry_set_text(GTK_ENTRY(entry), nprefix);
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
734 gtk_editable_set_position(entry, pos);
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
735 gtk_editable_select_region(entry, pos, -1);
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
736
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
737 data->completion_started = TRUE;
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
738
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
739 g_free(nprefix);
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
740 g_free(prefix);
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
741
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
742 return TRUE;
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
743 }
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
744
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
745 g_free(prefix);
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
746 }
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
747
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
748 return FALSE;
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
749 }
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
750
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
751 static void
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
752 destroy_completion_data(GtkWidget *w, GaimGtkCompletionData *data)
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
753 {
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10980
diff changeset
754 g_list_foreach(data->completion->items, (GFunc)g_free, NULL);
8294
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
755 g_completion_free(data->completion);
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
756
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
757 g_free(data);
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
758 }
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
759 #endif /* !NEW_STYLE_COMPLETION */
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
760
10668
c5ed2bd98ebf [gaim-migrate @ 12208]
Sean Egan <seanegan@pidgin.im>
parents: 10627
diff changeset
761 #ifdef NEW_STYLE_COMPLETION
c5ed2bd98ebf [gaim-migrate @ 12208]
Sean Egan <seanegan@pidgin.im>
parents: 10627
diff changeset
762 static gboolean screenname_completion_match_func(GtkEntryCompletion *completion,
11458
68f0a3698528 [gaim-migrate @ 13697]
Richard Laager <rlaager@pidgin.im>
parents: 11357
diff changeset
763 const gchar *key, GtkTreeIter *iter, gpointer user_data)
68f0a3698528 [gaim-migrate @ 13697]
Richard Laager <rlaager@pidgin.im>
parents: 11357
diff changeset
764 {
68f0a3698528 [gaim-migrate @ 13697]
Richard Laager <rlaager@pidgin.im>
parents: 11357
diff changeset
765 GtkTreeModel *model;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12286
diff changeset
766 GValue val1;
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12286
diff changeset
767 GValue val2;
11458
68f0a3698528 [gaim-migrate @ 13697]
Richard Laager <rlaager@pidgin.im>
parents: 11357
diff changeset
768 const char *tmp;
10668
c5ed2bd98ebf [gaim-migrate @ 12208]
Sean Egan <seanegan@pidgin.im>
parents: 10627
diff changeset
769
c5ed2bd98ebf [gaim-migrate @ 12208]
Sean Egan <seanegan@pidgin.im>
parents: 10627
diff changeset
770 model = gtk_entry_completion_get_model (completion);
c5ed2bd98ebf [gaim-migrate @ 12208]
Sean Egan <seanegan@pidgin.im>
parents: 10627
diff changeset
771
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12286
diff changeset
772 val1.g_type = 0;
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
773 gtk_tree_model_get_value(model, iter, 2, &val1);
11458
68f0a3698528 [gaim-migrate @ 13697]
Richard Laager <rlaager@pidgin.im>
parents: 11357
diff changeset
774 tmp = g_value_get_string(&val1);
11780
9aee3bde84b9 [gaim-migrate @ 14071]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11458
diff changeset
775 if (tmp != NULL && gaim_str_has_prefix(tmp, key))
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
776 {
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
777 g_value_unset(&val1);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
778 return TRUE;
10668
c5ed2bd98ebf [gaim-migrate @ 12208]
Sean Egan <seanegan@pidgin.im>
parents: 10627
diff changeset
779 }
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
780 g_value_unset(&val1);
10668
c5ed2bd98ebf [gaim-migrate @ 12208]
Sean Egan <seanegan@pidgin.im>
parents: 10627
diff changeset
781
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12286
diff changeset
782 val2.g_type = 0;
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
783 gtk_tree_model_get_value(model, iter, 3, &val2);
11458
68f0a3698528 [gaim-migrate @ 13697]
Richard Laager <rlaager@pidgin.im>
parents: 11357
diff changeset
784 tmp = g_value_get_string(&val2);
11780
9aee3bde84b9 [gaim-migrate @ 14071]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11458
diff changeset
785 if (tmp != NULL && gaim_str_has_prefix(tmp, key))
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
786 {
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
787 g_value_unset(&val2);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
788 return TRUE;
10668
c5ed2bd98ebf [gaim-migrate @ 12208]
Sean Egan <seanegan@pidgin.im>
parents: 10627
diff changeset
789 }
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
790 g_value_unset(&val2);
10668
c5ed2bd98ebf [gaim-migrate @ 12208]
Sean Egan <seanegan@pidgin.im>
parents: 10627
diff changeset
791
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
792 return FALSE;
10668
c5ed2bd98ebf [gaim-migrate @ 12208]
Sean Egan <seanegan@pidgin.im>
parents: 10627
diff changeset
793 }
c5ed2bd98ebf [gaim-migrate @ 12208]
Sean Egan <seanegan@pidgin.im>
parents: 10627
diff changeset
794
c5ed2bd98ebf [gaim-migrate @ 12208]
Sean Egan <seanegan@pidgin.im>
parents: 10627
diff changeset
795 static gboolean screenname_completion_match_selected_cb(GtkEntryCompletion *completion,
11458
68f0a3698528 [gaim-migrate @ 13697]
Richard Laager <rlaager@pidgin.im>
parents: 11357
diff changeset
796 GtkTreeModel *model, GtkTreeIter *iter, gpointer *user_data)
68f0a3698528 [gaim-migrate @ 13697]
Richard Laager <rlaager@pidgin.im>
parents: 11357
diff changeset
797 {
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12286
diff changeset
798 GValue val;
10791
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
799 GaimRequestField *screen_field = user_data[1];
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
800 GList *fields = screen_field->group->fields;
11212
ee610ecf13c8 [gaim-migrate @ 13343]
Richard Laager <rlaager@pidgin.im>
parents: 11178
diff changeset
801 GaimAccount *account;
10668
c5ed2bd98ebf [gaim-migrate @ 12208]
Sean Egan <seanegan@pidgin.im>
parents: 10627
diff changeset
802
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12286
diff changeset
803 val.g_type = 0;
10668
c5ed2bd98ebf [gaim-migrate @ 12208]
Sean Egan <seanegan@pidgin.im>
parents: 10627
diff changeset
804 gtk_tree_model_get_value(model, iter, 1, &val);
10791
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
805 gtk_entry_set_text(GTK_ENTRY(user_data[0]), g_value_get_string(&val));
10668
c5ed2bd98ebf [gaim-migrate @ 12208]
Sean Egan <seanegan@pidgin.im>
parents: 10627
diff changeset
806 g_value_unset(&val);
c5ed2bd98ebf [gaim-migrate @ 12208]
Sean Egan <seanegan@pidgin.im>
parents: 10627
diff changeset
807
11212
ee610ecf13c8 [gaim-migrate @ 13343]
Richard Laager <rlaager@pidgin.im>
parents: 11178
diff changeset
808 gtk_tree_model_get_value(model, iter, 4, &val);
ee610ecf13c8 [gaim-migrate @ 13343]
Richard Laager <rlaager@pidgin.im>
parents: 11178
diff changeset
809 account = g_value_get_pointer(&val);
ee610ecf13c8 [gaim-migrate @ 13343]
Richard Laager <rlaager@pidgin.im>
parents: 11178
diff changeset
810 g_value_unset(&val);
ee610ecf13c8 [gaim-migrate @ 13343]
Richard Laager <rlaager@pidgin.im>
parents: 11178
diff changeset
811
ee610ecf13c8 [gaim-migrate @ 13343]
Richard Laager <rlaager@pidgin.im>
parents: 11178
diff changeset
812 if (account == NULL)
ee610ecf13c8 [gaim-migrate @ 13343]
Richard Laager <rlaager@pidgin.im>
parents: 11178
diff changeset
813 return TRUE;
ee610ecf13c8 [gaim-migrate @ 13343]
Richard Laager <rlaager@pidgin.im>
parents: 11178
diff changeset
814
10791
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
815 do {
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
816 GaimRequestField *field = fields->data;
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
817
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
818 if (gaim_request_field_get_type(field) == GAIM_REQUEST_FIELD_ACCOUNT) {
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
819 const char *type_hint = gaim_request_field_get_type_hint(field);
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
820
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
821 if (type_hint != NULL && !strcmp(type_hint, "account")) {
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
822 /* We found the corresponding account field. */
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
823 GtkOptionMenu *optmenu = GTK_OPTION_MENU(field->ui_data);
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
824
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
825 /* Set the account in the request API. */
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
826 gaim_request_field_account_set_value(field, account);
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
827
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
828 if (optmenu != NULL) {
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
829 GList *items = GTK_MENU_SHELL(gtk_option_menu_get_menu(optmenu))->children;
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
830 guint index = 0;
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
831
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
832 do {
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
833 if (account == g_object_get_data(G_OBJECT(items->data), "account")) {
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
834 /* Set the account in the GUI. */
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
835 gtk_option_menu_set_history(GTK_OPTION_MENU(field->ui_data), index);
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
836 return TRUE;
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
837 }
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
838 index++;
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
839 } while ((items = items->next) != NULL);
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
840 }
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
841
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
842 return TRUE;
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
843 }
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
844 }
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
845
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
846 } while ((fields = fields->next) != NULL);
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
847
10668
c5ed2bd98ebf [gaim-migrate @ 12208]
Sean Egan <seanegan@pidgin.im>
parents: 10627
diff changeset
848 return TRUE;
c5ed2bd98ebf [gaim-migrate @ 12208]
Sean Egan <seanegan@pidgin.im>
parents: 10627
diff changeset
849 }
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
850
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
851 static void
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
852 add_screenname_autocomplete_entry(GtkListStore *store, const char *buddy_alias, const char *contact_alias,
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
853 const GaimAccount *account, const char *screenname)
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
854 {
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
855 GtkTreeIter iter;
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
856 gboolean completion_added = FALSE;
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
857 gchar *normalized_screenname;
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
858 gchar *tmp;
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
859
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
860 tmp = g_utf8_normalize(screenname, -1, G_NORMALIZE_DEFAULT);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
861 normalized_screenname = g_utf8_casefold(tmp, -1);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
862 g_free(tmp);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
863
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
864 /* There's no sense listing things like: 'xxx "xxx"'
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
865 when the screenname and buddy alias match. */
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
866 if (buddy_alias && strcmp(buddy_alias, screenname)) {
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
867 char *completion_entry = g_strdup_printf("%s \"%s\"", screenname, buddy_alias);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
868 char *tmp2 = g_utf8_normalize(buddy_alias, -1, G_NORMALIZE_DEFAULT);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
869
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
870 tmp = g_utf8_casefold(tmp2, -1);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
871 g_free(tmp2);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
872
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
873 gtk_list_store_append(store, &iter);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
874 gtk_list_store_set(store, &iter,
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
875 0, completion_entry,
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
876 1, screenname,
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
877 2, normalized_screenname,
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
878 3, tmp,
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
879 4, account,
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
880 -1);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
881 g_free(completion_entry);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
882 g_free(tmp);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
883 completion_added = TRUE;
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
884 }
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
885
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
886 /* There's no sense listing things like: 'xxx "xxx"'
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
887 when the screenname and contact alias match. */
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
888 if (contact_alias && strcmp(contact_alias, screenname)) {
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
889 /* We don't want duplicates when the contact and buddy alias match. */
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
890 if (!buddy_alias || strcmp(contact_alias, buddy_alias)) {
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
891 char *completion_entry = g_strdup_printf("%s \"%s\"",
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
892 screenname, contact_alias);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
893 char *tmp2 = g_utf8_normalize(contact_alias, -1, G_NORMALIZE_DEFAULT);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
894
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
895 tmp = g_utf8_casefold(tmp2, -1);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
896 g_free(tmp2);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
897
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
898 gtk_list_store_append(store, &iter);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
899 gtk_list_store_set(store, &iter,
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
900 0, completion_entry,
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
901 1, screenname,
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
902 2, normalized_screenname,
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
903 3, tmp,
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
904 4, account,
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
905 -1);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
906 g_free(completion_entry);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
907 g_free(tmp);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
908 completion_added = TRUE;
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
909 }
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
910 }
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
911
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
912 if (completion_added == FALSE) {
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
913 /* Add the buddy's screenname. */
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
914 gtk_list_store_append(store, &iter);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
915 gtk_list_store_set(store, &iter,
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
916 0, screenname,
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
917 1, screenname,
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
918 2, normalized_screenname,
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
919 3, NULL,
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
920 4, account,
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
921 -1);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
922 }
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
923
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
924 g_free(normalized_screenname);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
925 }
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
926 #endif /* NEW_STYLE_COMPLETION */
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
927
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
928 static void get_log_set_name(GaimLogSet *set, gpointer value, gpointer **set_hash_data)
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
929 {
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
930 /* 1. Don't show buddies because we will have gotten them already.
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
931 * 2. Only show those with non-NULL accounts that are currently connected.
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
932 * 3. The boxes that use this autocomplete code handle only IMs. */
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
933 if (!set->buddy &&
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
934 (GPOINTER_TO_INT(set_hash_data[1]) ||
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
935 (set->account != NULL && gaim_account_is_connected(set->account))) &&
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
936 set->type == GAIM_LOG_IM) {
11178
4a97e75d06f5 [gaim-migrate @ 13286]
Richard Laager <rlaager@pidgin.im>
parents: 11177
diff changeset
937 #ifdef NEW_STYLE_COMPLETION
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
938 add_screenname_autocomplete_entry((GtkListStore *)set_hash_data[0],
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
939 NULL, NULL, set->account, set->name);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
940 #else
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
941 GList **items = ((GList **)set_hash_data[0]);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
942 /* Steal the name for the GCompletion. */
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
943 *items = g_list_append(*items, set->name);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
944 set->name = set->normalized_name = NULL;
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
945 #endif /* NEW_STYLE_COMPLETION */
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
946 }
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
947 }
10668
c5ed2bd98ebf [gaim-migrate @ 12208]
Sean Egan <seanegan@pidgin.im>
parents: 10627
diff changeset
948
8294
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
949 static void
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10980
diff changeset
950 setup_screenname_autocomplete(GtkWidget *entry, GaimRequestField *field, gboolean all)
8294
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
951 {
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
952 #ifdef NEW_STYLE_COMPLETION
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
953 /* Store the displayed completion value, the screenname, the UTF-8 normalized & casefolded screenname,
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
954 * the UTF-8 normalized & casefolded value for comparison, and the account. */
11212
ee610ecf13c8 [gaim-migrate @ 13343]
Richard Laager <rlaager@pidgin.im>
parents: 11178
diff changeset
955 GtkListStore *store = gtk_list_store_new(5, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER);
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
956
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
957 GaimBlistNode *gnode, *cnode, *bnode;
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
958 GHashTable *sets;
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
959 gpointer set_hash_data[] = {store, GINT_TO_POINTER(all)};
8294
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
960 GtkEntryCompletion *completion;
10791
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
961 gpointer *data;
10668
c5ed2bd98ebf [gaim-migrate @ 12208]
Sean Egan <seanegan@pidgin.im>
parents: 10627
diff changeset
962
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
963 for (gnode = gaim_get_blist()->root; gnode != NULL; gnode = gnode->next)
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
964 {
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
965 if (!GAIM_BLIST_NODE_IS_GROUP(gnode))
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
966 continue;
8294
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
967
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
968 for (cnode = gnode->child; cnode != NULL; cnode = cnode->next)
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
969 {
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
970 if (!GAIM_BLIST_NODE_IS_CONTACT(cnode))
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
971 continue;
8294
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
972
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
973 for (bnode = cnode->child; bnode != NULL; bnode = bnode->next)
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
974 {
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
975 GaimBuddy *buddy = (GaimBuddy *)bnode;
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
976
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
977 if (!all && !gaim_account_is_connected(buddy->account))
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
978 continue;
8294
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
979
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
980 add_screenname_autocomplete_entry(store,
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
981 ((GaimContact *)cnode)->alias,
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
982 gaim_buddy_get_contact_alias(buddy),
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
983 buddy->account,
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
984 buddy->name
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
985 );
10668
c5ed2bd98ebf [gaim-migrate @ 12208]
Sean Egan <seanegan@pidgin.im>
parents: 10627
diff changeset
986 }
c5ed2bd98ebf [gaim-migrate @ 12208]
Sean Egan <seanegan@pidgin.im>
parents: 10627
diff changeset
987 }
8294
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
988 }
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
989
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
990 sets = gaim_log_get_log_sets();
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
991 g_hash_table_foreach(sets, (GHFunc)get_log_set_name, &set_hash_data);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
992 g_hash_table_destroy(sets);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
993
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10980
diff changeset
994
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10980
diff changeset
995 /* Sort the completion list by screenname. */
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10980
diff changeset
996 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(store),
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10980
diff changeset
997 1, GTK_SORT_ASCENDING);
8294
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
998
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
999 completion = gtk_entry_completion_new();
10668
c5ed2bd98ebf [gaim-migrate @ 12208]
Sean Egan <seanegan@pidgin.im>
parents: 10627
diff changeset
1000 gtk_entry_completion_set_match_func(completion, screenname_completion_match_func, NULL, NULL);
10791
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
1001
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
1002 data = g_new0(gpointer, 2);
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
1003 data[0] = entry;
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
1004 data[1] = field;
10668
c5ed2bd98ebf [gaim-migrate @ 12208]
Sean Egan <seanegan@pidgin.im>
parents: 10627
diff changeset
1005 g_signal_connect(G_OBJECT(completion), "match-selected",
10791
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
1006 G_CALLBACK(screenname_completion_match_selected_cb), data);
1e1e00d91561 [gaim-migrate @ 12433]
Richard Laager <rlaager@pidgin.im>
parents: 10774
diff changeset
1007
8294
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
1008 gtk_entry_set_completion(GTK_ENTRY(entry), completion);
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
1009 g_object_unref(completion);
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
1010
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
1011 gtk_entry_completion_set_model(completion, GTK_TREE_MODEL(store));
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
1012 g_object_unref(store);
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
1013
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
1014 gtk_entry_completion_set_text_column(completion, 0);
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
1015
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
1016 #else /* !NEW_STYLE_COMPLETION */
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
1017 GaimGtkCompletionData *data;
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
1018 GaimBlistNode *gnode, *cnode, *bnode;
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
1019 GList *item = g_list_append(NULL, NULL);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
1020 GHashTable *sets;
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
1021 gpointer set_hash_data[2];
8294
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
1022
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
1023 data = g_new0(GaimGtkCompletionData, 1);
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
1024
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
1025 data->completion = g_completion_new(NULL);
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
1026
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
1027 g_completion_set_compare(data->completion, g_ascii_strncasecmp);
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
1028
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
1029 for (gnode = gaim_get_blist()->root; gnode != NULL; gnode = gnode->next)
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
1030 {
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
1031 if (!GAIM_BLIST_NODE_IS_GROUP(gnode))
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
1032 continue;
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
1033
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
1034 for (cnode = gnode->child; cnode != NULL; cnode = cnode->next)
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
1035 {
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
1036 if (!GAIM_BLIST_NODE_IS_CONTACT(cnode))
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
1037 continue;
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
1038
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
1039 for (bnode = cnode->child; bnode != NULL; bnode = bnode->next)
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
1040 {
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
1041 GaimBuddy *buddy = (GaimBuddy *)bnode;
8294
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
1042
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
1043 if (!all && !gaim_account_is_connected(buddy->account))
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
1044 continue;
8294
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
1045
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
1046 item->data = g_strdup(buddy->name);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
1047 g_completion_add_items(data->completion, item);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
1048 }
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
1049 }
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
1050 }
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
1051 g_list_free(item);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
1052
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
1053 sets = gaim_log_get_log_sets();
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
1054 item = NULL;
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
1055 set_hash_data[0] = &item;
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
1056 set_hash_data[1] = GINT_TO_POINTER(all);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
1057 g_hash_table_foreach(sets, (GHFunc)get_log_set_name, &set_hash_data);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
1058 g_hash_table_destroy(sets);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
1059 g_completion_add_items(data->completion, item);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
1060 g_list_free(item);
8294
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
1061
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
1062 g_signal_connect(G_OBJECT(entry), "event",
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
1063 G_CALLBACK(completion_entry_event), data);
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
1064 g_signal_connect(G_OBJECT(entry), "destroy",
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
1065 G_CALLBACK(destroy_completion_data), data);
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
1066
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
1067 #endif /* !NEW_STYLE_COMPLETION */
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
1068 }
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
1069
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1070 static void
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1071 setup_entry_field(GtkWidget *entry, GaimRequestField *field)
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1072 {
8294
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
1073 const char *type_hint;
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
1074
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1075 gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE);
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1076
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1077 if (gaim_request_field_is_required(field))
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1078 {
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1079 g_signal_connect(G_OBJECT(entry), "changed",
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1080 G_CALLBACK(req_entry_field_changed_cb), field);
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1081 }
8294
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
1082
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
1083 if ((type_hint = gaim_request_field_get_type_hint(field)) != NULL)
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
1084 {
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10980
diff changeset
1085 if (!strncmp(type_hint, "screenname", sizeof("screenname") - 1))
8294
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
1086 {
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10980
diff changeset
1087 setup_screenname_autocomplete(entry, field, !strcmp(type_hint, "screenname-all"));
8294
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
1088 }
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
1089 }
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1090 }
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1091
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1092 static GtkWidget *
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1093 create_string_field(GaimRequestField *field)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1094 {
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1095 const char *value;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1096 GtkWidget *widget;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1097
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1098 value = gaim_request_field_string_get_default_value(field);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1099
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1100 if (gaim_request_field_string_is_multiline(field))
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1101 {
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1102 GtkWidget *textview;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1103
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1104 widget = gtk_scrolled_window_new(NULL, NULL);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1105 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(widget),
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1106 GTK_SHADOW_IN);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1107 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(widget),
8916
8a8ce5bb293a [gaim-migrate @ 9686]
Nathan Walp <nwalp@pidgin.im>
parents: 8848
diff changeset
1108 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1109
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1110 textview = gtk_text_view_new();
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1111 gtk_text_view_set_editable(GTK_TEXT_VIEW(textview),
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1112 TRUE);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1113 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(textview),
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1114 GTK_WRAP_WORD_CHAR);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1115
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1116 if (gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck"))
12067
11fb53722956 [gaim-migrate @ 14362]
Richard Laager <rlaager@pidgin.im>
parents: 12061
diff changeset
1117 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(textview));
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1118
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1119 gtk_container_add(GTK_CONTAINER(widget), textview);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1120 gtk_widget_show(textview);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1121
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1122 gtk_widget_set_size_request(widget, -1, 75);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1123
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1124 if (value != NULL)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1125 {
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1126 GtkTextBuffer *buffer;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1127
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1128 buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview));
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1129
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1130 gtk_text_buffer_set_text(buffer, value, -1);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1131 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1132
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1133 gtk_text_view_set_editable(GTK_TEXT_VIEW(textview),
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1134 gaim_request_field_string_is_editable(field));
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1135
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1136 g_signal_connect(G_OBJECT(textview), "focus-out-event",
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1137 G_CALLBACK(field_string_focus_out_cb), field);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1138 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1139 else
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1140 {
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1141 widget = gtk_entry_new();
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1142
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1143 setup_entry_field(widget, field);
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1144
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1145 if (value != NULL)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1146 gtk_entry_set_text(GTK_ENTRY(widget), value);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1147
11986
21d2ab6421a7 [gaim-migrate @ 14279]
Mark Doliner <markdoliner@pidgin.im>
parents: 11780
diff changeset
1148 if (gaim_request_field_string_is_masked(field))
21d2ab6421a7 [gaim-migrate @ 14279]
Mark Doliner <markdoliner@pidgin.im>
parents: 11780
diff changeset
1149 {
21d2ab6421a7 [gaim-migrate @ 14279]
Mark Doliner <markdoliner@pidgin.im>
parents: 11780
diff changeset
1150 gtk_entry_set_visibility(GTK_ENTRY(widget), FALSE);
21d2ab6421a7 [gaim-migrate @ 14279]
Mark Doliner <markdoliner@pidgin.im>
parents: 11780
diff changeset
1151 gtk_entry_set_invisible_char(GTK_ENTRY(widget), GAIM_INVISIBLE_CHAR);
21d2ab6421a7 [gaim-migrate @ 14279]
Mark Doliner <markdoliner@pidgin.im>
parents: 11780
diff changeset
1152 }
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1153
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1154 gtk_editable_set_editable(GTK_EDITABLE(widget),
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1155 gaim_request_field_string_is_editable(field));
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1156
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1157 g_signal_connect(G_OBJECT(widget), "focus-out-event",
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1158 G_CALLBACK(field_string_focus_out_cb), field);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1159 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1160
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1161 return widget;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1162 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1163
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1164 static GtkWidget *
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1165 create_int_field(GaimRequestField *field)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1166 {
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1167 int value;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1168 GtkWidget *widget;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1169
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1170 widget = gtk_entry_new();
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1171
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1172 setup_entry_field(widget, field);
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1173
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1174 value = gaim_request_field_int_get_default_value(field);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1175
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1176 if (value != 0)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1177 {
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1178 char buf[32];
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1179
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1180 g_snprintf(buf, sizeof(buf), "%d", value);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1181
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1182 gtk_entry_set_text(GTK_ENTRY(widget), buf);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1183 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1184
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1185 g_signal_connect(G_OBJECT(widget), "focus-out-event",
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1186 G_CALLBACK(field_int_focus_out_cb), field);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1187
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1188 return widget;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1189 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1190
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1191 static GtkWidget *
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1192 create_bool_field(GaimRequestField *field)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1193 {
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1194 GtkWidget *widget;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1195
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1196 widget = gtk_check_button_new_with_label(
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1197 gaim_request_field_get_label(field));
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1198
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1199 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget),
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1200 gaim_request_field_bool_get_default_value(field));
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1201
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1202 g_signal_connect(G_OBJECT(widget), "toggled",
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1203 G_CALLBACK(field_bool_cb), field);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1204
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1205 return widget;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1206 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1207
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1208 static GtkWidget *
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1209 create_choice_field(GaimRequestField *field)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1210 {
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1211 GtkWidget *widget;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1212 GList *labels;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1213 GList *l;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1214
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1215 labels = gaim_request_field_choice_get_labels(field);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1216
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1217 if (g_list_length(labels) > 5)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1218 {
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1219 GtkWidget *menu;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1220 GtkWidget *item;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1221
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1222 widget = gtk_option_menu_new();
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1223
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1224 menu = gtk_menu_new();
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1225
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1226 for (l = labels; l != NULL; l = l->next)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1227 {
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1228 const char *text = l->data;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1229
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1230 item = gtk_menu_item_new_with_label(text);
10294
515c8395a4b6 [gaim-migrate @ 11473]
Gary Kramlich <grim@pidgin.im>
parents: 10233
diff changeset
1231 gtk_widget_show(item);
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1232
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1233 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1234 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1235
10294
515c8395a4b6 [gaim-migrate @ 11473]
Gary Kramlich <grim@pidgin.im>
parents: 10233
diff changeset
1236 gtk_widget_show(menu);
515c8395a4b6 [gaim-migrate @ 11473]
Gary Kramlich <grim@pidgin.im>
parents: 10233
diff changeset
1237 gtk_option_menu_set_menu(GTK_OPTION_MENU(widget), menu);
515c8395a4b6 [gaim-migrate @ 11473]
Gary Kramlich <grim@pidgin.im>
parents: 10233
diff changeset
1238 gtk_option_menu_set_history(GTK_OPTION_MENU(widget),
515c8395a4b6 [gaim-migrate @ 11473]
Gary Kramlich <grim@pidgin.im>
parents: 10233
diff changeset
1239 gaim_request_field_choice_get_default_value(field));
515c8395a4b6 [gaim-migrate @ 11473]
Gary Kramlich <grim@pidgin.im>
parents: 10233
diff changeset
1240
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1241 g_signal_connect(G_OBJECT(widget), "changed",
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1242 G_CALLBACK(field_choice_menu_cb), field);
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1243 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1244 else
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1245 {
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1246 GtkWidget *box;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1247 GtkWidget *first_radio = NULL;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1248 GtkWidget *radio;
10943
729674da8959 [gaim-migrate @ 12735]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10871
diff changeset
1249 gint i;
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1250
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1251 if (g_list_length(labels) == 2)
11243
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11212
diff changeset
1252 box = gtk_hbox_new(FALSE, GAIM_HIG_BOX_SPACE);
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1253 else
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1254 box = gtk_vbox_new(FALSE, 0);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1255
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1256 widget = box;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1257
10943
729674da8959 [gaim-migrate @ 12735]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10871
diff changeset
1258 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
1259 {
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1260 const char *text = l->data;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1261
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1262 radio = gtk_radio_button_new_with_label_from_widget(
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1263 GTK_RADIO_BUTTON(first_radio), text);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1264
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1265 if (first_radio == NULL)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1266 first_radio = radio;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1267
10943
729674da8959 [gaim-migrate @ 12735]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10871
diff changeset
1268 if (i == gaim_request_field_choice_get_default_value(field))
729674da8959 [gaim-migrate @ 12735]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10871
diff changeset
1269 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio), TRUE);
729674da8959 [gaim-migrate @ 12735]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10871
diff changeset
1270
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1271 gtk_box_pack_start(GTK_BOX(box), radio, TRUE, TRUE, 0);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1272 gtk_widget_show(radio);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1273
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1274 g_signal_connect(G_OBJECT(radio), "toggled",
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1275 G_CALLBACK(field_choice_option_cb), field);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1276 }
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
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1279 return widget;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1280 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1281
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1282 static GtkWidget *
11357
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1283 create_image_field(GaimRequestField *field)
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1284 {
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1285 GtkWidget *widget;
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1286 GdkPixbuf *buf, *scale;
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1287 GdkPixbufLoader *loader;
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1288
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1289 loader = gdk_pixbuf_loader_new();
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1290 gdk_pixbuf_loader_write(loader,
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1291 (const guchar *)gaim_request_field_image_get_buffer(field),
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1292 gaim_request_field_image_get_size(field),
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1293 NULL);
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1294 gdk_pixbuf_loader_close(loader, NULL);
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1295 buf = gdk_pixbuf_loader_get_pixbuf(loader);
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1296
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1297 scale = gdk_pixbuf_scale_simple(buf,
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1298 gaim_request_field_image_get_scale_x(field) * gdk_pixbuf_get_width(buf),
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1299 gaim_request_field_image_get_scale_y(field) * gdk_pixbuf_get_height(buf),
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1300 GDK_INTERP_BILINEAR);
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1301 widget = gtk_image_new_from_pixbuf(scale);
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1302 g_object_unref(G_OBJECT(buf));
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1303 g_object_unref(G_OBJECT(scale));
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1304
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1305 return widget;
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1306 }
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1307
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1308 static GtkWidget *
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1309 create_account_field(GaimRequestField *field)
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1310 {
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1311 GtkWidget *widget;
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1312
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1313 widget = gaim_gtk_account_option_menu_new(
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1314 gaim_request_field_account_get_default_value(field),
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1315 gaim_request_field_account_get_show_all(field),
8289
234429bac6b5 [gaim-migrate @ 9013]
Christian Hammond <chipx86@chipx86.com>
parents: 8286
diff changeset
1316 G_CALLBACK(field_account_cb),
234429bac6b5 [gaim-migrate @ 9013]
Christian Hammond <chipx86@chipx86.com>
parents: 8286
diff changeset
1317 gaim_request_field_account_get_filter(field),
234429bac6b5 [gaim-migrate @ 9013]
Christian Hammond <chipx86@chipx86.com>
parents: 8286
diff changeset
1318 field);
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1319
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1320 return widget;
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1321 }
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1322
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1323 static void
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1324 select_field_list_item(GtkTreeModel *model, GtkTreePath *path,
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1325 GtkTreeIter *iter, gpointer data)
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1326 {
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1327 GaimRequestField *field = (GaimRequestField *)data;
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1328 const char *text;
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1329
7909
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1330 gtk_tree_model_get(model, iter, 1, &text, -1);
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1331
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1332 gaim_request_field_list_add_selected(field, text);
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1333 }
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1334
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1335 static void
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1336 list_field_select_changed_cb(GtkTreeSelection *sel, GaimRequestField *field)
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1337 {
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1338 gaim_request_field_list_clear_selected(field);
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1339
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1340 gtk_tree_selection_selected_foreach(sel, select_field_list_item, field);
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1341 }
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1342
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1343 static GtkWidget *
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1344 create_list_field(GaimRequestField *field)
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1345 {
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1346 GtkWidget *sw;
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1347 GtkWidget *treeview;
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1348 GtkListStore *store;
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1349 GtkCellRenderer *renderer;
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1350 GtkTreeSelection *sel;
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1351 GtkTreeViewColumn *column;
7909
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1352 GtkTreeIter iter;
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1353 const GList *l;
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1354
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1355 /* Create the scrolled window */
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1356 sw = gtk_scrolled_window_new(NULL, NULL);
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1357 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
8332
b708d3d428a4 [gaim-migrate @ 9056]
Pekka Riikonen <priikone@silcnet.org>
parents: 8323
diff changeset
1358 GTK_POLICY_AUTOMATIC,
b708d3d428a4 [gaim-migrate @ 9056]
Pekka Riikonen <priikone@silcnet.org>
parents: 8323
diff changeset
1359 GTK_POLICY_AUTOMATIC);
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1360 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1361 GTK_SHADOW_IN);
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1362 gtk_widget_show(sw);
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1363
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1364 /* Create the list store */
7909
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1365 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
1366
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1367 /* Create the tree view */
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1368 treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1369 gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(treeview), TRUE);
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1370 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview), FALSE);
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1371
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1372 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1373
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1374 if (gaim_request_field_list_get_multi_select(field))
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1375 gtk_tree_selection_set_mode(sel, GTK_SELECTION_MULTIPLE);
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1376
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1377 g_signal_connect(G_OBJECT(sel), "changed",
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1378 G_CALLBACK(list_field_select_changed_cb), field);
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1379
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1380 column = gtk_tree_view_column_new();
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1381 gtk_tree_view_insert_column(GTK_TREE_VIEW(treeview), column, -1);
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1382
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1383 renderer = gtk_cell_renderer_text_new();
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1384 gtk_tree_view_column_pack_start(column, renderer, TRUE);
7909
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1385 gtk_tree_view_column_add_attribute(column, renderer, "text", 1);
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1386
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1387 for (l = gaim_request_field_list_get_items(field); l != NULL; l = l->next)
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1388 {
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1389 const char *text = (const char *)l->data;
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1390
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1391 gtk_list_store_append(store, &iter);
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1392
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1393 gtk_list_store_set(store, &iter,
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1394 0, gaim_request_field_list_get_data(field, text),
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1395 1, text,
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1396 -1);
7964
10d58eb8a16a [gaim-migrate @ 8641]
Christian Hammond <chipx86@chipx86.com>
parents: 7951
diff changeset
1397
10d58eb8a16a [gaim-migrate @ 8641]
Christian Hammond <chipx86@chipx86.com>
parents: 7951
diff changeset
1398 if (gaim_request_field_list_is_selected(field, text))
10d58eb8a16a [gaim-migrate @ 8641]
Christian Hammond <chipx86@chipx86.com>
parents: 7951
diff changeset
1399 gtk_tree_selection_select_iter(sel, &iter);
7909
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1400 }
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1401
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1402 gtk_container_add(GTK_CONTAINER(sw), treeview);
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1403 gtk_widget_show(treeview);
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1404
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1405 return sw;
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1406 }
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1407
6363
6e0fa4b64fe6 [gaim-migrate @ 6868]
Christian Hammond <chipx86@chipx86.com>
parents: 6338
diff changeset
1408 static void *
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1409 gaim_gtk_request_fields(const char *title, const char *primary,
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1410 const char *secondary, GaimRequestFields *fields,
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1411 const char *ok_text, GCallback ok_cb,
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1412 const char *cancel_text, GCallback cancel_cb,
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1413 void *user_data)
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1414 {
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1415 GaimGtkRequestData *data;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1416 GtkWidget *win;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1417 GtkWidget *vbox;
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1418 GtkWidget *vbox2;
6326
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
1419 GtkWidget *hbox;
5815
cdd5b8d9caca [gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents: 5813
diff changeset
1420 GtkWidget *bbox;
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1421 GtkWidget *frame;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1422 GtkWidget *label;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1423 GtkWidget *table;
5815
cdd5b8d9caca [gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents: 5813
diff changeset
1424 GtkWidget *button;
6326
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
1425 GtkWidget *img;
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1426 GtkWidget *sw;
5813
ba2693e8db07 [gaim-migrate @ 6243]
Christian Hammond <chipx86@chipx86.com>
parents: 5811
diff changeset
1427 GtkSizeGroup *sg;
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1428 GList *gl, *fl;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1429 GaimRequestFieldGroup *group;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1430 GaimRequestField *field;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1431 char *label_text;
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
1432 char *primary_esc, *secondary_esc;
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1433 int total_fields = 0;
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1434
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1435 data = g_new0(GaimGtkRequestData, 1);
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1436 data->type = GAIM_REQUEST_FIELDS;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1437 data->user_data = user_data;
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
1438 data->u.multifield.fields = fields;
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1439
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1440 fields->ui_data = data;
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1441
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1442 data->cb_count = 2;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1443 data->cbs = g_new0(GCallback, 2);
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1444
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1445 data->cbs[0] = ok_cb;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1446 data->cbs[1] = cancel_cb;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1447
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1448 data->dialog = win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
6325
35357b64dbb2 [gaim-migrate @ 6824]
Christian Hammond <chipx86@chipx86.com>
parents: 6324
diff changeset
1449
6109
44e5eb92b617 [gaim-migrate @ 6571]
Mark Doliner <markdoliner@pidgin.im>
parents: 6035
diff changeset
1450 if (title != NULL)
44e5eb92b617 [gaim-migrate @ 6571]
Mark Doliner <markdoliner@pidgin.im>
parents: 6035
diff changeset
1451 gtk_window_set_title(GTK_WINDOW(win), title);
6325
35357b64dbb2 [gaim-migrate @ 6824]
Christian Hammond <chipx86@chipx86.com>
parents: 6324
diff changeset
1452
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
1453 gtk_window_set_role(GTK_WINDOW(win), "multifield");
11243
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11212
diff changeset
1454 gtk_container_set_border_width(GTK_CONTAINER(win), GAIM_HIG_BORDER);
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1455 gtk_window_set_resizable(GTK_WINDOW(win), FALSE);
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1456
8323
d962d280c523 [gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
1457 g_signal_connect(G_OBJECT(win), "delete_event",
d962d280c523 [gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
1458 G_CALLBACK(destroy_multifield_cb), data);
d962d280c523 [gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
1459
6326
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
1460 /* Setup the main horizontal box */
11243
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11212
diff changeset
1461 hbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER);
6326
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
1462 gtk_container_add(GTK_CONTAINER(win), hbox);
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
1463 gtk_widget_show(hbox);
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
1464
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
1465 /* Dialog icon. */
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
1466 img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION,
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
1467 GTK_ICON_SIZE_DIALOG);
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
1468 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
1469 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
1470 gtk_widget_show(img);
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
1471
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1472 /* Setup the vbox */
11243
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11212
diff changeset
1473 vbox = gtk_vbox_new(FALSE, GAIM_HIG_BORDER);
6326
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
1474 gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0);
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1475 gtk_widget_show(vbox);
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1476
5813
ba2693e8db07 [gaim-migrate @ 6243]
Christian Hammond <chipx86@chipx86.com>
parents: 5811
diff changeset
1477 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
ba2693e8db07 [gaim-migrate @ 6243]
Christian Hammond <chipx86@chipx86.com>
parents: 5811
diff changeset
1478
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1479 if(primary) {
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
1480 primary_esc = g_markup_escape_text(primary, -1);
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1481 label_text = g_strdup_printf(
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
1482 "<span weight=\"bold\" size=\"larger\">%s</span>", primary_esc);
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
1483 g_free(primary_esc);
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1484 label = gtk_label_new(NULL);
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1485
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1486 gtk_label_set_markup(GTK_LABEL(label), label_text);
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1487 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1488 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1489 gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0);
6325
35357b64dbb2 [gaim-migrate @ 6824]
Christian Hammond <chipx86@chipx86.com>
parents: 6324
diff changeset
1490 gtk_widget_show(label);
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1491 g_free(label_text);
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1492 }
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1493
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1494 for (gl = gaim_request_fields_get_groups(fields); gl != NULL;
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1495 gl = gl->next)
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1496 total_fields += g_list_length(gaim_request_field_group_get_fields(gl->data));
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1497
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1498 if(total_fields > 9) {
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1499 sw = gtk_scrolled_window_new(NULL, NULL);
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1500 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1501 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1502 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1503 GTK_SHADOW_NONE);
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1504 gtk_widget_set_size_request(sw, -1, 200);
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1505 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0);
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1506 gtk_widget_show(sw);
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1507
11243
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11212
diff changeset
1508 vbox2 = gtk_vbox_new(FALSE, GAIM_HIG_BORDER);
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1509 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sw), vbox2);
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1510 gtk_widget_show(vbox2);
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1511 } else {
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1512 vbox2 = vbox;
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1513 }
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1514
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1515 if (secondary) {
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
1516 secondary_esc = g_markup_escape_text(secondary, -1);
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1517 label = gtk_label_new(NULL);
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1518
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
1519 gtk_label_set_markup(GTK_LABEL(label), secondary_esc);
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
1520 g_free(secondary_esc);
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1521 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1522 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1523 gtk_box_pack_start(GTK_BOX(vbox2), label, TRUE, TRUE, 0);
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1524 gtk_widget_show(label);
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1525 }
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1526
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1527 for (gl = gaim_request_fields_get_groups(fields);
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1528 gl != NULL;
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1529 gl = gl->next)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1530 {
5816
44bbfb7f8904 [gaim-migrate @ 6246]
Christian Hammond <chipx86@chipx86.com>
parents: 5815
diff changeset
1531 GList *field_list;
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1532 size_t field_count = 0;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1533 size_t cols = 1;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1534 size_t rows;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1535 size_t col_num;
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1536 size_t row_num = 0;
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1537
5816
44bbfb7f8904 [gaim-migrate @ 6246]
Christian Hammond <chipx86@chipx86.com>
parents: 5815
diff changeset
1538 group = gl->data;
44bbfb7f8904 [gaim-migrate @ 6246]
Christian Hammond <chipx86@chipx86.com>
parents: 5815
diff changeset
1539 field_list = gaim_request_field_group_get_fields(group);
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1540
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1541 if (gaim_request_field_group_get_title(group) != NULL)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1542 {
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1543 frame = gaim_gtk_make_frame(vbox2,
6324
dddc1f8fe8e0 [gaim-migrate @ 6823]
Christian Hammond <chipx86@chipx86.com>
parents: 6110
diff changeset
1544 gaim_request_field_group_get_title(group));
dddc1f8fe8e0 [gaim-migrate @ 6823]
Christian Hammond <chipx86@chipx86.com>
parents: 6110
diff changeset
1545 }
6325
35357b64dbb2 [gaim-migrate @ 6824]
Christian Hammond <chipx86@chipx86.com>
parents: 6324
diff changeset
1546 else
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1547 frame = vbox2;
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1548
5816
44bbfb7f8904 [gaim-migrate @ 6246]
Christian Hammond <chipx86@chipx86.com>
parents: 5815
diff changeset
1549 field_count = g_list_length(field_list);
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1550 /*
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1551 if (field_count > 9)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1552 {
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1553 rows = field_count / 2;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1554 cols++;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1555 }
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1556 else
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1557 */
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1558 rows = field_count;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1559
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1560 col_num = 0;
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1561
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1562 for (fl = field_list; fl != NULL; fl = fl->next)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1563 {
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1564 GaimRequestFieldType type;
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1565
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1566 field = (GaimRequestField *)fl->data;
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1567
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1568 type = gaim_request_field_get_type(field);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1569
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1570 if (type == GAIM_REQUEST_FIELD_LABEL)
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1571 {
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1572 if (col_num > 0)
7921
cd7f211c784c [gaim-migrate @ 8589]
Nathan Walp <nwalp@pidgin.im>
parents: 7909
diff changeset
1573 rows++;
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1574
7921
cd7f211c784c [gaim-migrate @ 8589]
Nathan Walp <nwalp@pidgin.im>
parents: 7909
diff changeset
1575 rows++;
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1576 }
10627
ebbfa9f428e6 [gaim-migrate @ 12102]
Christopher O'Brien <siege@pidgin.im>
parents: 10605
diff changeset
1577 else if ((type == GAIM_REQUEST_FIELD_LIST) ||
ebbfa9f428e6 [gaim-migrate @ 12102]
Christopher O'Brien <siege@pidgin.im>
parents: 10605
diff changeset
1578 (type == GAIM_REQUEST_FIELD_STRING &&
ebbfa9f428e6 [gaim-migrate @ 12102]
Christopher O'Brien <siege@pidgin.im>
parents: 10605
diff changeset
1579 gaim_request_field_string_is_multiline(field)))
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1580 {
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1581 if (col_num > 0)
7921
cd7f211c784c [gaim-migrate @ 8589]
Nathan Walp <nwalp@pidgin.im>
parents: 7909
diff changeset
1582 rows++;
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1583
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1584 rows += 2;
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1585 }
7921
cd7f211c784c [gaim-migrate @ 8589]
Nathan Walp <nwalp@pidgin.im>
parents: 7909
diff changeset
1586
cd7f211c784c [gaim-migrate @ 8589]
Nathan Walp <nwalp@pidgin.im>
parents: 7909
diff changeset
1587 col_num++;
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1588
8323
d962d280c523 [gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
1589 if (col_num >= cols)
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1590 col_num = 0;
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1591 }
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1592
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1593 table = gtk_table_new(rows, 2 * cols, FALSE);
11243
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11212
diff changeset
1594 gtk_table_set_row_spacings(GTK_TABLE(table), GAIM_HIG_BOX_SPACE);
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11212
diff changeset
1595 gtk_table_set_col_spacings(GTK_TABLE(table), GAIM_HIG_BOX_SPACE);
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1596
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1597 gtk_container_add(GTK_CONTAINER(frame), table);
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1598 gtk_widget_show(table);
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1599
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1600 for (row_num = 0, fl = field_list;
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1601 row_num < rows && fl != NULL;
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1602 row_num++)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1603 {
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1604 for (col_num = 0;
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1605 col_num < cols && fl != NULL;
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1606 col_num++, fl = fl->next)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1607 {
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1608 size_t col_offset = col_num * 2;
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1609 GaimRequestFieldType type;
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1610 GtkWidget *widget = NULL;
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1611
12666
a02b23981ccb [gaim-migrate @ 15009]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
1612 label = NULL;
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1613 field = fl->data;
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1614
7922
160207a9feee [gaim-migrate @ 8591]
Nathan Walp <nwalp@pidgin.im>
parents: 7921
diff changeset
1615 if (!gaim_request_field_is_visible(field)) {
160207a9feee [gaim-migrate @ 8591]
Nathan Walp <nwalp@pidgin.im>
parents: 7921
diff changeset
1616 col_num--;
7904
266d6d5c68ac [gaim-migrate @ 8564]
Christian Hammond <chipx86@chipx86.com>
parents: 7903
diff changeset
1617 continue;
7922
160207a9feee [gaim-migrate @ 8591]
Nathan Walp <nwalp@pidgin.im>
parents: 7921
diff changeset
1618 }
7904
266d6d5c68ac [gaim-migrate @ 8564]
Christian Hammond <chipx86@chipx86.com>
parents: 7903
diff changeset
1619
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1620 type = gaim_request_field_get_type(field);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1621
8332
b708d3d428a4 [gaim-migrate @ 9056]
Pekka Riikonen <priikone@silcnet.org>
parents: 8323
diff changeset
1622 if (type != GAIM_REQUEST_FIELD_BOOLEAN &&
b708d3d428a4 [gaim-migrate @ 9056]
Pekka Riikonen <priikone@silcnet.org>
parents: 8323
diff changeset
1623 gaim_request_field_get_label(field))
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1624 {
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1625 char *text;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1626
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1627 text = g_strdup_printf("%s:",
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1628 gaim_request_field_get_label(field));
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1629
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1630 label = gtk_label_new(NULL);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1631 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), text);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1632 g_free(text);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1633
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1634 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1635
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1636 gtk_size_group_add_widget(sg, label);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1637
7905
03db29949e5d [gaim-migrate @ 8565]
Christian Hammond <chipx86@chipx86.com>
parents: 7904
diff changeset
1638 if (type == GAIM_REQUEST_FIELD_LABEL ||
10627
ebbfa9f428e6 [gaim-migrate @ 12102]
Christopher O'Brien <siege@pidgin.im>
parents: 10605
diff changeset
1639 type == GAIM_REQUEST_FIELD_LIST ||
7905
03db29949e5d [gaim-migrate @ 8565]
Christian Hammond <chipx86@chipx86.com>
parents: 7904
diff changeset
1640 (type == GAIM_REQUEST_FIELD_STRING &&
03db29949e5d [gaim-migrate @ 8565]
Christian Hammond <chipx86@chipx86.com>
parents: 7904
diff changeset
1641 gaim_request_field_string_is_multiline(field)))
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1642 {
7921
cd7f211c784c [gaim-migrate @ 8589]
Nathan Walp <nwalp@pidgin.im>
parents: 7909
diff changeset
1643 if(col_num > 0)
cd7f211c784c [gaim-migrate @ 8589]
Nathan Walp <nwalp@pidgin.im>
parents: 7909
diff changeset
1644 row_num++;
cd7f211c784c [gaim-migrate @ 8589]
Nathan Walp <nwalp@pidgin.im>
parents: 7909
diff changeset
1645
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1646 gtk_table_attach_defaults(GTK_TABLE(table), label,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1647 0, 2 * cols,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1648 row_num, row_num + 1);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1649
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1650 row_num++;
7921
cd7f211c784c [gaim-migrate @ 8589]
Nathan Walp <nwalp@pidgin.im>
parents: 7909
diff changeset
1651 col_num=cols;
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1652 }
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1653 else
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1654 {
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1655 gtk_table_attach_defaults(GTK_TABLE(table), label,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1656 col_offset, col_offset + 1,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1657 row_num, row_num + 1);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1658 }
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1659
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1660 gtk_widget_show(label);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1661 }
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1662
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1663 if (type == GAIM_REQUEST_FIELD_STRING)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1664 widget = create_string_field(field);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1665 else if (type == GAIM_REQUEST_FIELD_INTEGER)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1666 widget = create_int_field(field);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1667 else if (type == GAIM_REQUEST_FIELD_BOOLEAN)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1668 widget = create_bool_field(field);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1669 else if (type == GAIM_REQUEST_FIELD_CHOICE)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1670 widget = create_choice_field(field);
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1671 else if (type == GAIM_REQUEST_FIELD_LIST)
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1672 widget = create_list_field(field);
11357
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1673 else if (type == GAIM_REQUEST_FIELD_IMAGE)
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1674 widget = create_image_field(field);
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1675 else if (type == GAIM_REQUEST_FIELD_ACCOUNT)
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1676 widget = create_account_field(field);
7904
266d6d5c68ac [gaim-migrate @ 8564]
Christian Hammond <chipx86@chipx86.com>
parents: 7903
diff changeset
1677 else
266d6d5c68ac [gaim-migrate @ 8564]
Christian Hammond <chipx86@chipx86.com>
parents: 7903
diff changeset
1678 continue;
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1679
12666
a02b23981ccb [gaim-migrate @ 15009]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
1680 #if GTK_CHECK_VERSION(2,4,0)
a02b23981ccb [gaim-migrate @ 15009]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
1681 if (label)
a02b23981ccb [gaim-migrate @ 15009]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
1682 gtk_label_set_mnemonic_widget(GTK_LABEL(label), widget);
a02b23981ccb [gaim-migrate @ 15009]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
1683 #endif
a02b23981ccb [gaim-migrate @ 15009]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
1684
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1685 if (type == GAIM_REQUEST_FIELD_STRING &&
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1686 gaim_request_field_string_is_multiline(field))
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1687 {
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1688 gtk_table_attach(GTK_TABLE(table), widget,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1689 0, 2 * cols,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1690 row_num, row_num + 1,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1691 GTK_FILL | GTK_EXPAND,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1692 GTK_FILL | GTK_EXPAND,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1693 5, 0);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1694 }
10627
ebbfa9f428e6 [gaim-migrate @ 12102]
Christopher O'Brien <siege@pidgin.im>
parents: 10605
diff changeset
1695 else if (type == GAIM_REQUEST_FIELD_LIST)
ebbfa9f428e6 [gaim-migrate @ 12102]
Christopher O'Brien <siege@pidgin.im>
parents: 10605
diff changeset
1696 {
ebbfa9f428e6 [gaim-migrate @ 12102]
Christopher O'Brien <siege@pidgin.im>
parents: 10605
diff changeset
1697 gtk_table_attach(GTK_TABLE(table), widget,
ebbfa9f428e6 [gaim-migrate @ 12102]
Christopher O'Brien <siege@pidgin.im>
parents: 10605
diff changeset
1698 0, 2 * cols,
ebbfa9f428e6 [gaim-migrate @ 12102]
Christopher O'Brien <siege@pidgin.im>
parents: 10605
diff changeset
1699 row_num, row_num + 1,
ebbfa9f428e6 [gaim-migrate @ 12102]
Christopher O'Brien <siege@pidgin.im>
parents: 10605
diff changeset
1700 GTK_FILL | GTK_EXPAND,
ebbfa9f428e6 [gaim-migrate @ 12102]
Christopher O'Brien <siege@pidgin.im>
parents: 10605
diff changeset
1701 GTK_FILL | GTK_EXPAND,
ebbfa9f428e6 [gaim-migrate @ 12102]
Christopher O'Brien <siege@pidgin.im>
parents: 10605
diff changeset
1702 5, 0);
ebbfa9f428e6 [gaim-migrate @ 12102]
Christopher O'Brien <siege@pidgin.im>
parents: 10605
diff changeset
1703 }
ebbfa9f428e6 [gaim-migrate @ 12102]
Christopher O'Brien <siege@pidgin.im>
parents: 10605
diff changeset
1704 else if (type == GAIM_REQUEST_FIELD_BOOLEAN)
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1705 {
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1706 gtk_table_attach(GTK_TABLE(table), widget,
10627
ebbfa9f428e6 [gaim-migrate @ 12102]
Christopher O'Brien <siege@pidgin.im>
parents: 10605
diff changeset
1707 col_offset, col_offset + 1,
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1708 row_num, row_num + 1,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1709 GTK_FILL | GTK_EXPAND,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1710 GTK_FILL | GTK_EXPAND,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1711 5, 0);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1712 }
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1713 else
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1714 {
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1715 gtk_table_attach(GTK_TABLE(table), widget,
10627
ebbfa9f428e6 [gaim-migrate @ 12102]
Christopher O'Brien <siege@pidgin.im>
parents: 10605
diff changeset
1716 1, 2 * cols,
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1717 row_num, row_num + 1,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1718 GTK_FILL | GTK_EXPAND,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1719 GTK_FILL | GTK_EXPAND,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1720 5, 0);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1721 }
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1722
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1723 gtk_widget_show(widget);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1724
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1725 field->ui_data = widget;
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1726 }
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1727 }
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1728 }
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1729
5813
ba2693e8db07 [gaim-migrate @ 6243]
Christian Hammond <chipx86@chipx86.com>
parents: 5811
diff changeset
1730 g_object_unref(sg);
ba2693e8db07 [gaim-migrate @ 6243]
Christian Hammond <chipx86@chipx86.com>
parents: 5811
diff changeset
1731
5815
cdd5b8d9caca [gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents: 5813
diff changeset
1732 /* Button box. */
cdd5b8d9caca [gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents: 5813
diff changeset
1733 bbox = gtk_hbutton_box_new();
11243
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11212
diff changeset
1734 gtk_box_set_spacing(GTK_BOX(bbox), GAIM_HIG_BOX_SPACE);
5815
cdd5b8d9caca [gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents: 5813
diff changeset
1735 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
1736 gtk_box_pack_end(GTK_BOX(vbox), bbox, FALSE, TRUE, 0);
cdd5b8d9caca [gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents: 5813
diff changeset
1737 gtk_widget_show(bbox);
cdd5b8d9caca [gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents: 5813
diff changeset
1738
cdd5b8d9caca [gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents: 5813
diff changeset
1739 /* Cancel button */
cdd5b8d9caca [gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents: 5813
diff changeset
1740 button = gtk_button_new_from_stock(text_to_stock(cancel_text));
cdd5b8d9caca [gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents: 5813
diff changeset
1741 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
cdd5b8d9caca [gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents: 5813
diff changeset
1742 gtk_widget_show(button);
cdd5b8d9caca [gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents: 5813
diff changeset
1743
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
1744 g_signal_connect(G_OBJECT(button), "clicked",
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
1745 G_CALLBACK(multifield_cancel_cb), data);
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
1746
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1747 GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1748
5815
cdd5b8d9caca [gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents: 5813
diff changeset
1749 /* OK button */
cdd5b8d9caca [gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents: 5813
diff changeset
1750 button = gtk_button_new_from_stock(text_to_stock(ok_text));
cdd5b8d9caca [gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents: 5813
diff changeset
1751 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
cdd5b8d9caca [gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents: 5813
diff changeset
1752 gtk_widget_show(button);
cdd5b8d9caca [gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents: 5813
diff changeset
1753
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1754 data->ok_button = button;
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1755
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1756 GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1757 gtk_window_set_default(GTK_WINDOW(win), button);
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1758
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
1759 g_signal_connect(G_OBJECT(button), "clicked",
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
1760 G_CALLBACK(multifield_ok_cb), data);
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
1761
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1762 if (!gaim_request_fields_all_required_filled(fields))
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1763 gtk_widget_set_sensitive(button, FALSE);
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1764
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1765 gtk_widget_show(win);
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1766
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1767 return data;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1768 }
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1769
6363
6e0fa4b64fe6 [gaim-migrate @ 6868]
Christian Hammond <chipx86@chipx86.com>
parents: 6338
diff changeset
1770 static void
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1771 file_yes_no_cb(GaimGtkRequestData *data, gint id)
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1772 {
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1773 /* Only call the callback if yes was selected, otherwise the request
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1774 * (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
1775 * things go BOOM */
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1776 if (id == 1) {
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1777 if (data->cbs[1] != NULL)
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1778 ((GaimRequestFileCb)data->cbs[1])(data->user_data, data->u.file.name);
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1779 gaim_request_close(GAIM_REQUEST_FILE, data);
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1780 }
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1781 }
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1782
9573
7fb26654aee8 [gaim-migrate @ 10416]
Mark Doliner <markdoliner@pidgin.im>
parents: 9513
diff changeset
1783 #if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1784 static void
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1785 file_ok_check_if_exists_cb(GtkWidget *widget, gint response, GaimGtkRequestData *data)
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1786 {
10536
c2e0b596b4ad [gaim-migrate @ 11888]
Lee Roach <phroggster@gmail.com>
parents: 10418
diff changeset
1787 gchar *current_folder;
c2e0b596b4ad [gaim-migrate @ 11888]
Lee Roach <phroggster@gmail.com>
parents: 10418
diff changeset
1788
12234
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
1789 generic_response_start(data);
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
1790
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1791 if (response != GTK_RESPONSE_ACCEPT) {
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1792 if (data->cbs[0] != NULL)
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1793 ((GaimRequestFileCb)data->cbs[0])(data->user_data, NULL);
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1794 gaim_request_close(GAIM_REQUEST_FILE, data);
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1795 return;
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1796 }
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1797
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1798 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
1799 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
1800 if (current_folder != NULL) {
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1801 if (data->u.file.savedialog) {
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1802 gaim_prefs_set_string("/gaim/gtk/filelocations/last_save_folder", current_folder);
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1803 } else {
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1804 gaim_prefs_set_string("/gaim/gtk/filelocations/last_open_folder", current_folder);
10536
c2e0b596b4ad [gaim-migrate @ 11888]
Lee Roach <phroggster@gmail.com>
parents: 10418
diff changeset
1805 }
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1806 g_free(current_folder);
10536
c2e0b596b4ad [gaim-migrate @ 11888]
Lee Roach <phroggster@gmail.com>
parents: 10418
diff changeset
1807 }
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1808
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1809 #else /* FILECHOOSER */
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1810
9573
7fb26654aee8 [gaim-migrate @ 10416]
Mark Doliner <markdoliner@pidgin.im>
parents: 9513
diff changeset
1811 static void
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1812 file_ok_check_if_exists_cb(GtkWidget *button, GaimGtkRequestData *data)
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1813 {
9503
8593c276aed3 [gaim-migrate @ 10330]
Mark Doliner <markdoliner@pidgin.im>
parents: 9502
diff changeset
1814 const gchar *name;
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1815 gchar *current_folder;
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1816
12234
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
1817 generic_response_start(data);
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
1818
9503
8593c276aed3 [gaim-migrate @ 10330]
Mark Doliner <markdoliner@pidgin.im>
parents: 9502
diff changeset
1819 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
1820
ec57f8faed31 [gaim-migrate @ 10340]
Mark Doliner <markdoliner@pidgin.im>
parents: 9506
diff changeset
1821 /* If name is a directory then change directories */
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1822 if (gaim_gtk_check_if_dir(name, GTK_FILE_SELECTION(data->dialog)))
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1823 return;
9513
ec57f8faed31 [gaim-migrate @ 10340]
Mark Doliner <markdoliner@pidgin.im>
parents: 9506
diff changeset
1824
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1825 current_folder = g_path_get_dirname(name);
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1826 if (current_folder != NULL) {
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1827 if (data->u.file.savedialog) {
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1828 gaim_prefs_set_string("/gaim/gtk/filelocations/last_save_folder", current_folder);
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1829 } else {
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1830 gaim_prefs_set_string("/gaim/gtk/filelocations/last_open_folder", current_folder);
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1831 }
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1832 g_free(current_folder);
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1833 }
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1834
9503
8593c276aed3 [gaim-migrate @ 10330]
Mark Doliner <markdoliner@pidgin.im>
parents: 9502
diff changeset
1835 data->u.file.name = g_strdup(name);
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1836
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1837 #endif /* FILECHOOSER */
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1838
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1839 if ((data->u.file.savedialog == TRUE) &&
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1840 (g_file_test(data->u.file.name, G_FILE_TEST_EXISTS))) {
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1841 gaim_request_yes_no(data, NULL, _("That file already exists"),
10116
054b064145a1 [gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9976
diff changeset
1842 _("Would you like to overwrite it?"), 0, data,
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1843 G_CALLBACK(file_yes_no_cb),
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1844 G_CALLBACK(file_yes_no_cb));
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1845 } else
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1846 file_yes_no_cb(data, 1);
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1847 }
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1848
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1849 #if !GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1850 static void
9506
11e355d544fa [gaim-migrate @ 10333]
Mark Doliner <markdoliner@pidgin.im>
parents: 9503
diff changeset
1851 file_cancel_cb(GaimGtkRequestData *data)
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1852 {
12234
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
1853 generic_response_start(data);
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
1854
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1855 if (data->cbs[0] != NULL)
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1856 ((GaimRequestFileCb)data->cbs[0])(data->user_data, NULL);
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1857
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1858 gaim_request_close(GAIM_REQUEST_FILE, data);
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1859 }
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1860 #endif /* FILECHOOSER */
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1861
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1862 static void *
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1863 gaim_gtk_request_file(const char *title, const char *filename,
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1864 gboolean savedialog,
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1865 GCallback ok_cb, GCallback cancel_cb,
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1866 void *user_data)
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1867 {
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1868 GaimGtkRequestData *data;
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1869 GtkWidget *filesel;
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1870 const gchar *current_folder;
10673
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1871 #if GTK_CHECK_VERSION(2,4,0)
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1872 gboolean folder_set = FALSE;
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1873 #endif
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1874
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1875 data = g_new0(GaimGtkRequestData, 1);
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1876 data->type = GAIM_REQUEST_FILE;
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1877 data->user_data = user_data;
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1878 data->cb_count = 2;
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1879 data->cbs = g_new0(GCallback, 2);
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1880 data->cbs[0] = cancel_cb;
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1881 data->cbs[1] = ok_cb;
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1882 data->u.file.savedialog = savedialog;
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1883
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1884 #if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1885 filesel = gtk_file_chooser_dialog_new(
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1886 title ? title : (savedialog ? _("Save File...")
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1887 : _("Open File...")),
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1888 NULL,
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1889 savedialog ? GTK_FILE_CHOOSER_ACTION_SAVE
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1890 : GTK_FILE_CHOOSER_ACTION_OPEN,
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1891 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1892 savedialog ? GTK_STOCK_SAVE
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1893 : GTK_STOCK_OPEN,
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1894 GTK_RESPONSE_ACCEPT,
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1895 NULL);
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1896 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
1897
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1898 if (savedialog) {
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1899 current_folder = gaim_prefs_get_string("/gaim/gtk/filelocations/last_save_folder");
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1900 } else {
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1901 current_folder = gaim_prefs_get_string("/gaim/gtk/filelocations/last_open_folder");
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1902 }
10673
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1903
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1904 if (filename != NULL)
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1905 gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(filesel), filename);
10673
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1906 if ((current_folder != NULL) && (*current_folder != '\0')) {
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1907 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
1908 }
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1909
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1910 #ifdef _WIN32
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1911 if (!folder_set) {
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1912 char *my_documents = wgaim_get_special_folder(CSIDL_PERSONAL);
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1913
10673
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1914 if (my_documents != NULL) {
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1915 gtk_file_chooser_set_current_folder(
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1916 GTK_FILE_CHOOSER(filesel), my_documents);
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1917
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1918 g_free(my_documents);
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1919 }
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1920 }
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1921
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1922 #endif
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1923 g_signal_connect(G_OBJECT(GTK_FILE_CHOOSER(filesel)), "response",
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1924 G_CALLBACK(file_ok_check_if_exists_cb), data);
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1925 #else /* FILECHOOSER */
10673
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1926 filesel = gtk_file_selection_new(
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1927 title ? title : (savedialog ? _("Save File...")
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1928 : _("Open File...")));
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1929 if (savedialog) {
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1930 current_folder = gaim_prefs_get_string("/gaim/gtk/filelocations/last_save_folder");
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1931 } else {
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1932 current_folder = gaim_prefs_get_string("/gaim/gtk/filelocations/last_open_folder");
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1933 }
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1934 if (current_folder != NULL) {
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1935 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
1936 gtk_file_selection_set_filename(GTK_FILE_SELECTION(filesel), path);
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1937 g_free(path);
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1938 }
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10181
diff changeset
1939 if (filename != NULL)
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10181
diff changeset
1940 gtk_file_selection_set_filename(GTK_FILE_SELECTION(filesel), filename);
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1941
9506
11e355d544fa [gaim-migrate @ 10333]
Mark Doliner <markdoliner@pidgin.im>
parents: 9503
diff changeset
1942 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
1943 G_CALLBACK(file_cancel_cb), data);
11e355d544fa [gaim-migrate @ 10333]
Mark Doliner <markdoliner@pidgin.im>
parents: 9503
diff changeset
1944 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
1945 "clicked", G_CALLBACK(file_cancel_cb), data);
9506
11e355d544fa [gaim-migrate @ 10333]
Mark Doliner <markdoliner@pidgin.im>
parents: 9503
diff changeset
1946 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
1947 G_CALLBACK(file_ok_check_if_exists_cb), data);
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1948 #endif /* FILECHOOSER */
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1949
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1950 data->dialog = filesel;
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1951 gtk_widget_show(filesel);
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1952
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1953 return (void *)data;
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1954 }
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1955
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1956 static void
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1957 gaim_gtk_close_request(GaimRequestType type, void *ui_handle)
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1958 {
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1959 GaimGtkRequestData *data = (GaimGtkRequestData *)ui_handle;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1960
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1961 if (data->cbs != NULL)
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1962 g_free(data->cbs);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1963
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1964 gtk_widget_destroy(data->dialog);
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1965
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
1966 if (type == GAIM_REQUEST_FIELDS)
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
1967 gaim_request_fields_destroy(data->u.multifield.fields);
9513
ec57f8faed31 [gaim-migrate @ 10340]
Mark Doliner <markdoliner@pidgin.im>
parents: 9506
diff changeset
1968 else if (type == GAIM_REQUEST_FILE)
ec57f8faed31 [gaim-migrate @ 10340]
Mark Doliner <markdoliner@pidgin.im>
parents: 9506
diff changeset
1969 g_free(data->u.file.name);
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
1970
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1971 g_free(data);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1972 }
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1973
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1974 static GaimRequestUiOps ops =
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1975 {
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1976 gaim_gtk_request_input,
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1977 gaim_gtk_request_choice,
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1978 gaim_gtk_request_action,
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1979 gaim_gtk_request_fields,
8843
944c71cc01af [gaim-migrate @ 9610]
Pekka Riikonen <priikone@silcnet.org>
parents: 8782
diff changeset
1980 gaim_gtk_request_file,
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1981 gaim_gtk_close_request
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1982 };
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1983
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1984 GaimRequestUiOps *
7035
76bca80cd91d [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
1985 gaim_gtk_request_get_ui_ops(void)
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1986 {
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1987 return &ops;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1988 }

mercurial