comparison src/gtkconv.c @ 10456:d23802800eeb

[gaim-migrate @ 11724] Add a menu item "Show Buddy Icon" to the Options menu of the conversation window so that hidden icons can be re-revealed. committer: Tailor Script <tailor@pidgin.im>
author Stu Tomlinson <stu@nosnilmot.com>
date Thu, 30 Dec 2004 19:32:08 +0000
parents 0349cb9aa5a4
children 01558a7faa01
comparison
equal deleted inserted replaced
10455:6d4f02da1cef 10456:d23802800eeb
2498 else 2498 else
2499 stop_anim(NULL, conv); 2499 stop_anim(NULL, conv);
2500 } 2500 }
2501 2501
2502 static void 2502 static void
2503 remove_icon(GaimGtkConversation *gtkconv) 2503 remove_icon(GaimConversation *conv)
2504 { 2504 {
2505 g_return_if_fail(gtkconv != NULL); 2505 GaimGtkConversation *gtkconv;
2506 GaimGtkWindow *gtkwin;
2507
2508 g_return_if_fail(conv != NULL);
2509
2510 gtkconv = GAIM_GTK_CONVERSATION(conv);
2506 2511
2507 if (gtkconv->u.im->icon_container != NULL) 2512 if (gtkconv->u.im->icon_container != NULL)
2508 gtk_widget_destroy(gtkconv->u.im->icon_container); 2513 gtk_widget_destroy(gtkconv->u.im->icon_container);
2509 2514
2510 if (gtkconv->u.im->anim != NULL) 2515 if (gtkconv->u.im->anim != NULL)
2518 2523
2519 gtkconv->u.im->icon_timer = 0; 2524 gtkconv->u.im->icon_timer = 0;
2520 gtkconv->u.im->icon = NULL; 2525 gtkconv->u.im->icon = NULL;
2521 gtkconv->u.im->anim = NULL; 2526 gtkconv->u.im->anim = NULL;
2522 gtkconv->u.im->iter = NULL; 2527 gtkconv->u.im->iter = NULL;
2528 gtkconv->u.im->icon_container = NULL;
2523 gtkconv->u.im->show_icon = FALSE; 2529 gtkconv->u.im->show_icon = FALSE;
2530
2531 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(conv));
2532 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtkwin->menu.show_icon), FALSE);
2524 } 2533 }
2525 2534
2526 static void 2535 static void
2527 saveicon_writefile_cb(void *user_data, const char *filename) 2536 saveicon_writefile_cb(void *user_data, const char *filename)
2528 { 2537 {
2597 gtkconv->u.im->icon_timer); 2606 gtkconv->u.im->icon_timer);
2598 } 2607 }
2599 2608
2600 button = gtk_menu_item_new_with_label(_("Hide Icon")); 2609 button = gtk_menu_item_new_with_label(_("Hide Icon"));
2601 g_signal_connect_swapped(G_OBJECT(button), "activate", 2610 g_signal_connect_swapped(G_OBJECT(button), "activate",
2602 G_CALLBACK(remove_icon), gtkconv); 2611 G_CALLBACK(remove_icon), conv);
2603 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); 2612 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
2604 gtk_widget_show(button); 2613 gtk_widget_show(button);
2605 2614
2606 gaim_new_item_from_stock(menu, _("Save Icon As..."), GTK_STOCK_SAVE_AS, 2615 gaim_new_item_from_stock(menu, _("Save Icon As..."), GTK_STOCK_SAVE_AS,
2607 G_CALLBACK(icon_menu_save_cb), conv, 2616 G_CALLBACK(icon_menu_save_cb), conv,
2609 2618
2610 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, e->button, e->time); 2619 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, e->button, e->time);
2611 2620
2612 return TRUE; 2621 return TRUE;
2613 } 2622 }
2623
2624 static void
2625 menu_buddyicon_cb(gpointer data, guint action, GtkWidget *widget)
2626 {
2627 GaimConvWindow *win = (GaimConvWindow *)data;
2628 GaimConversation *conv;
2629 GaimGtkConversation *gtkconv;
2630 gboolean active;
2631
2632 conv = gaim_conv_window_get_active_conversation(win);
2633
2634 if (!conv)
2635 return;
2636
2637 g_return_if_fail(gaim_conversation_get_type(conv) == GAIM_CONV_IM);
2638
2639 gtkconv = GAIM_GTK_CONVERSATION(conv);
2640
2641 active = gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget));
2642 gtkconv->u.im->show_icon = active;
2643 if (active)
2644 gaim_gtkconv_update_buddy_icon(conv);
2645 else
2646 remove_icon(conv);
2647 }
2648
2614 /************************************************************************** 2649 /**************************************************************************
2615 * End of the bunch of buddy icon functions 2650 * End of the bunch of buddy icon functions
2616 **************************************************************************/ 2651 **************************************************************************/
2617 2652
2618 /* 2653 /*
2673 gtk_widget_hide(gtkwin->menu.add); 2708 gtk_widget_hide(gtkwin->menu.add);
2674 } 2709 }
2675 2710
2676 gtk_widget_show(gtkwin->menu.insert_link); 2711 gtk_widget_show(gtkwin->menu.insert_link);
2677 gtk_widget_show(gtkwin->menu.insert_image); 2712 gtk_widget_show(gtkwin->menu.insert_image);
2713 gtk_widget_show(gtkwin->menu.show_icon);
2678 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { 2714 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
2679 /* Show stuff that applies to Chats, hide stuff that applies to IMs */ 2715 /* Show stuff that applies to Chats, hide stuff that applies to IMs */
2680 2716
2681 /* Deal with menu items */ 2717 /* Deal with menu items */
2682 gtk_widget_show(gtkwin->menu.view_log); 2718 gtk_widget_show(gtkwin->menu.view_log);
2685 gtk_widget_hide(gtkwin->menu.get_info); 2721 gtk_widget_hide(gtkwin->menu.get_info);
2686 gtk_widget_hide(gtkwin->menu.warn); 2722 gtk_widget_hide(gtkwin->menu.warn);
2687 gtk_widget_show(gtkwin->menu.invite); 2723 gtk_widget_show(gtkwin->menu.invite);
2688 gtk_widget_show(gtkwin->menu.alias); 2724 gtk_widget_show(gtkwin->menu.alias);
2689 gtk_widget_hide(gtkwin->menu.block); 2725 gtk_widget_hide(gtkwin->menu.block);
2726 gtk_widget_hide(gtkwin->menu.show_icon);
2690 2727
2691 if (gaim_blist_find_chat(account, gaim_conversation_get_name(conv)) == NULL) { 2728 if (gaim_blist_find_chat(account, gaim_conversation_get_name(conv)) == NULL) {
2692 /* If the chat is NOT in the buddy list */ 2729 /* If the chat is NOT in the buddy list */
2693 gtk_widget_show(gtkwin->menu.add); 2730 gtk_widget_show(gtkwin->menu.add);
2694 gtk_widget_hide(gtkwin->menu.remove); 2731 gtk_widget_hide(gtkwin->menu.remove);
2844 gaim_prefs_get_bool("/gaim/gtk/conversations/show_formatting_toolbar")); 2881 gaim_prefs_get_bool("/gaim/gtk/conversations/show_formatting_toolbar"));
2845 2882
2846 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtkwin->menu.show_timestamps), 2883 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtkwin->menu.show_timestamps),
2847 gtkconv->show_timestamps); 2884 gtkconv->show_timestamps);
2848 2885
2886 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
2887 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtkwin->menu.show_icon),
2888 gtkconv->u.im->show_icon);
2849 /* 2889 /*
2850 * We pause icons when they are not visible. If this icon should 2890 * We pause icons when they are not visible. If this icon should
2851 * be animated then start it back up again. 2891 * be animated then start it back up again.
2852 */ 2892 */
2853 if ((gaim_conversation_get_type(conv) == GAIM_CONV_IM) && 2893 if ((gaim_conversation_get_type(conv) == GAIM_CONV_IM) &&
3525 { N_("/_Options"), NULL, NULL, 0, "<Branch>" }, 3565 { N_("/_Options"), NULL, NULL, 0, "<Branch>" },
3526 { N_("/Options/Enable _Logging"), NULL, menu_logging_cb, 0, "<CheckItem>" }, 3566 { N_("/Options/Enable _Logging"), NULL, menu_logging_cb, 0, "<CheckItem>" },
3527 { N_("/Options/Enable _Sounds"), NULL, menu_sounds_cb, 0, "<CheckItem>" }, 3567 { N_("/Options/Enable _Sounds"), NULL, menu_sounds_cb, 0, "<CheckItem>" },
3528 { N_("/Options/Show Formatting _Toolbars"), NULL, menu_toolbar_cb, 0, "<CheckItem>" }, 3568 { N_("/Options/Show Formatting _Toolbars"), NULL, menu_toolbar_cb, 0, "<CheckItem>" },
3529 { N_("/Options/Show T_imestamps"), "F2", menu_timestamps_cb, 0, "<CheckItem>" }, 3569 { N_("/Options/Show T_imestamps"), "F2", menu_timestamps_cb, 0, "<CheckItem>" },
3570 { N_("/Options/Show Buddy _Icon"), NULL, menu_buddyicon_cb, 0, "<CheckItem>" },
3530 }; 3571 };
3531 3572
3532 static const int menu_item_count = 3573 static const int menu_item_count =
3533 sizeof(menu_items) / sizeof(*menu_items); 3574 sizeof(menu_items) / sizeof(*menu_items);
3534 3575
3635 gtk_item_factory_get_widget(gtkwin->menu.item_factory, 3676 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
3636 N_("/Options/Show Formatting Toolbars")); 3677 N_("/Options/Show Formatting Toolbars"));
3637 gtkwin->menu.show_timestamps = 3678 gtkwin->menu.show_timestamps =
3638 gtk_item_factory_get_widget(gtkwin->menu.item_factory, 3679 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
3639 N_("/Options/Show Timestamps")); 3680 N_("/Options/Show Timestamps"));
3681 gtkwin->menu.show_icon =
3682 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
3683 N_("/Options/Show Buddy Icon"));
3640 3684
3641 generate_send_as_items(win, NULL); 3685 generate_send_as_items(win, NULL);
3642 3686
3643 box_item = gtk_menu_item_new(); 3687 box_item = gtk_menu_item_new();
3644 gtk_menu_item_set_right_justified(GTK_MENU_ITEM(box_item), TRUE); 3688 gtk_menu_item_set_right_justified(GTK_MENU_ITEM(box_item), TRUE);