comparison src/gtkrequest.c @ 5817:571e895bf6ba

[gaim-migrate @ 6247] The buttons on GTK+ multi-field dialogs are now actually called, but they have not been tested. committer: Tailor Script <tailor@pidgin.im>
author Christian Hammond <chipx86@chipx86.com>
date Mon, 09 Jun 2003 01:54:51 +0000
parents 64a164aa6f70
children db204c4a411b
comparison
equal deleted inserted replaced
5816:64a164aa6f70 5817:571e895bf6ba
46 46
47 gboolean multiline; 47 gboolean multiline;
48 48
49 } input; 49 } input;
50 50
51 struct
52 {
53 GaimRequestFields *fields;
54
55 } multifield;
56
51 } u; 57 } u;
52 58
53 } GaimGtkRequestData; 59 } GaimGtkRequestData;
54 60
55 static void 61 static void
82 { 88 {
83 if (id < data->cb_count && data->cbs[id] != NULL) 89 if (id < data->cb_count && data->cbs[id] != NULL)
84 ((GaimRequestActionCb)data->cbs[id])(data->user_data, id); 90 ((GaimRequestActionCb)data->cbs[id])(data->user_data, id);
85 91
86 gaim_request_close(GAIM_REQUEST_INPUT, data); 92 gaim_request_close(GAIM_REQUEST_INPUT, data);
93 }
94
95 static void
96 multifield_ok_cb(GtkWidget *button, GaimGtkRequestData *data)
97 {
98 if (data->cbs[0] != NULL)
99 ((GaimRequestFieldsCb)data->cbs[0])(data->user_data,
100 data->u.multifield.fields);
101
102 gaim_request_close(GAIM_REQUEST_FIELDS, data);
103 }
104
105 static void
106 multifield_cancel_cb(GtkWidget *button, GaimGtkRequestData *data)
107 {
108 if (data->cbs[1] != NULL)
109 ((GaimRequestFieldsCb)data->cbs[1])(data->user_data,
110 data->u.multifield.fields);
111
112 gaim_request_close(GAIM_REQUEST_FIELDS, data);
87 } 113 }
88 114
89 #define STOCK_ITEMIZE(r, l) \ 115 #define STOCK_ITEMIZE(r, l) \
90 if (!strcmp((r), text)) \ 116 if (!strcmp((r), text)) \
91 return (l); 117 return (l);
351 char *label_text; 377 char *label_text;
352 378
353 data = g_new0(GaimGtkRequestData, 1); 379 data = g_new0(GaimGtkRequestData, 1);
354 data->type = GAIM_REQUEST_FIELDS; 380 data->type = GAIM_REQUEST_FIELDS;
355 data->user_data = user_data; 381 data->user_data = user_data;
382 data->u.multifield.fields = fields;
356 383
357 data->cb_count = 2; 384 data->cb_count = 2;
358 data->cbs = g_new0(GCallback, 2); 385 data->cbs = g_new0(GCallback, 2);
359 386
360 data->cbs[0] = ok_cb; 387 data->cbs[0] = ok_cb;
361 data->cbs[1] = cancel_cb; 388 data->cbs[1] = cancel_cb;
362 389
363 data->dialog = win = gtk_window_new(GTK_WINDOW_TOPLEVEL); 390 data->dialog = win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
364 gtk_window_set_role(GTK_WINDOW(win), "fields request"); 391 gtk_window_set_role(GTK_WINDOW(win), "multifield");
365 gtk_container_set_border_width(GTK_CONTAINER(win), 12); 392 gtk_container_set_border_width(GTK_CONTAINER(win), 12);
366 gtk_window_set_resizable(GTK_WINDOW(win), FALSE); 393 gtk_window_set_resizable(GTK_WINDOW(win), FALSE);
367 394
368 /* Setup the vbox */ 395 /* Setup the vbox */
369 vbox = gtk_vbox_new(FALSE, 12); 396 vbox = gtk_vbox_new(FALSE, 12);
579 /* Cancel button */ 606 /* Cancel button */
580 button = gtk_button_new_from_stock(text_to_stock(cancel_text)); 607 button = gtk_button_new_from_stock(text_to_stock(cancel_text));
581 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); 608 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
582 gtk_widget_show(button); 609 gtk_widget_show(button);
583 610
611 g_signal_connect(G_OBJECT(button), "clicked",
612 G_CALLBACK(multifield_cancel_cb), data);
613
584 /* OK button */ 614 /* OK button */
585 button = gtk_button_new_from_stock(text_to_stock(ok_text)); 615 button = gtk_button_new_from_stock(text_to_stock(ok_text));
586 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); 616 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
587 gtk_widget_show(button); 617 gtk_widget_show(button);
588 618
619 g_signal_connect(G_OBJECT(button), "clicked",
620 G_CALLBACK(multifield_ok_cb), data);
621
589 gtk_widget_show(win); 622 gtk_widget_show(win);
590 623
591 return data; 624 return data;
592 } 625 }
593 626
596 { 629 {
597 GaimGtkRequestData *data = (GaimGtkRequestData *)ui_handle; 630 GaimGtkRequestData *data = (GaimGtkRequestData *)ui_handle;
598 631
599 if (data->cbs != NULL) 632 if (data->cbs != NULL)
600 g_free(data->cbs); 633 g_free(data->cbs);
634
635 if (type == GAIM_REQUEST_FIELDS)
636 gaim_request_fields_destroy(data->u.multifield.fields);
601 637
602 gtk_widget_destroy(data->dialog); 638 gtk_widget_destroy(data->dialog);
603 639
604 g_free(data); 640 g_free(data);
605 } 641 }