Mercurial > pidgin
annotate finch/gntrequest.c @ 28984:7f97370e674b
Use our MsnListOp enum in more places instead of int. I'm assuming
the reason this wasn't done before is because of the circular header
file dependencies. But that should be fine now that enums are
declared before #includes
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Fri, 05 Feb 2010 22:54:00 +0000 |
parents | 88d889b54df4 |
children | b258ffa87424 |
rev | line source |
---|---|
15817 | 1 /** |
2 * @file gntrequest.c GNT Request API | |
16194
0f0832c13fcb
Rename the Doxygen group from gntui to finch and define the finch group
Richard Laager <rlaager@wiktel.com>
parents:
16164
diff
changeset
|
3 * @ingroup finch |
20074
6bf32c9e15a7
remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@gmail.com>
parents:
19761
diff
changeset
|
4 */ |
6bf32c9e15a7
remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@gmail.com>
parents:
19761
diff
changeset
|
5 |
6bf32c9e15a7
remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@gmail.com>
parents:
19761
diff
changeset
|
6 /* finch |
15817 | 7 * |
15870
66dff3dfdea6
Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@wiktel.com>
parents:
15843
diff
changeset
|
8 * Finch is the legal property of its developers, whose names are too numerous |
15817 | 9 * to list here. Please refer to the COPYRIGHT file distributed with this |
10 * source distribution. | |
11 * | |
12 * This program is free software; you can redistribute it and/or modify | |
13 * it under the terms of the GNU General Public License as published by | |
14 * the Free Software Foundation; either version 2 of the License, or | |
15 * (at your option) any later version. | |
16 * | |
17 * This program is distributed in the hope that it will be useful, | |
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
20 * GNU General Public License for more details. | |
21 * | |
22 * You should have received a copy of the GNU General Public License | |
23 * along with this program; if not, write to the Free Software | |
19681
44b4e8bd759b
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
19528
diff
changeset
|
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
15817 | 25 */ |
28836
88d889b54df4
Fix building finch & libgnt using older gcc or non-gcc compilers that do
Stu Tomlinson <stu@nosnilmot.com>
parents:
27587
diff
changeset
|
26 #include <internal.h> |
88d889b54df4
Fix building finch & libgnt using older gcc or non-gcc compilers that do
Stu Tomlinson <stu@nosnilmot.com>
parents:
27587
diff
changeset
|
27 |
15817 | 28 #include <gnt.h> |
29 #include <gntbox.h> | |
30 #include <gntbutton.h> | |
31 #include <gntcheckbox.h> | |
32 #include <gntcombobox.h> | |
33 #include <gntentry.h> | |
15927
846a00760176
use file select dialog
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
15924
diff
changeset
|
34 #include <gntfilesel.h> |
15817 | 35 #include <gntlabel.h> |
36 #include <gntline.h> | |
37 #include <gnttree.h> | |
38 | |
15822 | 39 #include "finch.h" |
15817 | 40 #include "gntrequest.h" |
22005
829d054f4f1a
Add a function to get a widget for a request field.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21893
diff
changeset
|
41 #include "debug.h" |
16164
87019c619be0
Include header files, not source files. Bah.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
15936
diff
changeset
|
42 #include "util.h" |
15817 | 43 |
25839
54a1c63873b2
Do the struct hiding differently.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
25838
diff
changeset
|
44 /* XXX: Until gobjectification ... */ |
54a1c63873b2
Do the struct hiding differently.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
25838
diff
changeset
|
45 #undef FINCH_GET_DATA |
54a1c63873b2
Do the struct hiding differently.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
25838
diff
changeset
|
46 #undef FINCH_SET_DATA |
54a1c63873b2
Do the struct hiding differently.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
25838
diff
changeset
|
47 #define FINCH_GET_DATA(obj) purple_request_field_get_ui_data(obj) |
54a1c63873b2
Do the struct hiding differently.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
25838
diff
changeset
|
48 #define FINCH_SET_DATA(obj, data) purple_request_field_set_ui_data(obj, data) |
15817 | 49 |
50 typedef struct | |
51 { | |
52 void *user_data; | |
15927
846a00760176
use file select dialog
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
15924
diff
changeset
|
53 GntWidget *dialog; |
15817 | 54 GCallback *cbs; |
18410
719f73b9a593
Remember the open/save file locations.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18347
diff
changeset
|
55 gboolean save; |
21893
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
56 } FinchFileRequest; |
15817 | 57 |
58 static GntWidget * | |
59 setup_request_window(const char *title, const char *primary, | |
15822 | 60 const char *secondary, PurpleRequestType type) |
15817 | 61 { |
62 GntWidget *window; | |
63 | |
64 window = gnt_vbox_new(FALSE); | |
65 gnt_box_set_toplevel(GNT_BOX(window), TRUE); | |
66 gnt_box_set_title(GNT_BOX(window), title); | |
67 gnt_box_set_alignment(GNT_BOX(window), GNT_ALIGN_MID); | |
68 | |
69 if (primary) | |
70 gnt_box_add_widget(GNT_BOX(window), | |
71 gnt_label_new_with_format(primary, GNT_TEXT_FLAG_BOLD)); | |
72 if (secondary) | |
73 gnt_box_add_widget(GNT_BOX(window), gnt_label_new(secondary)); | |
74 | |
15822 | 75 g_signal_connect_swapped(G_OBJECT(window), "destroy", G_CALLBACK(purple_request_close), |
15817 | 76 GINT_TO_POINTER(type)); |
77 | |
78 return window; | |
79 } | |
80 | |
18333
f23a7736586f
Consider closing a request dialog equivalent to cancelling it.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
81 /** |
f23a7736586f
Consider closing a request dialog equivalent to cancelling it.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
82 * If the window is closed by the wm (ie, without triggering any of |
f23a7736586f
Consider closing a request dialog equivalent to cancelling it.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
83 * the buttons, then do some default callback. |
f23a7736586f
Consider closing a request dialog equivalent to cancelling it.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
84 */ |
f23a7736586f
Consider closing a request dialog equivalent to cancelling it.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
85 static void |
f23a7736586f
Consider closing a request dialog equivalent to cancelling it.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
86 setup_default_callback(GntWidget *window, gpointer default_cb, gpointer data) |
f23a7736586f
Consider closing a request dialog equivalent to cancelling it.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
87 { |
20719
2354c9748a66
Do not connect to a signal with a NULL callback. Gets rid of a runtime warning.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20074
diff
changeset
|
88 if (default_cb == NULL) |
2354c9748a66
Do not connect to a signal with a NULL callback. Gets rid of a runtime warning.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20074
diff
changeset
|
89 return; |
18347
a90f9a0b90c8
Update search-api to not crash. Searching for users in xmpp/oscar works now.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18333
diff
changeset
|
90 g_object_set_data(G_OBJECT(window), "default-callback", default_cb); |
18333
f23a7736586f
Consider closing a request dialog equivalent to cancelling it.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
91 g_signal_connect_swapped(G_OBJECT(window), "destroy", G_CALLBACK(default_cb), data); |
f23a7736586f
Consider closing a request dialog equivalent to cancelling it.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
92 } |
f23a7736586f
Consider closing a request dialog equivalent to cancelling it.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
93 |
f23a7736586f
Consider closing a request dialog equivalent to cancelling it.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
94 static void |
f23a7736586f
Consider closing a request dialog equivalent to cancelling it.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
95 action_performed(GntWidget *button, gpointer data) |
f23a7736586f
Consider closing a request dialog equivalent to cancelling it.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
96 { |
f23a7736586f
Consider closing a request dialog equivalent to cancelling it.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
97 g_signal_handlers_disconnect_matched(data, G_SIGNAL_MATCH_FUNC, |
18347
a90f9a0b90c8
Update search-api to not crash. Searching for users in xmpp/oscar works now.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18333
diff
changeset
|
98 0, 0, NULL, |
a90f9a0b90c8
Update search-api to not crash. Searching for users in xmpp/oscar works now.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18333
diff
changeset
|
99 g_object_get_data(data, "default-callback"), |
a90f9a0b90c8
Update search-api to not crash. Searching for users in xmpp/oscar works now.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18333
diff
changeset
|
100 NULL); |
18333
f23a7736586f
Consider closing a request dialog equivalent to cancelling it.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
101 } |
f23a7736586f
Consider closing a request dialog equivalent to cancelling it.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
102 |
f23a7736586f
Consider closing a request dialog equivalent to cancelling it.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
103 /** |
f23a7736586f
Consider closing a request dialog equivalent to cancelling it.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
104 * window: this is the window |
f23a7736586f
Consider closing a request dialog equivalent to cancelling it.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
105 * userdata: the userdata to pass to the primary callbacks |
f23a7736586f
Consider closing a request dialog equivalent to cancelling it.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
106 * cb: the callback |
f23a7736586f
Consider closing a request dialog equivalent to cancelling it.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
107 * data: data for the callback |
f23a7736586f
Consider closing a request dialog equivalent to cancelling it.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
108 * (text, primary-callback) pairs, ended by a NULL |
22847
750813c2db46
The required fields are not really required if the action is cancelled.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22789
diff
changeset
|
109 * |
750813c2db46
The required fields are not really required if the action is cancelled.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22789
diff
changeset
|
110 * The cancellation callback should be the last callback sent. |
18333
f23a7736586f
Consider closing a request dialog equivalent to cancelling it.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
111 */ |
15817 | 112 static GntWidget * |
18333
f23a7736586f
Consider closing a request dialog equivalent to cancelling it.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
113 setup_button_box(GntWidget *win, gpointer userdata, gpointer cb, gpointer data, ...) |
15817 | 114 { |
22852
5c9d9df219af
Fix a compiler warning. Sadrul or someone should double-check this.
Richard Laager <rlaager@wiktel.com>
parents:
22847
diff
changeset
|
115 GntWidget *box; |
5c9d9df219af
Fix a compiler warning. Sadrul or someone should double-check this.
Richard Laager <rlaager@wiktel.com>
parents:
22847
diff
changeset
|
116 GntWidget *button = NULL; |
15817 | 117 va_list list; |
118 const char *text; | |
119 gpointer callback; | |
120 | |
121 box = gnt_hbox_new(FALSE); | |
122 | |
123 va_start(list, data); | |
124 | |
125 while ((text = va_arg(list, const char *))) | |
126 { | |
127 callback = va_arg(list, gpointer); | |
128 button = gnt_button_new(text); | |
129 gnt_box_add_widget(GNT_BOX(box), button); | |
130 g_object_set_data(G_OBJECT(button), "activate-callback", callback); | |
131 g_object_set_data(G_OBJECT(button), "activate-userdata", userdata); | |
18347
a90f9a0b90c8
Update search-api to not crash. Searching for users in xmpp/oscar works now.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18333
diff
changeset
|
132 g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(action_performed), win); |
15817 | 133 g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(cb), data); |
134 } | |
135 | |
22852
5c9d9df219af
Fix a compiler warning. Sadrul or someone should double-check this.
Richard Laager <rlaager@wiktel.com>
parents:
22847
diff
changeset
|
136 if (button) |
5c9d9df219af
Fix a compiler warning. Sadrul or someone should double-check this.
Richard Laager <rlaager@wiktel.com>
parents:
22847
diff
changeset
|
137 g_object_set_data(G_OBJECT(button), "cancellation-function", GINT_TO_POINTER(TRUE)); |
22847
750813c2db46
The required fields are not really required if the action is cancelled.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22789
diff
changeset
|
138 |
15817 | 139 va_end(list); |
140 return box; | |
141 } | |
142 | |
143 static void | |
144 notify_input_cb(GntWidget *button, GntWidget *entry) | |
145 { | |
15822 | 146 PurpleRequestInputCb callback = g_object_get_data(G_OBJECT(button), "activate-callback"); |
15817 | 147 gpointer data = g_object_get_data(G_OBJECT(button), "activate-userdata"); |
148 const char *text = gnt_entry_get_text(GNT_ENTRY(entry)); | |
149 | |
150 if (callback) | |
151 callback(data, text); | |
152 | |
153 while (button->parent) | |
154 button = button->parent; | |
155 | |
15822 | 156 purple_request_close(PURPLE_REQUEST_INPUT, button); |
15817 | 157 } |
158 | |
159 static void * | |
160 finch_request_input(const char *title, const char *primary, | |
161 const char *secondary, const char *default_value, | |
162 gboolean multiline, gboolean masked, gchar *hint, | |
163 const char *ok_text, GCallback ok_cb, | |
164 const char *cancel_text, GCallback cancel_cb, | |
16439
08db93bbd798
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents:
16310
diff
changeset
|
165 PurpleAccount *account, const char *who, PurpleConversation *conv, |
15817 | 166 void *user_data) |
167 { | |
168 GntWidget *window, *box, *entry; | |
169 | |
15822 | 170 window = setup_request_window(title, primary, secondary, PURPLE_REQUEST_INPUT); |
15817 | 171 |
172 entry = gnt_entry_new(default_value); | |
173 if (masked) | |
174 gnt_entry_set_masked(GNT_ENTRY(entry), TRUE); | |
175 gnt_box_add_widget(GNT_BOX(window), entry); | |
176 | |
18333
f23a7736586f
Consider closing a request dialog equivalent to cancelling it.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
177 box = setup_button_box(window, user_data, notify_input_cb, entry, |
15817 | 178 ok_text, ok_cb, cancel_text, cancel_cb, NULL); |
179 gnt_box_add_widget(GNT_BOX(window), box); | |
180 | |
18333
f23a7736586f
Consider closing a request dialog equivalent to cancelling it.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
181 setup_default_callback(window, cancel_cb, user_data); |
15817 | 182 gnt_widget_show(window); |
183 | |
184 return window; | |
185 } | |
186 | |
187 static void | |
15822 | 188 finch_close_request(PurpleRequestType type, gpointer ui_handle) |
15817 | 189 { |
190 GntWidget *widget = GNT_WIDGET(ui_handle); | |
16310
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
191 if (type == PURPLE_REQUEST_FIELDS) { |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
192 PurpleRequestFields *fields = g_object_get_data(G_OBJECT(widget), "fields"); |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
193 purple_request_fields_destroy(fields); |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
194 } |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
195 |
15817 | 196 while (widget->parent) |
197 widget = widget->parent; | |
198 gnt_widget_destroy(widget); | |
199 } | |
200 | |
201 static void | |
202 request_choice_cb(GntWidget *button, GntComboBox *combo) | |
203 { | |
15822 | 204 PurpleRequestChoiceCb callback = g_object_get_data(G_OBJECT(button), "activate-callback"); |
15817 | 205 gpointer data = g_object_get_data(G_OBJECT(button), "activate-userdata"); |
206 int choice = GPOINTER_TO_INT(gnt_combo_box_get_selected_data(GNT_COMBO_BOX(combo))) - 1; | |
207 | |
208 if (callback) | |
209 callback(data, choice); | |
210 | |
211 while (button->parent) | |
212 button = button->parent; | |
213 | |
15822 | 214 purple_request_close(PURPLE_REQUEST_INPUT, button); |
15817 | 215 } |
216 | |
217 static void * | |
218 finch_request_choice(const char *title, const char *primary, | |
19528
b7fa8fa4de5b
Fix building on older glib versions.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18411
diff
changeset
|
219 const char *secondary, int default_value, |
15817 | 220 const char *ok_text, GCallback ok_cb, |
221 const char *cancel_text, GCallback cancel_cb, | |
16439
08db93bbd798
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents:
16310
diff
changeset
|
222 PurpleAccount *account, const char *who, PurpleConversation *conv, |
15817 | 223 void *user_data, va_list choices) |
224 { | |
225 GntWidget *window, *combo, *box; | |
226 const char *text; | |
227 int val; | |
228 | |
15822 | 229 window = setup_request_window(title, primary, secondary, PURPLE_REQUEST_CHOICE); |
15817 | 230 |
231 combo = gnt_combo_box_new(); | |
232 gnt_box_add_widget(GNT_BOX(window), combo); | |
233 while ((text = va_arg(choices, const char *))) | |
234 { | |
235 val = va_arg(choices, int); | |
236 gnt_combo_box_add_data(GNT_COMBO_BOX(combo), GINT_TO_POINTER(val + 1), text); | |
237 } | |
238 gnt_combo_box_set_selected(GNT_COMBO_BOX(combo), GINT_TO_POINTER(default_value + 1)); | |
239 | |
18333
f23a7736586f
Consider closing a request dialog equivalent to cancelling it.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
240 box = setup_button_box(window, user_data, request_choice_cb, combo, |
15817 | 241 ok_text, ok_cb, cancel_text, cancel_cb, NULL); |
242 gnt_box_add_widget(GNT_BOX(window), box); | |
243 | |
18333
f23a7736586f
Consider closing a request dialog equivalent to cancelling it.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
244 setup_default_callback(window, cancel_cb, user_data); |
15817 | 245 gnt_widget_show(window); |
246 | |
247 return window; | |
248 } | |
249 | |
250 static void | |
251 request_action_cb(GntWidget *button, GntWidget *window) | |
252 { | |
15822 | 253 PurpleRequestActionCb callback = g_object_get_data(G_OBJECT(button), "activate-callback"); |
15817 | 254 gpointer data = g_object_get_data(G_OBJECT(button), "activate-userdata"); |
255 int id = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(button), "activate-id")); | |
256 | |
257 if (callback) | |
258 callback(data, id); | |
259 | |
15822 | 260 purple_request_close(PURPLE_REQUEST_ACTION, window); |
15817 | 261 } |
262 | |
263 static void* | |
264 finch_request_action(const char *title, const char *primary, | |
19528
b7fa8fa4de5b
Fix building on older glib versions.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18411
diff
changeset
|
265 const char *secondary, int default_value, |
16439
08db93bbd798
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents:
16310
diff
changeset
|
266 PurpleAccount *account, const char *who, PurpleConversation *conv, |
15817 | 267 void *user_data, size_t actioncount, |
268 va_list actions) | |
269 { | |
22096
6ab421173406
Focus the button for the default action, if possible.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22005
diff
changeset
|
270 GntWidget *window, *box, *button, *focus = NULL; |
15817 | 271 int i; |
272 | |
15822 | 273 window = setup_request_window(title, primary, secondary, PURPLE_REQUEST_ACTION); |
15817 | 274 |
275 box = gnt_hbox_new(FALSE); | |
276 gnt_box_add_widget(GNT_BOX(window), box); | |
277 for (i = 0; i < actioncount; i++) | |
278 { | |
279 const char *text = va_arg(actions, const char *); | |
15822 | 280 PurpleRequestActionCb callback = va_arg(actions, PurpleRequestActionCb); |
15817 | 281 |
282 button = gnt_button_new(text); | |
283 gnt_box_add_widget(GNT_BOX(box), button); | |
284 | |
285 g_object_set_data(G_OBJECT(button), "activate-callback", callback); | |
286 g_object_set_data(G_OBJECT(button), "activate-userdata", user_data); | |
287 g_object_set_data(G_OBJECT(button), "activate-id", GINT_TO_POINTER(i)); | |
288 g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(request_action_cb), window); | |
22096
6ab421173406
Focus the button for the default action, if possible.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22005
diff
changeset
|
289 |
6ab421173406
Focus the button for the default action, if possible.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22005
diff
changeset
|
290 if (i == default_value) |
6ab421173406
Focus the button for the default action, if possible.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22005
diff
changeset
|
291 focus = button; |
15817 | 292 } |
293 | |
294 gnt_widget_show(window); | |
22096
6ab421173406
Focus the button for the default action, if possible.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22005
diff
changeset
|
295 if (focus) |
6ab421173406
Focus the button for the default action, if possible.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22005
diff
changeset
|
296 gnt_box_give_focus_to_child(GNT_BOX(window), focus); |
15817 | 297 |
298 return window; | |
299 } | |
300 | |
301 static void | |
15822 | 302 request_fields_cb(GntWidget *button, PurpleRequestFields *fields) |
15817 | 303 { |
15822 | 304 PurpleRequestFieldsCb callback = g_object_get_data(G_OBJECT(button), "activate-callback"); |
15817 | 305 gpointer data = g_object_get_data(G_OBJECT(button), "activate-userdata"); |
306 GList *list; | |
307 | |
16310
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
308 /* Update the data of the fields. Pidgin does this differently. Instead of |
15817 | 309 * updating the fields at the end like here, it updates the appropriate field |
310 * instantly whenever a change is made. That allows it to make sure the | |
311 * 'required' fields are entered before the user can hit OK. It's not the case | |
22789
4457e6a99d13
Make sure the required fields are all entered correctly. Underline the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22220
diff
changeset
|
312 * here, althought it can be done. */ |
15822 | 313 for (list = purple_request_fields_get_groups(fields); list; list = list->next) |
15817 | 314 { |
15822 | 315 PurpleRequestFieldGroup *group = list->data; |
316 GList *fields = purple_request_field_group_get_fields(group); | |
22847
750813c2db46
The required fields are not really required if the action is cancelled.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22789
diff
changeset
|
317 |
15817 | 318 for (; fields ; fields = fields->next) |
319 { | |
15822 | 320 PurpleRequestField *field = fields->data; |
321 PurpleRequestFieldType type = purple_request_field_get_type(field); | |
27550
710cbace0076
Do not show hidden request fields.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
26347
diff
changeset
|
322 if (!purple_request_field_is_visible(field)) |
710cbace0076
Do not show hidden request fields.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
26347
diff
changeset
|
323 continue; |
15822 | 324 if (type == PURPLE_REQUEST_FIELD_BOOLEAN) |
15817 | 325 { |
22217
ad357ca94de9
We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22212
diff
changeset
|
326 GntWidget *check = FINCH_GET_DATA(field); |
15817 | 327 gboolean value = gnt_check_box_get_checked(GNT_CHECK_BOX(check)); |
15822 | 328 purple_request_field_bool_set_value(field, value); |
15817 | 329 } |
15822 | 330 else if (type == PURPLE_REQUEST_FIELD_STRING) |
15817 | 331 { |
22217
ad357ca94de9
We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22212
diff
changeset
|
332 GntWidget *entry = FINCH_GET_DATA(field); |
15817 | 333 const char *text = gnt_entry_get_text(GNT_ENTRY(entry)); |
15822 | 334 purple_request_field_string_set_value(field, (text && *text) ? text : NULL); |
15817 | 335 } |
15822 | 336 else if (type == PURPLE_REQUEST_FIELD_INTEGER) |
15817 | 337 { |
22217
ad357ca94de9
We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22212
diff
changeset
|
338 GntWidget *entry = FINCH_GET_DATA(field); |
15817 | 339 const char *text = gnt_entry_get_text(GNT_ENTRY(entry)); |
340 int value = (text && *text) ? atoi(text) : 0; | |
15822 | 341 purple_request_field_int_set_value(field, value); |
15817 | 342 } |
15822 | 343 else if (type == PURPLE_REQUEST_FIELD_CHOICE) |
15817 | 344 { |
22217
ad357ca94de9
We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22212
diff
changeset
|
345 GntWidget *combo = FINCH_GET_DATA(field); |
15817 | 346 int id; |
347 id = GPOINTER_TO_INT(gnt_combo_box_get_selected_data(GNT_COMBO_BOX(combo))); | |
15822 | 348 purple_request_field_choice_set_value(field, id); |
15817 | 349 } |
15822 | 350 else if (type == PURPLE_REQUEST_FIELD_LIST) |
15817 | 351 { |
352 GList *list = NULL; | |
15822 | 353 if (purple_request_field_list_get_multi_select(field)) |
15817 | 354 { |
18118
ab6d2763b8d8
Re-fix the DBus list handling code by killing const GList* / const GSList*
Richard Laager <rlaager@wiktel.com>
parents:
18063
diff
changeset
|
355 GList *iter; |
22217
ad357ca94de9
We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22212
diff
changeset
|
356 GntWidget *tree = FINCH_GET_DATA(field); |
15817 | 357 |
15822 | 358 iter = purple_request_field_list_get_items(field); |
15817 | 359 for (; iter; iter = iter->next) |
360 { | |
361 const char *text = iter->data; | |
15822 | 362 gpointer key = purple_request_field_list_get_data(field, text); |
15817 | 363 if (gnt_tree_get_choice(GNT_TREE(tree), key)) |
364 list = g_list_prepend(list, key); | |
365 } | |
366 } | |
367 else | |
368 { | |
22217
ad357ca94de9
We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22212
diff
changeset
|
369 GntWidget *combo = FINCH_GET_DATA(field); |
15817 | 370 gpointer data = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(combo)); |
371 list = g_list_append(list, data); | |
372 } | |
373 | |
15822 | 374 purple_request_field_list_set_selected(field, list); |
15817 | 375 g_list_free(list); |
376 } | |
15822 | 377 else if (type == PURPLE_REQUEST_FIELD_ACCOUNT) |
15817 | 378 { |
22217
ad357ca94de9
We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22212
diff
changeset
|
379 GntWidget *combo = FINCH_GET_DATA(field); |
15822 | 380 PurpleAccount *acc = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(combo)); |
381 purple_request_field_account_set_value(field, acc); | |
15817 | 382 } |
383 } | |
384 } | |
385 | |
22789
4457e6a99d13
Make sure the required fields are all entered correctly. Underline the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22220
diff
changeset
|
386 purple_notify_close_with_handle(button); |
4457e6a99d13
Make sure the required fields are all entered correctly. Underline the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22220
diff
changeset
|
387 |
22847
750813c2db46
The required fields are not really required if the action is cancelled.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22789
diff
changeset
|
388 if (!g_object_get_data(G_OBJECT(button), "cancellation-function") && |
750813c2db46
The required fields are not really required if the action is cancelled.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22789
diff
changeset
|
389 !purple_request_fields_all_required_filled(fields)) { |
22789
4457e6a99d13
Make sure the required fields are all entered correctly. Underline the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22220
diff
changeset
|
390 purple_notify_error(button, _("Error"), |
4457e6a99d13
Make sure the required fields are all entered correctly. Underline the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22220
diff
changeset
|
391 _("You must fill all the required fields."), |
4457e6a99d13
Make sure the required fields are all entered correctly. Underline the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22220
diff
changeset
|
392 _("The required fields are underlined.")); |
4457e6a99d13
Make sure the required fields are all entered correctly. Underline the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22220
diff
changeset
|
393 return; |
4457e6a99d13
Make sure the required fields are all entered correctly. Underline the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22220
diff
changeset
|
394 } |
4457e6a99d13
Make sure the required fields are all entered correctly. Underline the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22220
diff
changeset
|
395 |
15817 | 396 if (callback) |
397 callback(data, fields); | |
398 | |
399 while (button->parent) | |
400 button = button->parent; | |
401 | |
15822 | 402 purple_request_close(PURPLE_REQUEST_FIELDS, button); |
15817 | 403 } |
404 | |
19761
8c356223e182
Select the right account when a buddyname is selected from the suggest-list.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
405 static void |
25925
6e1967b0f90b
Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents:
25839
diff
changeset
|
406 update_selected_account(GntEntry *username, const char *start, const char *end, |
19761
8c356223e182
Select the right account when a buddyname is selected from the suggest-list.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
407 GntComboBox *accountlist) |
8c356223e182
Select the right account when a buddyname is selected from the suggest-list.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
408 { |
8c356223e182
Select the right account when a buddyname is selected from the suggest-list.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
409 GList *accounts = gnt_tree_get_rows(GNT_TREE(accountlist->dropdown)); |
25925
6e1967b0f90b
Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents:
25839
diff
changeset
|
410 const char *name = gnt_entry_get_text(username); |
19761
8c356223e182
Select the right account when a buddyname is selected from the suggest-list.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
411 while (accounts) { |
8c356223e182
Select the right account when a buddyname is selected from the suggest-list.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
412 if (purple_find_buddy(accounts->data, name)) { |
8c356223e182
Select the right account when a buddyname is selected from the suggest-list.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
413 gnt_combo_box_set_selected(accountlist, accounts->data); |
8c356223e182
Select the right account when a buddyname is selected from the suggest-list.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
414 gnt_widget_draw(GNT_WIDGET(accountlist)); |
8c356223e182
Select the right account when a buddyname is selected from the suggest-list.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
415 break; |
8c356223e182
Select the right account when a buddyname is selected from the suggest-list.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
416 } |
8c356223e182
Select the right account when a buddyname is selected from the suggest-list.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
417 accounts = accounts->next; |
8c356223e182
Select the right account when a buddyname is selected from the suggest-list.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
418 } |
8c356223e182
Select the right account when a buddyname is selected from the suggest-list.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
419 } |
8c356223e182
Select the right account when a buddyname is selected from the suggest-list.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
420 |
21893
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
421 static GntWidget* |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
422 create_boolean_field(PurpleRequestField *field) |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
423 { |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
424 const char *label = purple_request_field_get_label(field); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
425 GntWidget *check = gnt_check_box_new(label); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
426 gnt_check_box_set_checked(GNT_CHECK_BOX(check), |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
427 purple_request_field_bool_get_default_value(field)); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
428 return check; |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
429 } |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
430 |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
431 static GntWidget* |
25925
6e1967b0f90b
Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents:
25839
diff
changeset
|
432 create_string_field(PurpleRequestField *field, GntWidget **username) |
21893
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
433 { |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
434 const char *hint = purple_request_field_get_type_hint(field); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
435 GntWidget *entry = gnt_entry_new( |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
436 purple_request_field_string_get_default_value(field)); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
437 gnt_entry_set_masked(GNT_ENTRY(entry), |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
438 purple_request_field_string_is_masked(field)); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
439 if (hint && purple_str_has_prefix(hint, "screenname")) { |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
440 PurpleBlistNode *node = purple_blist_get_root(); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
441 gboolean offline = purple_str_has_suffix(hint, "all"); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
442 for (; node; node = purple_blist_node_next(node, offline)) { |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
443 if (!PURPLE_BLIST_NODE_IS_BUDDY(node)) |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
444 continue; |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
445 gnt_entry_add_suggest(GNT_ENTRY(entry), purple_buddy_get_name((PurpleBuddy*)node)); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
446 } |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
447 gnt_entry_set_always_suggest(GNT_ENTRY(entry), TRUE); |
25925
6e1967b0f90b
Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents:
25839
diff
changeset
|
448 if (username) |
6e1967b0f90b
Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents:
25839
diff
changeset
|
449 *username = entry; |
21893
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
450 } else if (hint && !strcmp(hint, "group")) { |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
451 PurpleBlistNode *node; |
22212
6bb29f94862c
Add API so Finch doesn't need to touch the internals of PurpleBlistNode.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22096
diff
changeset
|
452 for (node = purple_blist_get_root(); node; |
6bb29f94862c
Add API so Finch doesn't need to touch the internals of PurpleBlistNode.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22096
diff
changeset
|
453 node = purple_blist_node_get_sibling_next(node)) { |
21893
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
454 if (PURPLE_BLIST_NODE_IS_GROUP(node)) |
22220
1f256f63c52c
Update finch to not touch the internals of PurpleGroup.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22217
diff
changeset
|
455 gnt_entry_add_suggest(GNT_ENTRY(entry), purple_group_get_name((PurpleGroup *)node)); |
21893
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
456 } |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
457 } |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
458 return entry; |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
459 } |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
460 |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
461 static GntWidget* |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
462 create_integer_field(PurpleRequestField *field) |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
463 { |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
464 char str[256]; |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
465 int val = purple_request_field_int_get_default_value(field); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
466 GntWidget *entry; |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
467 |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
468 snprintf(str, sizeof(str), "%d", val); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
469 entry = gnt_entry_new(str); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
470 gnt_entry_set_flag(GNT_ENTRY(entry), GNT_ENTRY_FLAG_INT); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
471 return entry; |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
472 } |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
473 |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
474 static GntWidget* |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
475 create_choice_field(PurpleRequestField *field) |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
476 { |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
477 int id; |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
478 GList *list; |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
479 GntWidget *combo = gnt_combo_box_new(); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
480 |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
481 list = purple_request_field_choice_get_labels(field); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
482 for (id = 1; list; list = list->next, id++) |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
483 { |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
484 gnt_combo_box_add_data(GNT_COMBO_BOX(combo), |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
485 GINT_TO_POINTER(id), list->data); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
486 } |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
487 gnt_combo_box_set_selected(GNT_COMBO_BOX(combo), |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
488 GINT_TO_POINTER(purple_request_field_choice_get_default_value(field))); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
489 return combo; |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
490 } |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
491 |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
492 static GntWidget* |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
493 create_list_field(PurpleRequestField *field) |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
494 { |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
495 GntWidget *ret = NULL; |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
496 GList *list; |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
497 gboolean multi = purple_request_field_list_get_multi_select(field); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
498 if (multi) |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
499 { |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
500 GntWidget *tree = gnt_tree_new(); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
501 |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
502 list = purple_request_field_list_get_items(field); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
503 for (; list; list = list->next) |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
504 { |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
505 const char *text = list->data; |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
506 gpointer key = purple_request_field_list_get_data(field, text); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
507 gnt_tree_add_choice(GNT_TREE(tree), key, |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
508 gnt_tree_create_row(GNT_TREE(tree), text), NULL, NULL); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
509 if (purple_request_field_list_is_selected(field, text)) |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
510 gnt_tree_set_choice(GNT_TREE(tree), key, TRUE); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
511 } |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
512 ret = tree; |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
513 } |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
514 else |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
515 { |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
516 GntWidget *combo = gnt_combo_box_new(); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
517 |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
518 list = purple_request_field_list_get_items(field); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
519 for (; list; list = list->next) |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
520 { |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
521 const char *text = list->data; |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
522 gpointer key = purple_request_field_list_get_data(field, text); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
523 gnt_combo_box_add_data(GNT_COMBO_BOX(combo), key, text); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
524 if (purple_request_field_list_is_selected(field, text)) |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
525 gnt_combo_box_set_selected(GNT_COMBO_BOX(combo), key); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
526 } |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
527 ret = combo; |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
528 } |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
529 return ret; |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
530 } |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
531 |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
532 static GntWidget* |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
533 create_account_field(PurpleRequestField *field) |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
534 { |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
535 gboolean all; |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
536 PurpleAccount *def; |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
537 GList *list; |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
538 GntWidget *combo = gnt_combo_box_new(); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
539 |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
540 all = purple_request_field_account_get_show_all(field); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
541 def = purple_request_field_account_get_value(field); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
542 if (!def) |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
543 def = purple_request_field_account_get_default_value(field); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
544 |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
545 if (all) |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
546 list = purple_accounts_get_all(); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
547 else |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
548 list = purple_connections_get_all(); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
549 |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
550 for (; list; list = list->next) |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
551 { |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
552 PurpleAccount *account; |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
553 char *text; |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
554 |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
555 if (all) |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
556 account = list->data; |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
557 else |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
558 account = purple_connection_get_account(list->data); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
559 |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
560 text = g_strdup_printf("%s (%s)", |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
561 purple_account_get_username(account), |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
562 purple_account_get_protocol_name(account)); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
563 gnt_combo_box_add_data(GNT_COMBO_BOX(combo), account, text); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
564 g_free(text); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
565 if (account == def) |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
566 gnt_combo_box_set_selected(GNT_COMBO_BOX(combo), account); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
567 } |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
568 gnt_widget_set_size(combo, 20, 3); /* ew */ |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
569 return combo; |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
570 } |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
571 |
15817 | 572 static void * |
573 finch_request_fields(const char *title, const char *primary, | |
15822 | 574 const char *secondary, PurpleRequestFields *allfields, |
15817 | 575 const char *ok, GCallback ok_cb, |
576 const char *cancel, GCallback cancel_cb, | |
16439
08db93bbd798
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents:
16310
diff
changeset
|
577 PurpleAccount *account, const char *who, PurpleConversation *conv, |
15817 | 578 void *userdata) |
579 { | |
580 GntWidget *window, *box; | |
581 GList *grlist; | |
25925
6e1967b0f90b
Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents:
25839
diff
changeset
|
582 GntWidget *username = NULL, *accountlist = NULL; |
15817 | 583 |
15822 | 584 window = setup_request_window(title, primary, secondary, PURPLE_REQUEST_FIELDS); |
15817 | 585 |
586 /* This is how it's going to work: the request-groups are going to be | |
587 * stacked vertically one after the other. A GntLine will be separating | |
588 * the groups. */ | |
589 box = gnt_vbox_new(FALSE); | |
590 gnt_box_set_pad(GNT_BOX(box), 0); | |
591 gnt_box_set_fill(GNT_BOX(box), TRUE); | |
15822 | 592 for (grlist = purple_request_fields_get_groups(allfields); grlist; grlist = grlist->next) |
15817 | 593 { |
15822 | 594 PurpleRequestFieldGroup *group = grlist->data; |
595 GList *fields = purple_request_field_group_get_fields(group); | |
15817 | 596 GntWidget *hbox; |
15822 | 597 const char *title = purple_request_field_group_get_title(group); |
15817 | 598 |
599 if (title) | |
600 gnt_box_add_widget(GNT_BOX(box), | |
601 gnt_label_new_with_format(title, GNT_TEXT_FLAG_BOLD)); | |
602 | |
603 for (; fields ; fields = fields->next) | |
604 { | |
15822 | 605 PurpleRequestField *field = fields->data; |
606 PurpleRequestFieldType type = purple_request_field_get_type(field); | |
607 const char *label = purple_request_field_get_label(field); | |
21893
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
608 |
27550
710cbace0076
Do not show hidden request fields.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
26347
diff
changeset
|
609 if (!purple_request_field_is_visible(field)) |
710cbace0076
Do not show hidden request fields.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
26347
diff
changeset
|
610 continue; |
710cbace0076
Do not show hidden request fields.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
26347
diff
changeset
|
611 |
15817 | 612 hbox = gnt_hbox_new(TRUE); /* hrm */ |
613 gnt_box_add_widget(GNT_BOX(box), hbox); | |
21893
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
614 |
15822 | 615 if (type != PURPLE_REQUEST_FIELD_BOOLEAN && label) |
15817 | 616 { |
22789
4457e6a99d13
Make sure the required fields are all entered correctly. Underline the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22220
diff
changeset
|
617 GntWidget *l; |
4457e6a99d13
Make sure the required fields are all entered correctly. Underline the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22220
diff
changeset
|
618 if (purple_request_field_is_required(field)) |
4457e6a99d13
Make sure the required fields are all entered correctly. Underline the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22220
diff
changeset
|
619 l = gnt_label_new_with_format(label, GNT_TEXT_FLAG_UNDERLINE); |
4457e6a99d13
Make sure the required fields are all entered correctly. Underline the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22220
diff
changeset
|
620 else |
4457e6a99d13
Make sure the required fields are all entered correctly. Underline the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22220
diff
changeset
|
621 l = gnt_label_new(label); |
15817 | 622 gnt_widget_set_size(l, 0, 1); |
623 gnt_box_add_widget(GNT_BOX(hbox), l); | |
624 } | |
625 | |
15822 | 626 if (type == PURPLE_REQUEST_FIELD_BOOLEAN) |
15817 | 627 { |
22217
ad357ca94de9
We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22212
diff
changeset
|
628 FINCH_SET_DATA(field, create_boolean_field(field)); |
15817 | 629 } |
15822 | 630 else if (type == PURPLE_REQUEST_FIELD_STRING) |
15817 | 631 { |
25925
6e1967b0f90b
Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents:
25839
diff
changeset
|
632 FINCH_SET_DATA(field, create_string_field(field, &username)); |
15817 | 633 } |
15822 | 634 else if (type == PURPLE_REQUEST_FIELD_INTEGER) |
15817 | 635 { |
22217
ad357ca94de9
We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22212
diff
changeset
|
636 FINCH_SET_DATA(field, create_integer_field(field)); |
15817 | 637 } |
15822 | 638 else if (type == PURPLE_REQUEST_FIELD_CHOICE) |
15817 | 639 { |
22217
ad357ca94de9
We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22212
diff
changeset
|
640 FINCH_SET_DATA(field, create_choice_field(field)); |
15817 | 641 } |
15822 | 642 else if (type == PURPLE_REQUEST_FIELD_LIST) |
15817 | 643 { |
22217
ad357ca94de9
We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22212
diff
changeset
|
644 FINCH_SET_DATA(field, create_list_field(field)); |
15817 | 645 } |
15822 | 646 else if (type == PURPLE_REQUEST_FIELD_ACCOUNT) |
15817 | 647 { |
25837
5d681e194fb3
Hide the PurpleRequestField struct. I figured this one would be easy and
Richard Laager <rlaager@wiktel.com>
parents:
22852
diff
changeset
|
648 accountlist = create_account_field(field); |
25838
c039a6e448d7
Revert the last 'struct-hiding' change.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
25837
diff
changeset
|
649 FINCH_SET_DATA(field, accountlist); |
15817 | 650 } |
651 else | |
652 { | |
22217
ad357ca94de9
We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22212
diff
changeset
|
653 FINCH_SET_DATA(field, gnt_label_new_with_format(_("Not implemented yet."), |
ad357ca94de9
We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22212
diff
changeset
|
654 GNT_TEXT_FLAG_BOLD)); |
15817 | 655 } |
21893
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
656 gnt_box_set_alignment(GNT_BOX(hbox), GNT_ALIGN_MID); |
22217
ad357ca94de9
We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22212
diff
changeset
|
657 gnt_box_add_widget(GNT_BOX(hbox), GNT_WIDGET(FINCH_GET_DATA(field))); |
15817 | 658 } |
659 if (grlist->next) | |
660 gnt_box_add_widget(GNT_BOX(box), gnt_hline_new()); | |
661 } | |
662 gnt_box_add_widget(GNT_BOX(window), box); | |
663 | |
18333
f23a7736586f
Consider closing a request dialog equivalent to cancelling it.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
664 box = setup_button_box(window, userdata, request_fields_cb, allfields, |
15817 | 665 ok, ok_cb, cancel, cancel_cb, NULL); |
666 gnt_box_add_widget(GNT_BOX(window), box); | |
667 | |
18333
f23a7736586f
Consider closing a request dialog equivalent to cancelling it.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
668 setup_default_callback(window, cancel_cb, userdata); |
15817 | 669 gnt_widget_show(window); |
16310
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
670 |
25925
6e1967b0f90b
Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents:
25839
diff
changeset
|
671 if (username && accountlist) { |
6e1967b0f90b
Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents:
25839
diff
changeset
|
672 g_signal_connect(username, "completion", G_CALLBACK(update_selected_account), accountlist); |
19761
8c356223e182
Select the right account when a buddyname is selected from the suggest-list.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
673 } |
8c356223e182
Select the right account when a buddyname is selected from the suggest-list.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
674 |
16310
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
675 g_object_set_data(G_OBJECT(window), "fields", allfields); |
22847
750813c2db46
The required fields are not really required if the action is cancelled.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22789
diff
changeset
|
676 |
15817 | 677 return window; |
678 } | |
679 | |
680 static void | |
18411
3849776d0f71
Fix some crashes resulting from rejecting file-transfer requests.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18410
diff
changeset
|
681 file_cancel_cb(gpointer fq, GntWidget *wid) |
15817 | 682 { |
21893
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
683 FinchFileRequest *data = fq; |
15817 | 684 if (data->cbs[1] != NULL) |
15822 | 685 ((PurpleRequestFileCb)data->cbs[1])(data->user_data, NULL); |
15817 | 686 |
15822 | 687 purple_request_close(PURPLE_REQUEST_FILE, data->dialog); |
15817 | 688 } |
689 | |
690 static void | |
18411
3849776d0f71
Fix some crashes resulting from rejecting file-transfer requests.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18410
diff
changeset
|
691 file_ok_cb(gpointer fq, GntWidget *widget) |
15817 | 692 { |
21893
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
693 FinchFileRequest *data = fq; |
15927
846a00760176
use file select dialog
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
15924
diff
changeset
|
694 char *file = gnt_file_sel_get_selected_file(GNT_FILE_SEL(data->dialog)); |
18410
719f73b9a593
Remember the open/save file locations.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18347
diff
changeset
|
695 char *dir = g_path_get_dirname(file); |
15817 | 696 if (data->cbs[0] != NULL) |
15927
846a00760176
use file select dialog
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
15924
diff
changeset
|
697 ((PurpleRequestFileCb)data->cbs[0])(data->user_data, file); |
846a00760176
use file select dialog
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
15924
diff
changeset
|
698 g_free(file); |
18410
719f73b9a593
Remember the open/save file locations.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18347
diff
changeset
|
699 purple_prefs_set_path(data->save ? "/finch/filelocations/last_save_folder" : |
719f73b9a593
Remember the open/save file locations.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18347
diff
changeset
|
700 "/finch/filelocations/last_open_folder", dir); |
719f73b9a593
Remember the open/save file locations.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18347
diff
changeset
|
701 g_free(dir); |
15817 | 702 |
15822 | 703 purple_request_close(PURPLE_REQUEST_FILE, data->dialog); |
15817 | 704 } |
705 | |
706 static void | |
21893
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
707 file_request_destroy(FinchFileRequest *data) |
15817 | 708 { |
709 g_free(data->cbs); | |
710 g_free(data); | |
711 } | |
712 | |
21893
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
713 static FinchFileRequest * |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
714 finch_file_request_window(const char *title, const char *path, |
15817 | 715 GCallback ok_cb, GCallback cancel_cb, |
716 void *user_data) | |
717 { | |
15927
846a00760176
use file select dialog
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
15924
diff
changeset
|
718 GntWidget *window = gnt_file_sel_new(); |
846a00760176
use file select dialog
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
15924
diff
changeset
|
719 GntFileSel *sel = GNT_FILE_SEL(window); |
21893
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
720 FinchFileRequest *data = g_new0(FinchFileRequest, 1); |
15817 | 721 |
722 data->user_data = user_data; | |
723 data->cbs = g_new0(GCallback, 2); | |
724 data->cbs[0] = ok_cb; | |
725 data->cbs[1] = cancel_cb; | |
726 data->dialog = window; | |
21893
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
727 gnt_box_set_title(GNT_BOX(window), title); |
18410
719f73b9a593
Remember the open/save file locations.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18347
diff
changeset
|
728 |
719f73b9a593
Remember the open/save file locations.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18347
diff
changeset
|
729 gnt_file_sel_set_current_location(sel, (path && *path) ? path : purple_home_dir()); |
719f73b9a593
Remember the open/save file locations.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18347
diff
changeset
|
730 |
15927
846a00760176
use file select dialog
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
15924
diff
changeset
|
731 g_signal_connect(G_OBJECT(sel->cancel), "activate", |
18411
3849776d0f71
Fix some crashes resulting from rejecting file-transfer requests.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18410
diff
changeset
|
732 G_CALLBACK(action_performed), window); |
3849776d0f71
Fix some crashes resulting from rejecting file-transfer requests.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18410
diff
changeset
|
733 g_signal_connect(G_OBJECT(sel->select), "activate", |
3849776d0f71
Fix some crashes resulting from rejecting file-transfer requests.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18410
diff
changeset
|
734 G_CALLBACK(action_performed), window); |
3849776d0f71
Fix some crashes resulting from rejecting file-transfer requests.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18410
diff
changeset
|
735 g_signal_connect_swapped(G_OBJECT(sel->cancel), "activate", |
15927
846a00760176
use file select dialog
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
15924
diff
changeset
|
736 G_CALLBACK(file_cancel_cb), data); |
18411
3849776d0f71
Fix some crashes resulting from rejecting file-transfer requests.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18410
diff
changeset
|
737 g_signal_connect_swapped(G_OBJECT(sel->select), "activate", |
15927
846a00760176
use file select dialog
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
15924
diff
changeset
|
738 G_CALLBACK(file_ok_cb), data); |
15817 | 739 |
18411
3849776d0f71
Fix some crashes resulting from rejecting file-transfer requests.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18410
diff
changeset
|
740 setup_default_callback(window, file_cancel_cb, data); |
3849776d0f71
Fix some crashes resulting from rejecting file-transfer requests.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18410
diff
changeset
|
741 g_object_set_data_full(G_OBJECT(window), "filerequestdata", data, |
3849776d0f71
Fix some crashes resulting from rejecting file-transfer requests.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18410
diff
changeset
|
742 (GDestroyNotify)file_request_destroy); |
21893
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
743 |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
744 return data; |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
745 } |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
746 |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
747 static void * |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
748 finch_request_file(const char *title, const char *filename, |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
749 gboolean savedialog, |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
750 GCallback ok_cb, GCallback cancel_cb, |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
751 PurpleAccount *account, const char *who, PurpleConversation *conv, |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
752 void *user_data) |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
753 { |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
754 FinchFileRequest *data; |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
755 const char *path; |
15817 | 756 |
21893
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
757 path = purple_prefs_get_path(savedialog ? "/finch/filelocations/last_save_folder" : "/finch/filelocations/last_open_folder"); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
758 data = finch_file_request_window(title ? title : (savedialog ? _("Save File...") : _("Open File...")), path, |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
759 ok_cb, cancel_cb, user_data); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
760 data->save = savedialog; |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
761 if (savedialog) |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
762 gnt_file_sel_set_suggested_filename(GNT_FILE_SEL(data->dialog), filename); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
763 |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
764 gnt_widget_show(data->dialog); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
765 return data->dialog; |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
766 } |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
767 |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
768 static void * |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
769 finch_request_folder(const char *title, const char *dirname, GCallback ok_cb, |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
770 GCallback cancel_cb, PurpleAccount *account, const char *who, PurpleConversation *conv, |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
771 void *user_data) |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
772 { |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
773 FinchFileRequest *data; |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
774 |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
775 data = finch_file_request_window(title ? title : _("Choose Location..."), dirname, |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
776 ok_cb, cancel_cb, user_data); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
777 data->save = TRUE; |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
778 gnt_file_sel_set_dirs_only(GNT_FILE_SEL(data->dialog), TRUE); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
779 |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
780 gnt_widget_show(data->dialog); |
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
781 return data->dialog; |
15817 | 782 } |
783 | |
15822 | 784 static PurpleRequestUiOps uiops = |
15817 | 785 { |
17091
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16927
diff
changeset
|
786 finch_request_input, |
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16927
diff
changeset
|
787 finch_request_choice, |
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16927
diff
changeset
|
788 finch_request_action, |
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16927
diff
changeset
|
789 finch_request_fields, |
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16927
diff
changeset
|
790 finch_request_file, |
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16927
diff
changeset
|
791 finch_close_request, |
21893
ae08b1e3ef63
Implement 'request_folder'. (so now the 'autoaccept' plugin cannot just be a Gtk plugin)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21099
diff
changeset
|
792 finch_request_folder, |
17091
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16927
diff
changeset
|
793 NULL, |
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16927
diff
changeset
|
794 NULL, |
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16927
diff
changeset
|
795 NULL, |
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16927
diff
changeset
|
796 NULL |
15817 | 797 }; |
798 | |
15822 | 799 PurpleRequestUiOps *finch_request_get_ui_ops() |
15817 | 800 { |
801 return &uiops; | |
802 } | |
803 | |
804 void finch_request_init() | |
805 { | |
806 } | |
807 | |
808 void finch_request_uninit() | |
809 { | |
810 } | |
811 | |
16310
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
812 void finch_request_save_in_prefs(gpointer null, PurpleRequestFields *allfields) |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
813 { |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
814 GList *list; |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
815 for (list = purple_request_fields_get_groups(allfields); list; list = list->next) { |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
816 PurpleRequestFieldGroup *group = list->data; |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
817 GList *fields = purple_request_field_group_get_fields(group); |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
818 |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
819 for (; fields ; fields = fields->next) { |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
820 PurpleRequestField *field = fields->data; |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
821 PurpleRequestFieldType type = purple_request_field_get_type(field); |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
822 PurplePrefType pt; |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
823 gpointer val = NULL; |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
824 const char *id = purple_request_field_get_id(field); |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
825 |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
826 switch (type) { |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
827 case PURPLE_REQUEST_FIELD_LIST: |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
828 val = purple_request_field_list_get_selected(field)->data; |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
829 break; |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
830 case PURPLE_REQUEST_FIELD_BOOLEAN: |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
831 val = GINT_TO_POINTER(purple_request_field_bool_get_value(field)); |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
832 break; |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
833 case PURPLE_REQUEST_FIELD_INTEGER: |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
834 val = GINT_TO_POINTER(purple_request_field_int_get_value(field)); |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
835 break; |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
836 case PURPLE_REQUEST_FIELD_STRING: |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
837 val = (gpointer)purple_request_field_string_get_value(field); |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
838 break; |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
839 default: |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
840 break; |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
841 } |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
842 |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
843 pt = purple_prefs_get_type(id); |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
844 switch (pt) { |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
845 case PURPLE_PREF_INT: |
17392
a236c67e39b6
A change from o_sukhodolsky:
Richard Laager <rlaager@wiktel.com>
parents:
17091
diff
changeset
|
846 { |
18222
ef65d43190e5
Fix a few runtime warnings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18118
diff
changeset
|
847 long int tmp = GPOINTER_TO_INT(val); |
16310
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
848 if (type == PURPLE_REQUEST_FIELD_LIST) /* Lists always return string */ |
17392
a236c67e39b6
A change from o_sukhodolsky:
Richard Laager <rlaager@wiktel.com>
parents:
17091
diff
changeset
|
849 sscanf(val, "%ld", &tmp); |
a236c67e39b6
A change from o_sukhodolsky:
Richard Laager <rlaager@wiktel.com>
parents:
17091
diff
changeset
|
850 purple_prefs_set_int(id, (gint)tmp); |
16310
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
851 break; |
17392
a236c67e39b6
A change from o_sukhodolsky:
Richard Laager <rlaager@wiktel.com>
parents:
17091
diff
changeset
|
852 } |
16310
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
853 case PURPLE_PREF_BOOLEAN: |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
854 purple_prefs_set_bool(id, GPOINTER_TO_INT(val)); |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
855 break; |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
856 case PURPLE_PREF_STRING: |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
857 purple_prefs_set_string(id, val); |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
858 break; |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
859 default: |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
860 break; |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
861 } |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
862 } |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
863 } |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
864 } |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
865 |
22005
829d054f4f1a
Add a function to get a widget for a request field.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21893
diff
changeset
|
866 GntWidget *finch_request_field_get_widget(PurpleRequestField *field) |
829d054f4f1a
Add a function to get a widget for a request field.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21893
diff
changeset
|
867 { |
829d054f4f1a
Add a function to get a widget for a request field.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21893
diff
changeset
|
868 GntWidget *ret = NULL; |
829d054f4f1a
Add a function to get a widget for a request field.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21893
diff
changeset
|
869 switch (purple_request_field_get_type(field)) { |
829d054f4f1a
Add a function to get a widget for a request field.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21893
diff
changeset
|
870 case PURPLE_REQUEST_FIELD_BOOLEAN: |
829d054f4f1a
Add a function to get a widget for a request field.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21893
diff
changeset
|
871 ret = create_boolean_field(field); |
829d054f4f1a
Add a function to get a widget for a request field.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21893
diff
changeset
|
872 break; |
829d054f4f1a
Add a function to get a widget for a request field.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21893
diff
changeset
|
873 case PURPLE_REQUEST_FIELD_STRING: |
829d054f4f1a
Add a function to get a widget for a request field.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21893
diff
changeset
|
874 ret = create_string_field(field, NULL); |
829d054f4f1a
Add a function to get a widget for a request field.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21893
diff
changeset
|
875 break; |
829d054f4f1a
Add a function to get a widget for a request field.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21893
diff
changeset
|
876 case PURPLE_REQUEST_FIELD_INTEGER: |
829d054f4f1a
Add a function to get a widget for a request field.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21893
diff
changeset
|
877 ret = create_integer_field(field); |
829d054f4f1a
Add a function to get a widget for a request field.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21893
diff
changeset
|
878 break; |
829d054f4f1a
Add a function to get a widget for a request field.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21893
diff
changeset
|
879 case PURPLE_REQUEST_FIELD_CHOICE: |
829d054f4f1a
Add a function to get a widget for a request field.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21893
diff
changeset
|
880 ret = create_choice_field(field); |
829d054f4f1a
Add a function to get a widget for a request field.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21893
diff
changeset
|
881 break; |
829d054f4f1a
Add a function to get a widget for a request field.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21893
diff
changeset
|
882 case PURPLE_REQUEST_FIELD_LIST: |
829d054f4f1a
Add a function to get a widget for a request field.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21893
diff
changeset
|
883 ret = create_list_field(field); |
829d054f4f1a
Add a function to get a widget for a request field.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21893
diff
changeset
|
884 break; |
829d054f4f1a
Add a function to get a widget for a request field.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21893
diff
changeset
|
885 case PURPLE_REQUEST_FIELD_ACCOUNT: |
829d054f4f1a
Add a function to get a widget for a request field.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21893
diff
changeset
|
886 ret = create_account_field(field); |
829d054f4f1a
Add a function to get a widget for a request field.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21893
diff
changeset
|
887 break; |
829d054f4f1a
Add a function to get a widget for a request field.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21893
diff
changeset
|
888 default: |
829d054f4f1a
Add a function to get a widget for a request field.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21893
diff
changeset
|
889 purple_debug_error("GntRequest", "Unimplemented request-field %d\n", purple_request_field_get_type(field)); |
829d054f4f1a
Add a function to get a widget for a request field.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21893
diff
changeset
|
890 break; |
829d054f4f1a
Add a function to get a widget for a request field.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21893
diff
changeset
|
891 } |
829d054f4f1a
Add a function to get a widget for a request field.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21893
diff
changeset
|
892 return ret; |
829d054f4f1a
Add a function to get a widget for a request field.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21893
diff
changeset
|
893 } |
829d054f4f1a
Add a function to get a widget for a request field.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21893
diff
changeset
|
894 |