Mercurial > pidgin
comparison src/dialogs.c @ 3757:262ce45f5ae8
[gaim-migrate @ 3896]
Warning dialog redone.
committer: Tailor Script <tailor@pidgin.im>
| author | Sean Egan <seanegan@gmail.com> |
|---|---|
| date | Sun, 20 Oct 2002 01:37:16 +0000 |
| parents | 764ecb5f984b |
| children | 65e9ea5934c8 |
comparison
equal
deleted
inserted
replaced
| 3756:08742bf8a7be | 3757:262ce45f5ae8 |
|---|---|
| 383 destroy_dialog(NULL, icondlg); | 383 destroy_dialog(NULL, icondlg); |
| 384 icondlg = NULL; | 384 icondlg = NULL; |
| 385 } | 385 } |
| 386 } | 386 } |
| 387 | 387 |
| 388 static void do_warn(GtkWidget *widget, struct warning *w) | 388 static void do_warn(GtkWidget *widget, gint resp, struct warning *w) |
| 389 { | 389 { |
| 390 serv_warn(w->gc, w->who, (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w->anon))) ? 1 : 0); | 390 if (resp == GTK_RESPONSE_OK) |
| 391 serv_warn(w->gc, w->who, (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w->anon))) ? 1 : 0); | |
| 391 | 392 |
| 392 destroy_dialog(NULL, w->window); | 393 destroy_dialog(NULL, w->window); |
| 393 } | |
| 394 | |
| 395 static void free_warn_data(GtkObject *obj, struct warning *w) | |
| 396 { | |
| 397 g_free(w); | 394 g_free(w); |
| 398 } | 395 } |
| 399 | 396 |
| 400 void show_warn_dialog(struct gaim_connection *gc, char *who) | 397 void show_warn_dialog(struct gaim_connection *gc, char *who) |
| 401 { | 398 { |
| 402 GtkWidget *cancel; | 399 char *filename = g_build_filename(DATADIR, "pixmaps", "gaim", "dialogs", "gaim_warning.png", NULL); |
| 403 GtkWidget *warn; | 400 char *labeltext; |
| 401 GtkWidget *hbox, *vbox; | |
| 404 GtkWidget *label; | 402 GtkWidget *label; |
| 405 GtkWidget *vbox; | 403 GtkWidget *img = gtk_image_new_from_file(filename); |
| 406 GtkWidget *bbox; | 404 struct conversation *c = find_conversation(who); |
| 407 GtkWidget *frame; | |
| 408 GtkWidget *fbox; | |
| 409 char buf[128]; | |
| 410 | 405 |
| 411 struct warning *w = g_new0(struct warning, 1); | 406 struct warning *w = g_new0(struct warning, 1); |
| 412 w->who = who; | 407 w->who = who; |
| 413 w->gc = gc; | 408 w->gc = gc; |
| 414 | 409 |
| 415 GAIM_DIALOG(w->window); | 410 g_free(filename); |
| 411 gtk_misc_set_alignment(GTK_MISC(img), 0, 0); | |
| 412 | |
| 413 w->window = gtk_dialog_new_with_buttons("", GTK_WINDOW(c->window), GTK_DIALOG_MODAL, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, "_Warn", GTK_RESPONSE_OK, NULL); | |
| 414 gtk_dialog_set_default_response (GTK_DIALOG(w->window), GTK_RESPONSE_OK); | |
| 415 g_signal_connect(G_OBJECT(w->window), "response", G_CALLBACK(do_warn), w); | |
| 416 | |
| 417 gtk_container_set_border_width (GTK_CONTAINER(w->window), 6); | |
| 418 gtk_window_set_resizable(GTK_WINDOW(w->window), FALSE); | |
| 419 gtk_dialog_set_has_separator(GTK_DIALOG(w->window), FALSE); | |
| 420 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(w->window)->vbox), 12); | |
| 421 gtk_container_set_border_width (GTK_CONTAINER(GTK_DIALOG(w->window)->vbox), 6); | |
| 422 | |
| 423 hbox = gtk_hbox_new(FALSE, 12); | |
| 424 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(w->window)->vbox), hbox); | |
| 425 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); | |
| 426 | |
| 427 vbox = gtk_vbox_new(FALSE, 0); | |
| 428 gtk_container_add(GTK_CONTAINER(hbox), vbox); | |
| 429 labeltext = g_strdup_printf(_("<span weight=\"bold\" size=\"larger\">Warn %s?</span>\n\n" | |
| 430 "This will increase %s's warning level and he or she will be subject to harsher rate limiting.\n"), who, who); | |
| 431 label = gtk_label_new(NULL); | |
| 432 gtk_label_set_markup(GTK_LABEL(label), labeltext); | |
| 433 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); | |
| 434 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
| 435 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); | |
| 436 g_free(labeltext); | |
| 437 | |
| 438 w->anon = gtk_check_button_new_with_mnemonic(_("Warn _anonymously?")); | |
| 439 gtk_box_pack_start(GTK_BOX(vbox), w->anon, FALSE, FALSE, 0); | |
| 440 | |
| 441 hbox = gtk_hbox_new(FALSE, 6); | |
| 442 gtk_container_add(GTK_CONTAINER(vbox), hbox); | |
| 443 img = gtk_image_new_from_stock(GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_MENU); | |
| 444 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); | |
| 445 labeltext = _("<b>Anonymous warnings are less severe.</b>"); | |
| 446 /* labeltext = _("Anonymous warnings are less severe."); */ | |
| 447 label = gtk_label_new(NULL); | |
| 448 gtk_label_set_markup(GTK_LABEL(label), labeltext); | |
| 449 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); | |
| 450 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); | |
| 451 | |
| 416 dialogwindows = g_list_prepend(dialogwindows, w->window); | 452 dialogwindows = g_list_prepend(dialogwindows, w->window); |
| 417 gtk_window_set_wmclass(GTK_WINDOW(w->window), "warning", "Gaim"); | 453 gtk_widget_show_all(w->window); |
| 418 gtk_window_set_policy(GTK_WINDOW(w->window), FALSE, FALSE, TRUE); | |
| 419 gtk_window_set_title(GTK_WINDOW(w->window), _("Gaim - Warn user?")); | |
| 420 gtk_container_set_border_width(GTK_CONTAINER(w->window), 5); | |
| 421 gtk_signal_connect(GTK_OBJECT(w->window), "delete_event", | |
| 422 GTK_SIGNAL_FUNC(destroy_dialog), w->window); | |
| 423 gtk_signal_connect(GTK_OBJECT(w->window), "delete_event", GTK_SIGNAL_FUNC(free_warn_data), w); | |
| 424 gtk_widget_realize(w->window); | |
| 425 | |
| 426 fbox = gtk_vbox_new(FALSE, 5); | |
| 427 gtk_container_add(GTK_CONTAINER(w->window), fbox); | |
| 428 gtk_widget_show(fbox); | |
| 429 | |
| 430 frame = gtk_frame_new(_("Warn")); | |
| 431 gtk_box_pack_start(GTK_BOX(fbox), frame, FALSE, FALSE, 5); | |
| 432 gtk_widget_show(frame); | |
| 433 | |
| 434 vbox = gtk_vbox_new(FALSE, 5); | |
| 435 gtk_container_add(GTK_CONTAINER(frame), vbox); | |
| 436 gtk_widget_show(vbox); | |
| 437 | |
| 438 g_snprintf(buf, 127, _("Do you really want to warn %s?"), who); | |
| 439 label = gtk_label_new(buf); | |
| 440 gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 5); | |
| 441 gtk_widget_show(label); | |
| 442 | |
| 443 w->anon = gtk_check_button_new_with_label(_("Warn anonymously?")); | |
| 444 gtk_box_pack_start(GTK_BOX(vbox), w->anon, TRUE, TRUE, 5); | |
| 445 gtk_widget_show(w->anon); | |
| 446 | |
| 447 label = gtk_label_new(_("Anonymous warnings are less harsh.")); | |
| 448 gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 5); | |
| 449 gtk_widget_show(label); | |
| 450 | |
| 451 bbox = gtk_hbox_new(TRUE, 10); | |
| 452 gtk_box_pack_start(GTK_BOX(fbox), bbox, FALSE, FALSE, 5); | |
| 453 gtk_widget_show(bbox); | |
| 454 | |
| 455 cancel = picture_button(w->window, _("Cancel"), cancel_xpm); | |
| 456 gtk_box_pack_end(GTK_BOX(bbox), cancel, FALSE, FALSE, 5); | |
| 457 gtk_signal_connect(GTK_OBJECT(cancel), "clicked", GTK_SIGNAL_FUNC(destroy_dialog), w->window); | |
| 458 | |
| 459 warn = picture_button(w->window, _("Warn"), warn_xpm); | |
| 460 gtk_box_pack_end(GTK_BOX(bbox), warn, FALSE, FALSE, 5); | |
| 461 gtk_signal_connect(GTK_OBJECT(warn), "clicked", GTK_SIGNAL_FUNC(do_warn), w); | |
| 462 | |
| 463 gtk_widget_show(w->window); | |
| 464 } | 454 } |
| 465 | 455 |
| 466 void do_remove_buddy(struct buddy *b) | 456 void do_remove_buddy(struct buddy *b) |
| 467 { | 457 { |
| 468 struct group *g = find_group_by_buddy(b->gc, b->name); | 458 struct group *g = find_group_by_buddy(b->gc, b->name); |
