comparison src/buddy_chat.c @ 1201:90bb83cafb9e

[gaim-migrate @ 1211] buddy chat changes (courtesy jadrock) and oscar updates committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Tue, 05 Dec 2000 00:18:19 +0000
parents f3e0f41beddb
children 265abea9db72
comparison
equal deleted inserted replaced
1200:c484e99d3754 1201:90bb83cafb9e
411 list_item = gtk_list_item_new_with_label(name); 411 list_item = gtk_list_item_new_with_label(name);
412 gtk_object_set_user_data(GTK_OBJECT(list_item), name); 412 gtk_object_set_user_data(GTK_OBJECT(list_item), name);
413 gtk_list_append_items(GTK_LIST(b->list), g_list_append(NULL, list_item)); 413 gtk_list_append_items(GTK_LIST(b->list), g_list_append(NULL, list_item));
414 gtk_widget_show(list_item); 414 gtk_widget_show(list_item);
415 415
416 g_snprintf(tmp, sizeof(tmp), _("%d people in room"), g_list_length(b->in_room));
417 gtk_label_set_text(GTK_LABEL(b->count), tmp);
418
416 if (b->makesound && (sound_options & OPT_SOUND_CHAT_JOIN)) 419 if (b->makesound && (sound_options & OPT_SOUND_CHAT_JOIN))
417 play_sound(CHAT_JOIN); 420 play_sound(CHAT_JOIN);
418 421
419 if (display_options & OPT_DISP_CHAT_LOGON) { 422 if (display_options & OPT_DISP_CHAT_LOGON) {
420 g_snprintf(tmp, sizeof(tmp), _("<B>%s entered the room.</B>"), name); 423 g_snprintf(tmp, sizeof(tmp), _("<B>%s entered the room.</B>"), name);
450 break; 453 break;
451 } 454 }
452 names = names->next; 455 names = names->next;
453 } 456 }
454 457
458 g_snprintf(tmp, sizeof(tmp), _("%d people in room"), g_list_length(b->in_room));
459 gtk_label_set_text(GTK_LABEL(b->count), tmp);
460
455 if (b->makesound && (sound_options & OPT_SOUND_CHAT_PART)) 461 if (b->makesound && (sound_options & OPT_SOUND_CHAT_PART))
456 play_sound(CHAT_LEAVE); 462 play_sound(CHAT_LEAVE);
457 463
458 if (display_options & OPT_DISP_CHAT_LOGON) { 464 if (display_options & OPT_DISP_CHAT_LOGON) {
459 g_snprintf(tmp, sizeof(tmp), _("<B>%s left the room.</B>"), buddy); 465 g_snprintf(tmp, sizeof(tmp), _("<B>%s left the room.</B>"), buddy);
526 GtkWidget *list; 532 GtkWidget *list;
527 GtkWidget *invite_btn; 533 GtkWidget *invite_btn;
528 GtkWidget *whisper; 534 GtkWidget *whisper;
529 GtkWidget *close; 535 GtkWidget *close;
530 GtkWidget *chatentry; 536 GtkWidget *chatentry;
531 GtkWidget *lbox; 537 GtkWidget *lbox;
532 GtkWidget *bbox; 538 GtkWidget *bbox;
533 GtkWidget *bbox2; 539 GtkWidget *bbox2;
534 GtkWidget *im, *ignore, *info; 540 GtkWidget *im, *ignore, *info;
535 GtkWidget *sw; 541 GtkWidget *sw;
536 GtkWidget *sw2; 542 GtkWidget *sw2;
537 GtkWidget *vbox; 543 GtkWidget *vbox;
538 GtkWidget *vpaned; 544 GtkWidget *vpaned;
539 GtkWidget *hpaned; 545 GtkWidget *hpaned;
540 GtkWidget *toolbar; 546 GtkWidget *toolbar;
541 547
542 int dispstyle; 548 int dispstyle = set_dispstyle(1);
543 549
544 win = gtk_window_new(GTK_WINDOW_TOPLEVEL); 550 win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
545 b->window = win; 551 b->window = win;
546 gtk_window_set_wmclass(GTK_WINDOW(win), "buddy_chat", "Gaim"); 552 gtk_object_set_user_data(GTK_OBJECT(win), b);
553 gtk_window_set_wmclass(GTK_WINDOW(win), "buddy_chat", "Gaim");
554 gtk_window_set_policy(GTK_WINDOW(win), TRUE, TRUE, TRUE);
555 gtk_container_border_width(GTK_CONTAINER(win), 10);
556 gtk_window_set_title(GTK_WINDOW(win), b->name);
557 gtk_signal_connect(GTK_OBJECT(win), "destroy", GTK_SIGNAL_FUNC(close_callback), b);
558 gtk_widget_realize(win);
559 aol_icon(win->window);
547 560
548 vpaned = gtk_vpaned_new(); 561 vpaned = gtk_vpaned_new();
562 gtk_container_add(GTK_CONTAINER(win),vpaned);
563 gtk_widget_show( vpaned );
564
549 hpaned = gtk_hpaned_new(); 565 hpaned = gtk_hpaned_new();
550 566 gtk_paned_pack1(GTK_PANED(vpaned), hpaned, TRUE, FALSE);
551 gtk_window_set_policy(GTK_WINDOW(win), TRUE, TRUE, TRUE); 567 gtk_widget_show( hpaned );
552 gtk_widget_realize(win); 568
553 569 sw = gtk_scrolled_window_new (NULL, NULL);
554 dispstyle = set_dispstyle(1); 570 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
555 571 GTK_POLICY_NEVER,
556 close = picture_button2(win, _("Close"), cancel_xpm, dispstyle); 572 GTK_POLICY_ALWAYS);
557 573 gtk_paned_pack1(GTK_PANED(hpaned), sw, TRUE, TRUE);
558 invite_btn = picture_button2(win, _("Invite"), join_xpm, dispstyle); 574 gtk_widget_set_usize(sw, 320, 150);
559 whisper = picture_button2(win, _("Whisper"), tb_forward_xpm, dispstyle); 575 gtk_widget_show(sw);
560 send = picture_button2(win, _("Send"), tmp_send_xpm, dispstyle); 576
561
562 im = picture_button2(win, _("IM"), tmp_send_xpm, FALSE);
563 ignore = picture_button2(win, _("Ignore"), close_xpm, FALSE);
564 info = picture_button2(win, _("Info"), tb_search_xpm, FALSE);
565
566 if (display_options & OPT_DISP_COOL_LOOK)
567 {
568 gtk_button_set_relief(GTK_BUTTON(close), GTK_RELIEF_NONE);
569 gtk_button_set_relief(GTK_BUTTON(invite_btn), GTK_RELIEF_NONE);
570 gtk_button_set_relief(GTK_BUTTON(whisper), GTK_RELIEF_NONE);
571 gtk_button_set_relief(GTK_BUTTON(send), GTK_RELIEF_NONE);
572 gtk_button_set_relief(GTK_BUTTON(im), GTK_RELIEF_NONE);
573 gtk_button_set_relief(GTK_BUTTON(ignore), GTK_RELIEF_NONE);
574 gtk_button_set_relief(GTK_BUTTON(info), GTK_RELIEF_NONE);
575 }
576
577 text = gtk_html_new(NULL, NULL); 577 text = gtk_html_new(NULL, NULL);
578
579 b->text = text; 578 b->text = text;
579 gtk_container_add(GTK_CONTAINER(sw), text);
580 gtk_widget_show(text);
581 GTK_HTML (text)->hadj->step_increment = 10.0;
582 GTK_HTML (text)->vadj->step_increment = 10.0;
583
584 lbox = gtk_vbox_new(FALSE, 4);
585 gtk_paned_pack2(GTK_PANED(hpaned), lbox, TRUE, TRUE);
586 gtk_widget_show(lbox);
587
588 b->count = gtk_label_new(_("0 people in room"));
589 gtk_box_pack_start(GTK_BOX(lbox), b->count, FALSE, FALSE, 0);
590 gtk_widget_show(b->count);
591
592 sw2 = gtk_scrolled_window_new(NULL, NULL);
593 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw2),
594 GTK_POLICY_NEVER,
595 GTK_POLICY_AUTOMATIC);
596 gtk_box_pack_start(GTK_BOX(lbox), sw2, TRUE, TRUE, 0);
597 gtk_widget_show(sw2);
580 598
581 list = gtk_list_new(); 599 list = gtk_list_new();
582 b->list = list; 600 b->list = list;
583 601 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sw2), list);
584 bbox = gtk_hbox_new(FALSE, 5); 602 gtk_widget_set_usize(list, 150, -1);
585 bbox2 = gtk_hbox_new(TRUE, 0); 603 gtk_widget_show(list);
586 vbox = gtk_vbox_new(FALSE, 0); 604
587 lbox = gtk_vbox_new(FALSE, 4); 605 bbox2 = gtk_hbox_new(TRUE, 0);
606 gtk_box_pack_start(GTK_BOX(lbox), bbox2, FALSE, FALSE, 5);
607 gtk_widget_show(bbox2);
608
609 im = picture_button2(win, _("IM"), tmp_send_xpm, FALSE);
610 gtk_box_pack_start(GTK_BOX(bbox2), im, dispstyle, dispstyle, 5);
611 gtk_signal_connect(GTK_OBJECT(im), "clicked", GTK_SIGNAL_FUNC(im_callback), b);
612
613 ignore = picture_button2(win, _("Ignore"), close_xpm, FALSE);
614 gtk_box_pack_start(GTK_BOX(bbox2), ignore, dispstyle, dispstyle, 5);
615 gtk_signal_connect(GTK_OBJECT(ignore), "clicked", GTK_SIGNAL_FUNC(ignore_callback), b);
616
617 info = picture_button2(win, _("Info"), tb_search_xpm, FALSE);
618 gtk_box_pack_start(GTK_BOX(bbox2), info, dispstyle, dispstyle, 5);
619 gtk_signal_connect(GTK_OBJECT(info), "clicked", GTK_SIGNAL_FUNC(info_callback), b);
620
621 vbox = gtk_vbox_new(FALSE, 0);
622 gtk_paned_pack2(GTK_PANED(vpaned), vbox, TRUE, FALSE);
623 gtk_widget_show(vbox);
624
625 toolbar = build_conv_toolbar(b);
626 gtk_box_pack_start(GTK_BOX(vbox), toolbar, TRUE, TRUE, 5);
588 627
589 chatentry = gtk_text_new( NULL, NULL ); 628 chatentry = gtk_text_new( NULL, NULL );
629 b->entry = chatentry;
630 gtk_object_set_user_data(GTK_OBJECT(chatentry), b);
590 gtk_text_set_editable(GTK_TEXT(chatentry), TRUE); 631 gtk_text_set_editable(GTK_TEXT(chatentry), TRUE);
591 gtk_text_set_word_wrap(GTK_TEXT(chatentry), TRUE); 632 gtk_text_set_word_wrap(GTK_TEXT(chatentry), TRUE);
592 gtk_object_set_user_data(GTK_OBJECT(chatentry), b);
593 b->entry = chatentry;
594
595 gtk_widget_realize(win);
596
597 toolbar = build_conv_toolbar(b);
598
599 /* Hack something so we know have an entry click event */
600
601 gtk_signal_connect(GTK_OBJECT(chatentry), "activate", GTK_SIGNAL_FUNC(send_callback),b); 633 gtk_signal_connect(GTK_OBJECT(chatentry), "activate", GTK_SIGNAL_FUNC(send_callback),b);
602 gtk_signal_connect(GTK_OBJECT(chatentry), "key_press_event", GTK_SIGNAL_FUNC(keypress_callback), b); 634 gtk_signal_connect(GTK_OBJECT(chatentry), "key_press_event", GTK_SIGNAL_FUNC(keypress_callback), b);
603 /* Text box */
604
605 sw = gtk_scrolled_window_new (NULL, NULL);
606 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
607 GTK_POLICY_NEVER,
608 GTK_POLICY_ALWAYS);
609 gtk_widget_show(sw);
610 gtk_container_add(GTK_CONTAINER(sw), text);
611 gtk_widget_show(text);
612
613
614 GTK_HTML (text)->hadj->step_increment = 10.0;
615 GTK_HTML (text)->vadj->step_increment = 10.0;
616 gtk_widget_set_usize(sw, 320, 150);
617
618 gtk_paned_pack1(GTK_PANED(hpaned), sw, TRUE, TRUE);
619
620 sw2 = gtk_scrolled_window_new(NULL, NULL);
621 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw2),
622 GTK_POLICY_NEVER,
623 GTK_POLICY_AUTOMATIC);
624 gtk_widget_show(sw2);
625 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sw2), list);
626
627 gtk_box_pack_start(GTK_BOX(lbox), sw2, TRUE, TRUE, 0);
628 gtk_box_pack_start(GTK_BOX(lbox), bbox2, FALSE, FALSE, 5);
629
630
631 gtk_paned_pack2(GTK_PANED(hpaned), lbox, TRUE, TRUE);
632 gtk_widget_show(list);
633
634
635 gtk_widget_set_usize(list, 150, -1);
636
637
638 /* Ready and pack buttons */
639 gtk_object_set_user_data(GTK_OBJECT(win), b);
640 gtk_object_set_user_data(GTK_OBJECT(close), b);
641 gtk_signal_connect(GTK_OBJECT(close), "clicked", GTK_SIGNAL_FUNC(close_callback),b);
642 gtk_signal_connect(GTK_OBJECT(send), "clicked", GTK_SIGNAL_FUNC(send_callback),b);
643 gtk_signal_connect(GTK_OBJECT(invite_btn), "clicked", GTK_SIGNAL_FUNC(invite_callback), b);
644 gtk_signal_connect(GTK_OBJECT(whisper), "clicked", GTK_SIGNAL_FUNC(whisper_callback), b);
645
646 gtk_signal_connect(GTK_OBJECT(im), "clicked", GTK_SIGNAL_FUNC(im_callback), b);
647 gtk_signal_connect(GTK_OBJECT(ignore), "clicked", GTK_SIGNAL_FUNC(ignore_callback), b);
648 gtk_signal_connect(GTK_OBJECT(info), "clicked", GTK_SIGNAL_FUNC(info_callback), b);
649
650
651 gtk_box_pack_end(GTK_BOX(bbox), close, dispstyle, dispstyle, 5);
652 gtk_box_pack_end(GTK_BOX(bbox), invite_btn, dispstyle, dispstyle, 5);
653 gtk_box_pack_end(GTK_BOX(bbox), whisper, dispstyle, dispstyle, 5);
654 gtk_box_pack_end(GTK_BOX(bbox), send, dispstyle, dispstyle, 5);
655
656 gtk_box_pack_start(GTK_BOX(bbox2), im, dispstyle, dispstyle, 5);
657 gtk_box_pack_start(GTK_BOX(bbox2), ignore, dispstyle, dispstyle, 5);
658 gtk_box_pack_start(GTK_BOX(bbox2), info, dispstyle, dispstyle, 5);
659
660 /* pack and fill the rest */
661
662
663 gtk_paned_pack1(GTK_PANED(vpaned), hpaned, TRUE, FALSE);
664 gtk_box_pack_start(GTK_BOX(vbox), toolbar, TRUE, TRUE, 5);
665 gtk_box_pack_start(GTK_BOX(vbox), chatentry, TRUE, TRUE, 5);
666 gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 5);
667 gtk_paned_pack2(GTK_PANED(vpaned), vbox, TRUE, FALSE);
668
669 gtk_widget_show(send);
670 gtk_widget_show(invite_btn);
671 gtk_widget_show(whisper);
672 gtk_widget_show(close);
673 gtk_widget_show(im);
674 gtk_widget_show(ignore);
675 gtk_widget_show(info);
676 gtk_widget_show(bbox);
677 gtk_widget_show(lbox);
678 gtk_widget_show(bbox2);
679 gtk_widget_show(vbox);
680 gtk_widget_show( vpaned );
681 gtk_widget_show( hpaned );
682 gtk_widget_show(chatentry);
683
684 if (display_options & OPT_DISP_CHAT_BIG_ENTRY)
685 gtk_widget_set_usize(chatentry, 320, 50);
686 else
687 gtk_widget_set_usize(chatentry, 320, 25);
688
689 gtk_container_add(GTK_CONTAINER(win),vpaned);
690 gtk_container_border_width(GTK_CONTAINER(win), 10);
691
692 gtk_window_set_title(GTK_WINDOW(win), b->name);
693 gtk_window_set_focus(GTK_WINDOW(win), chatentry);
694
695 gtk_signal_connect(GTK_OBJECT(win), "destroy", GTK_SIGNAL_FUNC(close_callback),b);
696 gtk_signal_connect(GTK_OBJECT(chatentry), "key_press_event", GTK_SIGNAL_FUNC(entry_key_pressed), chatentry); 635 gtk_signal_connect(GTK_OBJECT(chatentry), "key_press_event", GTK_SIGNAL_FUNC(entry_key_pressed), chatentry);
697 if (general_options & OPT_GEN_CHECK_SPELLING) 636 if (general_options & OPT_GEN_CHECK_SPELLING)
698 gtkspell_attach(GTK_TEXT(chatentry)); 637 gtkspell_attach(GTK_TEXT(chatentry));
638 gtk_box_pack_start(GTK_BOX(vbox), chatentry, TRUE, TRUE, 5);
639 if (display_options & OPT_DISP_CHAT_BIG_ENTRY)
640 gtk_widget_set_usize(chatentry, 320, 50);
641 else
642 gtk_widget_set_usize(chatentry, 320, 25);
643 gtk_window_set_focus(GTK_WINDOW(win), chatentry);
644 gtk_widget_show(chatentry);
645
646 bbox = gtk_hbox_new(FALSE, 5);
647 gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 5);
648 gtk_widget_show(bbox);
649
650 close = picture_button2(win, _("Close"), cancel_xpm, dispstyle);
651 b->close = close;
652 gtk_object_set_user_data(GTK_OBJECT(close), b);
653 gtk_signal_connect(GTK_OBJECT(close), "clicked", GTK_SIGNAL_FUNC(close_callback),b);
654 gtk_box_pack_end(GTK_BOX(bbox), close, dispstyle, dispstyle, 5);
655
656 invite_btn = picture_button2(win, _("Invite"), join_xpm, dispstyle);
657 b->invite = invite_btn;
658 gtk_signal_connect(GTK_OBJECT(invite_btn), "clicked", GTK_SIGNAL_FUNC(invite_callback), b);
659 gtk_box_pack_end(GTK_BOX(bbox), invite_btn, dispstyle, dispstyle, 5);
660
661 whisper = picture_button2(win, _("Whisper"), tb_forward_xpm, dispstyle);
662 b->whisper = whisper;
663 gtk_signal_connect(GTK_OBJECT(whisper), "clicked", GTK_SIGNAL_FUNC(whisper_callback), b);
664 gtk_box_pack_end(GTK_BOX(bbox), whisper, dispstyle, dispstyle, 5);
665
666 send = picture_button2(win, _("Send"), tmp_send_xpm, dispstyle);
667 b->send = send;
668 gtk_signal_connect(GTK_OBJECT(send), "clicked", GTK_SIGNAL_FUNC(send_callback),b);
669 gtk_box_pack_end(GTK_BOX(bbox), send, dispstyle, dispstyle, 5);
699 670
700 b->font_dialog = NULL; 671 b->font_dialog = NULL;
701 b->fg_color_dialog = NULL; 672 b->fg_color_dialog = NULL;
702 b->bg_color_dialog = NULL; 673 b->bg_color_dialog = NULL;
703 b->smiley_dialog = NULL; 674 b->smiley_dialog = NULL;
704 b->link_dialog = NULL; 675 b->link_dialog = NULL;
705 b->log_dialog = NULL; 676 b->log_dialog = NULL;
706 b->send = send;
707 b->whisper = whisper;
708 b->invite = invite_btn;
709 b->close = close;
710 sprintf(b->fontface, "%s", fontface); 677 sprintf(b->fontface, "%s", fontface);
711 b->hasfont = 0; 678 b->hasfont = 0;
712 b->bgcol = bgcolor; 679 b->bgcol = bgcolor;
713 b->hasbg = 0; 680 b->hasbg = 0;
714 b->fgcol = fgcolor; 681 b->fgcol = fgcolor;
715 b->hasfg = 0; 682 b->hasfg = 0;
716 683
717 gtk_widget_realize(win);
718 aol_icon(win->window);
719
720 gtk_widget_show(win); 684 gtk_widget_show(win);
721 } 685 }
722 686
723 687
724 688