pidgin/gtkrequest.c

Wed, 01 Jan 2025 15:37:20 -0600

author
Gary Kramlich <grim@reaperworld.com>
date
Wed, 01 Jan 2025 15:37:20 -0600
changeset 43121
3d448c75d39a
parent 42979
d9f973ac3afd
child 43295
28b187312791
permissions
-rw-r--r--

Added tag v2.90.1 for changeset a7fd7e06c486

20147
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 20081
diff changeset
1 /* pidgin
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2 *
15931
716b5fac1895 Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
3 * 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
4 * 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
5 * source distribution.
7035
76bca80cd91d [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
6 *
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
7 * This program is free software; you can redistribute it and/or modify
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
8 * 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
9 * the Free Software Foundation; either version 2 of the License, or
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
10 * (at your option) any later version.
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
11 *
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
12 * This program is distributed in the hope that it will be useful,
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
15 * GNU General Public License for more details.
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 * You should have received a copy of the GNU General Public License
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
18 * 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
19 * 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
20 */
39243
24db7140b77d Start of moving GtkRequest to Talkatu, but there's some weirdness going on yet
Gary Kramlich <grim@reaperworld.com>
parents: 39149
diff changeset
21
40439
e9838d634d5e Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents: 40350
diff changeset
22 #include <glib/gi18n-lib.h>
e9838d634d5e Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents: 40350
diff changeset
23
40350
72271baf92bc Split PurpleKeyValuePair out to it's own file and try to do some cleanup in the files that need to include it.
Gary Kramlich <grim@reaperworld.com>
parents: 40333
diff changeset
24 #include <purple.h>
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5846
diff changeset
25
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
26 #include "gtkrequest.h"
42166
6b2ba7253a36 Use PidginAccountDisplay in the request dialogs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42160
diff changeset
27 #include "pidginaccountdisplay.h"
40534
8dad2981fb86 Separate the AccountChooser from its model and move options to filters
Gary Kramlich <grim@reaperworld.com>
parents: 40533
diff changeset
28 #include "pidginaccountfilterconnected.h"
42365
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents: 42360
diff changeset
29 #include "pidginaccountrow.h"
40496
6941fece679b phase2 of pidgin.h: move existing file to pidgincore.h
Gary Kramlich <grim@reaperworld.com>
parents: 40490
diff changeset
30 #include "pidgincore.h"
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
31
8294
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
32 #include <gdk/gdkkeysyms.h>
cffb4d4660f0 [gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents: 8289
diff changeset
33
42976
93f48383ac8c Remove old code from GTK request dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42837
diff changeset
34 typedef struct {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
35 PurpleRequestType type;
42976
93f48383ac8c Remove old code from GTK request dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42837
diff changeset
36 PurpleRequestPage *page;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
37
42976
93f48383ac8c Remove old code from GTK request dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42837
diff changeset
38 gpointer user_data;
93f48383ac8c Remove old code from GTK request dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42837
diff changeset
39 GtkWidget *dialog;
42352
1c53950f9052 Migrate from GtkFileChooserNative to GtkFileDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42269
diff changeset
40 GCancellable *cancellable;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
41
42976
93f48383ac8c Remove old code from GTK request dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42837
diff changeset
42 PurpleRequestHelpCb help_cb;
93f48383ac8c Remove old code from GTK request dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42837
diff changeset
43 gpointer help_data;
93f48383ac8c Remove old code from GTK request dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42837
diff changeset
44
42977
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
45 GPtrArray *action_widgets;
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
46 GPtrArray *action_cbs;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
47 } PidginRequestData;
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
48
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
49 static void
28793
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
50 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
51 {
42166
6b2ba7253a36 Use PidginAccountDisplay in the request dialogs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42160
diff changeset
52 GtkWidget *display = NULL;
28793
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
53
40710
355aff4da4af Fix a few things that were throwing g_warning's during startup
Gary Kramlich <grim@reaperworld.com>
parents: 40534
diff changeset
54 if(!PURPLE_IS_ACCOUNT(account)) {
28793
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
55 return;
40710
355aff4da4af Fix a few things that were throwing g_warning's during startup
Gary Kramlich <grim@reaperworld.com>
parents: 40534
diff changeset
56 }
28793
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
57
42166
6b2ba7253a36 Use PidginAccountDisplay in the request dialogs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42160
diff changeset
58 if(!GTK_IS_BOX(cont)) {
6b2ba7253a36 Use PidginAccountDisplay in the request dialogs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42160
diff changeset
59 return;
28793
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
60 }
42166
6b2ba7253a36 Use PidginAccountDisplay in the request dialogs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42160
diff changeset
61
6b2ba7253a36 Use PidginAccountDisplay in the request dialogs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42160
diff changeset
62 display = pidgin_account_display_new(account);
6b2ba7253a36 Use PidginAccountDisplay in the request dialogs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42160
diff changeset
63 gtk_widget_set_halign(display, GTK_ALIGN_CENTER);
6b2ba7253a36 Use PidginAccountDisplay in the request dialogs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42160
diff changeset
64 gtk_box_append(GTK_BOX(cont), display);
28793
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
65 }
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
66
31a37be33d28 Show a little prpl icon in request dialogs, when possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27660
diff changeset
67 static void
42097
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
68 field_choice_option_cb(GObject *obj, G_GNUC_UNUSED GParamSpec *pspec,
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
69 gpointer data)
5832
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
70 {
42097
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
71 PurpleRequestField *field = data;
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
72 GtkDropDown *dropdown = GTK_DROP_DOWN(obj);
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
73 GObject *item = gtk_drop_down_get_selected_item(dropdown);
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
74
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
75 if(G_IS_OBJECT(item)) {
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
76 gpointer value = g_object_get_data(item, "choice_value");
42139
c053558f1236 Make PurpleRequestFieldChoice into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42137
diff changeset
77 purple_request_field_choice_set_value(PURPLE_REQUEST_FIELD_CHOICE(field),
c053558f1236 Make PurpleRequestFieldChoice into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42137
diff changeset
78 value);
41601
ec6f72cbafeb Fix check buttons in request widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41597
diff changeset
79 }
5832
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
80 }
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
81
f81c9ce730fa [gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents: 5817
diff changeset
82 static void
41862
0cb7833d756b Convert more manual cases of PidginAccountChooser away from GtkComboBox
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41861
diff changeset
83 field_account_cb(GObject *obj, G_GNUC_UNUSED GParamSpec *pspec, gpointer data)
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
84 {
41862
0cb7833d756b Convert more manual cases of PidginAccountChooser away from GtkComboBox
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41861
diff changeset
85 PurpleRequestField *field = data;
42365
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents: 42360
diff changeset
86 PidginAccountRow *row = PIDGIN_ACCOUNT_ROW(obj);
40534
8dad2981fb86 Separate the AccountChooser from its model and move options to filters
Gary Kramlich <grim@reaperworld.com>
parents: 40533
diff changeset
87
39787
af7ae86ee287 Remove callback from account chooser constructor.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39786
diff changeset
88 purple_request_field_account_set_value(
42134
1b5ce0f4302d Make PurpleRequestFieldAccount into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42129
diff changeset
89 PURPLE_REQUEST_FIELD_ACCOUNT(field),
42365
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents: 42360
diff changeset
90 pidgin_account_row_get_account(row));
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
91 }
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
92
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
93 static void
42977
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
94 multifield_response_cb(GtkButton *button, gpointer data) {
42160
a6327a3bbfae Use a single response callback for request field actions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42154
diff changeset
95 PidginRequestData *req_data = data;
a6327a3bbfae Use a single response callback for request field actions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42154
diff changeset
96 PurpleRequestFieldsCb cb = NULL;
42977
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
97 guint index = 0;
42160
a6327a3bbfae Use a single response callback for request field actions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42154
diff changeset
98
42976
93f48383ac8c Remove old code from GTK request dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42837
diff changeset
99 gtk_widget_set_visible(GTK_WIDGET(req_data->dialog), FALSE);
42160
a6327a3bbfae Use a single response callback for request field actions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42154
diff changeset
100
42977
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
101 if (g_ptr_array_find(req_data->action_widgets, button, &index)) {
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
102 cb = g_ptr_array_index(req_data->action_cbs, index);
42160
a6327a3bbfae Use a single response callback for request field actions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42154
diff changeset
103 }
a6327a3bbfae Use a single response callback for request field actions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42154
diff changeset
104
a6327a3bbfae Use a single response callback for request field actions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42154
diff changeset
105 if(cb != NULL) {
42976
93f48383ac8c Remove old code from GTK request dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42837
diff changeset
106 cb(req_data->user_data, req_data->page);
42160
a6327a3bbfae Use a single response callback for request field actions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42154
diff changeset
107 }
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
108
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
109 purple_request_close(PURPLE_REQUEST_FIELDS, data);
5817
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
110 }
d085bb1af93c [gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents: 5816
diff changeset
111
34336
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
112 static GtkWidget *
34448
e15d91a77cb3 Request API: PURPLE_REQUEST_WAIT with progress bar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34447
diff changeset
113 pidgin_request_dialog_icon(PurpleRequestType dialog_type,
e15d91a77cb3 Request API: PURPLE_REQUEST_WAIT with progress bar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34447
diff changeset
114 PurpleRequestCommonParameters *cpar)
34336
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
115 {
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
116 GtkWidget *img = NULL;
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
117 PurpleRequestIconType icon_type;
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
118 gconstpointer icon_data;
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
119 gsize icon_size;
42269
fa7ab9df882b Fix some scan-build issues
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42209
diff changeset
120 const char *icon_name = NULL;
34336
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
121
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
122 /* Dialog icon. */
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
123 icon_data = purple_request_cpar_get_custom_icon(cpar, &icon_size);
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
124 if (icon_data) {
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
125 GdkPixbuf *pixbuf;
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
126
41319
04d027ed3d63 Add gdk-pixbuf as a libpurple dependency and move helpers from pidgin to purple
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
127 pixbuf = purple_gdk_pixbuf_from_data(icon_data, icon_size);
34336
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
128 if (pixbuf) {
42979
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42977
diff changeset
129 GdkTexture *texture = NULL;
34336
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
130 /* scale the image if it is too large */
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
131 int width = gdk_pixbuf_get_width(pixbuf);
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
132 int height = gdk_pixbuf_get_height(pixbuf);
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
133 if (width > 128 || height > 128) {
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
134 int scaled_width = width > height ?
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
135 128 : (128 * width) / height;
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
136 int scaled_height = height > width ?
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
137 128 : (128 * height) / width;
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
138 GdkPixbuf *scaled;
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
139
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
140 purple_debug_info("pidgin", "dialog icon was "
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
141 "too large, scaling it down");
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
142
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
143 scaled = gdk_pixbuf_scale_simple(pixbuf,
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
144 scaled_width, scaled_height,
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
145 GDK_INTERP_BILINEAR);
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
146 if (scaled) {
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
147 g_object_unref(pixbuf);
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
148 pixbuf = scaled;
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
149 }
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
150 }
42979
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42977
diff changeset
151 texture = gdk_texture_new_for_pixbuf(pixbuf);
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42977
diff changeset
152 img = gtk_image_new_from_paintable(GDK_PAINTABLE(texture));
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42977
diff changeset
153 g_object_unref(texture);
34336
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
154 g_object_unref(pixbuf);
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
155 } else {
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
156 purple_debug_info("pidgin",
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
157 "failed to parse dialog icon");
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
158 }
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
159 }
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
160
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
161 if (img)
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
162 return img;
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
163
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
164 icon_type = purple_request_cpar_get_icon(cpar);
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
165 switch (icon_type)
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
166 {
34443
b7926ff76ed6 Request API: implement purple_request_wait
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34346
diff changeset
167 case PURPLE_REQUEST_ICON_DEFAULT:
39146
af0a3b8c0354 Replace remaining usage of PIDGIN_STOCK_DIALOG_* with literal icon names
Mike Ruprecht <cmaiku@gmail.com>
parents: 38583
diff changeset
168 icon_name = NULL;
34448
e15d91a77cb3 Request API: PURPLE_REQUEST_WAIT with progress bar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34447
diff changeset
169 break;
34336
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
170 case PURPLE_REQUEST_ICON_REQUEST:
39146
af0a3b8c0354 Replace remaining usage of PIDGIN_STOCK_DIALOG_* with literal icon names
Mike Ruprecht <cmaiku@gmail.com>
parents: 38583
diff changeset
171 icon_name = "dialog-question";
34336
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
172 break;
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
173 case PURPLE_REQUEST_ICON_DIALOG:
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
174 case PURPLE_REQUEST_ICON_INFO:
34443
b7926ff76ed6 Request API: implement purple_request_wait
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34346
diff changeset
175 case PURPLE_REQUEST_ICON_WAIT: /* TODO: we need another icon */
39146
af0a3b8c0354 Replace remaining usage of PIDGIN_STOCK_DIALOG_* with literal icon names
Mike Ruprecht <cmaiku@gmail.com>
parents: 38583
diff changeset
176 icon_name = "dialog-information";
34336
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
177 break;
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
178 case PURPLE_REQUEST_ICON_WARNING:
39146
af0a3b8c0354 Replace remaining usage of PIDGIN_STOCK_DIALOG_* with literal icon names
Mike Ruprecht <cmaiku@gmail.com>
parents: 38583
diff changeset
179 icon_name = "dialog-warning";
34336
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
180 break;
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
181 case PURPLE_REQUEST_ICON_ERROR:
39146
af0a3b8c0354 Replace remaining usage of PIDGIN_STOCK_DIALOG_* with literal icon names
Mike Ruprecht <cmaiku@gmail.com>
parents: 38583
diff changeset
182 icon_name = "dialog-error";
34336
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
183 break;
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
184 /* intentionally no default value */
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
185 }
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
186
39146
af0a3b8c0354 Replace remaining usage of PIDGIN_STOCK_DIALOG_* with literal icon names
Mike Ruprecht <cmaiku@gmail.com>
parents: 38583
diff changeset
187 if (icon_name == NULL) {
34448
e15d91a77cb3 Request API: PURPLE_REQUEST_WAIT with progress bar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34447
diff changeset
188 switch (dialog_type) {
e15d91a77cb3 Request API: PURPLE_REQUEST_WAIT with progress bar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34447
diff changeset
189 case PURPLE_REQUEST_INPUT:
e15d91a77cb3 Request API: PURPLE_REQUEST_WAIT with progress bar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34447
diff changeset
190 case PURPLE_REQUEST_CHOICE:
e15d91a77cb3 Request API: PURPLE_REQUEST_WAIT with progress bar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34447
diff changeset
191 case PURPLE_REQUEST_ACTION:
e15d91a77cb3 Request API: PURPLE_REQUEST_WAIT with progress bar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34447
diff changeset
192 case PURPLE_REQUEST_FIELDS:
e15d91a77cb3 Request API: PURPLE_REQUEST_WAIT with progress bar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34447
diff changeset
193 case PURPLE_REQUEST_FILE:
e15d91a77cb3 Request API: PURPLE_REQUEST_WAIT with progress bar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34447
diff changeset
194 case PURPLE_REQUEST_FOLDER:
39146
af0a3b8c0354 Replace remaining usage of PIDGIN_STOCK_DIALOG_* with literal icon names
Mike Ruprecht <cmaiku@gmail.com>
parents: 38583
diff changeset
195 icon_name = "dialog-question";
34448
e15d91a77cb3 Request API: PURPLE_REQUEST_WAIT with progress bar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34447
diff changeset
196 break;
e15d91a77cb3 Request API: PURPLE_REQUEST_WAIT with progress bar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34447
diff changeset
197 case PURPLE_REQUEST_WAIT:
39146
af0a3b8c0354 Replace remaining usage of PIDGIN_STOCK_DIALOG_* with literal icon names
Mike Ruprecht <cmaiku@gmail.com>
parents: 38583
diff changeset
198 icon_name = "dialog-information";
34448
e15d91a77cb3 Request API: PURPLE_REQUEST_WAIT with progress bar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34447
diff changeset
199 break;
e15d91a77cb3 Request API: PURPLE_REQUEST_WAIT with progress bar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34447
diff changeset
200 /* intentionally no default value */
e15d91a77cb3 Request API: PURPLE_REQUEST_WAIT with progress bar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34447
diff changeset
201 }
e15d91a77cb3 Request API: PURPLE_REQUEST_WAIT with progress bar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34447
diff changeset
202 }
e15d91a77cb3 Request API: PURPLE_REQUEST_WAIT with progress bar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34447
diff changeset
203
41547
a6a75a9d8a09 Update the GTK request implementation for GTK4
Gary Kramlich <grim@reaperworld.com>
parents: 41531
diff changeset
204 if(icon_name == NULL) {
a6a75a9d8a09 Update the GTK request implementation for GTK4
Gary Kramlich <grim@reaperworld.com>
parents: 41531
diff changeset
205 icon_name = "dialog-question";
a6a75a9d8a09 Update the GTK request implementation for GTK4
Gary Kramlich <grim@reaperworld.com>
parents: 41531
diff changeset
206 }
a6a75a9d8a09 Update the GTK request implementation for GTK4
Gary Kramlich <grim@reaperworld.com>
parents: 41531
diff changeset
207
a6a75a9d8a09 Update the GTK request implementation for GTK4
Gary Kramlich <grim@reaperworld.com>
parents: 41531
diff changeset
208 img = gtk_image_new_from_icon_name(icon_name);
a6a75a9d8a09 Update the GTK request implementation for GTK4
Gary Kramlich <grim@reaperworld.com>
parents: 41531
diff changeset
209 gtk_image_set_icon_size(GTK_IMAGE(img), GTK_ICON_SIZE_LARGE);
a6a75a9d8a09 Update the GTK request implementation for GTK4
Gary Kramlich <grim@reaperworld.com>
parents: 41531
diff changeset
210
a6a75a9d8a09 Update the GTK request implementation for GTK4
Gary Kramlich <grim@reaperworld.com>
parents: 41531
diff changeset
211 return img;
34336
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
212 }
5f3ec29a886b Request API: the ability to set stock icons
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34335
diff changeset
213
34342
81f9da8e86e9 Request API: help button for all dialog types
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34341
diff changeset
214 static void
42976
93f48383ac8c Remove old code from GTK request dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42837
diff changeset
215 pidgin_request_help_clicked(G_GNUC_UNUSED GtkButton *button, gpointer data)
34346
5ae01cf621f3 Request API: fix help callback data passing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34345
diff changeset
216 {
42976
93f48383ac8c Remove old code from GTK request dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42837
diff changeset
217 PidginRequestData *req_data = data;
34346
5ae01cf621f3 Request API: fix help callback data passing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34345
diff changeset
218
42976
93f48383ac8c Remove old code from GTK request dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42837
diff changeset
219 g_return_if_fail(req_data->help_cb != NULL);
93f48383ac8c Remove old code from GTK request dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42837
diff changeset
220 req_data->help_cb(req_data->help_data);
34346
5ae01cf621f3 Request API: fix help callback data passing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34345
diff changeset
221 }
5ae01cf621f3 Request API: fix help callback data passing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34345
diff changeset
222
5ae01cf621f3 Request API: fix help callback data passing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34345
diff changeset
223 static void
42977
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
224 pidgin_request_add_help(PidginRequestData *req_data, GtkWidget *cbox,
42976
93f48383ac8c Remove old code from GTK request dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42837
diff changeset
225 PurpleRequestCommonParameters *cpar)
34342
81f9da8e86e9 Request API: help button for all dialog types
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34341
diff changeset
226 {
81f9da8e86e9 Request API: help button for all dialog types
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34341
diff changeset
227 GtkWidget *button;
81f9da8e86e9 Request API: help button for all dialog types
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34341
diff changeset
228 PurpleRequestHelpCb help_cb;
81f9da8e86e9 Request API: help button for all dialog types
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34341
diff changeset
229 gpointer help_data;
81f9da8e86e9 Request API: help button for all dialog types
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34341
diff changeset
230
81f9da8e86e9 Request API: help button for all dialog types
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34341
diff changeset
231 help_cb = purple_request_cpar_get_help_cb(cpar, &help_data);
42976
93f48383ac8c Remove old code from GTK request dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42837
diff changeset
232 if (help_cb == NULL) {
34342
81f9da8e86e9 Request API: help button for all dialog types
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34341
diff changeset
233 return;
42976
93f48383ac8c Remove old code from GTK request dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42837
diff changeset
234 }
34342
81f9da8e86e9 Request API: help button for all dialog types
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34341
diff changeset
235
42977
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
236 button = gtk_button_new_with_mnemonic(_("_Help"));
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
237 gtk_center_box_set_start_widget(GTK_CENTER_BOX(cbox), button);
34346
5ae01cf621f3 Request API: fix help callback data passing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34345
diff changeset
238
42976
93f48383ac8c Remove old code from GTK request dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42837
diff changeset
239 req_data->help_cb = help_cb;
93f48383ac8c Remove old code from GTK request dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42837
diff changeset
240 req_data->help_data = help_data;
34346
5ae01cf621f3 Request API: fix help callback data passing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34345
diff changeset
241
5ae01cf621f3 Request API: fix help callback data passing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34345
diff changeset
242 g_signal_connect(G_OBJECT(button), "clicked",
42976
93f48383ac8c Remove old code from GTK request dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42837
diff changeset
243 G_CALLBACK(pidgin_request_help_clicked), req_data);
34342
81f9da8e86e9 Request API: help button for all dialog types
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34341
diff changeset
244 }
81f9da8e86e9 Request API: help button for all dialog types
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34341
diff changeset
245
42168
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
246 static GtkWidget *
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
247 create_label_field(void) {
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
248 GtkWidget *row = NULL;
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
249 GtkWidget *label = NULL;
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
250
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
251 row = adw_preferences_row_new();
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
252 gtk_widget_set_focusable(row, FALSE);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
253 gtk_list_box_row_set_activatable(GTK_LIST_BOX_ROW(row), FALSE);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
254
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
255 label = gtk_label_new(NULL);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
256 gtk_label_set_xalign(GTK_LABEL(label), 0.0);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
257 gtk_widget_set_margin_start(label, 12);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
258 gtk_widget_set_margin_end(label, 12);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
259 gtk_widget_set_margin_bottom(label, 12);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
260 gtk_widget_set_margin_top(label, 12);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
261 g_object_bind_property(row, "title", label, "label", G_BINDING_DEFAULT);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
262 g_object_bind_property(row, "use-markup", label, "use-markup",
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
263 G_BINDING_DEFAULT);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
264 g_object_bind_property(row, "use-underline", label, "use-underline",
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
265 G_BINDING_DEFAULT);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
266 gtk_list_box_row_set_child(GTK_LIST_BOX_ROW(row), label);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
267
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
268 return row;
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
269 }
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
270
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
271 static void
42171
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
272 multiline_state_flags_changed_cb(GtkWidget *self, GtkStateFlags flags,
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
273 gpointer data)
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
274 {
42171
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
275 GtkWidget *row = data;
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
276 gboolean before = FALSE, after = FALSE;
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
277
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
278 before = !!(flags & GTK_STATE_FLAG_FOCUS_WITHIN);
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
279 after = !!(gtk_widget_get_state_flags(self) & GTK_STATE_FLAG_FOCUS_WITHIN);
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
280 if(before != after) {
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
281 if(after) {
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
282 gtk_widget_add_css_class(row, "focused");
42135
1a89a067a0d5 Add a PurpleRequestFieldString subclass
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42134
diff changeset
283 } else {
42171
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
284 gtk_widget_remove_css_class(row, "focused");
42135
1a89a067a0d5 Add a PurpleRequestFieldString subclass
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42134
diff changeset
285 }
29224
9e9c1124b310 gtkrequest: Handle a multiline text field being set as required properly.
Paul Aurich <darkrain42@pidgin.im>
parents: 28793
diff changeset
286 }
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
287 }
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
288
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
289 static GtkWidget *
42168
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
290 create_string_field(PurpleRequestField *field,
42171
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
291 G_GNUC_UNUSED PurpleKeyValuePair **hinted_widget)
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
292 {
42135
1a89a067a0d5 Add a PurpleRequestFieldString subclass
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42134
diff changeset
293 PurpleRequestFieldString *strfield = PURPLE_REQUEST_FIELD_STRING(field);
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
294 const char *value;
42171
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
295 GtkWidget *row;
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
296
42135
1a89a067a0d5 Add a PurpleRequestFieldString subclass
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42134
diff changeset
297 value = purple_request_field_string_get_default_value(strfield);
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
298
42135
1a89a067a0d5 Add a PurpleRequestFieldString subclass
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42134
diff changeset
299 if(purple_request_field_string_is_multiline(strfield)) {
42171
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
300 GtkWidget *vbox = NULL;
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
301 GtkWidget *title = NULL;
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
302 GtkWidget *textview = NULL;
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
303 GtkWidget *sw = NULL;
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
304 GtkTextBuffer *buffer = NULL;
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
305
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
306 vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 6);
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
307 gtk_widget_set_margin_top(vbox, 6);
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
308
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
309 title = gtk_label_new(NULL);
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
310 gtk_widget_set_halign(title, GTK_ALIGN_START);
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
311 gtk_widget_set_margin_start(title, 12);
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
312 gtk_widget_set_margin_end(title, 12);
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
313 gtk_widget_add_css_class(title, "subtitle");
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
314 gtk_box_append(GTK_BOX(vbox), title);
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
315
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
316 textview = gtk_text_view_new();
42171
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
317 gtk_widget_set_margin_start(textview, 12);
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
318 gtk_widget_set_margin_end(textview, 12);
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
319 gtk_widget_remove_css_class(textview, "view");
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
320 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(textview),
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
321 GTK_WRAP_WORD_CHAR);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
322
42171
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
323 buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview));
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
324 if(value != NULL) {
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
325 gtk_text_buffer_set_text(buffer, value, -1);
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
326 }
42171
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
327 g_object_bind_property(field, "value", buffer, "text",
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
328 G_BINDING_BIDIRECTIONAL);
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
329
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
330 sw = gtk_scrolled_window_new();
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
331 gtk_scrolled_window_set_child(GTK_SCROLLED_WINDOW(sw), textview);
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
332 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
41567
517ac516af27 Inline pidgin_make_scrollable
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41547
diff changeset
333 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
42171
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
334 gtk_widget_set_size_request(sw, -1, 75);
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
335 gtk_widget_set_hexpand(sw, TRUE);
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
336 gtk_widget_set_vexpand(sw, TRUE);
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
337 gtk_box_append(GTK_BOX(vbox), sw);
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
338
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
339 row = adw_preferences_row_new();
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
340 g_object_bind_property(row, "title", title, "label",
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
341 G_BINDING_DEFAULT);
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
342 g_object_bind_property(row, "use-markup", title, "use-markup",
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
343 G_BINDING_DEFAULT);
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
344 g_object_bind_property(row, "use-underline", title, "use-underline",
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
345 G_BINDING_DEFAULT);
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
346 gtk_list_box_row_set_child(GTK_LIST_BOX_ROW(row), vbox);
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
347 gtk_widget_set_focusable(row, FALSE);
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
348 gtk_widget_add_css_class(row, "entry");
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
349 g_signal_connect(textview, "state-flags-changed",
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
350 G_CALLBACK(multiline_state_flags_changed_cb), row);
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
351
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
352 } else {
42135
1a89a067a0d5 Add a PurpleRequestFieldString subclass
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42134
diff changeset
353 if(purple_request_field_string_is_masked(strfield)) {
42171
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
354 row = adw_password_entry_row_new();
41602
7a52387e60ae Use GtkPasswordEntry for passwords
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41601
diff changeset
355 } else {
42171
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
356 row = adw_entry_row_new();
41602
7a52387e60ae Use GtkPasswordEntry for passwords
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41601
diff changeset
357 }
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
358
41531
2b86501d13fe Replace gtk_entry_[gs]et_text with gtk_editable_[gs]et_text
Gary Kramlich <grim@reaperworld.com>
parents: 41526
diff changeset
359 if(value != NULL) {
42171
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
360 gtk_editable_set_text(GTK_EDITABLE(row), value);
41531
2b86501d13fe Replace gtk_entry_[gs]et_text with gtk_editable_[gs]et_text
Gary Kramlich <grim@reaperworld.com>
parents: 41526
diff changeset
361 }
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
362
42171
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
363 g_object_bind_property(field, "value", row, "text",
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
364 G_BINDING_BIDIRECTIONAL);
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
365 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
366
42171
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
367 return row;
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
368 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
369
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
370 static GtkWidget *
42171
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
371 create_int_field(PurpleRequestField *field,
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
372 G_GNUC_UNUSED PurpleKeyValuePair **hinted_widget)
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
373 {
42137
59ceb87dc43c Make PurpleRequestFieldInt into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42136
diff changeset
374 PurpleRequestFieldInt *intfield = PURPLE_REQUEST_FIELD_INT(field);
42171
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
375 GtkWidget *widget = NULL;
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
376 GtkWidget *spin = NULL;
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
377 int value;
42171
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
378
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
379 spin = gtk_spin_button_new_with_range(
42137
59ceb87dc43c Make PurpleRequestFieldInt into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42136
diff changeset
380 purple_request_field_int_get_lower_bound(intfield),
59ceb87dc43c Make PurpleRequestFieldInt into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42136
diff changeset
381 purple_request_field_int_get_upper_bound(intfield), 1);
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
382
42137
59ceb87dc43c Make PurpleRequestFieldInt into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42136
diff changeset
383 value = purple_request_field_int_get_default_value(intfield);
42171
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
384 gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), value);
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
385 g_object_bind_property(field, "value", spin, "value",
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
386 G_BINDING_BIDIRECTIONAL);
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
387
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
388 gtk_widget_set_valign(spin, GTK_ALIGN_CENTER);
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
389
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
390 widget = adw_action_row_new();
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
391 gtk_widget_set_focusable(widget, FALSE);
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
392 adw_action_row_add_suffix(ADW_ACTION_ROW(widget), spin);
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
393 adw_action_row_set_activatable_widget(ADW_ACTION_ROW(widget), spin);
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
394
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
395 return widget;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
396 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
397
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
398 static GtkWidget *
42168
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
399 create_bool_field(PurpleRequestField *field) {
42136
cfa707dcda7d Make PurpleRequestFieldBool into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42135
diff changeset
400 PurpleRequestFieldBool *boolfield = PURPLE_REQUEST_FIELD_BOOL(field);
42168
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
401 GtkWidget *row = NULL;
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
402 GtkWidget *sw = NULL;
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
403
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
404 sw = gtk_switch_new();
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
405 gtk_switch_set_active(GTK_SWITCH(sw),
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
406 purple_request_field_bool_get_default_value(boolfield));
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
407 gtk_widget_set_focusable(sw, TRUE);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
408 gtk_widget_set_valign(sw, GTK_ALIGN_CENTER);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
409 g_object_bind_property(field, "value", sw, "active",
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
410 G_BINDING_SYNC_CREATE | G_BINDING_BIDIRECTIONAL);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
411
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
412 row = adw_action_row_new();
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
413 gtk_widget_set_focusable(row, FALSE);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
414 adw_action_row_add_suffix(ADW_ACTION_ROW(row), sw);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
415 adw_action_row_set_activatable_widget(ADW_ACTION_ROW(row), sw);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
416
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
417 return row;
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
418 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
419
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
420 static GtkWidget *
42097
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
421 create_choice_field(PurpleRequestField *field) {
42139
c053558f1236 Make PurpleRequestFieldChoice into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42137
diff changeset
422 PurpleRequestFieldChoice *choicefield = PURPLE_REQUEST_FIELD_CHOICE(field);
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
423 GtkWidget *widget;
42097
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
424 GListModel *model = NULL;
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
425 GList *elements = NULL;
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
426 guint default_index = GTK_INVALID_LIST_POSITION;
34338
c652670afac5 Request API refactoring: custom PURPLE_REQUEST_CHOICE values, instead of indexes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34336
diff changeset
427 gpointer default_value;
42097
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
428 guint index;
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
429
42139
c053558f1236 Make PurpleRequestFieldChoice into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42137
diff changeset
430 default_value = purple_request_field_choice_get_value(choicefield);
42097
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
431 widget = gtk_drop_down_new_from_strings(NULL);
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
432 model = gtk_drop_down_get_model(GTK_DROP_DOWN(widget));
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
433
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
434 index = 0;
42139
c053558f1236 Make PurpleRequestFieldChoice into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42137
diff changeset
435 elements = purple_request_field_choice_get_elements(choicefield);
42097
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
436 for(GList *l = elements; l != NULL; l = g_list_next(l)) {
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
437 PurpleKeyValuePair *choice = l->data;
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
438 GObject *item = NULL;
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
439
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
440 gtk_string_list_append(GTK_STRING_LIST(model), choice->key);
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
441 item = g_list_model_get_item(model, index);
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
442 g_object_set_data(item, "choice_value", choice->value);
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
443 if(choice->value == default_value) {
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
444 default_index = index;
41547
a6a75a9d8a09 Update the GTK request implementation for GTK4
Gary Kramlich <grim@reaperworld.com>
parents: 41531
diff changeset
445 }
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
446
42097
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
447 g_clear_object(&item);
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
448 index++;
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
449 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
450
42097
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
451 gtk_drop_down_set_selected(GTK_DROP_DOWN(widget), default_index);
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
452
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
453 g_signal_connect(G_OBJECT(widget), "notify::selected",
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
454 G_CALLBACK(field_choice_option_cb), field);
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
455
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
456 if(default_index == GTK_INVALID_LIST_POSITION && index > 0) {
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
457 GObject *item = g_list_model_get_item(model, 0);
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
458 gpointer value = g_object_get_data(item, "choice_value");
42139
c053558f1236 Make PurpleRequestFieldChoice into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42137
diff changeset
459 purple_request_field_choice_set_value(choicefield, value);
42097
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
460 g_clear_object(&item);
f29c4d466cf5 Port choices in request widgets to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42096
diff changeset
461 }
34338
c652670afac5 Request API refactoring: custom PURPLE_REQUEST_CHOICE values, instead of indexes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34336
diff changeset
462
7900
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
463 return widget;
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
464 }
468bd591cabe [gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents: 7844
diff changeset
465
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
466 static GtkWidget *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
467 create_image_field(PurpleRequestField *field)
11357
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
468 {
42142
809019093568 Make PurpleRequestFieldImage into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42141
diff changeset
469 PurpleRequestFieldImage *ifield = PURPLE_REQUEST_FIELD_IMAGE(field);
42979
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42977
diff changeset
470 GdkTexture *texture = NULL;
11357
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
471 GtkWidget *widget;
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
472 GdkPixbuf *buf, *scale;
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
473
41319
04d027ed3d63 Add gdk-pixbuf as a libpurple dependency and move helpers from pidgin to purple
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
474 buf = purple_gdk_pixbuf_from_data(
42142
809019093568 Make PurpleRequestFieldImage into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42141
diff changeset
475 (const guchar *)purple_request_field_image_get_buffer(ifield),
809019093568 Make PurpleRequestFieldImage into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42141
diff changeset
476 purple_request_field_image_get_size(ifield));
11357
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
477
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
478 scale = gdk_pixbuf_scale_simple(buf,
42142
809019093568 Make PurpleRequestFieldImage into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42141
diff changeset
479 purple_request_field_image_get_scale_x(ifield) * gdk_pixbuf_get_width(buf),
809019093568 Make PurpleRequestFieldImage into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42141
diff changeset
480 purple_request_field_image_get_scale_y(ifield) * gdk_pixbuf_get_height(buf),
11357
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
481 GDK_INTERP_BILINEAR);
42979
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42977
diff changeset
482 texture = gdk_texture_new_for_pixbuf(scale);
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42977
diff changeset
483 widget = gtk_image_new_from_paintable(GDK_PAINTABLE(texture));
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42977
diff changeset
484 g_object_unref(texture);
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42977
diff changeset
485 g_object_unref(scale);
42592
6b65c0e4ba15 Remove unnecessary casts for GObject methods
Gary Kramlich <grim@reaperworld.com>
parents: 42551
diff changeset
486 g_object_unref(buf);
11357
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
487
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
488 return widget;
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
489 }
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
490
41857
ff94f8ff8a70 Add a filter property to PidginAccountChooser
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41720
diff changeset
491 static gboolean
42208
0d14fedafd4a Make PurpleRequestFieldAccount work like a GtkCustomFilter
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42202
diff changeset
492 field_custom_account_filter_cb(gpointer item, gpointer data) {
0d14fedafd4a Make PurpleRequestFieldAccount work like a GtkCustomFilter
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42202
diff changeset
493 PurpleRequestFieldAccount *field = data;
41857
ff94f8ff8a70 Add a filter property to PidginAccountChooser
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41720
diff changeset
494 gboolean ret = FALSE;
ff94f8ff8a70 Add a filter property to PidginAccountChooser
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41720
diff changeset
495
ff94f8ff8a70 Add a filter property to PidginAccountChooser
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41720
diff changeset
496 if(PURPLE_IS_ACCOUNT(item)) {
42208
0d14fedafd4a Make PurpleRequestFieldAccount work like a GtkCustomFilter
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42202
diff changeset
497 ret = purple_request_field_account_match(field, PURPLE_ACCOUNT(item));
41857
ff94f8ff8a70 Add a filter property to PidginAccountChooser
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41720
diff changeset
498 }
ff94f8ff8a70 Add a filter property to PidginAccountChooser
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41720
diff changeset
499
ff94f8ff8a70 Add a filter property to PidginAccountChooser
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41720
diff changeset
500 return ret;
ff94f8ff8a70 Add a filter property to PidginAccountChooser
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41720
diff changeset
501 }
ff94f8ff8a70 Add a filter property to PidginAccountChooser
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41720
diff changeset
502
11357
d96a9c46f200 [gaim-migrate @ 13579]
Bartosz Oler <bartosz@pidgin.im>
parents: 11243
diff changeset
503 static GtkWidget *
42168
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
504 create_account_field(PurpleRequestField *field, GtkWidget **account_hint)
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
505 {
42134
1b5ce0f4302d Make PurpleRequestFieldAccount into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42129
diff changeset
506 PurpleRequestFieldAccount *afield = NULL;
41910
4f86a754ed7b Fix a crash when opening the new instant message dialog
Gary Kramlich <grim@reaperworld.com>
parents: 41864
diff changeset
507 GtkWidget *widget = NULL;
4f86a754ed7b Fix a crash when opening the new instant message dialog
Gary Kramlich <grim@reaperworld.com>
parents: 41864
diff changeset
508 PurpleAccount *account = NULL;
42208
0d14fedafd4a Make PurpleRequestFieldAccount work like a GtkCustomFilter
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42202
diff changeset
509 GtkCustomFilter *custom_filter = NULL;
41864
6f490dec468f Move PidginAccountChooser to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41862
diff changeset
510 GtkFilter *filter = NULL;
42168
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
511 const char *type_hint = NULL;
40534
8dad2981fb86 Separate the AccountChooser from its model and move options to filters
Gary Kramlich <grim@reaperworld.com>
parents: 40533
diff changeset
512
42365
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents: 42360
diff changeset
513 widget = pidgin_account_row_new();
42134
1b5ce0f4302d Make PurpleRequestFieldAccount into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42129
diff changeset
514 afield = PURPLE_REQUEST_FIELD_ACCOUNT(field);
1b5ce0f4302d Make PurpleRequestFieldAccount into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42129
diff changeset
515 account = purple_request_field_account_get_default_value(afield);
1b5ce0f4302d Make PurpleRequestFieldAccount into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42129
diff changeset
516
42208
0d14fedafd4a Make PurpleRequestFieldAccount work like a GtkCustomFilter
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42202
diff changeset
517 custom_filter = gtk_custom_filter_new(field_custom_account_filter_cb,
0d14fedafd4a Make PurpleRequestFieldAccount work like a GtkCustomFilter
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42202
diff changeset
518 afield, NULL);
0d14fedafd4a Make PurpleRequestFieldAccount work like a GtkCustomFilter
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42202
diff changeset
519 filter = GTK_FILTER(custom_filter);
41864
6f490dec468f Move PidginAccountChooser to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41862
diff changeset
520
42134
1b5ce0f4302d Make PurpleRequestFieldAccount into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42129
diff changeset
521 if(!purple_request_field_account_get_show_all(afield)) {
41864
6f490dec468f Move PidginAccountChooser to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41862
diff changeset
522 GtkEveryFilter *every = NULL;
6f490dec468f Move PidginAccountChooser to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41862
diff changeset
523
6f490dec468f Move PidginAccountChooser to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41862
diff changeset
524 every = gtk_every_filter_new();
41910
4f86a754ed7b Fix a crash when opening the new instant message dialog
Gary Kramlich <grim@reaperworld.com>
parents: 41864
diff changeset
525
4f86a754ed7b Fix a crash when opening the new instant message dialog
Gary Kramlich <grim@reaperworld.com>
parents: 41864
diff changeset
526 if(GTK_IS_FILTER(filter)) {
4f86a754ed7b Fix a crash when opening the new instant message dialog
Gary Kramlich <grim@reaperworld.com>
parents: 41864
diff changeset
527 gtk_multi_filter_append(GTK_MULTI_FILTER(every), filter);
4f86a754ed7b Fix a crash when opening the new instant message dialog
Gary Kramlich <grim@reaperworld.com>
parents: 41864
diff changeset
528 }
41864
6f490dec468f Move PidginAccountChooser to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41862
diff changeset
529
6f490dec468f Move PidginAccountChooser to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41862
diff changeset
530 filter = pidgin_account_filter_connected_new();
6f490dec468f Move PidginAccountChooser to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41862
diff changeset
531 gtk_multi_filter_append(GTK_MULTI_FILTER(every), filter);
6f490dec468f Move PidginAccountChooser to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41862
diff changeset
532
6f490dec468f Move PidginAccountChooser to GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41862
diff changeset
533 filter = GTK_FILTER(every);
40534
8dad2981fb86 Separate the AccountChooser from its model and move options to filters
Gary Kramlich <grim@reaperworld.com>
parents: 40533
diff changeset
534 }
8dad2981fb86 Separate the AccountChooser from its model and move options to filters
Gary Kramlich <grim@reaperworld.com>
parents: 40533
diff changeset
535
42365
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents: 42360
diff changeset
536 pidgin_account_row_set_account(PIDGIN_ACCOUNT_ROW(widget), account);
42209
6996b5faa09e Fix account request field in Pidgin when filtering
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42208
diff changeset
537 g_signal_connect(widget, "notify::account", G_CALLBACK(field_account_cb),
6996b5faa09e Fix account request field in Pidgin when filtering
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42208
diff changeset
538 field);
6996b5faa09e Fix account request field in Pidgin when filtering
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42208
diff changeset
539
41910
4f86a754ed7b Fix a crash when opening the new instant message dialog
Gary Kramlich <grim@reaperworld.com>
parents: 41864
diff changeset
540 if(GTK_IS_FILTER(filter)) {
42365
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents: 42360
diff changeset
541 pidgin_account_row_set_filter(PIDGIN_ACCOUNT_ROW(widget), filter);
41910
4f86a754ed7b Fix a crash when opening the new instant message dialog
Gary Kramlich <grim@reaperworld.com>
parents: 41864
diff changeset
542 g_object_unref(filter);
4f86a754ed7b Fix a crash when opening the new instant message dialog
Gary Kramlich <grim@reaperworld.com>
parents: 41864
diff changeset
543 }
41857
ff94f8ff8a70 Add a filter property to PidginAccountChooser
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41720
diff changeset
544
42168
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
545 type_hint = purple_request_field_get_type_hint(field);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
546 if(purple_strequal(type_hint, "account")) {
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
547 *account_hint = widget;
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
548 }
31697
b6c47ea33682 Add API: purple_request_field_set_tooltip & purple_request_field_get_tooltip
Andrew Victor <andrew.victor@mxit.com>
parents: 31322
diff changeset
549
8286
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
550 return widget;
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
551 }
7a4c038d1ecd [gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents: 8137
diff changeset
552
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
553 static void
42100
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
554 setup_list_field_listitem_cb(G_GNUC_UNUSED GtkSignalListItemFactory *self,
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
555 GtkListItem *item, gpointer data)
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
556 {
42140
beba61bbdf19 Convert PurpleRequestFieldList into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42139
diff changeset
557 PurpleRequestFieldList *field = data;
42100
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
558 GtkWidget *box = NULL;
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
559 GtkWidget *widget = NULL;
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
560
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
561 box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6);
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
562 gtk_list_item_set_child(item, box);
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
563
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
564 widget = gtk_label_new(NULL);
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
565 gtk_box_append(GTK_BOX(box), widget);
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
566
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
567 if(purple_request_field_list_has_icons(field)) {
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
568 widget = gtk_image_new();
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
569 gtk_box_append(GTK_BOX(box), widget);
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
570 }
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
571 }
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
572
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
573 static void
42100
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
574 bind_list_field_listitem_cb(G_GNUC_UNUSED GtkSignalListItemFactory *self,
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
575 GtkListItem *item, gpointer data)
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
576 {
42140
beba61bbdf19 Convert PurpleRequestFieldList into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42139
diff changeset
577 PurpleRequestFieldList *field = data;
42100
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
578 GtkWidget *box = NULL;
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
579 GtkWidget *label = NULL;
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
580 GObject *wrapper = NULL;
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
581
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
582 box = gtk_list_item_get_child(item);
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
583 wrapper = gtk_list_item_get_item(item);
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
584
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
585 label = gtk_widget_get_first_child(box);
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
586 gtk_label_set_text(GTK_LABEL(label), g_object_get_data(wrapper, "text"));
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
587
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
588 if(purple_request_field_list_has_icons(field)) {
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
589 GtkWidget *image = NULL;
42979
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42977
diff changeset
590 GdkTexture *texture = NULL;
42100
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
591
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
592 image = gtk_widget_get_last_child(box);
42979
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42977
diff changeset
593 texture = gdk_texture_new_for_pixbuf(g_object_get_data(wrapper, "pixbuf"));
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42977
diff changeset
594 gtk_image_set_from_paintable(GTK_IMAGE(image), GDK_PAINTABLE(texture));
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42977
diff changeset
595 g_object_unref(texture);
42100
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
596 }
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
597 }
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
598
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
599 static void
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
600 list_field_select_changed_cb(GtkSelectionModel *self,
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
601 G_GNUC_UNUSED guint position,
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
602 G_GNUC_UNUSED guint n_items, gpointer data)
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
603 {
42140
beba61bbdf19 Convert PurpleRequestFieldList into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42139
diff changeset
604 PurpleRequestFieldList *field = data;
42100
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
605 GtkBitset *bitset = NULL;
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
606
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
607 purple_request_field_list_clear_selected(field);
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
608
42100
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
609 bitset = gtk_selection_model_get_selection(self);
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
610 n_items = gtk_bitset_get_size(bitset);
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
611
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
612 for(guint index = 0; index < n_items; index++) {
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
613 GObject *wrapper = NULL;
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
614 const char *text = NULL;
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
615
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
616 wrapper = g_list_model_get_item(G_LIST_MODEL(self),
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
617 gtk_bitset_get_nth(bitset, index));
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
618
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
619 text = g_object_get_data(wrapper, "text");
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
620 purple_request_field_list_add_selected(field, text);
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
621
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
622 g_object_unref(wrapper);
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
623 }
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
624
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
625 gtk_bitset_unref(bitset);
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
626 }
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
627
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
628 static GtkWidget *
42140
beba61bbdf19 Convert PurpleRequestFieldList into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42139
diff changeset
629 create_list_field(PurpleRequestField *field) {
beba61bbdf19 Convert PurpleRequestFieldList into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42139
diff changeset
630 PurpleRequestFieldList *listfield = PURPLE_REQUEST_FIELD_LIST(field);
41567
517ac516af27 Inline pidgin_make_scrollable
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41547
diff changeset
631 GtkWidget *sw;
42100
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
632 GtkWidget *listview = NULL;
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
633 GtkSelectionModel *sel = NULL;
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
634 GtkListItemFactory *factory = NULL;
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
635 GListStore *store = NULL;
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
636 guint index = 0;
18190
bcf28ef7e8ff Re-fix the DBus list handling code by killing const GList* / const GSList*
Richard Laager <rlaager@pidgin.im>
parents: 18130
diff changeset
637 GList *l;
40836
b5eccef8404e Avoid manual handling of icons in request field list items
Arkadiy Illarionov <qarkai@gmail.com>
parents: 40710
diff changeset
638 gboolean has_icons;
b5eccef8404e Avoid manual handling of icons in request field list items
Arkadiy Illarionov <qarkai@gmail.com>
parents: 40710
diff changeset
639
42140
beba61bbdf19 Convert PurpleRequestFieldList into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42139
diff changeset
640 has_icons = purple_request_field_list_has_icons(listfield);
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
641
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
642 /* Create the list store */
42100
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
643 store = g_list_store_new(G_TYPE_OBJECT);
42140
beba61bbdf19 Convert PurpleRequestFieldList into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42139
diff changeset
644 if(purple_request_field_list_get_multi_select(listfield)) {
42100
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
645 sel = GTK_SELECTION_MODEL(gtk_multi_selection_new(G_LIST_MODEL(store)));
40836
b5eccef8404e Avoid manual handling of icons in request field list items
Arkadiy Illarionov <qarkai@gmail.com>
parents: 40710
diff changeset
646 } else {
42100
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
647 sel = GTK_SELECTION_MODEL(gtk_single_selection_new(G_LIST_MODEL(store)));
40836
b5eccef8404e Avoid manual handling of icons in request field list items
Arkadiy Illarionov <qarkai@gmail.com>
parents: 40710
diff changeset
648 }
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
649
42100
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
650 /* Create the row factory. */
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
651 factory = gtk_signal_list_item_factory_new();
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
652 g_signal_connect(factory, "setup", G_CALLBACK(setup_list_field_listitem_cb),
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
653 field);
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
654 g_signal_connect(factory, "bind", G_CALLBACK(bind_list_field_listitem_cb),
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
655 field);
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
656
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
657 /* Create the list view */
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
658 listview = gtk_list_view_new(sel, factory);
7909
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
659
40836
b5eccef8404e Avoid manual handling of icons in request field list items
Arkadiy Illarionov <qarkai@gmail.com>
parents: 40710
diff changeset
660 if (has_icons) {
42100
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
661 gtk_widget_set_size_request(listview, 200, 400);
24625
4082cd694acb This patch comes from the combined work of contributors minstrel, NightFox,
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22962
diff changeset
662 }
4082cd694acb This patch comes from the combined work of contributors minstrel, NightFox,
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22962
diff changeset
663
42140
beba61bbdf19 Convert PurpleRequestFieldList into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42139
diff changeset
664 for(index = 0, l = purple_request_field_list_get_items(listfield);
42100
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
665 l != NULL;
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
666 index++, l = l->next)
7909
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
667 {
40836
b5eccef8404e Avoid manual handling of icons in request field list items
Arkadiy Illarionov <qarkai@gmail.com>
parents: 40710
diff changeset
668 PurpleKeyValuePair *item = l->data;
b5eccef8404e Avoid manual handling of icons in request field list items
Arkadiy Illarionov <qarkai@gmail.com>
parents: 40710
diff changeset
669 const char *text = (const char *)item->key;
42100
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
670 GObject *wrapper = NULL;
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
671
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
672 wrapper = g_object_new(G_TYPE_OBJECT, NULL);
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
673 g_list_store_append(store, wrapper);
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
674
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
675 g_object_set_data(wrapper, "data",
42140
beba61bbdf19 Convert PurpleRequestFieldList into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42139
diff changeset
676 purple_request_field_list_get_data(listfield, text));
42100
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
677 g_object_set_data_full(wrapper, "text", g_strdup(text), g_free);
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
678
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
679 if(has_icons) {
40836
b5eccef8404e Avoid manual handling of icons in request field list items
Arkadiy Illarionov <qarkai@gmail.com>
parents: 40710
diff changeset
680 const char *icon_path = (const char *)item->value;
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
681 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
682
42100
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
683 if(icon_path) {
41319
04d027ed3d63 Add gdk-pixbuf as a libpurple dependency and move helpers from pidgin to purple
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
684 pixbuf = purple_gdk_pixbuf_new_from_file(icon_path);
42100
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
685 }
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
686
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
687 g_object_set_data_full(wrapper, "pixbuf", pixbuf, g_object_unref);
24625
4082cd694acb This patch comes from the combined work of contributors minstrel, NightFox,
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22962
diff changeset
688 }
40836
b5eccef8404e Avoid manual handling of icons in request field list items
Arkadiy Illarionov <qarkai@gmail.com>
parents: 40710
diff changeset
689
42140
beba61bbdf19 Convert PurpleRequestFieldList into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42139
diff changeset
690 if(purple_request_field_list_is_selected(listfield, text)) {
42100
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
691 gtk_selection_model_select_item(sel, index, FALSE);
40836
b5eccef8404e Avoid manual handling of icons in request field list items
Arkadiy Illarionov <qarkai@gmail.com>
parents: 40710
diff changeset
692 }
42105
e431d160e3a1 Fix leaks in requests
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42100
diff changeset
693
e431d160e3a1 Fix leaks in requests
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42100
diff changeset
694 g_object_unref(wrapper);
7909
f2b88b6b97a7 [gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents: 7905
diff changeset
695 }
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
696
19052
5f49fa1c6f08 Fix a bug with multi-field selections in Pidgin's implementation of
Mark Doliner <markdoliner@pidgin.im>
parents: 18966
diff changeset
697 /*
5f49fa1c6f08 Fix a bug with multi-field selections in Pidgin's implementation of
Mark Doliner <markdoliner@pidgin.im>
parents: 18966
diff changeset
698 * 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
699 * 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
700 * handler. If we connect the handler before the loop above and
42100
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
701 * there are multiple items selected, then selecting the first item
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
702 * in the view causes list_field_select_changed_cb to be triggered
19052
5f49fa1c6f08 Fix a bug with multi-field selections in Pidgin's implementation of
Mark Doliner <markdoliner@pidgin.im>
parents: 18966
diff changeset
703 * 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
704 */
42100
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
705 g_signal_connect(G_OBJECT(sel), "selection-changed",
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
706 G_CALLBACK(list_field_select_changed_cb), field);
41567
517ac516af27 Inline pidgin_make_scrollable
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41547
diff changeset
707
517ac516af27 Inline pidgin_make_scrollable
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41547
diff changeset
708 sw = gtk_scrolled_window_new();
517ac516af27 Inline pidgin_make_scrollable
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41547
diff changeset
709 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
517ac516af27 Inline pidgin_make_scrollable
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41547
diff changeset
710 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
42100
470d4d3c6faf Port list request fields from GtkTreeView to GtkListView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42099
diff changeset
711 gtk_scrolled_window_set_child(GTK_SCROLLED_WINDOW(sw), listview);
41567
517ac516af27 Inline pidgin_make_scrollable
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41547
diff changeset
712 return sw;
7903
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
713 }
03fc5f87c49c [gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents: 7900
diff changeset
714
6363
6e0fa4b64fe6 [gaim-migrate @ 6868]
Christian Hammond <chipx86@chipx86.com>
parents: 6338
diff changeset
715 static void *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
716 pidgin_request_fields(const char *title, const char *primary,
42128
118067ca0367 Convert PurpleRequestPage into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42127
diff changeset
717 const char *secondary, PurpleRequestPage *page, const char *ok_text,
34332
876483829700 Request API refactoring: switch purple_request_fields to PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34331
diff changeset
718 GCallback ok_cb, const char *cancel_text, GCallback cancel_cb,
876483829700 Request API refactoring: switch purple_request_fields to PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34331
diff changeset
719 PurpleRequestCommonParameters *cpar, void *user_data)
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
720 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
721 PidginRequestData *data;
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
722 GtkWidget *win;
42977
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
723 GtkWidget *content = NULL;
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
724 GtkWidget *cbox = NULL;
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
725 GtkWidget *action_area = NULL;
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
726 GtkWidget *button = NULL;
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
727 GtkWidget *ok_button = NULL;
42168
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
728 GtkWidget *page_widget = NULL;
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
729 AdwPreferencesGroup *group_widget = NULL;
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
730 GtkWidget *vbox = NULL;
6326
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
731 GtkWidget *img;
40326
cdca03a74387 Add PurpleNamedValue to use in lists instead of consecutive key and value elements
qarkai <qarkai@gmail.com>
parents: 40162
diff changeset
732 GSList *extra_actions;
42168
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
733 guint n_groups;
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
734
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
735 data = g_new0(PidginRequestData, 1);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
736 data->type = PURPLE_REQUEST_FIELDS;
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
737 data->user_data = user_data;
42976
93f48383ac8c Remove old code from GTK request dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42837
diff changeset
738 data->page = page;
42128
118067ca0367 Convert PurpleRequestPage into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42127
diff changeset
739
42977
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
740 data->dialog = win = gtk_window_new();
41943
e41631a5f894 Remove PidginDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41910
diff changeset
741 if(title != NULL) {
e41631a5f894 Remove PidginDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41910
diff changeset
742 gtk_window_set_title(GTK_WINDOW(win), title);
e41631a5f894 Remove PidginDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41910
diff changeset
743 } else {
e41631a5f894 Remove PidginDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41910
diff changeset
744 gtk_window_set_title(GTK_WINDOW(win), PIDGIN_ALERT_TITLE);
e41631a5f894 Remove PidginDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41910
diff changeset
745 }
e41631a5f894 Remove PidginDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41910
diff changeset
746 gtk_window_set_resizable(GTK_WINDOW(win), TRUE);
42168
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
747 gtk_window_set_default_size(GTK_WINDOW(win), 480, -1);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
748
42977
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
749 content = gtk_box_new(GTK_ORIENTATION_VERTICAL, 6);
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
750 gtk_window_set_child(GTK_WINDOW(win), content);
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
751
42168
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
752 page_widget = adw_preferences_page_new();
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
753 gtk_widget_set_vexpand(page_widget, TRUE);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
754 gtk_box_append(GTK_BOX(content), page_widget);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
755
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
756 /* Setup the general info box. */
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
757 group_widget = ADW_PREFERENCES_GROUP(adw_preferences_group_new());
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
758 adw_preferences_page_add(ADW_PREFERENCES_PAGE(page_widget), group_widget);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
759 vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 6);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
760 gtk_widget_set_margin_bottom(vbox, 12);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
761 adw_preferences_group_add(group_widget, vbox);
6326
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
762
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
763 /* Dialog icon. */
34448
e15d91a77cb3 Request API: PURPLE_REQUEST_WAIT with progress bar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34447
diff changeset
764 img = pidgin_request_dialog_icon(PURPLE_REQUEST_FIELDS, cpar);
42168
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
765 if(gtk_image_get_storage_type(GTK_IMAGE(img)) == GTK_IMAGE_ICON_NAME) {
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
766 gtk_image_set_pixel_size(GTK_IMAGE(img), 64);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
767 }
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
768 gtk_box_append(GTK_BOX(vbox), img);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
769
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
770 pidgin_widget_decorate_account(vbox,
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
771 purple_request_cpar_get_account(cpar));
6326
62b5476c87f9 [gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents: 6325
diff changeset
772
42977
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
773 cbox = gtk_center_box_new();
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
774 gtk_orientable_set_orientation(GTK_ORIENTABLE(cbox),
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
775 GTK_ORIENTATION_HORIZONTAL);
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
776 gtk_widget_set_margin_start(cbox, 6);
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
777 gtk_widget_set_margin_end(cbox, 6);
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
778 gtk_widget_set_margin_top(cbox, 6);
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
779 gtk_widget_set_margin_bottom(cbox, 6);
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
780 gtk_box_append(GTK_BOX(content), cbox);
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
781 action_area = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6);
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
782 gtk_widget_set_halign(action_area, GTK_ALIGN_END);
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
783 gtk_center_box_set_end_widget(GTK_CENTER_BOX(cbox), action_area);
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
784
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
785 pidgin_request_add_help(data, cbox, cpar);
34341
b23d9c0b64d5 Request API: help button support
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34340
diff changeset
786
42160
a6327a3bbfae Use a single response callback for request field actions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42154
diff changeset
787 /* Add responses and callbacks. */
a6327a3bbfae Use a single response callback for request field actions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42154
diff changeset
788 extra_actions = purple_request_cpar_get_extra_actions(cpar);
42977
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
789 data->action_widgets = g_ptr_array_sized_new(2 + g_slist_length(extra_actions));
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
790 data->action_cbs = g_ptr_array_sized_new(2 + g_slist_length(extra_actions));
42160
a6327a3bbfae Use a single response callback for request field actions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42154
diff changeset
791
a6327a3bbfae Use a single response callback for request field actions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42154
diff changeset
792 for(; extra_actions != NULL; extra_actions = extra_actions->next) {
a6327a3bbfae Use a single response callback for request field actions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42154
diff changeset
793 PurpleKeyValuePair *extra_action = extra_actions->data;
a6327a3bbfae Use a single response callback for request field actions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42154
diff changeset
794
42977
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
795 button = gtk_button_new_with_label(extra_action->key);
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
796 g_signal_connect(button, "clicked", G_CALLBACK(multifield_response_cb),
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
797 data);
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
798 gtk_box_append(GTK_BOX(action_area), button);
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
799 g_ptr_array_add(data->action_widgets, button);
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
800 g_ptr_array_add(data->action_cbs, extra_action->value);
34444
4fe0e2422d82 Request API: extra actions for fields request
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34443
diff changeset
801 }
4fe0e2422d82 Request API: extra actions for fields request
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34443
diff changeset
802
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
803 /* Cancel button */
42977
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
804 button = gtk_button_new_with_label(cancel_text);
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
805 g_signal_connect(button, "clicked", G_CALLBACK(multifield_response_cb),
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
806 data);
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
807 gtk_box_append(GTK_BOX(action_area), button);
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
808 gtk_window_set_default_widget(GTK_WINDOW(win), button);
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
809 g_ptr_array_add(data->action_widgets, button);
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
810 g_ptr_array_add(data->action_cbs, cancel_cb);
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
811
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
812 /* OK button */
42160
a6327a3bbfae Use a single response callback for request field actions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42154
diff changeset
813 if(ok_text != NULL) {
42977
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
814 ok_button = gtk_button_new_with_label(ok_text);
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
815 g_signal_connect(ok_button, "clicked",
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
816 G_CALLBACK(multifield_response_cb), data);
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
817 gtk_box_append(GTK_BOX(action_area), ok_button);
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
818 gtk_window_set_default_widget(GTK_WINDOW(win), ok_button);
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
819 g_ptr_array_add(data->action_widgets, ok_button);
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
820 g_ptr_array_add(data->action_cbs, ok_cb);
35142
d3f26f67a5ef Allow Request API dialog with only one closing button
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35067
diff changeset
821 }
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
822
42168
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
823 if(primary != NULL) {
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
824 GtkWidget *label = gtk_label_new(primary);
41547
a6a75a9d8a09 Update the GTK request implementation for GTK4
Gary Kramlich <grim@reaperworld.com>
parents: 41531
diff changeset
825 gtk_label_set_wrap(GTK_LABEL(label), TRUE);
42168
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
826 gtk_widget_add_css_class(label, "title-1");
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
827 adw_preferences_group_add(group_widget, label);
8524
4ae9175a3999 [gaim-migrate @ 9263]
Nathan Walp <nwalp@pidgin.im>
parents: 8521
diff changeset
828 }
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
829
42168
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
830 if(secondary != NULL) {
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
831 GtkWidget *label = gtk_label_new(secondary);
41547
a6a75a9d8a09 Update the GTK request implementation for GTK4
Gary Kramlich <grim@reaperworld.com>
parents: 41531
diff changeset
832 gtk_label_set_wrap(GTK_LABEL(label), TRUE);
42168
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
833 adw_preferences_group_add(group_widget, label);
34501
cb22f5baa4f6 Request API: tabs support
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34495
diff changeset
834 }
cb22f5baa4f6 Request API: tabs support
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34495
diff changeset
835
42168
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
836 n_groups = g_list_model_get_n_items(G_LIST_MODEL(page));
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
837 for(guint group_index = 0; group_index < n_groups; group_index++) {
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
838 PurpleRequestGroup *group = NULL;
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
839 guint n_fields = 0;
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
840 GSList *username_widgets = NULL;
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
841 GtkWidget *account_hint = NULL;
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
842
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
843 group = g_list_model_get_item(G_LIST_MODEL(page), group_index);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
844 group_widget = ADW_PREFERENCES_GROUP(adw_preferences_group_new());
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
845 adw_preferences_group_set_title(group_widget,
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
846 purple_request_group_get_title(group));
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
847 adw_preferences_page_add(ADW_PREFERENCES_PAGE(page_widget),
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
848 group_widget);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
849
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
850 n_fields = g_list_model_get_n_items(G_LIST_MODEL(group));
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
851 for(guint field_index = 0; field_index < n_fields; field_index++) {
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
852 PurpleRequestField *field = NULL;
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
853 GtkWidget *widget = NULL;
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
854 gboolean was_handled_by_create = FALSE;
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
855
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
856 field = g_list_model_get_item(G_LIST_MODEL(group), field_index);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
857 if(!purple_request_field_is_visible(field)) {
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
858 g_object_unref(field);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
859 continue;
42143
f4538cc1cb27 Make PurpleRequestFieldDatasheet into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42142
diff changeset
860 }
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
861
42141
7ecf7a18e627 Make PurpleRequestFieldLabel into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42140
diff changeset
862 if(PURPLE_IS_REQUEST_FIELD_LABEL(field)) {
42168
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
863 widget = create_label_field();
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
864 was_handled_by_create = TRUE;
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
865 } else if(PURPLE_IS_REQUEST_FIELD_STRING(field)) {
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
866 PurpleKeyValuePair *username_hint = NULL;
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
867
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
868 widget = create_string_field(field, &username_hint);
42171
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
869 was_handled_by_create = TRUE;
42168
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
870
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
871 if(username_hint != NULL) {
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
872 username_widgets = g_slist_prepend(username_widgets,
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
873 username_hint);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
874 }
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
875 } else if(PURPLE_IS_REQUEST_FIELD_INT(field)) {
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
876 PurpleKeyValuePair *username_hint = NULL;
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
877
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
878 widget = create_int_field(field, &username_hint);
42171
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
879 was_handled_by_create = TRUE;
42168
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
880
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
881 if(username_hint != NULL) {
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
882 username_widgets = g_slist_prepend(username_widgets,
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
883 username_hint);
7922
160207a9feee [gaim-migrate @ 8591]
Nathan Walp <nwalp@pidgin.im>
parents: 7921
diff changeset
884 }
42168
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
885 } else if(PURPLE_IS_REQUEST_FIELD_BOOL(field)) {
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
886 widget = create_bool_field(field);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
887 was_handled_by_create = TRUE;
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
888 } else if(PURPLE_IS_REQUEST_FIELD_CHOICE(field)) {
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
889 widget = create_choice_field(field);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
890 } else if(PURPLE_IS_REQUEST_FIELD_LIST(field)) {
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
891 widget = create_list_field(field);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
892 } else if(PURPLE_IS_REQUEST_FIELD_IMAGE(field)) {
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
893 widget = create_image_field(field);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
894 } else if(PURPLE_IS_REQUEST_FIELD_ACCOUNT(field)) {
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
895 widget = create_account_field(field, &account_hint);
42365
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents: 42360
diff changeset
896 was_handled_by_create = TRUE;
42168
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
897 } else {
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
898 g_warning("Unhandled field type: %s",
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
899 G_OBJECT_TYPE_NAME(field));
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
900 g_object_unref(field);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
901 continue;
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
902 }
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
903
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
904 g_object_bind_property(field, "tooltip", widget, "tooltip-text",
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
905 G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
906 g_object_bind_property(field, "sensitive", widget, "sensitive",
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
907 G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
908
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
909 if(!was_handled_by_create) {
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
910 GtkWidget *row = NULL;
42171
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
911
9f89ed3c6465 Use Adwaita widgets for basic request entries
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42168
diff changeset
912 gtk_widget_set_valign(widget, GTK_ALIGN_CENTER);
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
913
42168
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
914 row = adw_action_row_new();
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
915 adw_action_row_add_suffix(ADW_ACTION_ROW(row), widget);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
916 widget = row;
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
917 }
42168
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
918
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
919 g_object_bind_property(field, "label", widget, "title",
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
920 G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
921 adw_preferences_row_set_use_underline(ADW_PREFERENCES_ROW(widget),
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
922 TRUE);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
923
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
924 adw_preferences_group_add(group_widget, widget);
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
925
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
926 g_object_unref(field);
6337
3399ae066dc1 [gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents: 6335
diff changeset
927 }
42168
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
928
42550
d745bb34f491 Remove the screen name auto-completion API
Gary Kramlich <grim@reaperworld.com>
parents: 42495
diff changeset
929 g_slist_free_full(username_widgets,
d745bb34f491 Remove the screen name auto-completion API
Gary Kramlich <grim@reaperworld.com>
parents: 42495
diff changeset
930 (GDestroyNotify)purple_key_value_pair_free);
42168
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
931
e603d4381fe5 Wrap Request Fields dialog in Adwaita widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42166
diff changeset
932 g_object_unref(group);
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
933 }
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
934
42977
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
935 if(ok_button != NULL) {
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
936 g_object_bind_property(page, "valid", ok_button, "sensitive", 0);
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
937 }
33213
2852fbde4722 Validation for Request API; use it in 'new IM' dialog.
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33195
diff changeset
938
42202
2273647d24b0 Use gtk_widget_set_visible for everything
Gary Kramlich <grim@reaperworld.com>
parents: 42172
diff changeset
939 gtk_widget_set_visible(win, TRUE);
5811
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
940
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
941 return data;
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
942 }
f9b61b4eda57 [gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
943
42977
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
944 static void
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
945 pidgin_request_close_request(PurpleRequestType type, gpointer ui_handle) {
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
946 PidginRequestData *data = ui_handle;
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
947
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
948 if(type != PURPLE_REQUEST_FIELDS) {
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
949 /* This shouldn't happen as we don't support creating any others. */
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
950 return;
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
951 }
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
952
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
953 g_ptr_array_free(data->action_widgets, TRUE);
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
954 g_ptr_array_free(data->action_cbs, TRUE);
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
955 gtk_window_destroy(GTK_WINDOW(data->dialog));
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
956 g_free(data);
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
957 }
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
958
34451
b7165d4e1d73 Implement purple_*_is_valid_ui_handle, purple_request_cpar_*et_parent_from, pidgin_request_get_dialog_window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34448
diff changeset
959 GtkWindow *
b7165d4e1d73 Implement purple_*_is_valid_ui_handle, purple_request_cpar_*et_parent_from, pidgin_request_get_dialog_window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34448
diff changeset
960 pidgin_request_get_dialog_window(void *ui_handle)
b7165d4e1d73 Implement purple_*_is_valid_ui_handle, purple_request_cpar_*et_parent_from, pidgin_request_get_dialog_window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34448
diff changeset
961 {
b7165d4e1d73 Implement purple_*_is_valid_ui_handle, purple_request_cpar_*et_parent_from, pidgin_request_get_dialog_window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34448
diff changeset
962 PidginRequestData *data = ui_handle;
b7165d4e1d73 Implement purple_*_is_valid_ui_handle, purple_request_cpar_*et_parent_from, pidgin_request_get_dialog_window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34448
diff changeset
963
b7165d4e1d73 Implement purple_*_is_valid_ui_handle, purple_request_cpar_*et_parent_from, pidgin_request_get_dialog_window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34448
diff changeset
964 g_return_val_if_fail(
b7165d4e1d73 Implement purple_*_is_valid_ui_handle, purple_request_cpar_*et_parent_from, pidgin_request_get_dialog_window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34448
diff changeset
965 purple_request_is_valid_ui_handle(data, NULL), NULL);
b7165d4e1d73 Implement purple_*_is_valid_ui_handle, purple_request_cpar_*et_parent_from, pidgin_request_get_dialog_window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34448
diff changeset
966
39930
411f3df51bcd Convert to GtkFileChooserNative.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39928
diff changeset
967 if (data->type == PURPLE_REQUEST_FILE ||
411f3df51bcd Convert to GtkFileChooserNative.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39928
diff changeset
968 data->type == PURPLE_REQUEST_FOLDER) {
42352
1c53950f9052 Migrate from GtkFileChooserNative to GtkFileDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42269
diff changeset
969 /* Not a GtkWidget, but a GtkFileDialog. Eventually this function
39930
411f3df51bcd Convert to GtkFileChooserNative.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39928
diff changeset
970 * should not be needed, once we don't need to auto-parent. */
411f3df51bcd Convert to GtkFileChooserNative.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39928
diff changeset
971 return NULL;
411f3df51bcd Convert to GtkFileChooserNative.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39928
diff changeset
972 }
411f3df51bcd Convert to GtkFileChooserNative.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39928
diff changeset
973
34451
b7165d4e1d73 Implement purple_*_is_valid_ui_handle, purple_request_cpar_*et_parent_from, pidgin_request_get_dialog_window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34448
diff changeset
974 return GTK_WINDOW(data->dialog);
b7165d4e1d73 Implement purple_*_is_valid_ui_handle, purple_request_cpar_*et_parent_from, pidgin_request_get_dialog_window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34448
diff changeset
975 }
b7165d4e1d73 Implement purple_*_is_valid_ui_handle, purple_request_cpar_*et_parent_from, pidgin_request_get_dialog_window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34448
diff changeset
976
41720
bcfc2c9e5213 Move all of the UiOps to use struct initializers
Gary Kramlich <grim@reaperworld.com>
parents: 41629
diff changeset
977 static PurpleRequestUiOps ops = {
bcfc2c9e5213 Move all of the UiOps to use struct initializers
Gary Kramlich <grim@reaperworld.com>
parents: 41629
diff changeset
978 .request_fields = pidgin_request_fields,
42977
72fd5614ea76 Use a normal GtkWindow for requests dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42976
diff changeset
979 .close_request = pidgin_request_close_request,
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
980 };
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
981
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
982 PurpleRequestUiOps *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
983 pidgin_request_get_ui_ops(void)
5480
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
984 {
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
985 return &ops;
bd0befec6d55 [gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
986 }
34502
433382371e89 Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34501
diff changeset
987
433382371e89 Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34501
diff changeset
988 void *
433382371e89 Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34501
diff changeset
989 pidgin_request_get_handle(void)
433382371e89 Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34501
diff changeset
990 {
433382371e89 Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34501
diff changeset
991 static int handle;
433382371e89 Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34501
diff changeset
992
433382371e89 Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34501
diff changeset
993 return &handle;
433382371e89 Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34501
diff changeset
994 }
433382371e89 Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34501
diff changeset
995
433382371e89 Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34501
diff changeset
996 void
433382371e89 Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34501
diff changeset
997 pidgin_request_init(void)
433382371e89 Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34501
diff changeset
998 {
433382371e89 Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34501
diff changeset
999 }
433382371e89 Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34501
diff changeset
1000
433382371e89 Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34501
diff changeset
1001 void
433382371e89 Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34501
diff changeset
1002 pidgin_request_uninit(void)
433382371e89 Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34501
diff changeset
1003 {
433382371e89 Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34501
diff changeset
1004 }

mercurial