Mercurial > pidgin.yaz
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); |