| 294 data->u.multifield.fields); |
294 data->u.multifield.fields); |
| 295 |
295 |
| 296 purple_request_close(PURPLE_REQUEST_FIELDS, data); |
296 purple_request_close(PURPLE_REQUEST_FIELDS, data); |
| 297 } |
297 } |
| 298 |
298 |
| |
299 static void |
| |
300 multifield_extra_cb(GtkWidget *button, PidginRequestData *data) |
| |
301 { |
| |
302 PurpleRequestFieldsCb cb; |
| |
303 |
| |
304 generic_response_start(data); |
| |
305 |
| |
306 cb = g_object_get_data(G_OBJECT(button), "extra-cb"); |
| |
307 |
| |
308 if (cb != NULL) |
| |
309 cb(data->user_data, data->u.multifield.fields); |
| |
310 |
| |
311 purple_request_close(PURPLE_REQUEST_FIELDS, data); |
| |
312 } |
| |
313 |
| 299 static gboolean |
314 static gboolean |
| 300 destroy_multifield_cb(GtkWidget *dialog, GdkEvent *event, |
315 destroy_multifield_cb(GtkWidget *dialog, GdkEvent *event, |
| 301 PidginRequestData *data) |
316 PidginRequestData *data) |
| 302 { |
317 { |
| 303 multifield_cancel_cb(NULL, data); |
318 multifield_cancel_cb(NULL, data); |
| 1399 PurpleRequestField *field; |
1414 PurpleRequestField *field; |
| 1400 char *label_text; |
1415 char *label_text; |
| 1401 char *primary_esc, *secondary_esc; |
1416 char *primary_esc, *secondary_esc; |
| 1402 int total_fields = 0; |
1417 int total_fields = 0; |
| 1403 const gboolean compact = purple_request_cpar_is_compact(cpar); |
1418 const gboolean compact = purple_request_cpar_is_compact(cpar); |
| |
1419 GSList *extra_actions, *it; |
| |
1420 size_t extra_actions_count, i; |
| 1404 |
1421 |
| 1405 data = g_new0(PidginRequestData, 1); |
1422 data = g_new0(PidginRequestData, 1); |
| 1406 data->type = PURPLE_REQUEST_FIELDS; |
1423 data->type = PURPLE_REQUEST_FIELDS; |
| 1407 data->user_data = user_data; |
1424 data->user_data = user_data; |
| 1408 data->u.multifield.fields = fields; |
1425 data->u.multifield.fields = fields; |
| 1409 |
1426 |
| 1410 purple_request_fields_set_ui_data(fields, data); |
1427 purple_request_fields_set_ui_data(fields, data); |
| |
1428 |
| |
1429 extra_actions = purple_request_cpar_get_extra_actions(cpar); |
| |
1430 extra_actions_count = g_slist_length(extra_actions) / 2; |
| 1411 |
1431 |
| 1412 data->cb_count = 2; |
1432 data->cb_count = 2; |
| 1413 data->cbs = g_new0(GCallback, 2); |
1433 data->cbs = g_new0(GCallback, 2); |
| 1414 |
1434 |
| 1415 data->cbs[0] = ok_cb; |
1435 data->cbs[0] = ok_cb; |
| 1435 gtk_misc_set_alignment(GTK_MISC(img), 0, 0); |
1455 gtk_misc_set_alignment(GTK_MISC(img), 0, 0); |
| 1436 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); |
1456 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); |
| 1437 gtk_widget_show(img); |
1457 gtk_widget_show(img); |
| 1438 |
1458 |
| 1439 pidgin_request_add_help(GTK_DIALOG(win), cpar); |
1459 pidgin_request_add_help(GTK_DIALOG(win), cpar); |
| |
1460 |
| |
1461 it = extra_actions; |
| |
1462 for (i = 0; i < extra_actions_count; i++, it = it->next->next) { |
| |
1463 const gchar *label = it->data; |
| |
1464 PurpleRequestFieldsCb *cb = it->next->data; |
| |
1465 |
| |
1466 button = pidgin_dialog_add_button(GTK_DIALOG(win), |
| |
1467 text_to_stock(label), G_CALLBACK(multifield_extra_cb), |
| |
1468 data); |
| |
1469 g_object_set_data(G_OBJECT(button), "extra-cb", cb); |
| |
1470 } |
| 1440 |
1471 |
| 1441 /* Cancel button */ |
1472 /* Cancel button */ |
| 1442 button = pidgin_dialog_add_button(GTK_DIALOG(win), text_to_stock(cancel_text), G_CALLBACK(multifield_cancel_cb), data); |
1473 button = pidgin_dialog_add_button(GTK_DIALOG(win), text_to_stock(cancel_text), G_CALLBACK(multifield_cancel_cb), data); |
| 1443 gtk_widget_set_can_default(button, TRUE); |
1474 gtk_widget_set_can_default(button, TRUE); |
| 1444 |
1475 |