Mercurial > pidgin.yaz
comparison src/gtkconv.c @ 9812:d56f24cc4dad
[gaim-migrate @ 10683]
See the changelog. This is a modified patch #1005629.
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Sun, 22 Aug 2004 03:06:33 +0000 |
parents | 4a15962c344a |
children | 34db8e8b49d8 |
comparison
equal
deleted
inserted
replaced
9811:a107051d991f | 9812:d56f24cc4dad |
---|---|
2568 GaimGtkConversation *gtkconv; | 2568 GaimGtkConversation *gtkconv; |
2569 GaimConnection *gc; | 2569 GaimConnection *gc; |
2570 GaimPluginProtocolInfo *prpl_info = NULL; | 2570 GaimPluginProtocolInfo *prpl_info = NULL; |
2571 GdkPixbuf *window_icon = NULL; | 2571 GdkPixbuf *window_icon = NULL; |
2572 GtkIMHtmlButtons buttons; | 2572 GtkIMHtmlButtons buttons; |
2573 GaimAccount *account; | |
2573 | 2574 |
2574 win = gaim_conversation_get_window(conv); | 2575 win = gaim_conversation_get_window(conv); |
2575 gtkwin = GAIM_GTK_WINDOW(win); | 2576 gtkwin = GAIM_GTK_WINDOW(win); |
2576 gtkconv = GAIM_GTK_CONVERSATION(conv); | 2577 gtkconv = GAIM_GTK_CONVERSATION(conv); |
2577 gc = gaim_conversation_get_gc(conv); | 2578 gc = gaim_conversation_get_gc(conv); |
2579 account = gaim_connection_get_account(gc); | |
2578 | 2580 |
2579 if (gc != NULL) | 2581 if (gc != NULL) |
2580 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | 2582 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
2581 | 2583 |
2582 if (gtkwin->menu.send_as != NULL) | 2584 if (gtkwin->menu.send_as != NULL) |
2608 gtk_widget_show(gtkwin->menu.warn); | 2610 gtk_widget_show(gtkwin->menu.warn); |
2609 gtk_widget_hide(gtkwin->menu.invite); | 2611 gtk_widget_hide(gtkwin->menu.invite); |
2610 gtk_widget_show(gtkwin->menu.alias); | 2612 gtk_widget_show(gtkwin->menu.alias); |
2611 gtk_widget_show(gtkwin->menu.block); | 2613 gtk_widget_show(gtkwin->menu.block); |
2612 | 2614 |
2613 if (gaim_find_buddy(gaim_conversation_get_account(conv), | 2615 if (gaim_find_buddy(account, gaim_conversation_get_name(conv)) == NULL) { |
2614 gaim_conversation_get_name(conv)) == NULL) { | |
2615 gtk_widget_show(gtkwin->menu.add); | 2616 gtk_widget_show(gtkwin->menu.add); |
2616 gtk_widget_hide(gtkwin->menu.remove); | 2617 gtk_widget_hide(gtkwin->menu.remove); |
2617 gtk_widget_show(gtkconv->add); | 2618 gtk_widget_show(gtkconv->add); |
2618 gtk_widget_hide(gtkconv->remove); | 2619 gtk_widget_hide(gtkconv->remove); |
2619 } else { | 2620 } else { |
2641 gtk_widget_hide(gtkwin->menu.warn); | 2642 gtk_widget_hide(gtkwin->menu.warn); |
2642 gtk_widget_show(gtkwin->menu.invite); | 2643 gtk_widget_show(gtkwin->menu.invite); |
2643 gtk_widget_show(gtkwin->menu.alias); | 2644 gtk_widget_show(gtkwin->menu.alias); |
2644 gtk_widget_hide(gtkwin->menu.block); | 2645 gtk_widget_hide(gtkwin->menu.block); |
2645 | 2646 |
2646 if (gaim_blist_find_chat(gaim_conversation_get_account(conv), | 2647 if (gaim_blist_find_chat(account, gaim_conversation_get_name(conv)) == NULL) { |
2647 gaim_conversation_get_name(conv)) == NULL) { | 2648 /* If the chat is NOT in the buddy list */ |
2648 /* If the chat is NOT in the buddy list */ | |
2649 gtk_widget_show(gtkwin->menu.add); | 2649 gtk_widget_show(gtkwin->menu.add); |
2650 gtk_widget_hide(gtkwin->menu.remove); | 2650 gtk_widget_hide(gtkwin->menu.remove); |
2651 gtk_widget_show(gtkconv->add); | 2651 gtk_widget_show(gtkconv->add); |
2652 gtk_widget_hide(gtkconv->remove); | 2652 gtk_widget_hide(gtkconv->remove); |
2653 } else { | 2653 } else { |
2654 /* If the chat IS in the buddy list */ | 2654 /* If the chat IS in the buddy list */ |
2655 gtk_widget_hide(gtkwin->menu.add); | |
2655 gtk_widget_show(gtkwin->menu.remove); | 2656 gtk_widget_show(gtkwin->menu.remove); |
2656 gtk_widget_hide(gtkwin->menu.add); | |
2657 gtk_widget_hide(gtkconv->add); | 2657 gtk_widget_hide(gtkconv->add); |
2658 gtk_widget_show(gtkconv->remove); | 2658 gtk_widget_show(gtkconv->remove); |
2659 } | 2659 } |
2660 | 2660 |
2661 gtk_widget_show(gtkwin->menu.insert_link); | 2661 gtk_widget_show(gtkwin->menu.insert_link); |
2670 ( (gaim_conversation_get_type(conv) != GAIM_CONV_CHAT) || | 2670 ( (gaim_conversation_get_type(conv) != GAIM_CONV_CHAT) || |
2671 !gaim_conv_chat_has_left(GAIM_CONV_CHAT(conv)) )) { | 2671 !gaim_conv_chat_has_left(GAIM_CONV_CHAT(conv)) )) { |
2672 /* Account is online */ | 2672 /* Account is online */ |
2673 | 2673 |
2674 /* Deal with buttons */ | 2674 /* Deal with buttons */ |
2675 gtk_widget_set_sensitive(gtkconv->add, TRUE); | |
2676 gtk_widget_set_sensitive(gtkconv->remove, TRUE); | |
2677 gtk_widget_set_sensitive(gtkconv->info, (prpl_info->get_info != NULL)); | 2675 gtk_widget_set_sensitive(gtkconv->info, (prpl_info->get_info != NULL)); |
2678 | 2676 |
2679 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) | 2677 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) |
2680 { | 2678 { |
2681 gtk_widget_set_sensitive(gtkconv->send, | 2679 gtk_widget_set_sensitive(gtkconv->add, (prpl_info->add_buddy != NULL)); |
2682 (prpl_info->send_im != NULL)); | 2680 gtk_widget_set_sensitive(gtkconv->remove, (prpl_info->remove_buddy != NULL)); |
2683 gtk_widget_set_sensitive(gtkconv->u.im->warn, | 2681 gtk_widget_set_sensitive(gtkconv->send, (prpl_info->send_im != NULL)); |
2684 (prpl_info->warn != NULL)); | 2682 gtk_widget_set_sensitive(gtkconv->u.im->warn, (prpl_info->warn != NULL)); |
2685 gtk_widget_set_sensitive(gtkconv->u.im->block, | 2683 gtk_widget_set_sensitive(gtkconv->u.im->block, (prpl_info->add_deny != NULL)); |
2686 (prpl_info->add_deny != NULL)); | |
2687 gtk_widget_set_sensitive(gtkconv->u.im->send_file, | 2684 gtk_widget_set_sensitive(gtkconv->u.im->send_file, |
2688 (prpl_info->send_file | 2685 (prpl_info->send_file && (!prpl_info->can_receive_file || |
2689 && (!prpl_info->can_receive_file | 2686 prpl_info->can_receive_file(gc, gaim_conversation_get_name(conv))))); |
2690 || prpl_info->can_receive_file(gc, gaim_conversation_get_name(conv))))); | |
2691 } | 2687 } |
2692 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) | 2688 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) |
2693 { | 2689 { |
2694 gtk_widget_set_sensitive(gtkconv->send, | 2690 /* Only allow adding/removing if this is a chat and not a conference */ |
2695 (prpl_info->chat_send != NULL)); | 2691 gtk_widget_set_sensitive(gtkconv->add, (prpl_info->join_chat != NULL)); |
2696 gtk_widget_set_sensitive(gtkconv->u.chat->invite, | 2692 gtk_widget_set_sensitive(gtkconv->remove, (prpl_info->join_chat != NULL)); |
2697 (prpl_info->chat_invite != NULL)); | 2693 gtk_widget_set_sensitive(gtkconv->send, (prpl_info->chat_send != NULL)); |
2694 gtk_widget_set_sensitive(gtkconv->u.chat->invite, (prpl_info->chat_invite != NULL)); | |
2698 } | 2695 } |
2699 | 2696 |
2700 /* Deal with the toolbar */ | 2697 /* Deal with the toolbar */ |
2701 | |
2702 if (gc->flags & GAIM_CONNECTION_HTML) { | 2698 if (gc->flags & GAIM_CONNECTION_HTML) { |
2703 buttons = GTK_IMHTML_ALL; /* Everything on */ | 2699 buttons = GTK_IMHTML_ALL; /* Everything on */ |
2704 if (!(prpl_info->options & OPT_PROTO_IM_IMAGE)) | 2700 if (!(prpl_info->options & OPT_PROTO_IM_IMAGE)) |
2705 buttons &= ~GTK_IMHTML_IMAGE; | 2701 buttons &= ~GTK_IMHTML_IMAGE; |
2706 if (gc->flags & GAIM_CONNECTION_NO_BGCOLOR) | 2702 if (gc->flags & GAIM_CONNECTION_NO_BGCOLOR) |
2713 buttons &= ~GTK_IMHTML_LINKDESC; | 2709 buttons &= ~GTK_IMHTML_LINKDESC; |
2714 } else { | 2710 } else { |
2715 buttons = GTK_IMHTML_SMILEY; | 2711 buttons = GTK_IMHTML_SMILEY; |
2716 } | 2712 } |
2717 gtk_imhtml_set_format_functions(GTK_IMHTML(gtkconv->entry), buttons); | 2713 gtk_imhtml_set_format_functions(GTK_IMHTML(gtkconv->entry), buttons); |
2718 gtk_imhtmltoolbar_associate_smileys (GTK_IMHTMLTOOLBAR(gtkconv->toolbar), gaim_account_get_protocol_id(gaim_conversation_get_account(conv))); | 2714 gtk_imhtmltoolbar_associate_smileys(GTK_IMHTMLTOOLBAR(gtkconv->toolbar), gaim_account_get_protocol_id(account)); |
2719 | 2715 |
2720 /* Deal with menu items */ | 2716 /* Deal with menu items */ |
2721 gtk_widget_set_sensitive(gtkwin->menu.view_log, TRUE); | 2717 gtk_widget_set_sensitive(gtkwin->menu.view_log, TRUE); |
2722 gtk_widget_set_sensitive(gtkwin->menu.add_pounce, TRUE); | 2718 gtk_widget_set_sensitive(gtkwin->menu.add_pounce, TRUE); |
2723 gtk_widget_set_sensitive(gtkwin->menu.get_info, (prpl_info->get_info != NULL)); | 2719 gtk_widget_set_sensitive(gtkwin->menu.get_info, (prpl_info->get_info != NULL)); |
2724 gtk_widget_set_sensitive(gtkwin->menu.warn, (prpl_info->warn != NULL)); | 2720 gtk_widget_set_sensitive(gtkwin->menu.warn, (prpl_info->warn != NULL)); |
2725 gtk_widget_set_sensitive(gtkwin->menu.invite, | 2721 gtk_widget_set_sensitive(gtkwin->menu.invite, (prpl_info->chat_invite != NULL)); |
2726 (prpl_info->chat_invite != NULL)); | 2722 gtk_widget_set_sensitive(gtkwin->menu.block, (prpl_info->add_deny != NULL)); |
2723 gtk_widget_set_sensitive(gtkwin->menu.insert_link, (gc->flags & GAIM_CONNECTION_HTML)); | |
2724 gtk_widget_set_sensitive(gtkwin->menu.insert_image, (prpl_info->options & OPT_PROTO_IM_IMAGE)); | |
2727 | 2725 |
2728 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { | 2726 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { |
2727 gtk_widget_set_sensitive(gtkwin->menu.add, (prpl_info->add_buddy != NULL)); | |
2728 gtk_widget_set_sensitive(gtkwin->menu.remove, (prpl_info->remove_buddy != NULL)); | |
2729 gtk_widget_set_sensitive(gtkwin->menu.send_file, | 2729 gtk_widget_set_sensitive(gtkwin->menu.send_file, |
2730 (gc && prpl_info->send_file != NULL | 2730 (prpl_info->send_file != NULL && (!prpl_info->can_receive_file || |
2731 && (!prpl_info->can_receive_file | 2731 prpl_info->can_receive_file(gc, gaim_conversation_get_name(conv))))); |
2732 || prpl_info->can_receive_file(gc, gaim_conversation_get_name(conv))))); | 2732 gtk_widget_set_sensitive(gtkwin->menu.alias, |
2733 if (gaim_find_buddy(gaim_conversation_get_account(conv), | 2733 (gaim_find_buddy(account, gaim_conversation_get_name(conv)) != NULL)); |
2734 gaim_conversation_get_name(conv)) == NULL) | |
2735 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE); | |
2736 else | |
2737 gtk_widget_set_sensitive(gtkwin->menu.alias, TRUE); | |
2738 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { | 2734 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { |
2739 if (gaim_blist_find_chat(gaim_conversation_get_account(conv), | 2735 gtk_widget_set_sensitive(gtkwin->menu.add, (prpl_info->join_chat != NULL)); |
2740 gaim_conversation_get_name(conv)) == NULL) | 2736 gtk_widget_set_sensitive(gtkwin->menu.remove, (prpl_info->join_chat != NULL)); |
2741 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE); | 2737 gtk_widget_set_sensitive(gtkwin->menu.alias, |
2742 else | 2738 (gaim_blist_find_chat(account, gaim_conversation_get_name(conv)) != NULL)); |
2743 gtk_widget_set_sensitive(gtkwin->menu.alias, TRUE); | 2739 } |
2744 } | |
2745 | |
2746 gtk_widget_set_sensitive(gtkwin->menu.block, | |
2747 (prpl_info->add_deny != NULL)); | |
2748 gtk_widget_set_sensitive(gtkwin->menu.add, TRUE); | |
2749 gtk_widget_set_sensitive(gtkwin->menu.remove, TRUE); | |
2750 gtk_widget_set_sensitive(gtkwin->menu.insert_link, | |
2751 gc->flags & GAIM_CONNECTION_HTML); | |
2752 gtk_widget_set_sensitive(gtkwin->menu.insert_image, | |
2753 (prpl_info->options & OPT_PROTO_IM_IMAGE)); | |
2754 } else { | 2740 } else { |
2755 /* Account is offline */ | 2741 /* Account is offline */ |
2756 /* Or it's a chat where we left. */ | 2742 /* Or it's a chat that we've left. */ |
2757 | 2743 |
2758 /* Deal with buttons */ | 2744 /* Deal with buttons */ |
2759 gtk_widget_set_sensitive(gtkconv->add, FALSE); | 2745 gtk_widget_set_sensitive(gtkconv->add, FALSE); |
2760 gtk_widget_set_sensitive(gtkconv->remove, FALSE); | 2746 gtk_widget_set_sensitive(gtkconv->remove, FALSE); |
2761 gtk_widget_set_sensitive(gtkconv->info, FALSE); | 2747 gtk_widget_set_sensitive(gtkconv->info, FALSE); |