comparison src/dialogs.c @ 7755:8ebd9038ef62

[gaim-migrate @ 8400] Code cleanup committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Fri, 05 Dec 2003 04:03:31 +0000
parents d691cb95ee67
children 17deab169114
comparison
equal deleted inserted replaced
7754:f75991b27e94 7755:8ebd9038ef62
39 #include "ui.h" 39 #include "ui.h"
40 40
41 /* XXX */ 41 /* XXX */
42 #include "gaim.h" 42 #include "gaim.h"
43 43
44 static GtkWidget *imdialog = NULL; /*I only want ONE of these :) */
45 static GList *dialogwindows = NULL; 44 static GList *dialogwindows = NULL;
46 static GtkWidget *importdialog;
47 static GaimConnection *importgc;
48 static GtkWidget *icondlg;
49 static GtkWidget *rename_dialog = NULL;
50 static GtkWidget *fontseld = NULL; 45 static GtkWidget *fontseld = NULL;
51
52 46
53 struct confirm_del { 47 struct confirm_del {
54 GtkWidget *window; 48 GtkWidget *window;
55 GtkWidget *label; 49 GtkWidget *label;
56 GtkWidget *ok; 50 GtkWidget *ok;
239 if (!GTK_IS_WIDGET(w2)) 233 if (!GTK_IS_WIDGET(w2))
240 dest = w; 234 dest = w;
241 else 235 else
242 dest = w2; 236 dest = w2;
243 237
244 if (dest == imdialog)
245 imdialog = NULL;
246 else if (dest == importdialog) {
247 importdialog = NULL;
248 importgc = NULL;
249 }
250 else if (dest == icondlg)
251 icondlg = NULL;
252 else if (dest == rename_dialog)
253 rename_dialog = NULL;
254
255 dialogwindows = g_list_remove(dialogwindows, dest); 238 dialogwindows = g_list_remove(dialogwindows, dest);
256 gtk_widget_destroy(dest); 239 gtk_widget_destroy(dest);
257 } 240 }
258 241
259 242
262 while (dialogwindows) 245 while (dialogwindows)
263 destroy_dialog(NULL, dialogwindows->data); 246 destroy_dialog(NULL, dialogwindows->data);
264 247
265 if (awaymessage) 248 if (awaymessage)
266 do_im_back(NULL, NULL); 249 do_im_back(NULL, NULL);
267
268 if (imdialog) {
269 destroy_dialog(NULL, imdialog);
270 imdialog = NULL;
271 }
272
273 if (importdialog) {
274 destroy_dialog(NULL, importdialog);
275 importdialog = NULL;
276 }
277
278 if (icondlg) {
279 destroy_dialog(NULL, icondlg);
280 icondlg = NULL;
281 }
282 } 250 }
283 251
284 static void do_warn(GtkWidget *widget, gint resp, struct warning *w) 252 static void do_warn(GtkWidget *widget, gint resp, struct warning *w)
285 { 253 {
286 if (resp == GTK_RESPONSE_OK) 254 if (resp == GTK_RESPONSE_OK)
509 } 477 }
510 478
511 /*------------------------------------------------------------------------*/ 479 /*------------------------------------------------------------------------*/
512 /* The dialog for getting an error */ 480 /* The dialog for getting an error */
513 /*------------------------------------------------------------------------*/ 481 /*------------------------------------------------------------------------*/
514 static void do_im(GtkWidget *widget, int resp, struct getuserinfo *info) 482 static void do_im(GtkWidget *dialog, int id, struct getuserinfo *info)
515 { 483 {
516 const char *who; 484 const char *who;
517 GaimConversation *conv; 485 GaimConversation *conv;
518 GaimAccount *account; 486 GaimAccount *account;
519 487
520 if (resp == GTK_RESPONSE_OK) { 488 switch(id) {
489 case GTK_RESPONSE_OK:
521 who = gtk_entry_get_text(GTK_ENTRY(info->entry)); 490 who = gtk_entry_get_text(GTK_ENTRY(info->entry));
522 491
523 if (!who || !*who) { 492 if (!who || !*who) {
524 /* this shouldn't ever happen */ 493 /* this shouldn't ever happen */
525 return; 494 return;
529 498
530 conv = gaim_find_conversation_with_account(who, account); 499 conv = gaim_find_conversation_with_account(who, account);
531 500
532 if (conv == NULL) 501 if (conv == NULL)
533 conv = gaim_conversation_new(GAIM_CONV_IM, account, who); 502 conv = gaim_conversation_new(GAIM_CONV_IM, account, who);
534 else { 503 else
535 gaim_conv_window_raise(gaim_conversation_get_window(conv)); 504 gaim_conv_window_raise(gaim_conversation_get_window(conv));
536 } 505 break;
537 } 506 }
538 507
539 destroy_dialog(NULL, imdialog); 508 gtk_widget_destroy(GTK_WIDGET(dialog));
540 imdialog = NULL;
541 g_free(info); 509 g_free(info);
542 } 510 }
543 511
544 static void do_info(GtkWidget *widget, int resp, struct getuserinfo *info) 512 static void do_info(GtkWidget *dialog, int id, struct getuserinfo *info)
545 { 513 {
546 char *who; 514 char *who;
547 515
548 if (resp == GTK_RESPONSE_OK) { 516 switch(id) {
517 case GTK_RESPONSE_OK:
549 who = g_strdup(gaim_normalize(info->gc->account, gtk_entry_get_text(GTK_ENTRY(info->entry)))); 518 who = g_strdup(gaim_normalize(info->gc->account, gtk_entry_get_text(GTK_ENTRY(info->entry))));
550 519
551 if (!g_ascii_strcasecmp(who, "")) { 520 if (!g_ascii_strcasecmp(who, "")) {
552 g_free(who); 521 g_free(who);
553 return; 522 return;
555 524
556 /* what do we want to do about this case? */ 525 /* what do we want to do about this case? */
557 if (info->gc) 526 if (info->gc)
558 serv_get_info(info->gc, who); 527 serv_get_info(info->gc, who);
559 g_free(who); 528 g_free(who);
560 } 529 break;
561 gtk_widget_destroy(GTK_WIDGET(widget)); 530 }
531
532 gtk_widget_destroy(GTK_WIDGET(dialog));
562 g_free(info); 533 g_free(info);
563 } 534 }
564 535
565 void show_ee_dialog(int ee) 536 void show_ee_dialog(int ee)
566 { 537 {
629 info->gc = gaim_account_get_connection(account); 600 info->gc = gaim_account_get_connection(account);
630 } 601 }
631 602
632 void show_im_dialog() 603 void show_im_dialog()
633 { 604 {
634 GtkWidget *hbox, *vbox; 605 GtkWidget *window, *hbox, *vbox;
635 GtkWidget *label; 606 GtkWidget *label;
636 GtkWidget *table; 607 GtkWidget *table;
637 GaimGtkBuddyList *gtkblist; 608 GaimGtkBuddyList *gtkblist;
638 GtkWidget *img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG); 609 GtkWidget *img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG);
639 struct getuserinfo *info = NULL; 610 struct getuserinfo *info = g_new0(struct getuserinfo, 1);
640 611
641 gtkblist = GAIM_GTK_BLIST(gaim_get_blist()); 612 gtkblist = GAIM_GTK_BLIST(gaim_get_blist());
642 613
643 if (!imdialog) { 614 info->gc = gaim_connections_get_all()->data;
644 info = g_new0(struct getuserinfo, 1); 615
645 info->gc = gaim_connections_get_all()->data; 616 window = gtk_dialog_new_with_buttons(_("New Message"), gtkblist ? GTK_WINDOW(gtkblist->window) : NULL, 0,
646 imdialog = gtk_dialog_new_with_buttons(_("New Message"), gtkblist ? GTK_WINDOW(gtkblist->window) : NULL, 0, 617 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL);
647 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); 618 gtk_dialog_set_default_response (GTK_DIALOG(window), GTK_RESPONSE_OK);
648 gtk_dialog_set_default_response (GTK_DIALOG(imdialog), GTK_RESPONSE_OK); 619 gtk_container_set_border_width (GTK_CONTAINER(window), 6);
649 gtk_container_set_border_width (GTK_CONTAINER(imdialog), 6); 620 gtk_window_set_resizable(GTK_WINDOW(window), FALSE);
650 gtk_window_set_resizable(GTK_WINDOW(imdialog), FALSE); 621 gtk_dialog_set_has_separator(GTK_DIALOG(window), FALSE);
651 gtk_dialog_set_has_separator(GTK_DIALOG(imdialog), FALSE); 622 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(window)->vbox), 12);
652 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(imdialog)->vbox), 12); 623 gtk_container_set_border_width (GTK_CONTAINER(GTK_DIALOG(window)->vbox), 6);
653 gtk_container_set_border_width (GTK_CONTAINER(GTK_DIALOG(imdialog)->vbox), 6); 624 gtk_dialog_set_response_sensitive(GTK_DIALOG(window), GTK_RESPONSE_OK, FALSE);
654 gtk_dialog_set_response_sensitive(GTK_DIALOG(imdialog), GTK_RESPONSE_OK, FALSE); 625
655 626 hbox = gtk_hbox_new(FALSE, 12);
656 hbox = gtk_hbox_new(FALSE, 12); 627 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(window)->vbox), hbox);
657 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(imdialog)->vbox), hbox); 628 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
658 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); 629 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
659 gtk_misc_set_alignment(GTK_MISC(img), 0, 0); 630
660 631 vbox = gtk_vbox_new(FALSE, 0);
661 vbox = gtk_vbox_new(FALSE, 0); 632 gtk_container_add(GTK_CONTAINER(hbox), vbox);
662 gtk_container_add(GTK_CONTAINER(hbox), vbox); 633
663 634 label = gtk_label_new(_("Please enter the screenname of the person you would like to IM.\n"));
664 label = gtk_label_new(_("Please enter the screenname of the person you would like to IM.\n")); 635 gtk_widget_set_size_request(GTK_WIDGET(label), 350, -1);
665 gtk_widget_set_size_request(GTK_WIDGET(label), 350, -1); 636 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
666 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); 637 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
638 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
639
640 table = gtk_table_new(2, 2, FALSE);
641 gtk_table_set_row_spacings(GTK_TABLE(table), 6);
642 gtk_table_set_col_spacings(GTK_TABLE(table), 6);
643 gtk_container_set_border_width(GTK_CONTAINER(table), 12);
644 gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0);
645
646 label = gtk_label_new(NULL);
647 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Screenname:"));
648 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
649 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1);
650
651 info->entry = gtk_entry_new();
652 gtk_table_attach_defaults(GTK_TABLE(table), info->entry, 1, 2, 0, 1);
653 gtk_entry_set_activates_default (GTK_ENTRY(info->entry), TRUE);
654 gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_WIDGET(info->entry));
655
656 g_signal_connect(G_OBJECT(info->entry), "changed",
657 G_CALLBACK(gaim_gtk_set_sensitive_if_input), window);
658
659 if (gaim_connections_get_all()->next) {
660
661 label = gtk_label_new(NULL);
662 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2);
663 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Account:"));
667 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); 664 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
668 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); 665
669 666 info->account = gaim_gtk_account_option_menu_new(NULL, FALSE,
670 hbox = gtk_hbox_new(FALSE, 6); 667 G_CALLBACK(show_info_select_account), NULL, info);
671 gtk_container_add(GTK_CONTAINER(vbox), hbox); 668
672 669 gtk_table_attach_defaults(GTK_TABLE(table), info->account, 1, 2, 1, 2);
673 table = gtk_table_new(2, 2, FALSE); 670 gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_WIDGET(info->account));
674 gtk_table_set_row_spacings(GTK_TABLE(table), 6); 671 }
675 gtk_table_set_col_spacings(GTK_TABLE(table), 6); 672
676 gtk_container_set_border_width(GTK_CONTAINER(table), 12); 673 g_signal_connect(G_OBJECT(window), "response", G_CALLBACK(do_im), info);
677 gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0); 674
678 675 gtk_widget_show_all(window);
679 label = gtk_label_new(NULL); 676 // if (info->entry)
680 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Screenname:"));
681 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
682 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1);
683
684 info->entry = gtk_entry_new();
685 gtk_table_attach_defaults(GTK_TABLE(table), info->entry, 1, 2, 0, 1);
686 gtk_entry_set_activates_default (GTK_ENTRY(info->entry), TRUE);
687 gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_WIDGET(info->entry));
688 g_signal_connect(G_OBJECT(info->entry), "changed",
689 G_CALLBACK(gaim_gtk_set_sensitive_if_input), imdialog);
690
691 if (gaim_connections_get_all()->next) {
692
693 label = gtk_label_new(NULL);
694 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2);
695 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Account:"));
696 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
697
698 info->account = gaim_gtk_account_option_menu_new(NULL, FALSE,
699 G_CALLBACK(show_info_select_account), NULL, info);
700
701 gtk_table_attach_defaults(GTK_TABLE(table), info->account, 1, 2, 1, 2);
702 gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_WIDGET(info->account));
703 }
704
705 g_signal_connect(G_OBJECT(imdialog), "response", G_CALLBACK(do_im), info);
706 }
707
708 gtk_widget_show_all(imdialog);
709 if (info)
710 gtk_widget_grab_focus(GTK_WIDGET(info->entry)); 677 gtk_widget_grab_focus(GTK_WIDGET(info->entry));
711 } 678 }
712 679
713 void show_info_dialog() 680 void show_info_dialog()
714 { 681 {
715 GtkWidget *window, *hbox, *vbox; 682 GtkWidget *window, *hbox, *vbox;
716 GtkWidget *label; 683 GtkWidget *label;
684 GtkWidget *table;
685 GaimGtkBuddyList *gtkblist;
717 GtkWidget *img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG); 686 GtkWidget *img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG);
718 GtkWidget *table;
719 struct getuserinfo *info = g_new0(struct getuserinfo, 1); 687 struct getuserinfo *info = g_new0(struct getuserinfo, 1);
720 GaimGtkBuddyList *gtkblist;
721 688
722 gtkblist = GAIM_GTK_BLIST(gaim_get_blist()); 689 gtkblist = GAIM_GTK_BLIST(gaim_get_blist());
723 690
724 info->gc = gaim_connections_get_all()->data; 691 info->gc = gaim_connections_get_all()->data;
725 692
729 gtk_container_set_border_width (GTK_CONTAINER(window), 6); 696 gtk_container_set_border_width (GTK_CONTAINER(window), 6);
730 gtk_window_set_resizable(GTK_WINDOW(window), FALSE); 697 gtk_window_set_resizable(GTK_WINDOW(window), FALSE);
731 gtk_dialog_set_has_separator(GTK_DIALOG(window), FALSE); 698 gtk_dialog_set_has_separator(GTK_DIALOG(window), FALSE);
732 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(window)->vbox), 12); 699 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(window)->vbox), 12);
733 gtk_container_set_border_width (GTK_CONTAINER(GTK_DIALOG(window)->vbox), 6); 700 gtk_container_set_border_width (GTK_CONTAINER(GTK_DIALOG(window)->vbox), 6);
701 gtk_dialog_set_response_sensitive(GTK_DIALOG(window), GTK_RESPONSE_OK, FALSE);
734 702
735 hbox = gtk_hbox_new(FALSE, 12); 703 hbox = gtk_hbox_new(FALSE, 12);
736 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(window)->vbox), hbox); 704 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(window)->vbox), hbox);
737 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); 705 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
738 gtk_misc_set_alignment(GTK_MISC(img), 0, 0); 706 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
739 gtk_dialog_set_response_sensitive(GTK_DIALOG(window), GTK_RESPONSE_OK,
740 FALSE);
741 707
742 vbox = gtk_vbox_new(FALSE, 0); 708 vbox = gtk_vbox_new(FALSE, 0);
743 gtk_container_add(GTK_CONTAINER(hbox), vbox); 709 gtk_container_add(GTK_CONTAINER(hbox), vbox);
744 710
745 label = gtk_label_new(_("Please enter the screenname of the person whose info you would like to view.\n")); 711 label = gtk_label_new(_("Please enter the screenname of the person whose info you would like to view.\n"));
780 gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_WIDGET(info->account)); 746 gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_WIDGET(info->account));
781 } 747 }
782 748
783 g_signal_connect(G_OBJECT(window), "response", G_CALLBACK(do_info), info); 749 g_signal_connect(G_OBJECT(window), "response", G_CALLBACK(do_info), info);
784 750
785
786 gtk_widget_show_all(window); 751 gtk_widget_show_all(window);
787 if (info->entry) 752 // if (info->entry)
788 gtk_widget_grab_focus(GTK_WIDGET(info->entry)); 753 gtk_widget_grab_focus(GTK_WIDGET(info->entry));
789 } 754 }
790 755
791 756
792 static void 757 static void