Wed, 01 Jan 2025 15:37:20 -0600
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 | 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 | 4 | * to list here. Please refer to the COPYRIGHT file distributed with this |
| 5 | * source distribution. | |
|
7035
76bca80cd91d
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
6 | * |
| 5480 | 7 | * This program is free software; you can redistribute it and/or modify |
| 8 | * it under the terms of the GNU General Public License as published by | |
| 9 | * the Free Software Foundation; either version 2 of the License, or | |
| 10 | * (at your option) any later version. | |
| 11 | * | |
| 12 | * This program is distributed in the hope that it will be useful, | |
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 15 | * GNU General Public License for more details. | |
| 16 | * | |
| 17 | * You should have received a copy of the GNU General Public License | |
| 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 | 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 | 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 | 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 | 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 | 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 | 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 | 48 | |
| 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 | 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 | 467 | create_image_field(PurpleRequestField *field) |
| 11357 | 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 | 471 | GtkWidget *widget; |
| 472 | GdkPixbuf *buf, *scale; | |
| 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 | 477 | |
| 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 | 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 | 487 | |
| 488 | return widget; | |
| 489 | } | |
| 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 | 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 | 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 | 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 | 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 | 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 | 980 | }; |
| 981 | ||
| 15884 | 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 | 984 | { |
| 985 | return &ops; | |
| 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 | } |