pidgin/gtkrequest.c

Sun, 07 Feb 2021 01:33:01 -0600

author
Gary Kramlich <grim@reaperworld.com>
date
Sun, 07 Feb 2021 01:33:01 -0600
branch
release-2.x.y
changeset 40755
fb2056ce3c58
parent 40399
ca83fa85f401
permissions
-rw-r--r--

Implement mitigation for GHSL-2021-045

This add a static inline version of `g_memdup2` if the version of glib we're
compiling against doesn't have the function.

GHSL-2021-045 was originally reported to glib at
https://gitlab.gnome.org/GNOME/glib/-/issues/2319.

More information about the entire situation can be found on the gnome
desktop-devel-list at
https://mail.gnome.org/archives/desktop-devel-list/2021-February/msg00000.html

Testing Done:
Compiled and ran tests locally.

Reviewed at https://reviews.imfreedom.org/r/483/

5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1 /**
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2 * @file gtkrequest.c GTK+ Request API
16254
eeb2bba4dc94 Rename the Doxygen group from gtkui to pidgin.
Richard Laager <rlaager@pidgin.im>
parents: 16123
diff changeset
3 * @ingroup pidgin
20147
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 20081
diff changeset
4 */
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 20081
diff changeset
5
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 20081
diff changeset
6 /* pidgin
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
7 *
15931
716b5fac1895 Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
8 * Pidgin is the legal property of its developers, whose names are too numerous
8046
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 7964
diff changeset
9 * to list here. Please refer to the COPYRIGHT file distributed with this
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 7964
diff changeset
10 * source distribution.
7035
76bca80cd91d [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
11 *
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
12 * This program is free software; you can redistribute it and/or modify
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
13 * it under the terms of the GNU General Public License as published by
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
14 * the Free Software Foundation; either version 2 of the License, or
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
15 * (at your option) any later version.
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
16 *
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
17 * This program is distributed in the hope that it will be useful,
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
20 * GNU General Public License for more details.
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
21 *
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
22 * You should have received a copy of the GNU General Public License
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
23 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19789
diff changeset
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
25 */
9791
f5c5bda0b96b [gaim-migrate @ 10659]
Gary Kramlich <grim@pidgin.im>
parents: 9730
diff changeset
26 #include "internal.h"
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15570
diff changeset
27 #include "pidgin.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5846
diff changeset
28
27427
00f91afbd4d9 Show thumbnail in ft request dialog
Marcus Lundblad <malu@pidgin.im>
parents: 25900
diff changeset
29 #include "debug.h"
7066
2d8321bf0491 [gaim-migrate @ 7630]
Christian Hammond <chipx86@chipx86.com>
parents: 7048
diff changeset
30 #include "prefs.h"
11780
9aee3bde84b9 [gaim-migrate @ 14071]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11458
diff changeset
31 #include "util.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5846
diff changeset
32
9709
2e73f176cc80 [gaim-migrate @ 10570]
Mark Doliner <markdoliner@pidgin.im>
parents: 9573
diff changeset
33 #include "gtkimhtml.h"
2e73f176cc80 [gaim-migrate @ 10570]
Mark Doliner <markdoliner@pidgin.im>
parents: 9573
diff changeset
34 #include "gtkimhtmltoolbar.h"
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
35 #include "gtkrequest.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5846
diff changeset
36 #include "gtkutils.h"
15883
969b74a3e27a According to etags, pidgin/ should be completely clean of references to 'gaim' as a client
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
37 #include "pidginstock.h"
19301
314d14687846 Forgot to refer to gtkblist.h
Gabriel Schulhof <nix@go-nix.ca>
parents: 19300
diff changeset
38 #include "gtkblist.h"
39010
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
39 #ifdef USE_VV
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
40 #include "media-gst.h"
40396
8c751a7fa2dd Wayland screenshare review feedback from QuLogic
David Woodhouse <dwmw2@infradead.org>
parents: 40395
diff changeset
41 #ifdef HAVE_GIOUNIX
8c751a7fa2dd Wayland screenshare review feedback from QuLogic
David Woodhouse <dwmw2@infradead.org>
parents: 40395
diff changeset
42 #include <gio/gunixfdlist.h>
8c751a7fa2dd Wayland screenshare review feedback from QuLogic
David Woodhouse <dwmw2@infradead.org>
parents: 40395
diff changeset
43 #endif
39010
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
44 #endif
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
45
8294
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
46 #include <gdk/gdkkeysyms.h>
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
47
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
48 static GtkWidget * create_account_field(PurpleRequestField *field);
8294
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
49
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
50 typedef struct
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
51 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
52 PurpleRequestType type;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
53
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
54 void *user_data;
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11071
diff changeset
55 GtkWidget *dialog;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
56
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
57 GtkWidget *ok_button;
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
58
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
59 size_t cb_count;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
60 GCallback *cbs;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
61
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
62 union
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 struct
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
65 {
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
66 GtkWidget *entry;
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
67
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
68 gboolean multiline;
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
69 gchar *hint;
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
70
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
71 } input;
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
72
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
73 struct
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
74 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
75 PurpleRequestFields *fields;
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
76
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
77 } multifield;
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
78
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
79 struct
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
80 {
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
81 gboolean savedialog;
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
82 gchar *name;
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
83
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
84 } file;
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
85
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
86 struct
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
87 {
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
88 #ifdef HAVE_GIOUNIX
40396
8c751a7fa2dd Wayland screenshare review feedback from QuLogic
David Woodhouse <dwmw2@infradead.org>
parents: 40395
diff changeset
89 GDBusConnection *dbus_connection;
8c751a7fa2dd Wayland screenshare review feedback from QuLogic
David Woodhouse <dwmw2@infradead.org>
parents: 40395
diff changeset
90 #endif
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
91 GCancellable *cancellable;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
92 gchar *session_path;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
93 guint signal_id;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
94 guint32 node_id;
40398
f3c12f0656c5 Remove global portal session/request numbers
David Woodhouse <dwmw2@infradead.org>
parents: 40397
diff changeset
95 guint portal_session_nr;
f3c12f0656c5 Remove global portal session/request numbers
David Woodhouse <dwmw2@infradead.org>
parents: 40397
diff changeset
96 guint portal_request_nr;
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
97
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
98 } screenshare;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
99
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
100 } u;
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
101
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
102 } PidginRequestData;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
103
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
104 static void
28793
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
105 pidgin_widget_decorate_account(GtkWidget *cont, PurpleAccount *account)
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
106 {
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
107 GtkWidget *image;
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
108 GdkPixbuf *pixbuf;
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
109 GtkTooltips *tips;
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
110
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
111 if (!account)
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
112 return;
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
113
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
114 pixbuf = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_SMALL);
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
115 image = gtk_image_new_from_pixbuf(pixbuf);
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
116 g_object_unref(G_OBJECT(pixbuf));
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
117
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
118 tips = gtk_tooltips_new();
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
119 gtk_tooltips_set_tip(tips, image, purple_account_get_username(account), NULL);
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
120
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
121 if (GTK_IS_DIALOG(cont)) {
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
122 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(cont)->action_area), image, FALSE, TRUE, 0);
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
123 gtk_box_reorder_child(GTK_BOX(GTK_DIALOG(cont)->action_area), image, 0);
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
124 } else if (GTK_IS_HBOX(cont)) {
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
125 gtk_misc_set_alignment(GTK_MISC(image), 0, 0);
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
126 gtk_box_pack_end(GTK_BOX(cont), image, FALSE, TRUE, 0);
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
127 }
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
128 gtk_widget_show(image);
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
129 }
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
130
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
131 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
132 generic_response_start(PidginRequestData *data)
12234
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
133 {
13435
4c22eed6e0a6 [gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents: 13373
diff changeset
134 g_return_if_fail(data != NULL);
4c22eed6e0a6 [gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents: 13373
diff changeset
135
12234
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
136 /* Tell the user we're doing something. */
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
137 pidgin_set_cursor(GTK_WIDGET(data->dialog), GDK_WATCH);
12234
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
138 }
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
139
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
140 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
141 input_response_cb(GtkDialog *dialog, gint id, PidginRequestData *data)
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
142 {
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
143 const char *value;
7174
2f3cab1045d6 [gaim-migrate @ 7742]
Nathan Walp <nwalp@pidgin.im>
parents: 7172
diff changeset
144 char *multiline_value = NULL;
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
145
12234
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
146 generic_response_start(data);
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
147
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
148 if (data->u.input.multiline) {
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
149 GtkTextIter start_iter, end_iter;
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
150 GtkTextBuffer *buffer =
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
151 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
152
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
153 gtk_text_buffer_get_start_iter(buffer, &start_iter);
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
154 gtk_text_buffer_get_end_iter(buffer, &end_iter);
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
155
38266
7c1706b2bd11 Remove found redundant NULL checks
qarkai <qarkai@gmail.com>
parents: 38260
diff changeset
156 if (purple_strequal(data->u.input.hint, "html"))
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
157 multiline_value = gtk_imhtml_get_markup(GTK_IMHTML(data->u.input.entry));
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
158 else
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
159 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
160 FALSE);
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
161
7172
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7142
diff changeset
162 value = multiline_value;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
163 }
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
164 else
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
165 value = gtk_entry_get_text(GTK_ENTRY(data->u.input.entry));
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
166
36256
a437550a9308 Remove -Wno-sign-compare and backport fixes from default.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35986
diff changeset
167 if (id >= 0 && (gsize)id < data->cb_count && data->cbs[id] != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
168 ((PurpleRequestInputCb)data->cbs[id])(data->user_data, value);
6110
8c703c3453c7 [gaim-migrate @ 6572]
Mark Doliner <markdoliner@pidgin.im>
parents: 6109
diff changeset
169 else if (data->cbs[1] != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
170 ((PurpleRequestInputCb)data->cbs[1])(data->user_data, value);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
171
7172
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7142
diff changeset
172 if (data->u.input.multiline)
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7142
diff changeset
173 g_free(multiline_value);
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7142
diff changeset
174
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
175 purple_request_close(PURPLE_REQUEST_INPUT, data);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
176 }
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
177
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
178 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
179 action_response_cb(GtkDialog *dialog, gint id, PidginRequestData *data)
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
180 {
12234
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
181 generic_response_start(data);
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
182
36256
a437550a9308 Remove -Wno-sign-compare and backport fixes from default.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35986
diff changeset
183 if (id >= 0 && (gsize)id < data->cb_count && data->cbs[id] != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
184 ((PurpleRequestActionCb)data->cbs[id])(data->user_data, id);
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
185
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
186 purple_request_close(PURPLE_REQUEST_INPUT, data);
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
187 }
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
188
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
189
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
190 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
191 choice_response_cb(GtkDialog *dialog, gint id, PidginRequestData *data)
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
192 {
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
193 GtkWidget *radio = g_object_get_data(G_OBJECT(dialog), "radio");
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
194 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
195
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
196 generic_response_start(data);
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
197
36256
a437550a9308 Remove -Wno-sign-compare and backport fixes from default.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35986
diff changeset
198 if (id >= 0 && (gsize)id < data->cb_count && data->cbs[id] != NULL)
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
199 while (group) {
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
200 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(group->data))) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
201 ((PurpleRequestChoiceCb)data->cbs[id])(data->user_data, GPOINTER_TO_INT(g_object_get_data(G_OBJECT(group->data), "choice_id")));
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
202 break;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
203 }
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
204 group = group->next;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
205 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
206 purple_request_close(PURPLE_REQUEST_INPUT, data);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
207 }
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
208
5835
2d496d6d967d [gaim-migrate @ 6266]
Christian Hammond <chipx86@chipx86.com>
parents: 5834
diff changeset
209 static gboolean
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
210 field_string_focus_out_cb(GtkWidget *entry, GdkEventFocus *event,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
211 PurpleRequestField *field)
5832
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
212 {
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
213 const char *value;
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
214
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
215 if (purple_request_field_string_is_multiline(field))
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
216 {
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
217 GtkTextBuffer *buffer;
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
218 GtkTextIter start_iter, end_iter;
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
219
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
220 buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(entry));
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
221
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
222 gtk_text_buffer_get_start_iter(buffer, &start_iter);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
223 gtk_text_buffer_get_end_iter(buffer, &end_iter);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
224
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
225 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
226 }
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
227 else
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
228 value = gtk_entry_get_text(GTK_ENTRY(entry));
5834
c7945c10cff3 [gaim-migrate @ 6265]
Christian Hammond <chipx86@chipx86.com>
parents: 5832
diff changeset
229
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
230 purple_request_field_string_set_value(field,
5834
c7945c10cff3 [gaim-migrate @ 6265]
Christian Hammond <chipx86@chipx86.com>
parents: 5832
diff changeset
231 (*value == '\0' ? NULL : value));
5835
2d496d6d967d [gaim-migrate @ 6266]
Christian Hammond <chipx86@chipx86.com>
parents: 5834
diff changeset
232
2d496d6d967d [gaim-migrate @ 6266]
Christian Hammond <chipx86@chipx86.com>
parents: 5834
diff changeset
233 return FALSE;
5832
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
234 }
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
235
5835
2d496d6d967d [gaim-migrate @ 6266]
Christian Hammond <chipx86@chipx86.com>
parents: 5834
diff changeset
236 static gboolean
5846
d2c9503ad8a8 [gaim-migrate @ 6277]
Christian Hammond <chipx86@chipx86.com>
parents: 5845
diff changeset
237 field_int_focus_out_cb(GtkEntry *entry, GdkEventFocus *event,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
238 PurpleRequestField *field)
5832
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
239 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
240 purple_request_field_int_set_value(field,
5832
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
241 atoi(gtk_entry_get_text(entry)));
5835
2d496d6d967d [gaim-migrate @ 6266]
Christian Hammond <chipx86@chipx86.com>
parents: 5834
diff changeset
242
2d496d6d967d [gaim-migrate @ 6266]
Christian Hammond <chipx86@chipx86.com>
parents: 5834
diff changeset
243 return FALSE;
5832
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
244 }
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
245
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
246 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
247 field_bool_cb(GtkToggleButton *button, PurpleRequestField *field)
5832
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
248 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
249 purple_request_field_bool_set_value(field,
5832
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
250 gtk_toggle_button_get_active(button));
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
251 }
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
252
29741
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29686
diff changeset
253 static void
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29686
diff changeset
254 field_choice_menu_cb(GtkComboBox *menu, PurpleRequestField *field)
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29686
diff changeset
255 {
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29686
diff changeset
256 purple_request_field_choice_set_value(field,
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29686
diff changeset
257 gtk_combo_box_get_active(menu));
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29686
diff changeset
258 }
5832
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
259
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
260 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
261 field_choice_option_cb(GtkRadioButton *button, PurpleRequestField *field)
5832
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
262 {
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
263 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
264 purple_request_field_choice_set_value(field,
10943
729674da8959 [gaim-migrate @ 12735]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10871
diff changeset
265 (g_slist_length(gtk_radio_button_get_group(button)) -
729674da8959 [gaim-migrate @ 12735]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10871
diff changeset
266 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
267 }
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
268
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
269 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
270 field_account_cb(GObject *w, PurpleAccount *account, PurpleRequestField *field)
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
271 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
272 purple_request_field_account_set_value(field, account);
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
273 }
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
274
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
275 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
276 multifield_ok_cb(GtkWidget *button, PidginRequestData *data)
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
277 {
12234
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
278 generic_response_start(data);
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
279
8521
0f0e26a59d47 [gaim-migrate @ 9260]
Gary Kramlich <grim@pidgin.im>
parents: 8332
diff changeset
280 if (!GTK_WIDGET_HAS_FOCUS(button))
0f0e26a59d47 [gaim-migrate @ 9260]
Gary Kramlich <grim@pidgin.im>
parents: 8332
diff changeset
281 gtk_widget_grab_focus(button);
0f0e26a59d47 [gaim-migrate @ 9260]
Gary Kramlich <grim@pidgin.im>
parents: 8332
diff changeset
282
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
283 if (data->cbs[0] != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
284 ((PurpleRequestFieldsCb)data->cbs[0])(data->user_data,
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
285 data->u.multifield.fields);
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
286
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
287 purple_request_close(PURPLE_REQUEST_FIELDS, data);
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
288 }
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
289
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
290 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
291 multifield_cancel_cb(GtkWidget *button, PidginRequestData *data)
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
292 {
12234
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
293 generic_response_start(data);
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
294
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
295 if (data->cbs[1] != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
296 ((PurpleRequestFieldsCb)data->cbs[1])(data->user_data,
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
297 data->u.multifield.fields);
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
298
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
299 purple_request_close(PURPLE_REQUEST_FIELDS, data);
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
300 }
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
301
22032
8136dd5eeda3 Make some more event handlers return appropriate gboolean values. This turns
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
302 static gboolean
8323
d962d280c523 [gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
303 destroy_multifield_cb(GtkWidget *dialog, GdkEvent *event,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
304 PidginRequestData *data)
8323
d962d280c523 [gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
305 {
d962d280c523 [gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
306 multifield_cancel_cb(NULL, data);
22032
8136dd5eeda3 Make some more event handlers return appropriate gboolean values. This turns
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
307 return FALSE;
8323
d962d280c523 [gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
308 }
d962d280c523 [gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
309
d962d280c523 [gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
310
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
311 #define STOCK_ITEMIZE(r, l) \
38258
9a6551eba09c Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 36256
diff changeset
312 if (purple_strequal((r), text)) \
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
313 return (l);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
314
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
315 static const char *
5794
ebdbb7dc6658 [gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents: 5510
diff changeset
316 text_to_stock(const char *text)
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
317 {
6334
47a748d6fb0f [gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents: 6326
diff changeset
318 STOCK_ITEMIZE(_("Yes"), GTK_STOCK_YES);
47a748d6fb0f [gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents: 6326
diff changeset
319 STOCK_ITEMIZE(_("No"), GTK_STOCK_NO);
47a748d6fb0f [gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents: 6326
diff changeset
320 STOCK_ITEMIZE(_("OK"), GTK_STOCK_OK);
47a748d6fb0f [gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents: 6326
diff changeset
321 STOCK_ITEMIZE(_("Cancel"), GTK_STOCK_CANCEL);
47a748d6fb0f [gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents: 6326
diff changeset
322 STOCK_ITEMIZE(_("Apply"), GTK_STOCK_APPLY);
47a748d6fb0f [gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents: 6326
diff changeset
323 STOCK_ITEMIZE(_("Close"), GTK_STOCK_CLOSE);
47a748d6fb0f [gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents: 6326
diff changeset
324 STOCK_ITEMIZE(_("Delete"), GTK_STOCK_DELETE);
47a748d6fb0f [gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents: 6326
diff changeset
325 STOCK_ITEMIZE(_("Add"), GTK_STOCK_ADD);
47a748d6fb0f [gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents: 6326
diff changeset
326 STOCK_ITEMIZE(_("Remove"), GTK_STOCK_REMOVE);
47a748d6fb0f [gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents: 6326
diff changeset
327 STOCK_ITEMIZE(_("Save"), GTK_STOCK_SAVE);
15570
81e9b7d13875 stock to pidgin
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
328 STOCK_ITEMIZE(_("Alias"), PIDGIN_STOCK_ALIAS);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
329
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
330 return text;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
331 }
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
332
6363
6e0fa4b64fe6 [gaim-migrate @ 6868]
Christian Hammond <chipx86@chipx86.com>
parents: 6338
diff changeset
333 static void *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
334 pidgin_request_input(const char *title, const char *primary,
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
335 const char *secondary, const char *default_value,
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
336 gboolean multiline, gboolean masked, gchar *hint,
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
337 const char *ok_text, GCallback ok_cb,
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
338 const char *cancel_text, GCallback cancel_cb,
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16259
diff changeset
339 PurpleAccount *account, const char *who, PurpleConversation *conv,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
340 void *user_data)
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
341 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
342 PidginRequestData *data;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
343 GtkWidget *dialog;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
344 GtkWidget *vbox;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
345 GtkWidget *hbox;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
346 GtkWidget *label;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
347 GtkWidget *entry;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
348 GtkWidget *img;
8782
eb3f9bf7d69c [gaim-migrate @ 9544]
Ignacio J. Elia
parents: 8697
diff changeset
349 GtkWidget *toolbar;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
350 char *label_text;
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
351 char *primary_esc, *secondary_esc;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
352
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
353 data = g_new0(PidginRequestData, 1);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
354 data->type = PURPLE_REQUEST_INPUT;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
355 data->user_data = user_data;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
356
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
357 data->cb_count = 2;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
358 data->cbs = g_new0(GCallback, 2);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
359
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
360 data->cbs[0] = ok_cb;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
361 data->cbs[1] = cancel_cb;
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 /* Create the dialog. */
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
364 dialog = gtk_dialog_new_with_buttons(title ? title : PIDGIN_ALERT_TITLE,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
365 NULL, 0,
5794
ebdbb7dc6658 [gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents: 5510
diff changeset
366 text_to_stock(cancel_text), 1,
ebdbb7dc6658 [gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents: 5510
diff changeset
367 text_to_stock(ok_text), 0,
5485
a0e3152b4bbb [gaim-migrate @ 5881]
Sean Egan <seanegan@pidgin.im>
parents: 5480
diff changeset
368 NULL);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
369 data->dialog = dialog;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
370
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
371 g_signal_connect(G_OBJECT(dialog), "response",
5794
ebdbb7dc6658 [gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents: 5510
diff changeset
372 G_CALLBACK(input_response_cb), data);
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 /* Setup the dialog */
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
375 gtk_container_set_border_width(GTK_CONTAINER(dialog), PIDGIN_HIG_BORDER/2);
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
376 gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), PIDGIN_HIG_BORDER/2);
17646
07c2c5edec11 Make multiline pidgin_request_input() windows resizable, and make
Mark Doliner <markdoliner@pidgin.im>
parents: 16873
diff changeset
377 if (!multiline)
07c2c5edec11 Make multiline pidgin_request_input() windows resizable, and make
Mark Doliner <markdoliner@pidgin.im>
parents: 16873
diff changeset
378 gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
379 gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE);
5510
15d2eca03c1d [gaim-migrate @ 5909]
Christian Hammond <chipx86@chipx86.com>
parents: 5498
diff changeset
380 gtk_dialog_set_default_response(GTK_DIALOG(dialog), 0);
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
381 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog)->vbox), PIDGIN_HIG_BORDER);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
382
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
383 /* Setup the main horizontal box */
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
384 hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
385 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), hbox);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
386
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
387 /* Dialog icon. */
15497
92f02f4bd5ee Dialog icon changes
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
388 img = gtk_image_new_from_stock(PIDGIN_STOCK_DIALOG_QUESTION,
92f02f4bd5ee Dialog icon changes
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
389 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_HUGE));
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
390 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
391 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
392
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
393 /* Vertical box */
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
394 vbox = gtk_vbox_new(FALSE, PIDGIN_HIG_BORDER);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
395
17646
07c2c5edec11 Make multiline pidgin_request_input() windows resizable, and make
Mark Doliner <markdoliner@pidgin.im>
parents: 16873
diff changeset
396 gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 0);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
397
28793
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
398 pidgin_widget_decorate_account(hbox, account);
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
399
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
400 /* Descriptive label */
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
401 primary_esc = (primary != NULL) ? g_markup_escape_text(primary, -1) : NULL;
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
402 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
403 label_text = g_strdup_printf((primary ? "<span weight=\"bold\" size=\"larger\">"
d771eecc9717 [gaim-migrate @ 8497]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7678
diff changeset
404 "%s</span>%s%s" : "%s%s%s"),
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
405 (primary ? primary_esc : ""),
7843
d771eecc9717 [gaim-migrate @ 8497]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7678
diff changeset
406 ((primary && secondary) ? "\n\n" : ""),
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
407 (secondary ? secondary_esc : ""));
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
408 g_free(primary_esc);
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
409 g_free(secondary_esc);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
410
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
411 label = gtk_label_new(NULL);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
412
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
413 gtk_label_set_markup(GTK_LABEL(label), label_text);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
414 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
415 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
17646
07c2c5edec11 Make multiline pidgin_request_input() windows resizable, and make
Mark Doliner <markdoliner@pidgin.im>
parents: 16873
diff changeset
416 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
417
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
418 g_free(label_text);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
419
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
420 /* Entry field. */
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
421 data->u.input.multiline = multiline;
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13536
diff changeset
422 data->u.input.hint = g_strdup(hint);
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
423
19789
5d323c4bd855 And don't show everything here either.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19585
diff changeset
424 gtk_widget_show_all(hbox);
5d323c4bd855 And don't show everything here either.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19585
diff changeset
425
38266
7c1706b2bd11 Remove found redundant NULL checks
qarkai <qarkai@gmail.com>
parents: 38260
diff changeset
426 if (purple_strequal(data->u.input.hint, "html")) {
10146
cd4abe598b61 [gaim-migrate @ 11222]
Mark Doliner <markdoliner@pidgin.im>
parents: 10116
diff changeset
427 GtkWidget *frame;
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
428
10181
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10164
diff changeset
429 /* imhtml */
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
430 frame = pidgin_create_imhtml(TRUE, &entry, &toolbar, NULL);
10181
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10164
diff changeset
431 gtk_widget_set_size_request(entry, 320, 130);
16259
73b7c796c8d3 I don't like the pidginfoo_bar widget names that resulted from the sed.
Richard Laager <rlaager@pidgin.im>
parents: 16254
diff changeset
432 gtk_widget_set_name(entry, "pidgin_request_imhtml");
10181
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10164
diff changeset
433 if (default_value != NULL)
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10164
diff changeset
434 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
435 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0);
cd4abe598b61 [gaim-migrate @ 11222]
Mark Doliner <markdoliner@pidgin.im>
parents: 10116
diff changeset
436 gtk_widget_show(frame);
25900
0be61f1b3dd1 Add a GtkIMHtml function that causes the widget to actually insert a
Mark Doliner <markdoliner@pidgin.im>
parents: 25874
diff changeset
437
0be61f1b3dd1 Add a GtkIMHtml function that causes the widget to actually insert a
Mark Doliner <markdoliner@pidgin.im>
parents: 25874
diff changeset
438 gtk_imhtml_set_return_inserts_newline(GTK_IMHTML(entry));
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
439 }
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
440 else {
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
441 if (multiline) {
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
442 /* GtkTextView */
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
443 entry = gtk_text_view_new();
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
444 gtk_text_view_set_editable(GTK_TEXT_VIEW(entry), TRUE);
5510
15d2eca03c1d [gaim-migrate @ 5909]
Christian Hammond <chipx86@chipx86.com>
parents: 5498
diff changeset
445
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
446 if (default_value != NULL) {
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
447 GtkTextBuffer *buffer;
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
448
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
449 buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(entry));
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
450 gtk_text_buffer_set_text(buffer, default_value, -1);
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
451 }
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
452
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
453 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(entry), GTK_WRAP_WORD_CHAR);
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
454
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15931
diff changeset
455 if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/spellcheck"))
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
456 pidgin_setup_gtkspell(GTK_TEXT_VIEW(entry));
6035
b245be9cbe3b [gaim-migrate @ 6485]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
457
38258
9a6551eba09c Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 36256
diff changeset
458 gtk_box_pack_start(GTK_BOX(vbox),
31321
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 31294
diff changeset
459 pidgin_make_scrollable(entry, GTK_POLICY_NEVER, GTK_POLICY_ALWAYS, GTK_SHADOW_IN, 320, 130),
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 31294
diff changeset
460 TRUE, TRUE, 0);
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
461 }
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
462 else {
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
463 entry = gtk_entry_new();
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
464
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
465 gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE);
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
466
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
467 gtk_box_pack_start(GTK_BOX(vbox), entry, FALSE, FALSE, 0);
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
468
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
469 if (default_value != NULL)
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
470 gtk_entry_set_text(GTK_ENTRY(entry), default_value);
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
471
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
472 if (masked)
11986
21d2ab6421a7 [gaim-migrate @ 14279]
Mark Doliner <markdoliner@pidgin.im>
parents: 11780
diff changeset
473 {
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
474 gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE);
25457
477f84ff0a7e GTK+ 2.16.0 will set the invisible character to a nice bullet instead of
Mark Doliner <markdoliner@pidgin.im>
parents: 24816
diff changeset
475 #if !GTK_CHECK_VERSION(2,16,0)
15390
d429e03fc755 [gaim-migrate @ 18119]
Mark Doliner <markdoliner@pidgin.im>
parents: 15383
diff changeset
476 if (gtk_entry_get_invisible_char(GTK_ENTRY(entry)) == '*')
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
477 gtk_entry_set_invisible_char(GTK_ENTRY(entry), PIDGIN_INVISIBLE_CHAR);
25457
477f84ff0a7e GTK+ 2.16.0 will set the invisible character to a nice bullet instead of
Mark Doliner <markdoliner@pidgin.im>
parents: 24816
diff changeset
478 #endif /* Less than GTK+ 2.16 */
11986
21d2ab6421a7 [gaim-migrate @ 14279]
Mark Doliner <markdoliner@pidgin.im>
parents: 11780
diff changeset
479 }
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8524
diff changeset
480 }
19789
5d323c4bd855 And don't show everything here either.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19585
diff changeset
481 gtk_widget_show_all(vbox);
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
482 }
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
483
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
484 pidgin_set_accessible_label (entry, label);
5490
1ecf84cb6fc4 [gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents: 5485
diff changeset
485 data->u.input.entry = entry;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
486
22007
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
487 pidgin_auto_parent_window(dialog);
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
488
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
489 /* Show everything. */
19789
5d323c4bd855 And don't show everything here either.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19585
diff changeset
490 gtk_widget_show(dialog);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
491
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
492 return data;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
493 }
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
494
6363
6e0fa4b64fe6 [gaim-migrate @ 6868]
Christian Hammond <chipx86@chipx86.com>
parents: 6338
diff changeset
495 static void *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
496 pidgin_request_choice(const char *title, const char *primary,
19585
14b519abcc26 Fix some conversion warnings about using negative values with unsigned types. There are more, but these were easy fixes. You may think that I'm changing the API, but I'm really not - it was just wrong.
Daniel Atallah <datallah@pidgin.im>
parents: 19369
diff changeset
497 const char *secondary, int default_value,
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
498 const char *ok_text, GCallback ok_cb,
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
499 const char *cancel_text, GCallback cancel_cb,
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16259
diff changeset
500 PurpleAccount *account, const char *who, PurpleConversation *conv,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
501 void *user_data, va_list args)
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
502 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
503 PidginRequestData *data;
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
504 GtkWidget *dialog;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
505 GtkWidget *vbox, *vbox2;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
506 GtkWidget *hbox;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
507 GtkWidget *label;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
508 GtkWidget *img;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
509 GtkWidget *radio = NULL;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
510 char *label_text;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
511 char *radio_text;
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
512 char *primary_esc, *secondary_esc;
10233
7b542749ccb6 [gaim-migrate @ 11368]
Mark Doliner <markdoliner@pidgin.im>
parents: 10229
diff changeset
513
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
514 data = g_new0(PidginRequestData, 1);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
515 data->type = PURPLE_REQUEST_ACTION;
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
516 data->user_data = user_data;
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 data->cb_count = 2;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
519 data->cbs = g_new0(GCallback, 2);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
520 data->cbs[0] = cancel_cb;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
521 data->cbs[1] = ok_cb;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
522
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
523 /* Create the dialog. */
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
524 data->dialog = dialog = gtk_dialog_new();
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
525
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
526 if (title != NULL)
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
527 gtk_window_set_title(GTK_WINDOW(dialog), title);
16686
1ebd9e4ae3f0 Prevent request dialog titles being "pidgin.exe".
Daniel Atallah <datallah@pidgin.im>
parents: 16490
diff changeset
528 #ifdef _WIN32
1ebd9e4ae3f0 Prevent request dialog titles being "pidgin.exe".
Daniel Atallah <datallah@pidgin.im>
parents: 16490
diff changeset
529 gtk_window_set_title(GTK_WINDOW(dialog), PIDGIN_ALERT_TITLE);
1ebd9e4ae3f0 Prevent request dialog titles being "pidgin.exe".
Daniel Atallah <datallah@pidgin.im>
parents: 16490
diff changeset
530 #endif
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
531
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
532 gtk_dialog_add_button(GTK_DIALOG(dialog),
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
533 text_to_stock(cancel_text), 0);
10233
7b542749ccb6 [gaim-migrate @ 11368]
Mark Doliner <markdoliner@pidgin.im>
parents: 10229
diff changeset
534
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
535 gtk_dialog_add_button(GTK_DIALOG(dialog),
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
536 text_to_stock(ok_text), 1);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
537
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
538 g_signal_connect(G_OBJECT(dialog), "response",
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
539 G_CALLBACK(choice_response_cb), data);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
540
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
541 /* Setup the dialog */
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
542 gtk_container_set_border_width(GTK_CONTAINER(dialog), PIDGIN_HIG_BORDER/2);
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
543 gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), PIDGIN_HIG_BORDER/2);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
544 gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
545 gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE);
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
546 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog)->vbox), PIDGIN_HIG_BORDER);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
547
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
548 /* Setup the main horizontal box */
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
549 hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
550 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), hbox);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
551
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
552 /* Dialog icon. */
15497
92f02f4bd5ee Dialog icon changes
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
553 img = gtk_image_new_from_stock(PIDGIN_STOCK_DIALOG_QUESTION,
92f02f4bd5ee Dialog icon changes
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
554 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_HUGE));
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
555 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
556 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
557
28793
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
558 pidgin_widget_decorate_account(hbox, account);
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
559
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
560 /* Vertical box */
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
561 vbox = gtk_vbox_new(FALSE, PIDGIN_HIG_BORDER);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
562 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
563
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
564 /* Descriptive label */
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
565 primary_esc = (primary != NULL) ? g_markup_escape_text(primary, -1) : NULL;
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
566 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
567 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
568 "%s</span>%s%s" : "%s%s%s"),
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
569 (primary ? primary_esc : ""),
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
570 ((primary && secondary) ? "\n\n" : ""),
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
571 (secondary ? secondary_esc : ""));
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
572 g_free(primary_esc);
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
573 g_free(secondary_esc);
10233
7b542749ccb6 [gaim-migrate @ 11368]
Mark Doliner <markdoliner@pidgin.im>
parents: 10229
diff changeset
574
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
575 label = gtk_label_new(NULL);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
576
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
577 gtk_label_set_markup(GTK_LABEL(label), label_text);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
578 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
579 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
580 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
581
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
582 g_free(label_text);
10233
7b542749ccb6 [gaim-migrate @ 11368]
Mark Doliner <markdoliner@pidgin.im>
parents: 10229
diff changeset
583
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
584 vbox2 = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
585 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
586 while ((radio_text = va_arg(args, char*))) {
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
587 int resp = va_arg(args, int);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
588 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
589 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
590 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
591 if (resp == default_value)
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
592 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio), TRUE);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
593 }
10233
7b542749ccb6 [gaim-migrate @ 11368]
Mark Doliner <markdoliner@pidgin.im>
parents: 10229
diff changeset
594
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
595 g_object_set_data(G_OBJECT(dialog), "radio", radio);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
596
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
597 /* Show everything. */
22007
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
598 pidgin_auto_parent_window(dialog);
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
599
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
600 gtk_widget_show_all(dialog);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
601
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10225
diff changeset
602 return data;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
603 }
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
604
6363
6e0fa4b64fe6 [gaim-migrate @ 6868]
Christian Hammond <chipx86@chipx86.com>
parents: 6338
diff changeset
605 static void *
27427
00f91afbd4d9 Show thumbnail in ft request dialog
Marcus Lundblad <malu@pidgin.im>
parents: 25900
diff changeset
606 pidgin_request_action_with_icon(const char *title, const char *primary,
19585
14b519abcc26 Fix some conversion warnings about using negative values with unsigned types. There are more, but these were easy fixes. You may think that I'm changing the API, but I'm really not - it was just wrong.
Daniel Atallah <datallah@pidgin.im>
parents: 19369
diff changeset
607 const char *secondary, int default_action,
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30166
diff changeset
608 PurpleAccount *account, const char *who,
27427
00f91afbd4d9 Show thumbnail in ft request dialog
Marcus Lundblad <malu@pidgin.im>
parents: 25900
diff changeset
609 PurpleConversation *conv, gconstpointer icon_data,
00f91afbd4d9 Show thumbnail in ft request dialog
Marcus Lundblad <malu@pidgin.im>
parents: 25900
diff changeset
610 gsize icon_size,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
611 void *user_data, size_t action_count, va_list actions)
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
612 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
613 PidginRequestData *data;
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
614 GtkWidget *dialog;
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
615 GtkWidget *vbox;
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
616 GtkWidget *hbox;
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
617 GtkWidget *label;
27427
00f91afbd4d9 Show thumbnail in ft request dialog
Marcus Lundblad <malu@pidgin.im>
parents: 25900
diff changeset
618 GtkWidget *img = NULL;
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
619 void **buttons;
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
620 char *label_text;
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
621 char *primary_esc, *secondary_esc;
36256
a437550a9308 Remove -Wno-sign-compare and backport fixes from default.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35986
diff changeset
622 gsize i;
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
623
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
624 data = g_new0(PidginRequestData, 1);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
625 data->type = PURPLE_REQUEST_ACTION;
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
626 data->user_data = user_data;
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
627
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
628 data->cb_count = action_count;
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
629 data->cbs = g_new0(GCallback, action_count);
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 /* Reverse the buttons */
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
632 buttons = g_new0(void *, action_count * 2);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
633
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
634 for (i = 0; i < action_count * 2; i += 2) {
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
635 buttons[(action_count * 2) - i - 2] = va_arg(actions, char *);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
636 buttons[(action_count * 2) - i - 1] = va_arg(actions, GCallback);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
637 }
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
638
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
639 /* Create the dialog. */
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
640 data->dialog = dialog = gtk_dialog_new();
18883
ebbd338319d4 gtk_window_set_deletable() is GTK+ >= 2.10.0. References #1947. Also fix a bug where on Windows, the default title is always applied.
Daniel Atallah <datallah@pidgin.im>
parents: 18865
diff changeset
641
18865
41e0c131611f purple_request_action doesn't call any callbacks if the user closes the
Ka-Hing Cheung <khc@pidgin.im>
parents: 18190
diff changeset
642 gtk_window_set_deletable(GTK_WINDOW(data->dialog), FALSE);
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6363
diff changeset
643
6109
44e5eb92b617 [gaim-migrate @ 6571]
Mark Doliner <markdoliner@pidgin.im>
parents: 6035
diff changeset
644 if (title != NULL)
44e5eb92b617 [gaim-migrate @ 6571]
Mark Doliner <markdoliner@pidgin.im>
parents: 6035
diff changeset
645 gtk_window_set_title(GTK_WINDOW(dialog), title);
16686
1ebd9e4ae3f0 Prevent request dialog titles being "pidgin.exe".
Daniel Atallah <datallah@pidgin.im>
parents: 16490
diff changeset
646 #ifdef _WIN32
18883
ebbd338319d4 gtk_window_set_deletable() is GTK+ >= 2.10.0. References #1947. Also fix a bug where on Windows, the default title is always applied.
Daniel Atallah <datallah@pidgin.im>
parents: 18865
diff changeset
647 else
16686
1ebd9e4ae3f0 Prevent request dialog titles being "pidgin.exe".
Daniel Atallah <datallah@pidgin.im>
parents: 16490
diff changeset
648 gtk_window_set_title(GTK_WINDOW(dialog), PIDGIN_ALERT_TITLE);
1ebd9e4ae3f0 Prevent request dialog titles being "pidgin.exe".
Daniel Atallah <datallah@pidgin.im>
parents: 16490
diff changeset
649 #endif
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
650
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
651 for (i = 0; i < action_count; i++) {
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
652 gtk_dialog_add_button(GTK_DIALOG(dialog),
5794
ebdbb7dc6658 [gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents: 5510
diff changeset
653 text_to_stock(buttons[2 * i]), i);
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
654
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
655 data->cbs[i] = buttons[2 * i + 1];
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
656 }
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
657
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
658 g_free(buttons);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
659
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
660 g_signal_connect(G_OBJECT(dialog), "response",
5794
ebdbb7dc6658 [gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents: 5510
diff changeset
661 G_CALLBACK(action_response_cb), data);
5496
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 /* Setup the dialog */
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
664 gtk_container_set_border_width(GTK_CONTAINER(dialog), PIDGIN_HIG_BORDER/2);
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
665 gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), PIDGIN_HIG_BORDER/2);
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
666 gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
667 gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE);
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
668 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog)->vbox), PIDGIN_HIG_BORDER);
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
669
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
670 /* Setup the main horizontal box */
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
671 hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER);
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
672 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), hbox);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
673
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
674 /* Dialog icon. */
27427
00f91afbd4d9 Show thumbnail in ft request dialog
Marcus Lundblad <malu@pidgin.im>
parents: 25900
diff changeset
675 if (icon_data) {
31889
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31322
diff changeset
676 GdkPixbuf *pixbuf = pidgin_pixbuf_from_data(icon_data, icon_size);
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31322
diff changeset
677 if (pixbuf) {
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31322
diff changeset
678 /* scale the image if it is too large */
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31322
diff changeset
679 int width = gdk_pixbuf_get_width(pixbuf);
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31322
diff changeset
680 int height = gdk_pixbuf_get_height(pixbuf);
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31322
diff changeset
681 if (width > 128 || height > 128) {
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31322
diff changeset
682 int scaled_width = width > height ? 128 : (128 * width) / height;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31322
diff changeset
683 int scaled_height = height > width ? 128 : (128 * height) / width;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31322
diff changeset
684 GdkPixbuf *scaled =
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31322
diff changeset
685 gdk_pixbuf_scale_simple(pixbuf, scaled_width, scaled_height,
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31322
diff changeset
686 GDK_INTERP_BILINEAR);
30166
2e26380774ef Scale incoming thumbnails in the request dialog if they are overly large
Marcus Lundblad <malu@pidgin.im>
parents: 30137
diff changeset
687
31889
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31322
diff changeset
688 purple_debug_info("pidgin",
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31322
diff changeset
689 "dialog icon was too large, scaled it down\n");
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31322
diff changeset
690 if (scaled) {
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31322
diff changeset
691 g_object_unref(pixbuf);
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31322
diff changeset
692 pixbuf = scaled;
30166
2e26380774ef Scale incoming thumbnails in the request dialog if they are overly large
Marcus Lundblad <malu@pidgin.im>
parents: 30137
diff changeset
693 }
27427
00f91afbd4d9 Show thumbnail in ft request dialog
Marcus Lundblad <malu@pidgin.im>
parents: 25900
diff changeset
694 }
31889
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31322
diff changeset
695 img = gtk_image_new_from_pixbuf(pixbuf);
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31322
diff changeset
696 g_object_unref(pixbuf);
27427
00f91afbd4d9 Show thumbnail in ft request dialog
Marcus Lundblad <malu@pidgin.im>
parents: 25900
diff changeset
697 } else {
00f91afbd4d9 Show thumbnail in ft request dialog
Marcus Lundblad <malu@pidgin.im>
parents: 25900
diff changeset
698 purple_debug_info("pidgin", "failed to parse dialog icon\n");
00f91afbd4d9 Show thumbnail in ft request dialog
Marcus Lundblad <malu@pidgin.im>
parents: 25900
diff changeset
699 }
00f91afbd4d9 Show thumbnail in ft request dialog
Marcus Lundblad <malu@pidgin.im>
parents: 25900
diff changeset
700 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30166
diff changeset
701
27427
00f91afbd4d9 Show thumbnail in ft request dialog
Marcus Lundblad <malu@pidgin.im>
parents: 25900
diff changeset
702 if (!img) {
00f91afbd4d9 Show thumbnail in ft request dialog
Marcus Lundblad <malu@pidgin.im>
parents: 25900
diff changeset
703 img = gtk_image_new_from_stock(PIDGIN_STOCK_DIALOG_QUESTION,
15497
92f02f4bd5ee Dialog icon changes
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
704 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_HUGE));
27427
00f91afbd4d9 Show thumbnail in ft request dialog
Marcus Lundblad <malu@pidgin.im>
parents: 25900
diff changeset
705 }
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
706 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
707 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
708
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
709 /* Vertical box */
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
710 vbox = gtk_vbox_new(FALSE, PIDGIN_HIG_BORDER);
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
711 gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
712
28793
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
713 pidgin_widget_decorate_account(hbox, account);
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
714
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
715 /* Descriptive label */
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
716 primary_esc = (primary != NULL) ? g_markup_escape_text(primary, -1) : NULL;
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
717 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
718 label_text = g_strdup_printf((primary ? "<span weight=\"bold\" size=\"larger\">"
d771eecc9717 [gaim-migrate @ 8497]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7678
diff changeset
719 "%s</span>%s%s" : "%s%s%s"),
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
720 (primary ? primary_esc : ""),
7843
d771eecc9717 [gaim-migrate @ 8497]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7678
diff changeset
721 ((primary && secondary) ? "\n\n" : ""),
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
722 (secondary ? secondary_esc : ""));
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
723 g_free(primary_esc);
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
724 g_free(secondary_esc);
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
725
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
726 label = gtk_label_new(NULL);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
727
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
728 gtk_label_set_markup(GTK_LABEL(label), label_text);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
729 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
730 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
15065
88e8707318de [gaim-migrate @ 17783]
Richard Laager <rlaager@pidgin.im>
parents: 15022
diff changeset
731 gtk_label_set_selectable(GTK_LABEL(label), TRUE);
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
732 gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
733
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
734 g_free(label_text);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
735
9948
2642975ffb85 [gaim-migrate @ 10844]
Dave West <kat@users.sourceforge.net>
parents: 9791
diff changeset
736
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
737 if (default_action == PURPLE_DEFAULT_ACTION_NONE) {
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents: 10297
diff changeset
738 GTK_WIDGET_SET_FLAGS(img, GTK_CAN_DEFAULT);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents: 10297
diff changeset
739 GTK_WIDGET_SET_FLAGS(img, GTK_CAN_FOCUS);
9948
2642975ffb85 [gaim-migrate @ 10844]
Dave West <kat@users.sourceforge.net>
parents: 9791
diff changeset
740 gtk_widget_grab_focus(img);
2642975ffb85 [gaim-migrate @ 10844]
Dave West <kat@users.sourceforge.net>
parents: 9791
diff changeset
741 gtk_widget_grab_default(img);
12286
08d994091c36 [gaim-migrate @ 14590]
Etan Reisner <deryni@pidgin.im>
parents: 12234
diff changeset
742 } else
22263
c9a202d78b6e * Clarify the documentation for purple_request_action's 'default_ation'
Mark Doliner <markdoliner@pidgin.im>
parents: 22214
diff changeset
743 /*
c9a202d78b6e * Clarify the documentation for purple_request_action's 'default_ation'
Mark Doliner <markdoliner@pidgin.im>
parents: 22214
diff changeset
744 * Need to invert the default_action number because the
c9a202d78b6e * Clarify the documentation for purple_request_action's 'default_ation'
Mark Doliner <markdoliner@pidgin.im>
parents: 22214
diff changeset
745 * buttons are added to the dialog in reverse order.
c9a202d78b6e * Clarify the documentation for purple_request_action's 'default_ation'
Mark Doliner <markdoliner@pidgin.im>
parents: 22214
diff changeset
746 */
c9a202d78b6e * Clarify the documentation for purple_request_action's 'default_ation'
Mark Doliner <markdoliner@pidgin.im>
parents: 22214
diff changeset
747 gtk_dialog_set_default_response(GTK_DIALOG(dialog), action_count - 1 - default_action);
5510
15d2eca03c1d [gaim-migrate @ 5909]
Christian Hammond <chipx86@chipx86.com>
parents: 5498
diff changeset
748
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
749 /* Show everything. */
22007
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
750 pidgin_auto_parent_window(dialog);
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
751
5496
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
752 gtk_widget_show_all(dialog);
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
753
ed995be89052 [gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents: 5490
diff changeset
754 return data;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
755 }
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
756
27427
00f91afbd4d9 Show thumbnail in ft request dialog
Marcus Lundblad <malu@pidgin.im>
parents: 25900
diff changeset
757 static void *
00f91afbd4d9 Show thumbnail in ft request dialog
Marcus Lundblad <malu@pidgin.im>
parents: 25900
diff changeset
758 pidgin_request_action(const char *title, const char *primary,
00f91afbd4d9 Show thumbnail in ft request dialog
Marcus Lundblad <malu@pidgin.im>
parents: 25900
diff changeset
759 const char *secondary, int default_action,
00f91afbd4d9 Show thumbnail in ft request dialog
Marcus Lundblad <malu@pidgin.im>
parents: 25900
diff changeset
760 PurpleAccount *account, const char *who, PurpleConversation *conv,
00f91afbd4d9 Show thumbnail in ft request dialog
Marcus Lundblad <malu@pidgin.im>
parents: 25900
diff changeset
761 void *user_data, size_t action_count, va_list actions)
00f91afbd4d9 Show thumbnail in ft request dialog
Marcus Lundblad <malu@pidgin.im>
parents: 25900
diff changeset
762 {
30137
5ef8d377b643 gtkrequest: Fix pidgin_request_action
Paul Aurich <darkrain42@pidgin.im>
parents: 29775
diff changeset
763 return pidgin_request_action_with_icon(title, primary, secondary,
5ef8d377b643 gtkrequest: Fix pidgin_request_action
Paul Aurich <darkrain42@pidgin.im>
parents: 29775
diff changeset
764 default_action, account, who, conv, NULL, 0, user_data, action_count,
5ef8d377b643 gtkrequest: Fix pidgin_request_action
Paul Aurich <darkrain42@pidgin.im>
parents: 29775
diff changeset
765 actions);
27427
00f91afbd4d9 Show thumbnail in ft request dialog
Marcus Lundblad <malu@pidgin.im>
parents: 25900
diff changeset
766 }
00f91afbd4d9 Show thumbnail in ft request dialog
Marcus Lundblad <malu@pidgin.im>
parents: 25900
diff changeset
767
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
768 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
769 req_entry_field_changed_cb(GtkWidget *entry, PurpleRequestField *field)
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
770 {
24984
64b88867fbdf Hide the PurpleRequestField struct. I figured this one would be easy and
Richard Laager <rlaager@pidgin.im>
parents: 22962
diff changeset
771 PurpleRequestFieldGroup *group;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
772 PidginRequestData *req_data;
29224
9e9c1124b310 gtkrequest: Handle a multiline text field being set as required properly.
Paul Aurich <darkrain42@pidgin.im>
parents: 28793
diff changeset
773
9e9c1124b310 gtkrequest: Handle a multiline text field being set as required properly.
Paul Aurich <darkrain42@pidgin.im>
parents: 28793
diff changeset
774 if (purple_request_field_string_is_multiline(field))
9e9c1124b310 gtkrequest: Handle a multiline text field being set as required properly.
Paul Aurich <darkrain42@pidgin.im>
parents: 28793
diff changeset
775 {
29225
f95f3c1be6dd Free allocated string from text-buffer.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29224
diff changeset
776 char *text;
29224
9e9c1124b310 gtkrequest: Handle a multiline text field being set as required properly.
Paul Aurich <darkrain42@pidgin.im>
parents: 28793
diff changeset
777 GtkTextIter start_iter, end_iter;
9e9c1124b310 gtkrequest: Handle a multiline text field being set as required properly.
Paul Aurich <darkrain42@pidgin.im>
parents: 28793
diff changeset
778
9e9c1124b310 gtkrequest: Handle a multiline text field being set as required properly.
Paul Aurich <darkrain42@pidgin.im>
parents: 28793
diff changeset
779 gtk_text_buffer_get_start_iter(GTK_TEXT_BUFFER(entry), &start_iter);
9e9c1124b310 gtkrequest: Handle a multiline text field being set as required properly.
Paul Aurich <darkrain42@pidgin.im>
parents: 28793
diff changeset
780 gtk_text_buffer_get_end_iter(GTK_TEXT_BUFFER(entry), &end_iter);
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
781
29224
9e9c1124b310 gtkrequest: Handle a multiline text field being set as required properly.
Paul Aurich <darkrain42@pidgin.im>
parents: 28793
diff changeset
782 text = gtk_text_buffer_get_text(GTK_TEXT_BUFFER(entry), &start_iter, &end_iter, FALSE);
29225
f95f3c1be6dd Free allocated string from text-buffer.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29224
diff changeset
783 purple_request_field_string_set_value(field, (!text || !*text) ? NULL : text);
f95f3c1be6dd Free allocated string from text-buffer.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29224
diff changeset
784 g_free(text);
29224
9e9c1124b310 gtkrequest: Handle a multiline text field being set as required properly.
Paul Aurich <darkrain42@pidgin.im>
parents: 28793
diff changeset
785 }
9e9c1124b310 gtkrequest: Handle a multiline text field being set as required properly.
Paul Aurich <darkrain42@pidgin.im>
parents: 28793
diff changeset
786 else
9e9c1124b310 gtkrequest: Handle a multiline text field being set as required properly.
Paul Aurich <darkrain42@pidgin.im>
parents: 28793
diff changeset
787 {
29225
f95f3c1be6dd Free allocated string from text-buffer.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29224
diff changeset
788 const char *text = NULL;
29224
9e9c1124b310 gtkrequest: Handle a multiline text field being set as required properly.
Paul Aurich <darkrain42@pidgin.im>
parents: 28793
diff changeset
789 text = gtk_entry_get_text(GTK_ENTRY(entry));
29225
f95f3c1be6dd Free allocated string from text-buffer.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29224
diff changeset
790 purple_request_field_string_set_value(field, (*text == '\0') ? NULL : text);
29224
9e9c1124b310 gtkrequest: Handle a multiline text field being set as required properly.
Paul Aurich <darkrain42@pidgin.im>
parents: 28793
diff changeset
791 }
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
792
24984
64b88867fbdf Hide the PurpleRequestField struct. I figured this one would be easy and
Richard Laager <rlaager@pidgin.im>
parents: 22962
diff changeset
793 group = purple_request_field_get_group(field);
64b88867fbdf Hide the PurpleRequestField struct. I figured this one would be easy and
Richard Laager <rlaager@pidgin.im>
parents: 22962
diff changeset
794 req_data = (PidginRequestData *)group->fields_list->ui_data;
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
795
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
796 gtk_widget_set_sensitive(req_data->ok_button,
24984
64b88867fbdf Hide the PurpleRequestField struct. I figured this one would be easy and
Richard Laager <rlaager@pidgin.im>
parents: 22962
diff changeset
797 purple_request_fields_all_required_filled(group->fields_list));
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
798 }
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
799
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
800 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
801 setup_entry_field(GtkWidget *entry, PurpleRequestField *field)
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
802 {
8294
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
803 const char *type_hint;
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
804
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
805 gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE);
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
806
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
807 if (purple_request_field_is_required(field))
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
808 {
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
809 g_signal_connect(G_OBJECT(entry), "changed",
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
810 G_CALLBACK(req_entry_field_changed_cb), field);
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
811 }
8294
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
812
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
813 if ((type_hint = purple_request_field_get_type_hint(field)) != NULL)
8294
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
814 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
815 if (purple_str_has_prefix(type_hint, "screenname"))
8294
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
816 {
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13356
diff changeset
817 GtkWidget *optmenu = NULL;
24984
64b88867fbdf Hide the PurpleRequestField struct. I figured this one would be easy and
Richard Laager <rlaager@pidgin.im>
parents: 22962
diff changeset
818 PurpleRequestFieldGroup *group = purple_request_field_get_group(field);
64b88867fbdf Hide the PurpleRequestField struct. I figured this one would be easy and
Richard Laager <rlaager@pidgin.im>
parents: 22962
diff changeset
819 GList *fields = group->fields;
27660
f9d3ec6e177e Plug a leak of an account dropdown selection dialog or two.
Paul Aurich <darkrain42@pidgin.im>
parents: 25900
diff changeset
820
f9d3ec6e177e Plug a leak of an account dropdown selection dialog or two.
Paul Aurich <darkrain42@pidgin.im>
parents: 25900
diff changeset
821 /* Ensure the account option menu is created (if the widget hasn't
f9d3ec6e177e Plug a leak of an account dropdown selection dialog or two.
Paul Aurich <darkrain42@pidgin.im>
parents: 25900
diff changeset
822 * been initialized already) for username auto-completion. */
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13356
diff changeset
823 while (fields)
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13356
diff changeset
824 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
825 PurpleRequestField *fld = fields->data;
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13356
diff changeset
826 fields = fields->next;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13356
diff changeset
827
27660
f9d3ec6e177e Plug a leak of an account dropdown selection dialog or two.
Paul Aurich <darkrain42@pidgin.im>
parents: 25900
diff changeset
828 if (purple_request_field_get_type(fld) == PURPLE_REQUEST_FIELD_ACCOUNT &&
f9d3ec6e177e Plug a leak of an account dropdown selection dialog or two.
Paul Aurich <darkrain42@pidgin.im>
parents: 25900
diff changeset
829 purple_request_field_is_visible(fld))
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13356
diff changeset
830 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
831 const char *type_hint = purple_request_field_get_type_hint(fld);
38260
dcada91c0912 Remove redundant NULL checks
qarkai <qarkai@gmail.com>
parents: 38259
diff changeset
832 if (purple_strequal(type_hint, "account"))
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13356
diff changeset
833 {
24984
64b88867fbdf Hide the PurpleRequestField struct. I figured this one would be easy and
Richard Laager <rlaager@pidgin.im>
parents: 22962
diff changeset
834 optmenu = GTK_WIDGET(purple_request_field_get_ui_data(fld));
64b88867fbdf Hide the PurpleRequestField struct. I figured this one would be easy and
Richard Laager <rlaager@pidgin.im>
parents: 22962
diff changeset
835 if (optmenu == NULL) {
64b88867fbdf Hide the PurpleRequestField struct. I figured this one would be easy and
Richard Laager <rlaager@pidgin.im>
parents: 22962
diff changeset
836 optmenu = GTK_WIDGET(create_account_field(fld));
27660
f9d3ec6e177e Plug a leak of an account dropdown selection dialog or two.
Paul Aurich <darkrain42@pidgin.im>
parents: 25900
diff changeset
837 purple_request_field_set_ui_data(fld, optmenu);
24984
64b88867fbdf Hide the PurpleRequestField struct. I figured this one would be easy and
Richard Laager <rlaager@pidgin.im>
parents: 22962
diff changeset
838 }
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13356
diff changeset
839 break;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13356
diff changeset
840 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13356
diff changeset
841 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13356
diff changeset
842 }
38258
9a6551eba09c Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 36256
diff changeset
843 pidgin_setup_screenname_autocomplete_with_filter(entry, optmenu, pidgin_screenname_autocomplete_default_filter, GINT_TO_POINTER(purple_strequal(type_hint, "screenname-all")));
8294
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
844 }
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
845 }
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
846 }
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
847
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
848 static GtkWidget *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
849 create_string_field(PurpleRequestField *field)
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
850 {
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
851 const char *value;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
852 GtkWidget *widget;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
853
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
854 value = purple_request_field_string_get_default_value(field);
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
855
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
856 if (purple_request_field_string_is_multiline(field))
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
857 {
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
858 GtkWidget *textview;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
859
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
860 textview = gtk_text_view_new();
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
861 gtk_text_view_set_editable(GTK_TEXT_VIEW(textview),
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
862 TRUE);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
863 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(textview),
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
864 GTK_WRAP_WORD_CHAR);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
865
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15931
diff changeset
866 if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/spellcheck"))
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
867 pidgin_setup_gtkspell(GTK_TEXT_VIEW(textview));
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
868
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
869 gtk_widget_show(textview);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
870
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
871 if (value != NULL)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
872 {
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
873 GtkTextBuffer *buffer;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
874
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
875 buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview));
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
876
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
877 gtk_text_buffer_set_text(buffer, value, -1);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
878 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
879
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
880 gtk_text_view_set_editable(GTK_TEXT_VIEW(textview),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
881 purple_request_field_string_is_editable(field));
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
882
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
883 g_signal_connect(G_OBJECT(textview), "focus-out-event",
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
884 G_CALLBACK(field_string_focus_out_cb), field);
29224
9e9c1124b310 gtkrequest: Handle a multiline text field being set as required properly.
Paul Aurich <darkrain42@pidgin.im>
parents: 28793
diff changeset
885
9e9c1124b310 gtkrequest: Handle a multiline text field being set as required properly.
Paul Aurich <darkrain42@pidgin.im>
parents: 28793
diff changeset
886 if (purple_request_field_is_required(field))
9e9c1124b310 gtkrequest: Handle a multiline text field being set as required properly.
Paul Aurich <darkrain42@pidgin.im>
parents: 28793
diff changeset
887 {
9e9c1124b310 gtkrequest: Handle a multiline text field being set as required properly.
Paul Aurich <darkrain42@pidgin.im>
parents: 28793
diff changeset
888 GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview));
9e9c1124b310 gtkrequest: Handle a multiline text field being set as required properly.
Paul Aurich <darkrain42@pidgin.im>
parents: 28793
diff changeset
889 g_signal_connect(G_OBJECT(buffer), "changed",
9e9c1124b310 gtkrequest: Handle a multiline text field being set as required properly.
Paul Aurich <darkrain42@pidgin.im>
parents: 28793
diff changeset
890 G_CALLBACK(req_entry_field_changed_cb), field);
9e9c1124b310 gtkrequest: Handle a multiline text field being set as required properly.
Paul Aurich <darkrain42@pidgin.im>
parents: 28793
diff changeset
891 }
31321
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 31294
diff changeset
892
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 31294
diff changeset
893 widget = pidgin_make_scrollable(textview, GTK_POLICY_NEVER, GTK_POLICY_ALWAYS, GTK_SHADOW_IN, -1, 75);
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
894 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
895 else
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
896 {
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
897 widget = gtk_entry_new();
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
898
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
899 setup_entry_field(widget, field);
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
900
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
901 if (value != NULL)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
902 gtk_entry_set_text(GTK_ENTRY(widget), value);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
903
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
904 if (purple_request_field_string_is_masked(field))
11986
21d2ab6421a7 [gaim-migrate @ 14279]
Mark Doliner <markdoliner@pidgin.im>
parents: 11780
diff changeset
905 {
21d2ab6421a7 [gaim-migrate @ 14279]
Mark Doliner <markdoliner@pidgin.im>
parents: 11780
diff changeset
906 gtk_entry_set_visibility(GTK_ENTRY(widget), FALSE);
25457
477f84ff0a7e GTK+ 2.16.0 will set the invisible character to a nice bullet instead of
Mark Doliner <markdoliner@pidgin.im>
parents: 24816
diff changeset
907 #if !GTK_CHECK_VERSION(2,16,0)
15390
d429e03fc755 [gaim-migrate @ 18119]
Mark Doliner <markdoliner@pidgin.im>
parents: 15383
diff changeset
908 if (gtk_entry_get_invisible_char(GTK_ENTRY(widget)) == '*')
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
909 gtk_entry_set_invisible_char(GTK_ENTRY(widget), PIDGIN_INVISIBLE_CHAR);
25457
477f84ff0a7e GTK+ 2.16.0 will set the invisible character to a nice bullet instead of
Mark Doliner <markdoliner@pidgin.im>
parents: 24816
diff changeset
910 #endif /* Less than GTK+ 2.16 */
11986
21d2ab6421a7 [gaim-migrate @ 14279]
Mark Doliner <markdoliner@pidgin.im>
parents: 11780
diff changeset
911 }
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
912
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
913 gtk_editable_set_editable(GTK_EDITABLE(widget),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
914 purple_request_field_string_is_editable(field));
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
915
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
916 g_signal_connect(G_OBJECT(widget), "focus-out-event",
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
917 G_CALLBACK(field_string_focus_out_cb), field);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
918 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
919
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
920 return widget;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
921 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
922
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
923 static GtkWidget *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
924 create_int_field(PurpleRequestField *field)
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
925 {
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
926 int value;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
927 GtkWidget *widget;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
928
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
929 widget = gtk_entry_new();
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
930
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
931 setup_entry_field(widget, field);
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
932
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
933 value = purple_request_field_int_get_default_value(field);
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
934
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
935 if (value != 0)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
936 {
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
937 char buf[32];
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
938
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
939 g_snprintf(buf, sizeof(buf), "%d", value);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
940
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
941 gtk_entry_set_text(GTK_ENTRY(widget), buf);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
942 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
943
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
944 g_signal_connect(G_OBJECT(widget), "focus-out-event",
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
945 G_CALLBACK(field_int_focus_out_cb), field);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
946
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
947 return widget;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
948 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
949
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
950 static GtkWidget *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
951 create_bool_field(PurpleRequestField *field)
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
952 {
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
953 GtkWidget *widget;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
954
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
955 widget = gtk_check_button_new_with_label(
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
956 purple_request_field_get_label(field));
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
957
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
958 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
959 purple_request_field_bool_get_default_value(field));
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
960
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
961 g_signal_connect(G_OBJECT(widget), "toggled",
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
962 G_CALLBACK(field_bool_cb), field);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
963
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
964 return widget;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
965 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
966
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
967 static GtkWidget *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
968 create_choice_field(PurpleRequestField *field)
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
969 {
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
970 GtkWidget *widget;
24816
bd870d9ff0ab The other day while struct hiding, I noticed a for loop that was checking
Richard Laager <rlaager@pidgin.im>
parents: 22962
diff changeset
971 GList *labels = purple_request_field_choice_get_labels(field);
bd870d9ff0ab The other day while struct hiding, I noticed a for loop that was checking
Richard Laager <rlaager@pidgin.im>
parents: 22962
diff changeset
972 int num_labels = g_list_length(labels);
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
973 GList *l;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
974
24816
bd870d9ff0ab The other day while struct hiding, I noticed a for loop that was checking
Richard Laager <rlaager@pidgin.im>
parents: 22962
diff changeset
975 if (num_labels > 5)
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
976 {
29741
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29686
diff changeset
977 widget = gtk_combo_box_new_text();
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29686
diff changeset
978
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29686
diff changeset
979 for (l = labels; l != NULL; l = l->next)
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29686
diff changeset
980 {
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29686
diff changeset
981 const char *text = l->data;
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29686
diff changeset
982 gtk_combo_box_append_text(GTK_COMBO_BOX(widget), text);
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29686
diff changeset
983 }
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29686
diff changeset
984
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29686
diff changeset
985 gtk_combo_box_set_active(GTK_COMBO_BOX(widget),
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29686
diff changeset
986 purple_request_field_choice_get_default_value(field));
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29686
diff changeset
987
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29686
diff changeset
988 g_signal_connect(G_OBJECT(widget), "changed",
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29686
diff changeset
989 G_CALLBACK(field_choice_menu_cb), field);
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
990 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
991 else
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
992 {
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
993 GtkWidget *box;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
994 GtkWidget *first_radio = NULL;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
995 GtkWidget *radio;
10943
729674da8959 [gaim-migrate @ 12735]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10871
diff changeset
996 gint i;
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
997
24816
bd870d9ff0ab The other day while struct hiding, I noticed a for loop that was checking
Richard Laager <rlaager@pidgin.im>
parents: 22962
diff changeset
998 if (num_labels == 2)
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
999 box = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1000 else
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1001 box = gtk_vbox_new(FALSE, 0);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1002
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1003 widget = box;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1004
10943
729674da8959 [gaim-migrate @ 12735]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10871
diff changeset
1005 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
1006 {
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1007 const char *text = l->data;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1008
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1009 radio = gtk_radio_button_new_with_label_from_widget(
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1010 GTK_RADIO_BUTTON(first_radio), text);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1011
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1012 if (first_radio == NULL)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1013 first_radio = radio;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1014
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1015 if (i == purple_request_field_choice_get_default_value(field))
10943
729674da8959 [gaim-migrate @ 12735]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10871
diff changeset
1016 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio), TRUE);
729674da8959 [gaim-migrate @ 12735]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10871
diff changeset
1017
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1018 gtk_box_pack_start(GTK_BOX(box), radio, TRUE, TRUE, 0);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1019 gtk_widget_show(radio);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1020
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1021 g_signal_connect(G_OBJECT(radio), "toggled",
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1022 G_CALLBACK(field_choice_option_cb), field);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1023 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1024 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1025
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1026 return widget;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1027 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1028
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1029 static GtkWidget *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1030 create_image_field(PurpleRequestField *field)
11357
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1031 {
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1032 GtkWidget *widget;
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1033 GdkPixbuf *buf, *scale;
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1034
31889
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31322
diff changeset
1035 buf = pidgin_pixbuf_from_data(
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31322
diff changeset
1036 (const guchar *)purple_request_field_image_get_buffer(field),
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31322
diff changeset
1037 purple_request_field_image_get_size(field));
11357
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1038
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1039 scale = gdk_pixbuf_scale_simple(buf,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1040 purple_request_field_image_get_scale_x(field) * gdk_pixbuf_get_width(buf),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1041 purple_request_field_image_get_scale_y(field) * gdk_pixbuf_get_height(buf),
11357
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1042 GDK_INTERP_BILINEAR);
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1043 widget = gtk_image_new_from_pixbuf(scale);
31889
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31322
diff changeset
1044 g_object_unref(G_OBJECT(buf));
11357
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1045 g_object_unref(G_OBJECT(scale));
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1046
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1047 return widget;
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1048 }
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1049
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
1050 static GtkWidget *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1051 create_account_field(PurpleRequestField *field)
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1052 {
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1053 GtkWidget *widget;
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1054
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1055 widget = pidgin_account_option_menu_new(
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1056 purple_request_field_account_get_default_value(field),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1057 purple_request_field_account_get_show_all(field),
8289
234429bac6b5 [gaim-migrate @ 9013]
Christian Hammond <chipx86@chipx86.com>
parents: 8286
diff changeset
1058 G_CALLBACK(field_account_cb),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1059 purple_request_field_account_get_filter(field),
8289
234429bac6b5 [gaim-migrate @ 9013]
Christian Hammond <chipx86@chipx86.com>
parents: 8286
diff changeset
1060 field);
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1061
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1062 return widget;
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1063 }
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1064
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1065 static void
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1066 select_field_list_item(GtkTreeModel *model, GtkTreePath *path,
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1067 GtkTreeIter *iter, gpointer data)
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1068 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1069 PurpleRequestField *field = (PurpleRequestField *)data;
13356
7a73221c8b6f [gaim-migrate @ 15728]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13283
diff changeset
1070 char *text;
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1071
7909
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1072 gtk_tree_model_get(model, iter, 1, &text, -1);
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1073
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1074 purple_request_field_list_add_selected(field, text);
13356
7a73221c8b6f [gaim-migrate @ 15728]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13283
diff changeset
1075 g_free(text);
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1076 }
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1077
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1078 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1079 list_field_select_changed_cb(GtkTreeSelection *sel, PurpleRequestField *field)
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1080 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1081 purple_request_field_list_clear_selected(field);
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1082
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1083 gtk_tree_selection_selected_foreach(sel, select_field_list_item, field);
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1084 }
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1085
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1086 static GtkWidget *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1087 create_list_field(PurpleRequestField *field)
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1088 {
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1089 GtkWidget *treeview;
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1090 GtkListStore *store;
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1091 GtkCellRenderer *renderer;
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1092 GtkTreeSelection *sel;
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1093 GtkTreeViewColumn *column;
7909
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1094 GtkTreeIter iter;
18190
bcf28ef7e8ff Re-fix the DBus list handling code by killing const GList* / const GSList*
Richard Laager <rlaager@pidgin.im>
parents: 18130
diff changeset
1095 GList *l;
24892
2cbfa7f1b756 Revert the unnecessary addition of the pixbuf boolean to PurpleRequestField.list
Richard Laager <rlaager@pidgin.im>
parents: 24625
diff changeset
1096 GList *icons = NULL;
2cbfa7f1b756 Revert the unnecessary addition of the pixbuf boolean to PurpleRequestField.list
Richard Laager <rlaager@pidgin.im>
parents: 24625
diff changeset
1097
2cbfa7f1b756 Revert the unnecessary addition of the pixbuf boolean to PurpleRequestField.list
Richard Laager <rlaager@pidgin.im>
parents: 24625
diff changeset
1098 icons = purple_request_field_list_get_icons(field);
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1099
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1100
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1101 /* Create the list store */
24892
2cbfa7f1b756 Revert the unnecessary addition of the pixbuf boolean to PurpleRequestField.list
Richard Laager <rlaager@pidgin.im>
parents: 24625
diff changeset
1102 if (icons)
24625
4082cd694acb This patch comes from the combined work of contributors minstrel, NightFox,
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22962
diff changeset
1103 store = gtk_list_store_new(3, G_TYPE_POINTER, G_TYPE_STRING, GDK_TYPE_PIXBUF);
4082cd694acb This patch comes from the combined work of contributors minstrel, NightFox,
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22962
diff changeset
1104 else
4082cd694acb This patch comes from the combined work of contributors minstrel, NightFox,
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22962
diff changeset
1105 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
1106
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1107 /* Create the tree view */
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1108 treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
22214
e8a9916cb99e It turns out the tree-models need to be unref'ed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22032
diff changeset
1109 g_object_unref(G_OBJECT(store));
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1110 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview), FALSE);
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1111
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1112 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1113
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1114 if (purple_request_field_list_get_multi_select(field))
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1115 gtk_tree_selection_set_mode(sel, GTK_SELECTION_MULTIPLE);
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1116
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1117 column = gtk_tree_view_column_new();
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1118 gtk_tree_view_insert_column(GTK_TREE_VIEW(treeview), column, -1);
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1119
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1120 renderer = gtk_cell_renderer_text_new();
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1121 gtk_tree_view_column_pack_start(column, renderer, TRUE);
7909
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1122 gtk_tree_view_column_add_attribute(column, renderer, "text", 1);
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1123
24892
2cbfa7f1b756 Revert the unnecessary addition of the pixbuf boolean to PurpleRequestField.list
Richard Laager <rlaager@pidgin.im>
parents: 24625
diff changeset
1124 if (icons)
24625
4082cd694acb This patch comes from the combined work of contributors minstrel, NightFox,
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22962
diff changeset
1125 {
4082cd694acb This patch comes from the combined work of contributors minstrel, NightFox,
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22962
diff changeset
1126 renderer = gtk_cell_renderer_pixbuf_new();
4082cd694acb This patch comes from the combined work of contributors minstrel, NightFox,
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22962
diff changeset
1127 gtk_tree_view_column_pack_start(column, renderer, TRUE);
4082cd694acb This patch comes from the combined work of contributors minstrel, NightFox,
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22962
diff changeset
1128 gtk_tree_view_column_add_attribute(column, renderer, "pixbuf", 2);
4082cd694acb This patch comes from the combined work of contributors minstrel, NightFox,
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22962
diff changeset
1129
4082cd694acb This patch comes from the combined work of contributors minstrel, NightFox,
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22962
diff changeset
1130 gtk_widget_set_size_request(treeview, 200, 400);
4082cd694acb This patch comes from the combined work of contributors minstrel, NightFox,
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22962
diff changeset
1131 }
4082cd694acb This patch comes from the combined work of contributors minstrel, NightFox,
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22962
diff changeset
1132
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1133 for (l = purple_request_field_list_get_items(field); l != NULL; l = l->next)
7909
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1134 {
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1135 const char *text = (const char *)l->data;
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1136
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1137 gtk_list_store_append(store, &iter);
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1138
24892
2cbfa7f1b756 Revert the unnecessary addition of the pixbuf boolean to PurpleRequestField.list
Richard Laager <rlaager@pidgin.im>
parents: 24625
diff changeset
1139 if (icons)
24625
4082cd694acb This patch comes from the combined work of contributors minstrel, NightFox,
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22962
diff changeset
1140 {
24892
2cbfa7f1b756 Revert the unnecessary addition of the pixbuf boolean to PurpleRequestField.list
Richard Laager <rlaager@pidgin.im>
parents: 24625
diff changeset
1141 const char *icon_path = (const char *)icons->data;
24898
daecfff47300 Avoid trying to build a filename and pixbuf if there's no image filename.
Richard Laager <rlaager@pidgin.im>
parents: 24892
diff changeset
1142 GdkPixbuf* pixbuf = NULL;
24625
4082cd694acb This patch comes from the combined work of contributors minstrel, NightFox,
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22962
diff changeset
1143
24898
daecfff47300 Avoid trying to build a filename and pixbuf if there's no image filename.
Richard Laager <rlaager@pidgin.im>
parents: 24892
diff changeset
1144 if (icon_path)
31889
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31322
diff changeset
1145 pixbuf = pidgin_pixbuf_new_from_file(icon_path);
24625
4082cd694acb This patch comes from the combined work of contributors minstrel, NightFox,
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22962
diff changeset
1146
4082cd694acb This patch comes from the combined work of contributors minstrel, NightFox,
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22962
diff changeset
1147 gtk_list_store_set(store, &iter,
4082cd694acb This patch comes from the combined work of contributors minstrel, NightFox,
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22962
diff changeset
1148 0, purple_request_field_list_get_data(field, text),
4082cd694acb This patch comes from the combined work of contributors minstrel, NightFox,
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22962
diff changeset
1149 1, text,
4082cd694acb This patch comes from the combined work of contributors minstrel, NightFox,
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22962
diff changeset
1150 2, pixbuf,
4082cd694acb This patch comes from the combined work of contributors minstrel, NightFox,
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22962
diff changeset
1151 -1);
24892
2cbfa7f1b756 Revert the unnecessary addition of the pixbuf boolean to PurpleRequestField.list
Richard Laager <rlaager@pidgin.im>
parents: 24625
diff changeset
1152 icons = icons->next;
24625
4082cd694acb This patch comes from the combined work of contributors minstrel, NightFox,
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22962
diff changeset
1153 }
4082cd694acb This patch comes from the combined work of contributors minstrel, NightFox,
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22962
diff changeset
1154 else
4082cd694acb This patch comes from the combined work of contributors minstrel, NightFox,
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22962
diff changeset
1155 gtk_list_store_set(store, &iter,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1156 0, purple_request_field_list_get_data(field, text),
7909
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1157 1, text,
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1158 -1);
7964
10d58eb8a16a [gaim-migrate @ 8641]
Christian Hammond <chipx86@chipx86.com>
parents: 7951
diff changeset
1159
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1160 if (purple_request_field_list_is_selected(field, text))
7964
10d58eb8a16a [gaim-migrate @ 8641]
Christian Hammond <chipx86@chipx86.com>
parents: 7951
diff changeset
1161 gtk_tree_selection_select_iter(sel, &iter);
7909
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
1162 }
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1163
19052
5f49fa1c6f08 Fix a bug with multi-field selections in Pidgin's implementation of
Mark Doliner <markdoliner@pidgin.im>
parents: 18966
diff changeset
1164 /*
5f49fa1c6f08 Fix a bug with multi-field selections in Pidgin's implementation of
Mark Doliner <markdoliner@pidgin.im>
parents: 18966
diff changeset
1165 * We only want to catch changes made by the user, so it's important
5f49fa1c6f08 Fix a bug with multi-field selections in Pidgin's implementation of
Mark Doliner <markdoliner@pidgin.im>
parents: 18966
diff changeset
1166 * that we wait until after the list is created to connect this
5f49fa1c6f08 Fix a bug with multi-field selections in Pidgin's implementation of
Mark Doliner <markdoliner@pidgin.im>
parents: 18966
diff changeset
1167 * handler. If we connect the handler before the loop above and
5f49fa1c6f08 Fix a bug with multi-field selections in Pidgin's implementation of
Mark Doliner <markdoliner@pidgin.im>
parents: 18966
diff changeset
1168 * there are multiple items selected, then selecting the first iter
5f49fa1c6f08 Fix a bug with multi-field selections in Pidgin's implementation of
Mark Doliner <markdoliner@pidgin.im>
parents: 18966
diff changeset
1169 * in the tree causes list_field_select_changed_cb to be triggered
5f49fa1c6f08 Fix a bug with multi-field selections in Pidgin's implementation of
Mark Doliner <markdoliner@pidgin.im>
parents: 18966
diff changeset
1170 * which clears out the rest of the list of selected items.
5f49fa1c6f08 Fix a bug with multi-field selections in Pidgin's implementation of
Mark Doliner <markdoliner@pidgin.im>
parents: 18966
diff changeset
1171 */
5f49fa1c6f08 Fix a bug with multi-field selections in Pidgin's implementation of
Mark Doliner <markdoliner@pidgin.im>
parents: 18966
diff changeset
1172 g_signal_connect(G_OBJECT(sel), "changed",
5f49fa1c6f08 Fix a bug with multi-field selections in Pidgin's implementation of
Mark Doliner <markdoliner@pidgin.im>
parents: 18966
diff changeset
1173 G_CALLBACK(list_field_select_changed_cb), field);
5f49fa1c6f08 Fix a bug with multi-field selections in Pidgin's implementation of
Mark Doliner <markdoliner@pidgin.im>
parents: 18966
diff changeset
1174
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1175 gtk_widget_show(treeview);
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1176
31321
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 31294
diff changeset
1177 return pidgin_make_scrollable(treeview, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC, GTK_SHADOW_IN, -1, -1);
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1178 }
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
1179
6363
6e0fa4b64fe6 [gaim-migrate @ 6868]
Christian Hammond <chipx86@chipx86.com>
parents: 6338
diff changeset
1180 static void *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1181 pidgin_request_fields(const char *title, const char *primary,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1182 const char *secondary, PurpleRequestFields *fields,
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1183 const char *ok_text, GCallback ok_cb,
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1184 const char *cancel_text, GCallback cancel_cb,
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16259
diff changeset
1185 PurpleAccount *account, const char *who, PurpleConversation *conv,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1186 void *user_data)
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1187 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1188 PidginRequestData *data;
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1189 GtkWidget *win;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1190 GtkWidget *vbox;
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1191 GtkWidget *vbox2;
6326
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
1192 GtkWidget *hbox;
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1193 GtkWidget *frame;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1194 GtkWidget *label;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1195 GtkWidget *table;
5815
cdd5b8d9caca [gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents: 5813
diff changeset
1196 GtkWidget *button;
6326
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
1197 GtkWidget *img;
5813
ba2693e8db07 [gaim-migrate @ 6243]
Christian Hammond <chipx86@chipx86.com>
parents: 5811
diff changeset
1198 GtkSizeGroup *sg;
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1199 GList *gl, *fl;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1200 PurpleRequestFieldGroup *group;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1201 PurpleRequestField *field;
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1202 char *label_text;
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
1203 char *primary_esc, *secondary_esc;
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1204 int total_fields = 0;
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1205
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1206 data = g_new0(PidginRequestData, 1);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1207 data->type = PURPLE_REQUEST_FIELDS;
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1208 data->user_data = user_data;
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
1209 data->u.multifield.fields = fields;
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1210
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1211 fields->ui_data = data;
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1212
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1213 data->cb_count = 2;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1214 data->cbs = g_new0(GCallback, 2);
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1215
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1216 data->cbs[0] = ok_cb;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1217 data->cbs[1] = cancel_cb;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1218
19585
14b519abcc26 Fix some conversion warnings about using negative values with unsigned types. There are more, but these were easy fixes. You may think that I'm changing the API, but I'm really not - it was just wrong.
Daniel Atallah <datallah@pidgin.im>
parents: 19369
diff changeset
1219
16686
1ebd9e4ae3f0 Prevent request dialog titles being "pidgin.exe".
Daniel Atallah <datallah@pidgin.im>
parents: 16490
diff changeset
1220 #ifdef _WIN32
22000
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21648
diff changeset
1221 data->dialog = win = pidgin_create_dialog(PIDGIN_ALERT_TITLE, PIDGIN_HIG_BORDER, "multifield", TRUE) ;
17213
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 16873
diff changeset
1222 #else /* !_WIN32 */
22000
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21648
diff changeset
1223 data->dialog = win = pidgin_create_dialog(title, PIDGIN_HIG_BORDER, "multifield", TRUE) ;
17213
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 16873
diff changeset
1224 #endif /* _WIN32 */
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1225
8323
d962d280c523 [gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
1226 g_signal_connect(G_OBJECT(win), "delete_event",
d962d280c523 [gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
1227 G_CALLBACK(destroy_multifield_cb), data);
d962d280c523 [gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
1228
6326
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
1229 /* Setup the main horizontal box */
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
1230 hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER);
22000
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21648
diff changeset
1231 gtk_container_add(GTK_CONTAINER(pidgin_dialog_get_vbox(GTK_DIALOG(win))), hbox);
6326
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
1232 gtk_widget_show(hbox);
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
1233
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
1234 /* Dialog icon. */
15497
92f02f4bd5ee Dialog icon changes
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1235 img = gtk_image_new_from_stock(PIDGIN_STOCK_DIALOG_QUESTION,
92f02f4bd5ee Dialog icon changes
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1236 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_HUGE));
6326
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
1237 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
1238 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
1239 gtk_widget_show(img);
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
1240
22934
7a96ee1d84f5 A newly created widget for a request field may want to enable/disable the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22263
diff changeset
1241 /* Cancel button */
7a96ee1d84f5 A newly created widget for a request field may want to enable/disable the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22263
diff changeset
1242 button = pidgin_dialog_add_button(GTK_DIALOG(win), text_to_stock(cancel_text), G_CALLBACK(multifield_cancel_cb), data);
7a96ee1d84f5 A newly created widget for a request field may want to enable/disable the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22263
diff changeset
1243 GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
7a96ee1d84f5 A newly created widget for a request field may want to enable/disable the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22263
diff changeset
1244
7a96ee1d84f5 A newly created widget for a request field may want to enable/disable the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22263
diff changeset
1245 /* OK button */
7a96ee1d84f5 A newly created widget for a request field may want to enable/disable the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22263
diff changeset
1246 button = pidgin_dialog_add_button(GTK_DIALOG(win), text_to_stock(ok_text), G_CALLBACK(multifield_ok_cb), data);
7a96ee1d84f5 A newly created widget for a request field may want to enable/disable the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22263
diff changeset
1247 data->ok_button = button;
7a96ee1d84f5 A newly created widget for a request field may want to enable/disable the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22263
diff changeset
1248 GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
7a96ee1d84f5 A newly created widget for a request field may want to enable/disable the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22263
diff changeset
1249 gtk_window_set_default(GTK_WINDOW(win), button);
7a96ee1d84f5 A newly created widget for a request field may want to enable/disable the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22263
diff changeset
1250
28793
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
1251 pidgin_widget_decorate_account(hbox, account);
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
1252
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1253 /* Setup the vbox */
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
1254 vbox = gtk_vbox_new(FALSE, PIDGIN_HIG_BORDER);
19369
e2ad831e0f1a Two changes here
Mark Doliner <markdoliner@pidgin.im>
parents: 19052
diff changeset
1255 gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 0);
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1256 gtk_widget_show(vbox);
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1257
5813
ba2693e8db07 [gaim-migrate @ 6243]
Christian Hammond <chipx86@chipx86.com>
parents: 5811
diff changeset
1258 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
ba2693e8db07 [gaim-migrate @ 6243]
Christian Hammond <chipx86@chipx86.com>
parents: 5811
diff changeset
1259
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1260 if(primary) {
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
1261 primary_esc = g_markup_escape_text(primary, -1);
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1262 label_text = g_strdup_printf(
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
1263 "<span weight=\"bold\" size=\"larger\">%s</span>", primary_esc);
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
1264 g_free(primary_esc);
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1265 label = gtk_label_new(NULL);
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1266
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1267 gtk_label_set_markup(GTK_LABEL(label), label_text);
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1268 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1269 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
15383
80d48e553879 [gaim-migrate @ 18112]
Nathan Walp <nwalp@pidgin.im>
parents: 15382
diff changeset
1270 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
6325
35357b64dbb2 [gaim-migrate @ 6824]
Christian Hammond <chipx86@chipx86.com>
parents: 6324
diff changeset
1271 gtk_widget_show(label);
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1272 g_free(label_text);
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1273 }
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1274
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1275 for (gl = purple_request_fields_get_groups(fields); gl != NULL;
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1276 gl = gl->next)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1277 total_fields += g_list_length(purple_request_field_group_get_fields(gl->data));
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1278
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1279 if(total_fields > 9) {
19369
e2ad831e0f1a Two changes here
Mark Doliner <markdoliner@pidgin.im>
parents: 19052
diff changeset
1280 GtkWidget *hbox_for_spacing, *vbox_for_spacing;
e2ad831e0f1a Two changes here
Mark Doliner <markdoliner@pidgin.im>
parents: 19052
diff changeset
1281
e2ad831e0f1a Two changes here
Mark Doliner <markdoliner@pidgin.im>
parents: 19052
diff changeset
1282 hbox_for_spacing = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER);
38258
9a6551eba09c Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 36256
diff changeset
1283 gtk_box_pack_start(GTK_BOX(vbox),
9a6551eba09c Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 36256
diff changeset
1284 pidgin_make_scrollable(hbox_for_spacing, GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC, GTK_SHADOW_NONE, -1, 200),
31321
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 31294
diff changeset
1285 TRUE, TRUE, 0);
19369
e2ad831e0f1a Two changes here
Mark Doliner <markdoliner@pidgin.im>
parents: 19052
diff changeset
1286 gtk_widget_show(hbox_for_spacing);
e2ad831e0f1a Two changes here
Mark Doliner <markdoliner@pidgin.im>
parents: 19052
diff changeset
1287
e2ad831e0f1a Two changes here
Mark Doliner <markdoliner@pidgin.im>
parents: 19052
diff changeset
1288 vbox_for_spacing = gtk_vbox_new(FALSE, PIDGIN_HIG_BORDER);
e2ad831e0f1a Two changes here
Mark Doliner <markdoliner@pidgin.im>
parents: 19052
diff changeset
1289 gtk_box_pack_start(GTK_BOX(hbox_for_spacing),
e2ad831e0f1a Two changes here
Mark Doliner <markdoliner@pidgin.im>
parents: 19052
diff changeset
1290 vbox_for_spacing, TRUE, TRUE, PIDGIN_HIG_BOX_SPACE);
e2ad831e0f1a Two changes here
Mark Doliner <markdoliner@pidgin.im>
parents: 19052
diff changeset
1291 gtk_widget_show(vbox_for_spacing);
e2ad831e0f1a Two changes here
Mark Doliner <markdoliner@pidgin.im>
parents: 19052
diff changeset
1292
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
1293 vbox2 = gtk_vbox_new(FALSE, PIDGIN_HIG_BORDER);
19369
e2ad831e0f1a Two changes here
Mark Doliner <markdoliner@pidgin.im>
parents: 19052
diff changeset
1294 gtk_box_pack_start(GTK_BOX(vbox_for_spacing),
e2ad831e0f1a Two changes here
Mark Doliner <markdoliner@pidgin.im>
parents: 19052
diff changeset
1295 vbox2, TRUE, TRUE, PIDGIN_HIG_BOX_SPACE);
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1296 gtk_widget_show(vbox2);
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1297 } else {
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1298 vbox2 = vbox;
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1299 }
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1300
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1301 if (secondary) {
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
1302 secondary_esc = g_markup_escape_text(secondary, -1);
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1303 label = gtk_label_new(NULL);
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1304
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
1305 gtk_label_set_markup(GTK_LABEL(label), secondary_esc);
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10673
diff changeset
1306 g_free(secondary_esc);
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1307 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1308 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1309 gtk_box_pack_start(GTK_BOX(vbox2), label, TRUE, TRUE, 0);
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1310 gtk_widget_show(label);
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1311 }
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1312
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1313 for (gl = purple_request_fields_get_groups(fields);
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1314 gl != NULL;
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1315 gl = gl->next)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1316 {
5816
44bbfb7f8904 [gaim-migrate @ 6246]
Christian Hammond <chipx86@chipx86.com>
parents: 5815
diff changeset
1317 GList *field_list;
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1318 size_t field_count = 0;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1319 size_t cols = 1;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1320 size_t rows;
35967
cde50837937d Ifdef some dead code, fixing coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 31889
diff changeset
1321 #if 0
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1322 size_t col_num;
35967
cde50837937d Ifdef some dead code, fixing coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 31889
diff changeset
1323 #endif
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1324 size_t row_num = 0;
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1325
5816
44bbfb7f8904 [gaim-migrate @ 6246]
Christian Hammond <chipx86@chipx86.com>
parents: 5815
diff changeset
1326 group = gl->data;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1327 field_list = purple_request_field_group_get_fields(group);
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1328
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1329 if (purple_request_field_group_get_title(group) != NULL)
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1330 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1331 frame = pidgin_make_frame(vbox2,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1332 purple_request_field_group_get_title(group));
6324
dddc1f8fe8e0 [gaim-migrate @ 6823]
Christian Hammond <chipx86@chipx86.com>
parents: 6110
diff changeset
1333 }
6325
35357b64dbb2 [gaim-migrate @ 6824]
Christian Hammond <chipx86@chipx86.com>
parents: 6324
diff changeset
1334 else
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
1335 frame = vbox2;
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1336
5816
44bbfb7f8904 [gaim-migrate @ 6246]
Christian Hammond <chipx86@chipx86.com>
parents: 5815
diff changeset
1337 field_count = g_list_length(field_list);
35967
cde50837937d Ifdef some dead code, fixing coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 31889
diff changeset
1338 #if 0
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1339 if (field_count > 9)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1340 {
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1341 rows = field_count / 2;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1342 cols++;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1343 }
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1344 else
35967
cde50837937d Ifdef some dead code, fixing coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 31889
diff changeset
1345 #endif
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1346 rows = field_count;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1347
35967
cde50837937d Ifdef some dead code, fixing coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 31889
diff changeset
1348 #if 0
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1349 col_num = 0;
35967
cde50837937d Ifdef some dead code, fixing coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 31889
diff changeset
1350 #endif
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1351
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1352 for (fl = field_list; fl != NULL; fl = fl->next)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1353 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1354 PurpleRequestFieldType type;
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1355
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1356 field = (PurpleRequestField *)fl->data;
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1357
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1358 type = purple_request_field_get_type(field);
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1359
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1360 if (type == PURPLE_REQUEST_FIELD_LABEL)
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1361 {
35967
cde50837937d Ifdef some dead code, fixing coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 31889
diff changeset
1362 #if 0
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1363 if (col_num > 0)
7921
cd7f211c784c [gaim-migrate @ 8589]
Nathan Walp <nwalp@pidgin.im>
parents: 7909
diff changeset
1364 rows++;
35967
cde50837937d Ifdef some dead code, fixing coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 31889
diff changeset
1365 #endif
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1366
7921
cd7f211c784c [gaim-migrate @ 8589]
Nathan Walp <nwalp@pidgin.im>
parents: 7909
diff changeset
1367 rows++;
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1368 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1369 else if ((type == PURPLE_REQUEST_FIELD_LIST) ||
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1370 (type == PURPLE_REQUEST_FIELD_STRING &&
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1371 purple_request_field_string_is_multiline(field)))
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1372 {
35967
cde50837937d Ifdef some dead code, fixing coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 31889
diff changeset
1373 #if 0
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1374 if (col_num > 0)
7921
cd7f211c784c [gaim-migrate @ 8589]
Nathan Walp <nwalp@pidgin.im>
parents: 7909
diff changeset
1375 rows++;
35967
cde50837937d Ifdef some dead code, fixing coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 31889
diff changeset
1376 #endif
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1377
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1378 rows += 2;
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1379 }
7921
cd7f211c784c [gaim-migrate @ 8589]
Nathan Walp <nwalp@pidgin.im>
parents: 7909
diff changeset
1380
35967
cde50837937d Ifdef some dead code, fixing coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 31889
diff changeset
1381 #if 0
7921
cd7f211c784c [gaim-migrate @ 8589]
Nathan Walp <nwalp@pidgin.im>
parents: 7909
diff changeset
1382 col_num++;
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1383
8323
d962d280c523 [gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
1384 if (col_num >= cols)
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1385 col_num = 0;
35967
cde50837937d Ifdef some dead code, fixing coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 31889
diff changeset
1386 #endif
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1387 }
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1388
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1389 table = gtk_table_new(rows, 2 * cols, FALSE);
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
1390 gtk_table_set_row_spacings(GTK_TABLE(table), PIDGIN_HIG_BOX_SPACE);
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
1391 gtk_table_set_col_spacings(GTK_TABLE(table), PIDGIN_HIG_BOX_SPACE);
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1392
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1393 gtk_container_add(GTK_CONTAINER(frame), table);
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1394 gtk_widget_show(table);
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1395
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1396 for (row_num = 0, fl = field_list;
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1397 row_num < rows && fl != NULL;
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1398 row_num++)
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1399 {
35967
cde50837937d Ifdef some dead code, fixing coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 31889
diff changeset
1400 #if 0
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1401 for (col_num = 0;
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1402 col_num < cols && fl != NULL;
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1403 col_num++, fl = fl->next)
35967
cde50837937d Ifdef some dead code, fixing coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 31889
diff changeset
1404 #else
cde50837937d Ifdef some dead code, fixing coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 31889
diff changeset
1405 gboolean dummy_counter = TRUE;
cde50837937d Ifdef some dead code, fixing coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 31889
diff changeset
1406 /* it's the same as loop above */
cde50837937d Ifdef some dead code, fixing coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 31889
diff changeset
1407 for (; dummy_counter && fl != NULL; dummy_counter = FALSE, fl = fl->next)
cde50837937d Ifdef some dead code, fixing coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 31889
diff changeset
1408 #endif
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1409 {
35967
cde50837937d Ifdef some dead code, fixing coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 31889
diff changeset
1410 #if 0
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1411 size_t col_offset = col_num * 2;
35967
cde50837937d Ifdef some dead code, fixing coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 31889
diff changeset
1412 #else
cde50837937d Ifdef some dead code, fixing coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 31889
diff changeset
1413 size_t col_offset = 0;
cde50837937d Ifdef some dead code, fixing coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 31889
diff changeset
1414 #endif
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1415 PurpleRequestFieldType type;
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1416 GtkWidget *widget = NULL;
22962
654c6e6f68bd Do not add a ':' if there's already one at the end. Thanks to wjt for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22934
diff changeset
1417 const char *field_label;
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1418
12666
a02b23981ccb [gaim-migrate @ 15009]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
1419 label = NULL;
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1420 field = fl->data;
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1421
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1422 if (!purple_request_field_is_visible(field)) {
35967
cde50837937d Ifdef some dead code, fixing coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 31889
diff changeset
1423 #if 0
7922
160207a9feee [gaim-migrate @ 8591]
Nathan Walp <nwalp@pidgin.im>
parents: 7921
diff changeset
1424 col_num--;
35967
cde50837937d Ifdef some dead code, fixing coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 31889
diff changeset
1425 #endif
7904
266d6d5c68ac [gaim-migrate @ 8564]
Christian Hammond <chipx86@chipx86.com>
parents: 7903
diff changeset
1426 continue;
7922
160207a9feee [gaim-migrate @ 8591]
Nathan Walp <nwalp@pidgin.im>
parents: 7921
diff changeset
1427 }
7904
266d6d5c68ac [gaim-migrate @ 8564]
Christian Hammond <chipx86@chipx86.com>
parents: 7903
diff changeset
1428
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1429 type = purple_request_field_get_type(field);
22962
654c6e6f68bd Do not add a ':' if there's already one at the end. Thanks to wjt for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22934
diff changeset
1430 field_label = purple_request_field_get_label(field);
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1431
22962
654c6e6f68bd Do not add a ':' if there's already one at the end. Thanks to wjt for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22934
diff changeset
1432 if (type != PURPLE_REQUEST_FIELD_BOOLEAN && field_label)
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1433 {
22962
654c6e6f68bd Do not add a ':' if there's already one at the end. Thanks to wjt for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22934
diff changeset
1434 char *text = NULL;
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1435
22962
654c6e6f68bd Do not add a ':' if there's already one at the end. Thanks to wjt for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22934
diff changeset
1436 if (field_label[strlen(field_label) - 1] != ':')
654c6e6f68bd Do not add a ':' if there's already one at the end. Thanks to wjt for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22934
diff changeset
1437 text = g_strdup_printf("%s:", field_label);
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1438
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1439 label = gtk_label_new(NULL);
22962
654c6e6f68bd Do not add a ':' if there's already one at the end. Thanks to wjt for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22934
diff changeset
1440 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), text ? text : field_label);
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1441 g_free(text);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1442
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1443 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1444
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1445 gtk_size_group_add_widget(sg, label);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1446
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1447 if (type == PURPLE_REQUEST_FIELD_LABEL ||
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1448 type == PURPLE_REQUEST_FIELD_LIST ||
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1449 (type == PURPLE_REQUEST_FIELD_STRING &&
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1450 purple_request_field_string_is_multiline(field)))
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1451 {
35967
cde50837937d Ifdef some dead code, fixing coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 31889
diff changeset
1452 #if 0
7921
cd7f211c784c [gaim-migrate @ 8589]
Nathan Walp <nwalp@pidgin.im>
parents: 7909
diff changeset
1453 if(col_num > 0)
cd7f211c784c [gaim-migrate @ 8589]
Nathan Walp <nwalp@pidgin.im>
parents: 7909
diff changeset
1454 row_num++;
35967
cde50837937d Ifdef some dead code, fixing coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 31889
diff changeset
1455 #endif
7921
cd7f211c784c [gaim-migrate @ 8589]
Nathan Walp <nwalp@pidgin.im>
parents: 7909
diff changeset
1456
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1457 gtk_table_attach_defaults(GTK_TABLE(table), label,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1458 0, 2 * cols,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1459 row_num, row_num + 1);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1460
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1461 row_num++;
35967
cde50837937d Ifdef some dead code, fixing coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 31889
diff changeset
1462 #if 0
7921
cd7f211c784c [gaim-migrate @ 8589]
Nathan Walp <nwalp@pidgin.im>
parents: 7909
diff changeset
1463 col_num=cols;
35967
cde50837937d Ifdef some dead code, fixing coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 31889
diff changeset
1464 #endif
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1465 }
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1466 else
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1467 {
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1468 gtk_table_attach_defaults(GTK_TABLE(table), label,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1469 col_offset, col_offset + 1,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1470 row_num, row_num + 1);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1471 }
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1472
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1473 gtk_widget_show(label);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1474 }
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1475
24984
64b88867fbdf Hide the PurpleRequestField struct. I figured this one would be easy and
Richard Laager <rlaager@pidgin.im>
parents: 22962
diff changeset
1476 widget = GTK_WIDGET(purple_request_field_get_ui_data(field));
64b88867fbdf Hide the PurpleRequestField struct. I figured this one would be easy and
Richard Laager <rlaager@pidgin.im>
parents: 22962
diff changeset
1477 if (widget == NULL)
64b88867fbdf Hide the PurpleRequestField struct. I figured this one would be easy and
Richard Laager <rlaager@pidgin.im>
parents: 22962
diff changeset
1478 {
64b88867fbdf Hide the PurpleRequestField struct. I figured this one would be easy and
Richard Laager <rlaager@pidgin.im>
parents: 22962
diff changeset
1479 if (type == PURPLE_REQUEST_FIELD_STRING)
64b88867fbdf Hide the PurpleRequestField struct. I figured this one would be easy and
Richard Laager <rlaager@pidgin.im>
parents: 22962
diff changeset
1480 widget = create_string_field(field);
64b88867fbdf Hide the PurpleRequestField struct. I figured this one would be easy and
Richard Laager <rlaager@pidgin.im>
parents: 22962
diff changeset
1481 else if (type == PURPLE_REQUEST_FIELD_INTEGER)
64b88867fbdf Hide the PurpleRequestField struct. I figured this one would be easy and
Richard Laager <rlaager@pidgin.im>
parents: 22962
diff changeset
1482 widget = create_int_field(field);
64b88867fbdf Hide the PurpleRequestField struct. I figured this one would be easy and
Richard Laager <rlaager@pidgin.im>
parents: 22962
diff changeset
1483 else if (type == PURPLE_REQUEST_FIELD_BOOLEAN)
64b88867fbdf Hide the PurpleRequestField struct. I figured this one would be easy and
Richard Laager <rlaager@pidgin.im>
parents: 22962
diff changeset
1484 widget = create_bool_field(field);
64b88867fbdf Hide the PurpleRequestField struct. I figured this one would be easy and
Richard Laager <rlaager@pidgin.im>
parents: 22962
diff changeset
1485 else if (type == PURPLE_REQUEST_FIELD_CHOICE)
64b88867fbdf Hide the PurpleRequestField struct. I figured this one would be easy and
Richard Laager <rlaager@pidgin.im>
parents: 22962
diff changeset
1486 widget = create_choice_field(field);
64b88867fbdf Hide the PurpleRequestField struct. I figured this one would be easy and
Richard Laager <rlaager@pidgin.im>
parents: 22962
diff changeset
1487 else if (type == PURPLE_REQUEST_FIELD_LIST)
64b88867fbdf Hide the PurpleRequestField struct. I figured this one would be easy and
Richard Laager <rlaager@pidgin.im>
parents: 22962
diff changeset
1488 widget = create_list_field(field);
64b88867fbdf Hide the PurpleRequestField struct. I figured this one would be easy and
Richard Laager <rlaager@pidgin.im>
parents: 22962
diff changeset
1489 else if (type == PURPLE_REQUEST_FIELD_IMAGE)
64b88867fbdf Hide the PurpleRequestField struct. I figured this one would be easy and
Richard Laager <rlaager@pidgin.im>
parents: 22962
diff changeset
1490 widget = create_image_field(field);
64b88867fbdf Hide the PurpleRequestField struct. I figured this one would be easy and
Richard Laager <rlaager@pidgin.im>
parents: 22962
diff changeset
1491 else if (type == PURPLE_REQUEST_FIELD_ACCOUNT)
64b88867fbdf Hide the PurpleRequestField struct. I figured this one would be easy and
Richard Laager <rlaager@pidgin.im>
parents: 22962
diff changeset
1492 widget = create_account_field(field);
64b88867fbdf Hide the PurpleRequestField struct. I figured this one would be easy and
Richard Laager <rlaager@pidgin.im>
parents: 22962
diff changeset
1493 else
64b88867fbdf Hide the PurpleRequestField struct. I figured this one would be easy and
Richard Laager <rlaager@pidgin.im>
parents: 22962
diff changeset
1494 continue;
64b88867fbdf Hide the PurpleRequestField struct. I figured this one would be easy and
Richard Laager <rlaager@pidgin.im>
parents: 22962
diff changeset
1495 }
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1496
12666
a02b23981ccb [gaim-migrate @ 15009]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
1497 if (label)
a02b23981ccb [gaim-migrate @ 15009]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
1498 gtk_label_set_mnemonic_widget(GTK_LABEL(label), widget);
a02b23981ccb [gaim-migrate @ 15009]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
1499
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1500 if (type == PURPLE_REQUEST_FIELD_STRING &&
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1501 purple_request_field_string_is_multiline(field))
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1502 {
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1503 gtk_table_attach(GTK_TABLE(table), widget,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1504 0, 2 * cols,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1505 row_num, row_num + 1,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1506 GTK_FILL | GTK_EXPAND,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1507 GTK_FILL | GTK_EXPAND,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1508 5, 0);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1509 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1510 else if (type == PURPLE_REQUEST_FIELD_LIST)
10627
ebbfa9f428e6 [gaim-migrate @ 12102]
Christopher O'Brien <siege@pidgin.im>
parents: 10605
diff changeset
1511 {
ebbfa9f428e6 [gaim-migrate @ 12102]
Christopher O'Brien <siege@pidgin.im>
parents: 10605
diff changeset
1512 gtk_table_attach(GTK_TABLE(table), widget,
ebbfa9f428e6 [gaim-migrate @ 12102]
Christopher O'Brien <siege@pidgin.im>
parents: 10605
diff changeset
1513 0, 2 * cols,
ebbfa9f428e6 [gaim-migrate @ 12102]
Christopher O'Brien <siege@pidgin.im>
parents: 10605
diff changeset
1514 row_num, row_num + 1,
ebbfa9f428e6 [gaim-migrate @ 12102]
Christopher O'Brien <siege@pidgin.im>
parents: 10605
diff changeset
1515 GTK_FILL | GTK_EXPAND,
ebbfa9f428e6 [gaim-migrate @ 12102]
Christopher O'Brien <siege@pidgin.im>
parents: 10605
diff changeset
1516 GTK_FILL | GTK_EXPAND,
ebbfa9f428e6 [gaim-migrate @ 12102]
Christopher O'Brien <siege@pidgin.im>
parents: 10605
diff changeset
1517 5, 0);
ebbfa9f428e6 [gaim-migrate @ 12102]
Christopher O'Brien <siege@pidgin.im>
parents: 10605
diff changeset
1518 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1519 else if (type == PURPLE_REQUEST_FIELD_BOOLEAN)
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1520 {
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1521 gtk_table_attach(GTK_TABLE(table), widget,
10627
ebbfa9f428e6 [gaim-migrate @ 12102]
Christopher O'Brien <siege@pidgin.im>
parents: 10605
diff changeset
1522 col_offset, col_offset + 1,
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1523 row_num, row_num + 1,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1524 GTK_FILL | GTK_EXPAND,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1525 GTK_FILL | GTK_EXPAND,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1526 5, 0);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1527 }
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1528 else
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
1529 {
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1530 gtk_table_attach(GTK_TABLE(table), widget,
10627
ebbfa9f428e6 [gaim-migrate @ 12102]
Christopher O'Brien <siege@pidgin.im>
parents: 10605
diff changeset
1531 1, 2 * cols,
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1532 row_num, row_num + 1,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1533 GTK_FILL | GTK_EXPAND,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1534 GTK_FILL | GTK_EXPAND,
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1535 5, 0);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1536 }
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1537
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1538 gtk_widget_show(widget);
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1539
24984
64b88867fbdf Hide the PurpleRequestField struct. I figured this one would be easy and
Richard Laager <rlaager@pidgin.im>
parents: 22962
diff changeset
1540 purple_request_field_set_ui_data(field, widget);
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1541 }
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
1542 }
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1543 }
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1544
5813
ba2693e8db07 [gaim-migrate @ 6243]
Christian Hammond <chipx86@chipx86.com>
parents: 5811
diff changeset
1545 g_object_unref(sg);
ba2693e8db07 [gaim-migrate @ 6243]
Christian Hammond <chipx86@chipx86.com>
parents: 5811
diff changeset
1546
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1547 if (!purple_request_fields_all_required_filled(fields))
22934
7a96ee1d84f5 A newly created widget for a request field may want to enable/disable the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22263
diff changeset
1548 gtk_widget_set_sensitive(data->ok_button, FALSE);
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
1549
22007
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
1550 pidgin_auto_parent_window(win);
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
1551
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1552 gtk_widget_show(win);
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1553
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1554 return data;
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
6363
6e0fa4b64fe6 [gaim-migrate @ 6868]
Christian Hammond <chipx86@chipx86.com>
parents: 6338
diff changeset
1557 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1558 file_yes_no_cb(PidginRequestData *data, gint id)
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1559 {
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1560 /* Only call the callback if yes was selected, otherwise the request
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1561 * (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
1562 * things go BOOM */
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1563 if (id == 1) {
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1564 if (data->cbs[1] != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1565 ((PurpleRequestFileCb)data->cbs[1])(data->user_data, data->u.file.name);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1566 purple_request_close(data->type, data);
13373
c92b0e801f01 [gaim-migrate @ 15745]
Richard Laager <rlaager@pidgin.im>
parents: 13362
diff changeset
1567 } else {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1568 pidgin_clear_cursor(GTK_WIDGET(data->dialog));
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1569 }
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1570 }
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1571
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1572 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1573 file_ok_check_if_exists_cb(GtkWidget *widget, gint response, PidginRequestData *data)
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1574 {
10536
c2e0b596b4ad [gaim-migrate @ 11888]
Lee Roach <phroggster@gmail.com>
parents: 10418
diff changeset
1575 gchar *current_folder;
c2e0b596b4ad [gaim-migrate @ 11888]
Lee Roach <phroggster@gmail.com>
parents: 10418
diff changeset
1576
12234
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
1577 generic_response_start(data);
50156a40fc85 [gaim-migrate @ 14536]
Richard Laager <rlaager@pidgin.im>
parents: 12067
diff changeset
1578
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1579 if (response != GTK_RESPONSE_ACCEPT) {
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1580 if (data->cbs[0] != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1581 ((PurpleRequestFileCb)data->cbs[0])(data->user_data, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1582 purple_request_close(data->type, data);
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1583 return;
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1584 }
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1585
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1586 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
1587 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
1588 if (current_folder != NULL) {
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1589 if (data->u.file.savedialog) {
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15931
diff changeset
1590 purple_prefs_set_path(PIDGIN_PREFS_ROOT "/filelocations/last_save_folder", current_folder);
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1591 } else {
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15931
diff changeset
1592 purple_prefs_set_path(PIDGIN_PREFS_ROOT "/filelocations/last_open_folder", current_folder);
10536
c2e0b596b4ad [gaim-migrate @ 11888]
Lee Roach <phroggster@gmail.com>
parents: 10418
diff changeset
1593 }
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1594 g_free(current_folder);
10536
c2e0b596b4ad [gaim-migrate @ 11888]
Lee Roach <phroggster@gmail.com>
parents: 10418
diff changeset
1595 }
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1596 if ((data->u.file.savedialog == TRUE) &&
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1597 (g_file_test(data->u.file.name, G_FILE_TEST_EXISTS))) {
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1598 purple_request_action(data, NULL, _("That file already exists"),
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16259
diff changeset
1599 _("Would you like to overwrite it?"), 0,
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16259
diff changeset
1600 NULL, NULL, NULL,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1601 data, 2,
13535
aa70e0ac6469 [gaim-migrate @ 15911]
Richard Laager <rlaager@pidgin.im>
parents: 13475
diff changeset
1602 _("Overwrite"), G_CALLBACK(file_yes_no_cb),
aa70e0ac6469 [gaim-migrate @ 15911]
Richard Laager <rlaager@pidgin.im>
parents: 13475
diff changeset
1603 _("Choose New Name"), G_CALLBACK(file_yes_no_cb));
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1604 } else
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1605 file_yes_no_cb(data, 1);
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1606 }
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1607
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1608 static void *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1609 pidgin_request_file(const char *title, const char *filename,
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1610 gboolean savedialog,
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1611 GCallback ok_cb, GCallback cancel_cb,
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16259
diff changeset
1612 PurpleAccount *account, const char *who, PurpleConversation *conv,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1613 void *user_data)
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1614 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1615 PidginRequestData *data;
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1616 GtkWidget *filesel;
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1617 const gchar *current_folder;
10673
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1618 gboolean folder_set = FALSE;
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1619
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1620 data = g_new0(PidginRequestData, 1);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1621 data->type = PURPLE_REQUEST_FILE;
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1622 data->user_data = user_data;
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1623 data->cb_count = 2;
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1624 data->cbs = g_new0(GCallback, 2);
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1625 data->cbs[0] = cancel_cb;
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1626 data->cbs[1] = ok_cb;
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1627 data->u.file.savedialog = savedialog;
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1628
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1629 filesel = gtk_file_chooser_dialog_new(
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1630 title ? title : (savedialog ? _("Save File...")
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1631 : _("Open File...")),
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1632 NULL,
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1633 savedialog ? GTK_FILE_CHOOSER_ACTION_SAVE
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1634 : GTK_FILE_CHOOSER_ACTION_OPEN,
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1635 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1636 savedialog ? GTK_STOCK_SAVE
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1637 : GTK_STOCK_OPEN,
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1638 GTK_RESPONSE_ACCEPT,
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1639 NULL);
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1640 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
1641
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1642 if (savedialog) {
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15931
diff changeset
1643 current_folder = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/filelocations/last_save_folder");
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1644 } else {
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15931
diff changeset
1645 current_folder = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/filelocations/last_open_folder");
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1646 }
10673
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1647
15297
eb8632ad88d0 [gaim-migrate @ 18025]
Mark Doliner <markdoliner@pidgin.im>
parents: 15065
diff changeset
1648 if ((filename != NULL) && (*filename != '\0')) {
15022
4489e51a8d8b [gaim-migrate @ 17739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14922
diff changeset
1649 if (savedialog)
4489e51a8d8b [gaim-migrate @ 17739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14922
diff changeset
1650 gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(filesel), filename);
16849
f7b4c6d3ce11 This fixes #412. Apparently gtk_file_chooser_set_filename() doesn't like it when the filename specified doesn't actually exist. This is a GTK+ bug, which I will report.
Daniel Atallah <datallah@pidgin.im>
parents: 16752
diff changeset
1651 else if (g_file_test(filename, G_FILE_TEST_EXISTS))
15022
4489e51a8d8b [gaim-migrate @ 17739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14922
diff changeset
1652 gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(filesel), filename);
4489e51a8d8b [gaim-migrate @ 17739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14922
diff changeset
1653 }
16716
48db3a3d7044 disapproval of revision '8939617e03f8745cbe2ed5a7d82d97f2d4801c30'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16715
diff changeset
1654 if ((filename == NULL || *filename == '\0' || !g_file_test(filename, G_FILE_TEST_EXISTS)) &&
48db3a3d7044 disapproval of revision '8939617e03f8745cbe2ed5a7d82d97f2d4801c30'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16715
diff changeset
1655 (current_folder != NULL) && (*current_folder != '\0')) {
10673
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1656 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
1657 }
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1658
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1659 #ifdef _WIN32
16873
f36f8e4a9cb4 Additional fix for another crash similar to #412.
Daniel Atallah <datallah@pidgin.im>
parents: 16849
diff changeset
1660 if (!folder_set && (filename == NULL || *filename == '\0' || !g_file_test(filename, G_FILE_TEST_EXISTS))) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1661 char *my_documents = wpurple_get_special_folder(CSIDL_PERSONAL);
10605
ad11c1f21415 [gaim-migrate @ 12037]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10536
diff changeset
1662
10673
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1663 if (my_documents != NULL) {
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1664 gtk_file_chooser_set_current_folder(
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1665 GTK_FILE_CHOOSER(filesel), my_documents);
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1666
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1667 g_free(my_documents);
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1668 }
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1669 }
35986
5dc98ddc6a9a Backport more warning fixes for Pidgin and Finch from default
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35967
diff changeset
1670 #else
5dc98ddc6a9a Backport more warning fixes for Pidgin and Finch from default
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35967
diff changeset
1671 (void)folder_set;
5dc98ddc6a9a Backport more warning fixes for Pidgin and Finch from default
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35967
diff changeset
1672 #endif
10673
3177232170c7 [gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents: 10668
diff changeset
1673
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1674 g_signal_connect(G_OBJECT(GTK_FILE_CHOOSER(filesel)), "response",
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1675 G_CALLBACK(file_ok_check_if_exists_cb), data);
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1676
22007
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
1677 pidgin_auto_parent_window(filesel);
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
1678
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1679 data->dialog = filesel;
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1680 gtk_widget_show(filesel);
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1681
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1682 return (void *)data;
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1683 }
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
1684
13283
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1685 static void *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1686 pidgin_request_folder(const char *title, const char *dirname,
13283
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1687 GCallback ok_cb, GCallback cancel_cb,
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16259
diff changeset
1688 PurpleAccount *account, const char *who, PurpleConversation *conv,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1689 void *user_data)
13283
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1690 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1691 PidginRequestData *data;
13283
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1692 GtkWidget *dirsel;
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13536
diff changeset
1693
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1694 data = g_new0(PidginRequestData, 1);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1695 data->type = PURPLE_REQUEST_FOLDER;
13283
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1696 data->user_data = user_data;
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1697 data->cb_count = 2;
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1698 data->cbs = g_new0(GCallback, 2);
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1699 data->cbs[0] = cancel_cb;
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1700 data->cbs[1] = ok_cb;
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1701 data->u.file.savedialog = FALSE;
16686
1ebd9e4ae3f0 Prevent request dialog titles being "pidgin.exe".
Daniel Atallah <datallah@pidgin.im>
parents: 16490
diff changeset
1702
13283
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1703 dirsel = gtk_file_chooser_dialog_new(
13536
345d4ac042f7 [gaim-migrate @ 15912]
Richard Laager <rlaager@pidgin.im>
parents: 13535
diff changeset
1704 title ? title : _("Select Folder..."),
13283
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1705 NULL,
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1706 GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1707 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1708 GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1709 NULL);
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1710 gtk_dialog_set_default_response(GTK_DIALOG(dirsel), GTK_RESPONSE_ACCEPT);
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1711
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1712 if ((dirname != NULL) && (*dirname != '\0'))
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1713 gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dirsel), dirname);
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1714
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1715 g_signal_connect(G_OBJECT(GTK_FILE_CHOOSER(dirsel)), "response",
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1716 G_CALLBACK(file_ok_check_if_exists_cb), data);
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1717
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1718 data->dialog = dirsel;
22007
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
1719 pidgin_auto_parent_window(dirsel);
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
1720
13283
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1721 gtk_widget_show(dirsel);
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1722
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1723 return (void *)data;
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1724 }
89a0621d5d6a [gaim-migrate @ 15648]
Dennis Nezic <dennisn@dennisn.dyndns.org>
parents: 13281
diff changeset
1725
39010
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
1726 #ifdef USE_VV
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1727
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1728 #ifdef HAVE_GIOUNIX
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1729
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1730 static gboolean portal_failed;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1731
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1732 static void screenshare_cancel_cb(GtkWidget *button, PidginRequestData *data);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1733
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1734 static void portal_fallback(PidginRequestData *data)
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1735 {
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1736 purple_debug_info("pidgin", "Fallback from XDP portal screenshare\n");
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1737 portal_failed = TRUE;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1738
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1739 if (data->dialog) {
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1740 pidgin_auto_parent_window(data->dialog);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1741 gtk_widget_show_all(data->dialog);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1742 } else {
40396
8c751a7fa2dd Wayland screenshare review feedback from QuLogic
David Woodhouse <dwmw2@infradead.org>
parents: 40395
diff changeset
1743 screenshare_cancel_cb(NULL, data);
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1744 }
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1745 }
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1746
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1747 static void request_completed_cb(GObject *object, GAsyncResult *res, gpointer _data)
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1748 {
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1749 PidginRequestData *data = _data;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1750 GError *error = NULL;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1751 GDBusMessage *msg = g_dbus_connection_send_message_with_reply_finish(data->u.screenshare.dbus_connection,
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1752 res,
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1753 &error);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1754 if (!msg || g_dbus_message_to_gerror(msg, &error)) {
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1755 /* This is the expected failure mode when XDP screencast isn't available.
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1756 * Don't be too noisy about it; just fall back to direct mode. */
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1757 purple_debug_info("pidgin",
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1758 "ScreenCast call failed: %s\n", error->message);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1759 portal_fallback(data);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1760 }
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1761 }
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1762
40398
f3c12f0656c5 Remove global portal session/request numbers
David Woodhouse <dwmw2@infradead.org>
parents: 40397
diff changeset
1763 static gchar *portal_request_path(PidginRequestData *data, GVariantBuilder *b)
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1764 {
40398
f3c12f0656c5 Remove global portal session/request numbers
David Woodhouse <dwmw2@infradead.org>
parents: 40397
diff changeset
1765 const gchar *bus_name;
f3c12f0656c5 Remove global portal session/request numbers
David Woodhouse <dwmw2@infradead.org>
parents: 40397
diff changeset
1766 gchar *dot, *request_str;
40396
8c751a7fa2dd Wayland screenshare review feedback from QuLogic
David Woodhouse <dwmw2@infradead.org>
parents: 40395
diff changeset
1767 gchar *request_path;
8c751a7fa2dd Wayland screenshare review feedback from QuLogic
David Woodhouse <dwmw2@infradead.org>
parents: 40395
diff changeset
1768
40398
f3c12f0656c5 Remove global portal session/request numbers
David Woodhouse <dwmw2@infradead.org>
parents: 40397
diff changeset
1769 bus_name = g_dbus_connection_get_unique_name(data->u.screenshare.dbus_connection);
f3c12f0656c5 Remove global portal session/request numbers
David Woodhouse <dwmw2@infradead.org>
parents: 40397
diff changeset
1770
f3c12f0656c5 Remove global portal session/request numbers
David Woodhouse <dwmw2@infradead.org>
parents: 40397
diff changeset
1771 request_str = g_strdup_printf("u%u", data->u.screenshare.portal_request_nr++);
40399
ca83fa85f401 Add braces around if() and while() blocks
David Woodhouse <dwmw2@infradead.org>
parents: 40398
diff changeset
1772 if (!request_str) {
40396
8c751a7fa2dd Wayland screenshare review feedback from QuLogic
David Woodhouse <dwmw2@infradead.org>
parents: 40395
diff changeset
1773 return NULL;
40399
ca83fa85f401 Add braces around if() and while() blocks
David Woodhouse <dwmw2@infradead.org>
parents: 40398
diff changeset
1774 }
40396
8c751a7fa2dd Wayland screenshare review feedback from QuLogic
David Woodhouse <dwmw2@infradead.org>
parents: 40395
diff changeset
1775
8c751a7fa2dd Wayland screenshare review feedback from QuLogic
David Woodhouse <dwmw2@infradead.org>
parents: 40395
diff changeset
1776 request_path = g_strdup_printf("/org/freedesktop/portal/desktop/request/%s/%s",
8c751a7fa2dd Wayland screenshare review feedback from QuLogic
David Woodhouse <dwmw2@infradead.org>
parents: 40395
diff changeset
1777 bus_name + 1, request_str);
8c751a7fa2dd Wayland screenshare review feedback from QuLogic
David Woodhouse <dwmw2@infradead.org>
parents: 40395
diff changeset
1778 if (!request_path) {
8c751a7fa2dd Wayland screenshare review feedback from QuLogic
David Woodhouse <dwmw2@infradead.org>
parents: 40395
diff changeset
1779 g_free(request_str);
8c751a7fa2dd Wayland screenshare review feedback from QuLogic
David Woodhouse <dwmw2@infradead.org>
parents: 40395
diff changeset
1780 return NULL;
8c751a7fa2dd Wayland screenshare review feedback from QuLogic
David Woodhouse <dwmw2@infradead.org>
parents: 40395
diff changeset
1781 }
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1782
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1783 g_variant_builder_add(b, "{sv}", "handle_token", g_variant_new_take_string(request_str));
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1784
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1785 dot = request_path;
40399
ca83fa85f401 Add braces around if() and while() blocks
David Woodhouse <dwmw2@infradead.org>
parents: 40398
diff changeset
1786 while ((dot = strchr(dot, '.'))) {
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1787 *dot = '_';
40399
ca83fa85f401 Add braces around if() and while() blocks
David Woodhouse <dwmw2@infradead.org>
parents: 40398
diff changeset
1788 }
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1789
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1790 return request_path;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1791 }
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1792
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1793 static void screen_cast_call(PidginRequestData *data, const gchar *method, const gchar *str_arg,
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1794 GVariantBuilder *opts, GDBusSignalCallback cb)
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1795 {
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1796 GDBusMessage *msg;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1797 GVariantBuilder b;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1798 gchar *request_path;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1799
40396
8c751a7fa2dd Wayland screenshare review feedback from QuLogic
David Woodhouse <dwmw2@infradead.org>
parents: 40395
diff changeset
1800 if (data->u.screenshare.signal_id) {
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1801 g_dbus_connection_signal_unsubscribe(data->u.screenshare.dbus_connection,
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1802 data->u.screenshare.signal_id);
40396
8c751a7fa2dd Wayland screenshare review feedback from QuLogic
David Woodhouse <dwmw2@infradead.org>
parents: 40395
diff changeset
1803 }
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1804
40399
ca83fa85f401 Add braces around if() and while() blocks
David Woodhouse <dwmw2@infradead.org>
parents: 40398
diff changeset
1805 if (!opts) {
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1806 opts = g_variant_builder_new(G_VARIANT_TYPE("a{sv}"));
40399
ca83fa85f401 Add braces around if() and while() blocks
David Woodhouse <dwmw2@infradead.org>
parents: 40398
diff changeset
1807 }
40396
8c751a7fa2dd Wayland screenshare review feedback from QuLogic
David Woodhouse <dwmw2@infradead.org>
parents: 40395
diff changeset
1808
40398
f3c12f0656c5 Remove global portal session/request numbers
David Woodhouse <dwmw2@infradead.org>
parents: 40397
diff changeset
1809 request_path = portal_request_path(data, opts);
40396
8c751a7fa2dd Wayland screenshare review feedback from QuLogic
David Woodhouse <dwmw2@infradead.org>
parents: 40395
diff changeset
1810 if (!request_path) {
8c751a7fa2dd Wayland screenshare review feedback from QuLogic
David Woodhouse <dwmw2@infradead.org>
parents: 40395
diff changeset
1811 g_variant_builder_unref(opts);
8c751a7fa2dd Wayland screenshare review feedback from QuLogic
David Woodhouse <dwmw2@infradead.org>
parents: 40395
diff changeset
1812 purple_notify_error(NULL, _("Screen share error"),
8c751a7fa2dd Wayland screenshare review feedback from QuLogic
David Woodhouse <dwmw2@infradead.org>
parents: 40395
diff changeset
1813 _("Error creating screencast request"), NULL);
8c751a7fa2dd Wayland screenshare review feedback from QuLogic
David Woodhouse <dwmw2@infradead.org>
parents: 40395
diff changeset
1814 screenshare_cancel_cb(NULL, data);
8c751a7fa2dd Wayland screenshare review feedback from QuLogic
David Woodhouse <dwmw2@infradead.org>
parents: 40395
diff changeset
1815 }
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1816
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1817 data->u.screenshare.signal_id = g_dbus_connection_signal_subscribe(data->u.screenshare.dbus_connection,
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1818 "org.freedesktop.portal.Desktop",
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1819 "org.freedesktop.portal.Request",
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1820 "Response", request_path, NULL, 0,
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1821 cb, data, NULL);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1822 g_free(request_path);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1823
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1824 msg = g_dbus_message_new_method_call("org.freedesktop.portal.Desktop",
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1825 "/org/freedesktop/portal/desktop",
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1826 "org.freedesktop.portal.ScreenCast",
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1827 method);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1828
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1829 g_variant_builder_init(&b, G_VARIANT_TYPE_TUPLE);
40399
ca83fa85f401 Add braces around if() and while() blocks
David Woodhouse <dwmw2@infradead.org>
parents: 40398
diff changeset
1830 if (data->u.screenshare.session_path) {
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1831 g_variant_builder_add(&b, "o", data->u.screenshare.session_path);
40399
ca83fa85f401 Add braces around if() and while() blocks
David Woodhouse <dwmw2@infradead.org>
parents: 40398
diff changeset
1832 }
ca83fa85f401 Add braces around if() and while() blocks
David Woodhouse <dwmw2@infradead.org>
parents: 40398
diff changeset
1833 if (str_arg) {
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1834 g_variant_builder_add(&b, "s", str_arg);
40399
ca83fa85f401 Add braces around if() and while() blocks
David Woodhouse <dwmw2@infradead.org>
parents: 40398
diff changeset
1835 }
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1836 g_variant_builder_add(&b, "a{sv}", opts);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1837
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1838 g_dbus_message_set_body(msg, g_variant_builder_end(&b));
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1839
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1840 g_dbus_connection_send_message_with_reply(data->u.screenshare.dbus_connection, msg,
40395
87d96850a2d7 Increase timeout for initial XDP portal session to 2s
David Woodhouse <dwmw2@infradead.org>
parents: 40394
diff changeset
1841 0, 2000, NULL, NULL, request_completed_cb, data);
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1842 }
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1843
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1844 static GstElement *create_pipewiresrc_cb(PurpleMedia *media, const gchar *session_id,
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1845 const gchar *participant)
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1846 {
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1847 GstElement *ret;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1848 GObject *info;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1849 gchar *node_id;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1850
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1851 info = g_object_get_data(G_OBJECT(media), "src-element");
40399
ca83fa85f401 Add braces around if() and while() blocks
David Woodhouse <dwmw2@infradead.org>
parents: 40398
diff changeset
1852 if (!info) {
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1853 return NULL;
40399
ca83fa85f401 Add braces around if() and while() blocks
David Woodhouse <dwmw2@infradead.org>
parents: 40398
diff changeset
1854 }
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1855
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1856 ret = gst_element_factory_make("pipewiresrc", NULL);
40399
ca83fa85f401 Add braces around if() and while() blocks
David Woodhouse <dwmw2@infradead.org>
parents: 40398
diff changeset
1857 if (ret == NULL) {
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1858 return NULL;
40399
ca83fa85f401 Add braces around if() and while() blocks
David Woodhouse <dwmw2@infradead.org>
parents: 40398
diff changeset
1859 }
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1860
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1861 /* Take the node-id and fd from the PurpleMediaElementInfo
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1862 * and apply them to the pipewiresrc */
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1863 node_id = g_strdup_printf("%u",
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1864 GPOINTER_TO_UINT(g_object_get_data(info, "node-id")));
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1865 g_object_set(ret,"path", node_id, "do-timestamp", TRUE,
40397
bf800190c67e File descriptors are 'int' not unsigned
David Woodhouse <dwmw2@infradead.org>
parents: 40396
diff changeset
1866 "fd", GPOINTER_TO_INT(g_object_get_data(info, "fd")),
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1867 NULL);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1868 g_free(node_id);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1869
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1870 return ret;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1871 }
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1872
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1873 static void close_pipewire_fd(gpointer _fd)
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1874 {
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1875 int fd = GPOINTER_TO_INT(_fd);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1876
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1877 close(fd);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1878 }
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1879
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1880 static void pipewire_fd_cb(GObject *object, GAsyncResult *res, gpointer _data)
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1881 {
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1882 PidginRequestData *data = _data;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1883 GError *error = NULL;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1884 GUnixFDList *l;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1885 int pipewire_fd;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1886 GDBusMessage *msg = g_dbus_connection_send_message_with_reply_finish(data->u.screenshare.dbus_connection,
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1887 res,
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1888 &error);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1889 if (!msg || g_dbus_message_to_gerror(msg, &error)) {
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1890 purple_debug_info("pidgin", "OpenPipeWireRemote request failed: %s\n", error->message);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1891 purple_notify_error(NULL, _("Screen share error"),
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1892 _("OpenPipeWireRemote request failed"), error->message);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1893 g_clear_error(&error);
40396
8c751a7fa2dd Wayland screenshare review feedback from QuLogic
David Woodhouse <dwmw2@infradead.org>
parents: 40395
diff changeset
1894 screenshare_cancel_cb(NULL, data);
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1895 return;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1896 }
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1897 l = g_dbus_message_get_unix_fd_list(msg);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1898 if (!l) {
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1899 purple_debug_info("pidgin", "OpenPipeWireRemote request failed to yield a file descriptor\n");
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1900 purple_notify_error(NULL, _("Screen share error"), _("OpenPipeWireRemote request failed"),
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1901 _("No file descriptor found"));
40396
8c751a7fa2dd Wayland screenshare review feedback from QuLogic
David Woodhouse <dwmw2@infradead.org>
parents: 40395
diff changeset
1902 screenshare_cancel_cb(NULL, data);
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1903 return;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1904 }
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1905 pipewire_fd = g_unix_fd_list_get(l, 0, NULL);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1906
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1907 if (data->cbs[0] != NULL) {
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1908 GObject *info;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1909 info = g_object_new(PURPLE_TYPE_MEDIA_ELEMENT_INFO,
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1910 "id", "screenshare-window",
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1911 "name", "Screen share single window",
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1912 "type", PURPLE_MEDIA_ELEMENT_VIDEO | PURPLE_MEDIA_ELEMENT_SRC |
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1913 PURPLE_MEDIA_ELEMENT_ONE_SRC,
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1914 "create-cb", create_pipewiresrc_cb, NULL);
40397
bf800190c67e File descriptors are 'int' not unsigned
David Woodhouse <dwmw2@infradead.org>
parents: 40396
diff changeset
1915 g_object_set_data_full(info, "fd", GINT_TO_POINTER(pipewire_fd), close_pipewire_fd);
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1916 g_object_set_data(info, "node-id", GUINT_TO_POINTER(data->u.screenshare.node_id));
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1917 /* When the DBus connection closes, the session ends. So keep it attached
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1918 to the PurpleMediaElementInfo, which in turn should be attached to
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1919 the owning PurpleMedia for the lifetime of the session. */
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1920 g_object_set_data_full(info, "dbus-connection",
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1921 g_object_ref(data->u.screenshare.dbus_connection),
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1922 g_object_unref);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1923 ((PurpleRequestScreenshareCb)data->cbs[0])(data->user_data, info);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1924 }
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1925
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1926 purple_request_close(PURPLE_REQUEST_SCREENSHARE, data);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1927 }
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1928
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1929
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1930 static void get_pipewire_fd(PidginRequestData *data)
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1931 {
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1932 GDBusMessage *msg;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1933 GVariant *args;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1934
40399
ca83fa85f401 Add braces around if() and while() blocks
David Woodhouse <dwmw2@infradead.org>
parents: 40398
diff changeset
1935 if (data->u.screenshare.signal_id) {
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1936 g_dbus_connection_signal_unsubscribe(data->u.screenshare.dbus_connection,
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1937 data->u.screenshare.signal_id);
40399
ca83fa85f401 Add braces around if() and while() blocks
David Woodhouse <dwmw2@infradead.org>
parents: 40398
diff changeset
1938 }
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1939 data->u.screenshare.signal_id = 0;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1940
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1941 msg = g_dbus_message_new_method_call("org.freedesktop.portal.Desktop",
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1942 "/org/freedesktop/portal/desktop",
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1943 "org.freedesktop.portal.ScreenCast",
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1944 "OpenPipeWireRemote");
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1945
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1946 args = g_variant_new("(oa{sv})", data->u.screenshare.session_path, NULL);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1947 g_dbus_message_set_body(msg, args);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1948
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1949 g_dbus_connection_send_message_with_reply(data->u.screenshare.dbus_connection, msg,
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1950 0, 200, NULL, NULL, pipewire_fd_cb, data);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1951 }
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1952
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1953 static void started_cb(GDBusConnection *dc, const gchar *sender_name,
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1954 const gchar *object_path, const gchar *interface_name,
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1955 const gchar *signal_name, GVariant *params, gpointer _data)
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1956 {
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1957 PidginRequestData *data = _data;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1958 GVariant *args, *streams;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1959 guint code;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1960
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1961 g_variant_get(params, "(u@a{sv})", &code, &args);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1962 if (code || !g_variant_lookup(args, "streams", "@a(ua{sv})", &streams) ||
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1963 g_variant_n_children(streams) != 1) {
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1964 purple_debug_info("pidgin", "Screencast Start call returned %d\n", code);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1965 purple_notify_error(NULL, _("Screen share error"),
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1966 _("Screencast \"Start\" failed"), NULL);
40396
8c751a7fa2dd Wayland screenshare review feedback from QuLogic
David Woodhouse <dwmw2@infradead.org>
parents: 40395
diff changeset
1967 screenshare_cancel_cb(NULL, data);
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1968 return;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1969 }
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1970
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1971 g_variant_get_child(streams, 0, "(u@a{sv})", &data->u.screenshare.node_id, NULL);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1972
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1973 get_pipewire_fd(data);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1974 }
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1975
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1976 static void source_selected_cb(GDBusConnection *dc, const gchar *sender_name,
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1977 const gchar *object_path, const gchar *interface_name,
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1978 const gchar *signal_name, GVariant *params, gpointer _data)
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1979 {
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1980 PidginRequestData *data = _data;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1981 guint code;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1982
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1983 g_variant_get(params, "(u@a{sv})", &code, NULL);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1984 if (code) {
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1985 purple_debug_info("pidgin", "Screencast SelectSources call returned %d\n", code);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1986 purple_notify_error(NULL, _("Screen share error"),
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1987 _("Screencast \"SelectSources\" failed"), NULL);
40396
8c751a7fa2dd Wayland screenshare review feedback from QuLogic
David Woodhouse <dwmw2@infradead.org>
parents: 40395
diff changeset
1988 screenshare_cancel_cb(NULL, data);
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1989 return;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1990 }
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1991
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1992 screen_cast_call(data, "Start", "", NULL, started_cb);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1993 }
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1994
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1995 static void sess_created_cb(GDBusConnection *dc, const gchar *sender_name,
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1996 const gchar *object_path, const gchar *interface_name,
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1997 const gchar *signal_name, GVariant *params, gpointer _data)
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1998 {
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
1999 PidginRequestData *data = _data;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2000 GVariantBuilder opts;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2001 GVariant *args;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2002 guint code;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2003
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2004 g_variant_get(params, "(u@a{sv})", &code, &args);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2005 if (code || !g_variant_lookup(args, "session_handle", "s",
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2006 &data->u.screenshare.session_path)) {
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2007 purple_debug_info("pidgin", "Screencast CreateSession call returned %d\n", code);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2008 purple_notify_error(NULL, _("Screen share error"),
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2009 _("Screencast \"CreateSession\" failed."), NULL);
40396
8c751a7fa2dd Wayland screenshare review feedback from QuLogic
David Woodhouse <dwmw2@infradead.org>
parents: 40395
diff changeset
2010 screenshare_cancel_cb(NULL, data);
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2011 return;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2012 }
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2013
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2014 g_variant_builder_init(&opts, G_VARIANT_TYPE("a{sv}"));
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2015 g_variant_builder_add(&opts, "{sv}", "multiple", g_variant_new_boolean(FALSE));
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2016 g_variant_builder_add(&opts, "{sv}", "types", g_variant_new_uint32(3));
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2017
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2018 screen_cast_call(data, "SelectSources", NULL, &opts, source_selected_cb);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2019 }
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2020
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2021 static void portal_conn_cb(GObject *object, GAsyncResult *res, gpointer _data)
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2022 {
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2023 PidginRequestData *data = _data;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2024 GVariantBuilder opts;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2025 GError *error = NULL;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2026 gchar *session_token;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2027
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2028 data->u.screenshare.dbus_connection = g_dbus_connection_new_for_address_finish(res, &error);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2029 if (!data->u.screenshare.dbus_connection) {
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2030 purple_debug_info("pidgin", "Connection to XDP portal failed: %s\n", error->message);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2031 portal_fallback(data);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2032 return;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2033 }
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2034
40398
f3c12f0656c5 Remove global portal session/request numbers
David Woodhouse <dwmw2@infradead.org>
parents: 40397
diff changeset
2035 session_token = g_strdup_printf("u%u", data->u.screenshare.portal_session_nr++);
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2036
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2037 g_variant_builder_init(&opts, G_VARIANT_TYPE("a{sv}"));
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2038 g_variant_builder_add(&opts, "{sv}", "session_handle_token",
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2039 g_variant_new_take_string(session_token));
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2040
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2041 screen_cast_call(data, "CreateSession", NULL, &opts, sess_created_cb);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2042 }
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2043
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2044 static gboolean request_xdp_portal_screenshare(PidginRequestData *data)
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2045 {
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2046 gchar *addr;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2047
40399
ca83fa85f401 Add braces around if() and while() blocks
David Woodhouse <dwmw2@infradead.org>
parents: 40398
diff changeset
2048 if (portal_failed) {
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2049 return FALSE;
40399
ca83fa85f401 Add braces around if() and while() blocks
David Woodhouse <dwmw2@infradead.org>
parents: 40398
diff changeset
2050 }
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2051
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2052 data->u.screenshare.cancellable = g_cancellable_new();
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2053
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2054 /* We create a new connection instead of using g_bus_get() because it
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2055 * makes cleanup a *lot* easier. Just kill the connection. */
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2056 addr = g_dbus_address_get_for_bus_sync(G_BUS_TYPE_SESSION, NULL, NULL);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2057 if (!addr) {
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2058 portal_failed = TRUE;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2059 return FALSE;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2060 }
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2061
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2062 g_dbus_connection_new_for_address(addr,
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2063 G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION |
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2064 G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT, NULL,
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2065 data->u.screenshare.cancellable, portal_conn_cb, data);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2066 g_free(addr);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2067 return TRUE;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2068 }
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2069
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2070 #endif
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2071
39010
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2072 static GstElement *create_screensrc_cb(PurpleMedia *media, const gchar *session_id,
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2073 const gchar *participant);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2074
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2075 #ifdef HAVE_X11
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2076 static gboolean
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2077 grab_event (GtkWidget *child, GdkEvent *event, PidginRequestData *data)
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2078 {
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2079 GdkScreen *screen = gdk_screen_get_default();
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2080 GObject *info;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2081 GdkWindow *gdkroot = gdk_get_default_root_window();
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2082 Window xroot = GDK_WINDOW_XID(gdkroot), xwindow, parent, *children;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2083 unsigned int nchildren, xmask;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2084 Display *xdisplay = GDK_SCREEN_XDISPLAY(screen);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2085 int rootx, rooty, winx, winy;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2086
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2087 if (event->type != GDK_BUTTON_PRESS)
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2088 return FALSE;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2089
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2090 XQueryPointer(xdisplay, xroot, &xroot, &xwindow, &rootx, &rooty, &winx, &winy, &xmask);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2091
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2092 gdk_pointer_ungrab(GDK_CURRENT_TIME);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2093
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2094 /* Find WM window (direct child of root) */
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2095 while (1) {
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2096 if (!XQueryTree(xdisplay, xwindow, &xroot, &parent, &children, &nchildren))
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2097 break;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2098
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2099 if (nchildren)
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2100 XFree(children);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2101
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2102 if (xroot == parent)
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2103 break;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2104
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2105 xwindow = parent;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2106 }
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2107
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2108 generic_response_start(data);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2109
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2110 if (data->cbs[0] != NULL) {
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2111 info = g_object_new(PURPLE_TYPE_MEDIA_ELEMENT_INFO,
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2112 "id", "screenshare-window",
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2113 "name", "Screen share single window",
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2114 "type", PURPLE_MEDIA_ELEMENT_VIDEO | PURPLE_MEDIA_ELEMENT_SRC |
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2115 PURPLE_MEDIA_ELEMENT_ONE_SRC,
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2116 "create-cb", create_screensrc_cb, NULL);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2117 g_object_set_data(info, "window-id", GUINT_TO_POINTER(xwindow));
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2118 ((PurpleRequestScreenshareCb)data->cbs[0])(data->user_data, info);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2119 }
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2120
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2121 purple_request_close(PURPLE_REQUEST_SCREENSHARE, data);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2122
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2123 return FALSE;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2124 }
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2125
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2126 static void
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2127 screenshare_window_cb(GtkWidget *button, PidginRequestData *data)
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2128 {
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2129 GdkCursor *cursor;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2130 GdkWindow *gdkwin = gtk_widget_get_window(GTK_WIDGET(data->dialog));
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2131
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2132 if (!GTK_WIDGET_HAS_FOCUS(button))
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2133 gtk_widget_grab_focus(button);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2134
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2135 gtk_widget_add_events(GTK_WIDGET(data->dialog),
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2136 GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2137 g_signal_connect(data->dialog, "event", G_CALLBACK(grab_event), data);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2138
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2139 cursor = gdk_cursor_new(GDK_CROSSHAIR);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2140 gdk_pointer_grab(gdkwin, FALSE,
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2141 GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK,
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2142 NULL, cursor, GDK_CURRENT_TIME);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2143 }
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2144
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2145 static GstElement *create_screensrc_cb(PurpleMedia *media, const gchar *session_id,
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2146 const gchar *participant)
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2147 {
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2148 GObject *info;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2149 GstElement *ret;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2150
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2151 ret = gst_element_factory_make("ximagesrc", NULL);
39011
a2b3cc337c5e screenshare: check for failure to create src elements
David Woodhouse <dwmw2@infradead.org>
parents: 39010
diff changeset
2152 if (ret == NULL)
a2b3cc337c5e screenshare: check for failure to create src elements
David Woodhouse <dwmw2@infradead.org>
parents: 39010
diff changeset
2153 return NULL;
a2b3cc337c5e screenshare: check for failure to create src elements
David Woodhouse <dwmw2@infradead.org>
parents: 39010
diff changeset
2154
39010
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2155 g_object_set(ret, "use-damage", 0, NULL);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2156
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2157 info = g_object_get_data(G_OBJECT(media), "src-element");
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2158 if (info) {
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2159 Window xid = GPOINTER_TO_UINT(g_object_get_data(info, "window-id"));
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2160 int monitor_no = GPOINTER_TO_INT(g_object_get_data(info, "monitor-no"));
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2161 if (xid) {
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2162 g_object_set(ret, "xid", xid, NULL);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2163 } else if (monitor_no >= 0) {
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2164 GdkScreen *screen = gdk_screen_get_default();
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2165 GdkRectangle geom;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2166
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2167 gdk_screen_get_monitor_geometry(screen, monitor_no, &geom);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2168 g_object_set(ret, "startx", geom.x, "starty", geom.y,
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2169 "endx", geom.x + geom.width - 1,
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2170 "endy", geom.y + geom.height - 1, NULL);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2171 }
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2172 }
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2173
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2174 return ret;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2175 }
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2176 #elif defined (_WIN32)
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2177 static GstElement *create_screensrc_cb(PPurpleMedia *media, const gchar *session_id,
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2178 const gchar *participant)
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2179 {
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2180 GObject *info;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2181 GstElement *ret;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2182
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2183 ret = gst_element_factory_make("gdiscreencapsrc", NULL);
39011
a2b3cc337c5e screenshare: check for failure to create src elements
David Woodhouse <dwmw2@infradead.org>
parents: 39010
diff changeset
2184 if (ret == NULL)
a2b3cc337c5e screenshare: check for failure to create src elements
David Woodhouse <dwmw2@infradead.org>
parents: 39010
diff changeset
2185 return NULL;
a2b3cc337c5e screenshare: check for failure to create src elements
David Woodhouse <dwmw2@infradead.org>
parents: 39010
diff changeset
2186
39010
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2187 g_object_set(ret, "cursor", TRUE);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2188
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2189 info = g_object_get_data(G_OBJECT(media), "src-element");
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2190 if (info) {
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2191 int monitor_no = GPOINTER_TO_INT(g_object_get_data(info, "monitor-no"));
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2192 if (monitor_no >= 0)
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2193 g_object_set(ret, "monitor", monitor_no);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2194 }
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2195
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2196 return ret;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2197 }
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2198 #else
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2199 /* We don't actually need to break the build just because we can't do
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2200 * screencap, but gtkmedia.c is going to break the USE_VV build if it
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2201 * isn't WIN32 or X11 anyway, so we might as well. */
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2202 #error "Unsupported windowing system"
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2203 #endif
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2204
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2205 static void
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2206 screenshare_monitor_cb(GtkWidget *button, PidginRequestData *data)
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2207 {
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2208 GtkWidget *radio;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2209 GObject *info;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2210 int monitor_no = -1;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2211
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2212 generic_response_start(data);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2213
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2214 if (!GTK_WIDGET_HAS_FOCUS(button))
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2215 gtk_widget_grab_focus(button);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2216
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2217 radio = g_object_get_data(G_OBJECT(data->dialog), "radio");
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2218 if (radio) {
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2219 GSList *group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radio));
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2220
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2221 while (group) {
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2222 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(group->data))) {
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2223 monitor_no = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(group->data),
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2224 "monitor-no"));
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2225 break;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2226 }
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2227 group = group->next;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2228 }
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2229 }
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2230 if (data->cbs[0] != NULL) {
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2231 info = g_object_new(PURPLE_TYPE_MEDIA_ELEMENT_INFO,
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2232 "id", "screenshare-monitor",
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2233 "name", "Screen share monitor",
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2234 "type", PURPLE_MEDIA_ELEMENT_VIDEO | PURPLE_MEDIA_ELEMENT_SRC |
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2235 PURPLE_MEDIA_ELEMENT_ONE_SRC,
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2236 "create-cb", create_screensrc_cb, NULL);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2237 g_object_set_data(info, "monitor-no", GINT_TO_POINTER(monitor_no));
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2238 ((PurpleRequestScreenshareCb)data->cbs[0])(data->user_data, info);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2239 }
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2240
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2241 purple_request_close(PURPLE_REQUEST_SCREENSHARE, data);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2242 }
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2243
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2244 static GstElement *create_videotest_cb(PurpleMedia *media, const gchar *session_id,
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2245 const gchar *participant)
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2246 {
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2247 return gst_element_factory_make("videotestsrc", NULL);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2248 }
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2249
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2250 static void
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2251 screenshare_videotest_cb(GtkWidget *button, PidginRequestData *data)
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2252 {
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2253 GObject *info;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2254
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2255 generic_response_start(data);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2256
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2257 if (!GTK_WIDGET_HAS_FOCUS(button))
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2258 gtk_widget_grab_focus(button);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2259
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2260 if (data->cbs[0] != NULL) {
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2261 info = g_object_new(PURPLE_TYPE_MEDIA_ELEMENT_INFO,
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2262 "id", "screenshare-videotestsrc",
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2263 "name", "Screen share test source",
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2264 "type", PURPLE_MEDIA_ELEMENT_VIDEO | PURPLE_MEDIA_ELEMENT_SRC |
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2265 PURPLE_MEDIA_ELEMENT_ONE_SRC,
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2266 "create-cb", create_videotest_cb, NULL);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2267 ((PurpleRequestScreenshareCb)data->cbs[0])(data->user_data, info);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2268 }
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2269
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2270 purple_request_close(PURPLE_REQUEST_SCREENSHARE, data);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2271 }
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2272
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2273 static void
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2274 screenshare_cancel_cb(GtkWidget *button, PidginRequestData *data)
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2275 {
40399
ca83fa85f401 Add braces around if() and while() blocks
David Woodhouse <dwmw2@infradead.org>
parents: 40398
diff changeset
2276 if (data->dialog) {
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2277 generic_response_start(data);
40399
ca83fa85f401 Add braces around if() and while() blocks
David Woodhouse <dwmw2@infradead.org>
parents: 40398
diff changeset
2278 }
39010
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2279
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2280 if (data->cbs[0] != NULL)
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2281 ((PurpleRequestScreenshareCb)data->cbs[0])(data->user_data, NULL);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2282
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2283 purple_request_close(PURPLE_REQUEST_SCREENSHARE, data);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2284 }
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2285
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2286 static gboolean
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2287 destroy_screenshare_cb(GtkWidget *dialog, GdkEvent *event,
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2288 PidginRequestData *data)
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2289 {
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2290 screenshare_cancel_cb(NULL, data);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2291 return FALSE;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2292 }
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2293
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2294 static void *pidgin_request_screenshare_media(const char *title, const char *primary,
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2295 const char *secondary, PurpleAccount *account,
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2296 GCallback cb, void *user_data)
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2297 {
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2298 PidginRequestData *data;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2299 GtkWidget *dialog;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2300 GtkWidget *vbox;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2301 GtkWidget *hbox;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2302 GtkWidget *label;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2303 GtkWidget *button;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2304 GtkWidget *radio = NULL;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2305 GdkScreen *screen;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2306 char *label_text;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2307 char *primary_esc, *secondary_esc;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2308
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2309 data = g_new0(PidginRequestData, 1);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2310 data->type = PURPLE_REQUEST_SCREENSHARE;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2311 data->user_data = user_data;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2312
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2313 data->cb_count = 1;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2314 data->cbs = g_new0(GCallback, 1);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2315 data->cbs[0] = cb;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2316
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2317 /* Create the dialog. */
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2318 data->dialog = dialog = gtk_dialog_new();
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2319
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2320 if (title != NULL)
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2321 gtk_window_set_title(GTK_WINDOW(dialog), title);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2322 #ifdef _WIN32
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2323 else
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2324 gtk_window_set_title(GTK_WINDOW(dialog), PIDGIN_ALERT_TITLE);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2325 #endif
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2326
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2327 button = pidgin_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_CANCEL,
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2328 G_CALLBACK(screenshare_cancel_cb), data);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2329 GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2330
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2331 if (g_getenv("PIDGIN_SHARE_VIDEOTEST") != NULL) {
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2332 button = pidgin_dialog_add_button(GTK_DIALOG(dialog), _("Test image"),
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2333 G_CALLBACK(screenshare_videotest_cb), data);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2334 GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2335 gtk_window_set_default(GTK_WINDOW(dialog), button);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2336 }
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2337
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2338 #ifdef HAVE_X11
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2339 button = pidgin_dialog_add_button(GTK_DIALOG(dialog), _("Select window"),
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2340 G_CALLBACK(screenshare_window_cb), data);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2341 GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2342 gtk_window_set_default(GTK_WINDOW(dialog), button);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2343 #endif
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2344
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2345 button = pidgin_dialog_add_button(GTK_DIALOG(dialog), _("Use monitor"),
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2346 G_CALLBACK(screenshare_monitor_cb), data);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2347 GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2348 gtk_window_set_default(GTK_WINDOW(dialog), button);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2349
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2350 g_signal_connect(G_OBJECT(dialog), "delete_event",
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2351 G_CALLBACK(destroy_screenshare_cb), data);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2352
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2353 /* Setup the dialog */
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2354 gtk_container_set_border_width(GTK_CONTAINER(dialog), PIDGIN_HIG_BORDER/2);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2355 gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), PIDGIN_HIG_BORDER/2);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2356 gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2357 gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2358 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog)->vbox), PIDGIN_HIG_BORDER);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2359
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2360 /* Setup the main horizontal box */
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2361 hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2362 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), hbox);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2363
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2364
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2365 /* Vertical box */
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2366 vbox = gtk_vbox_new(FALSE, PIDGIN_HIG_BORDER);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2367 gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2368
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2369 pidgin_widget_decorate_account(hbox, account);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2370
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2371 /* Descriptive label */
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2372 primary_esc = (primary != NULL) ? g_markup_escape_text(primary, -1) : NULL;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2373 secondary_esc = (secondary != NULL) ? g_markup_escape_text(secondary, -1) : NULL;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2374 label_text = g_strdup_printf((primary ? "<span weight=\"bold\" size=\"larger\">"
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2375 "%s</span>%s%s" : "%s%s%s"),
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2376 (primary ? primary_esc : ""),
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2377 ((primary && secondary) ? "\n\n" : ""),
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2378 (secondary ? secondary_esc : ""));
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2379 g_free(primary_esc);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2380 g_free(secondary_esc);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2381
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2382 label = gtk_label_new(NULL);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2383
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2384 gtk_label_set_markup(GTK_LABEL(label), label_text);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2385 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2386 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2387 gtk_label_set_selectable(GTK_LABEL(label), TRUE);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2388 gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2389
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2390 g_free(label_text);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2391
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2392 screen = gdk_screen_get_default();
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2393 if (screen) {
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2394 int nr_monitors = gdk_screen_get_n_monitors(screen);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2395 int primary = gdk_screen_get_primary_monitor(screen);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2396 int i;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2397
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2398 for (i = 0; i < nr_monitors; i++) {
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2399 GdkRectangle geom;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2400 gchar *name;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2401 gchar *label;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2402
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2403 name = gdk_screen_get_monitor_plug_name(screen, i);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2404 gdk_screen_get_monitor_geometry(screen, i, &geom);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2405
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2406 label = g_strdup_printf(_("%s (%d✕%d @ %d,%d)"),
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2407 name ? name : _("Unknown output"),
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2408 geom.width, geom.height,
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2409 geom.x, geom.y);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2410 radio = gtk_radio_button_new_with_label_from_widget((GtkRadioButton *)radio, label);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2411 g_object_set_data(G_OBJECT(radio), "monitor-no", GINT_TO_POINTER(i));
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2412 gtk_box_pack_start(GTK_BOX(vbox), radio, FALSE, FALSE, 0);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2413 if (i == primary)
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2414 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio), TRUE);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2415
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2416 g_free(label);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2417 g_free(name);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2418 }
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2419 g_object_set_data(G_OBJECT(dialog), "radio", radio);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2420 }
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2421
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2422 #ifdef HAVE_GIOUNIX
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2423 /*
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2424 * We create the dialog for direct x11/win share here anyway, because
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2425 * it's simpler than storing everything we need to create it, including
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2426 * the PurpleAccount which we can't just take a ref on because it isn't
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2427 * just a GObject yet. On fallback, the dialog can be used immediately.
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2428 */
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2429 if (request_xdp_portal_screenshare(data)) {
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2430 purple_debug_info("pidgin", "Attempt XDP portal screenshare\n");
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2431 return data;
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2432 }
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2433 #endif
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2434
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2435 purple_debug_info("pidgin", "Using direct screenshare\n");
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2436
39010
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2437 /* Show everything. */
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2438 pidgin_auto_parent_window(dialog);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2439
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2440 gtk_widget_show_all(dialog);
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2441
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2442 return data;
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2443
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2444 }
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2445 #endif /* USE_VV */
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2446
9502
d43f69354213 [gaim-migrate @ 10329]
Mark Doliner <markdoliner@pidgin.im>
parents: 9005
diff changeset
2447 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2448 pidgin_close_request(PurpleRequestType type, void *ui_handle)
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2449 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
2450 PidginRequestData *data = (PidginRequestData *)ui_handle;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2451
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13536
diff changeset
2452 g_free(data->cbs);
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2453
40399
ca83fa85f401 Add braces around if() and while() blocks
David Woodhouse <dwmw2@infradead.org>
parents: 40398
diff changeset
2454 if (data->dialog) {
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2455 gtk_widget_destroy(data->dialog);
40399
ca83fa85f401 Add braces around if() and while() blocks
David Woodhouse <dwmw2@infradead.org>
parents: 40398
diff changeset
2456 }
ca83fa85f401 Add braces around if() and while() blocks
David Woodhouse <dwmw2@infradead.org>
parents: 40398
diff changeset
2457
ca83fa85f401 Add braces around if() and while() blocks
David Woodhouse <dwmw2@infradead.org>
parents: 40398
diff changeset
2458 if (type == PURPLE_REQUEST_FIELDS) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2459 purple_request_fields_destroy(data->u.multifield.fields);
40399
ca83fa85f401 Add braces around if() and while() blocks
David Woodhouse <dwmw2@infradead.org>
parents: 40398
diff changeset
2460 } else if (type == PURPLE_REQUEST_FILE) {
9513
ec57f8faed31 [gaim-migrate @ 10340]
Mark Doliner <markdoliner@pidgin.im>
parents: 9506
diff changeset
2461 g_free(data->u.file.name);
40399
ca83fa85f401 Add braces around if() and while() blocks
David Woodhouse <dwmw2@infradead.org>
parents: 40398
diff changeset
2462 } else if (type == PURPLE_REQUEST_SCREENSHARE) {
40394
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2463 #ifdef HAVE_GIOUNIX
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2464 g_cancellable_cancel(data->u.screenshare.cancellable);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2465 if (data->u.screenshare.signal_id)
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2466 g_dbus_connection_signal_unsubscribe(data->u.screenshare.dbus_connection,
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2467 data->u.screenshare.signal_id);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2468 g_clear_object(&data->u.screenshare.dbus_connection);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2469 g_free(data->u.screenshare.session_path);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2470 g_clear_object(&data->u.screenshare.cancellable);
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2471 #endif
3c8f61de927c screenshare: Add XDP portal ScreenCast support
David Woodhouse <dwmw2@infradead.org>
parents: 39011
diff changeset
2472 }
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
2473
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2474 g_free(data);
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2475 }
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2476
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2477 static PurpleRequestUiOps ops =
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2478 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
2479 pidgin_request_input,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
2480 pidgin_request_choice,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
2481 pidgin_request_action,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
2482 pidgin_request_fields,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
2483 pidgin_request_file,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
2484 pidgin_close_request,
16752
e6bcb1628c57 Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 16718
diff changeset
2485 pidgin_request_folder,
27427
00f91afbd4d9 Show thumbnail in ft request dialog
Marcus Lundblad <malu@pidgin.im>
parents: 25900
diff changeset
2486 pidgin_request_action_with_icon,
39010
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2487 #ifdef USE_VV
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2488 pidgin_request_screenshare_media,
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2489 #else
16752
e6bcb1628c57 Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 16718
diff changeset
2490 NULL,
39010
fbce915a7024 Outbound screenshare window/monitor selection
David Woodhouse <dwmw2@infradead.org>
parents: 38266
diff changeset
2491 #endif
16752
e6bcb1628c57 Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 16718
diff changeset
2492 NULL,
e6bcb1628c57 Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 16718
diff changeset
2493 NULL
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2494 };
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2495
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2496 PurpleRequestUiOps *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
2497 pidgin_request_get_ui_ops(void)
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2498 {
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2499 return &ops;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2500 }

mercurial