src/dialogs.c

changeset 3753
e7aa1447d839
parent 3749
329011f3b9bf
child 3757
b05070850821
equal deleted inserted replaced
3752:a0468bc9b944 3753:e7aa1447d839
461 gtk_signal_connect(GTK_OBJECT(warn), "clicked", GTK_SIGNAL_FUNC(do_warn), w); 461 gtk_signal_connect(GTK_OBJECT(warn), "clicked", GTK_SIGNAL_FUNC(do_warn), w);
462 462
463 gtk_widget_show(w->window); 463 gtk_widget_show(w->window);
464 } 464 }
465 465
466 void do_remove_buddy(GtkWidget *w, struct buddy *b) 466 void do_remove_buddy(struct buddy *b)
467 { 467 {
468 struct group *g = find_group_by_buddy(b->gc, b->name); 468 struct group *g = find_group_by_buddy(b->gc, b->name);
469 struct gaim_connection *gc = b->gc; 469 struct gaim_connection *gc = b->gc;
470 struct conversation *cv; 470 struct conversation *cv;
471 471
484 484
485 } 485 }
486 486
487 void show_confirm_del(struct gaim_connection *gc, gchar *name) 487 void show_confirm_del(struct gaim_connection *gc, gchar *name)
488 { 488 {
489 struct confirm_del *b = g_new0(struct confirm_del, 1); 489 struct buddy *bd = find_buddy(gc, name);
490 struct buddy *bd; 490 char *text;
491 GtkWidget *hbox; 491 if (!bd)
492 GtkWidget *vbox; 492 return;
493 GtkWidget *fbox; 493
494 GtkSizeGroup *sg = gtk_size_group_new(GTK_SIZE_GROUP_BOTH); 494 text = g_strdup_printf("You are about to remove %s from your buddy list. Do you want to continue?", name);
495 gchar tmp[2048]; 495 do_ask_dialog("Remove Buddy", text, bd, "Remove Buddy", do_remove_buddy, "Cancel", NULL);
496 char labeltext[1024 * 2]; 496 g_free(text);
497 char *filename;
498 GtkWidget *image;
499
500 GAIM_DIALOG(b->window);
501 dialogwindows = g_list_prepend(dialogwindows, b->window);
502
503 g_snprintf(tmp, sizeof(tmp), _("Gaim - Remove %s?"), name);
504 gtk_container_set_border_width(GTK_CONTAINER(b->window), 6);
505 gtk_window_set_title(GTK_WINDOW(b->window), tmp);
506 gtk_window_set_wmclass(GTK_WINDOW(b->window), "confirm_del", "Gaim");
507 gtk_window_set_policy(GTK_WINDOW(b->window), FALSE, FALSE, TRUE);
508 gtk_signal_connect(GTK_OBJECT(b->window), "delete_event",
509 GTK_SIGNAL_FUNC(destroy_dialog), b->window);
510
511 gtk_widget_realize(b->window);
512
513 vbox = gtk_vbox_new(FALSE, 0);
514 gtk_box_set_spacing(GTK_BOX(vbox), 12);
515 gtk_container_set_border_width(GTK_CONTAINER(vbox), 6);
516 gtk_container_add(GTK_CONTAINER(b->window), vbox);
517 gtk_widget_show(vbox);
518
519 fbox = gtk_hbox_new(FALSE, 0);
520 gtk_box_set_spacing(GTK_BOX(fbox), 6);
521 gtk_container_set_border_width(GTK_CONTAINER(fbox), 5);
522 gtk_widget_show(fbox);
523
524 filename = g_build_filename (DATADIR, "pixmaps", "gaim", "dialogs", "gaim_question.png", NULL);
525 debug_printf("Loading: %s\n", filename);
526 image = gtk_image_new_from_file(filename);
527 gtk_misc_set_alignment(GTK_MISC(image), 0, 0);
528 gtk_box_pack_start(GTK_BOX(fbox), image, FALSE, FALSE, 0);
529 gtk_widget_show(image);
530 g_free(filename);
531
532 g_snprintf(labeltext, sizeof(labeltext), "<span weight=\"bold\" size=\"larger\">Remove Buddy</span>\n\nYou are about to remove '%s' from\nyour buddylist. Do you want to continue?", name);
533 b->label = gtk_label_new(NULL);
534 gtk_label_set_markup(GTK_LABEL(b->label), labeltext);
535 gtk_label_set_line_wrap(GTK_LABEL(b->label), TRUE);
536 gtk_label_set_justify(GTK_LABEL(b->label), GTK_JUSTIFY_LEFT);
537 gtk_misc_set_alignment(GTK_MISC(b->label), 0, 0);
538 gtk_box_pack_start(GTK_BOX(fbox), b->label, FALSE, FALSE, 0);
539 gtk_widget_show(b->label);
540 gtk_box_pack_start(GTK_BOX(vbox), fbox, TRUE, FALSE, 0);
541
542 hbox = gtk_hbox_new(FALSE, 0);
543 gtk_box_set_spacing(GTK_BOX(hbox), 6);
544 gtk_container_set_border_width(GTK_CONTAINER(hbox), 0);
545 gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, FALSE, 0);
546 gtk_widget_show(hbox);
547
548 b->ok = gtk_button_new_with_label("Remove Buddy");
549 gtk_widget_show(b->ok);
550 gtk_size_group_add_widget(sg, b->ok);
551 gtk_box_pack_end(GTK_BOX(hbox), b->ok, FALSE, FALSE, 5);
552
553 bd = find_buddy(gc, name);
554
555 if (bd)
556 gtk_signal_connect(GTK_OBJECT(b->ok), "clicked", GTK_SIGNAL_FUNC(do_remove_buddy), bd);
557
558 gtk_signal_connect(GTK_OBJECT(b->ok), "clicked", GTK_SIGNAL_FUNC(destroy_dialog), b->window);
559
560 b->cancel = gtk_button_new_from_stock (GTK_STOCK_CANCEL);
561 gtk_widget_show(b->cancel);
562 gtk_size_group_add_widget(sg, b->cancel);
563 gtk_box_pack_end(GTK_BOX(hbox), b->cancel, FALSE, FALSE, 5);
564 gtk_signal_connect(GTK_OBJECT(b->cancel), "clicked", GTK_SIGNAL_FUNC(destroy_dialog), b->window);
565
566 gtk_widget_show(b->window);
567 } 497 }
568 498
569 499
570 500
571 /*------------------------------------------------------------------------*/ 501 /*------------------------------------------------------------------------*/

mercurial