comparison pidgin/gtkconv.c @ 26361:38238d41923b

propagate from branch 'im.pidgin.pidgin' (head 5573ab30de2e34d78f13bad8ae0b2ac5de6d1083) to branch 'im.pidgin.pidgin.vv' (head 6733a54a9c1b0ab68c8b924c82783cc4af588952)
author Mike Ruprecht <maiku@soc.pidgin.im>
date Mon, 16 Mar 2009 02:33:48 +0000
parents 85bb3539d302 ff4212a5268f
children e23a74d7c97c
comparison
equal deleted inserted replaced
26267:da9e022befd9 26361:38238d41923b
1199 1199
1200 gtk_widget_show_all(gtkwin->dialogs.search); 1200 gtk_widget_show_all(gtkwin->dialogs.search);
1201 gtk_widget_grab_focus(s->entry); 1201 gtk_widget_grab_focus(s->entry);
1202 } 1202 }
1203 1203
1204 #ifdef USE_VV
1205 static void
1206 menu_initiate_media_call_cb(gpointer data, guint action, GtkWidget *widget)
1207 {
1208 PidginWindow *win = (PidginWindow *)data;
1209 PurpleConversation *conv = pidgin_conv_window_get_active_conversation(win);
1210 PurpleAccount *account = purple_conversation_get_account(conv);
1211
1212 purple_prpl_initiate_media(account,
1213 purple_conversation_get_name(conv),
1214 action == 0 ? PURPLE_MEDIA_AUDIO :
1215 action == 1 ? PURPLE_MEDIA_VIDEO :
1216 action == 2 ? PURPLE_MEDIA_AUDIO |
1217 PURPLE_MEDIA_VIDEO : PURPLE_MEDIA_NONE);
1218 }
1219 #endif
1220
1204 static void 1221 static void
1205 menu_send_file_cb(gpointer data, guint action, GtkWidget *widget) 1222 menu_send_file_cb(gpointer data, guint action, GtkWidget *widget)
1206 { 1223 {
1207 PidginWindow *win = data; 1224 PidginWindow *win = data;
1208 PurpleConversation *conv = pidgin_conv_window_get_active_conversation(win); 1225 PurpleConversation *conv = pidgin_conv_window_get_active_conversation(win);
3112 "<StockItem>", GTK_STOCK_SAVE_AS }, 3129 "<StockItem>", GTK_STOCK_SAVE_AS },
3113 { N_("/Conversation/Clea_r Scrollback"), "<CTL>L", menu_clear_cb, 0, "<StockItem>", GTK_STOCK_CLEAR }, 3130 { N_("/Conversation/Clea_r Scrollback"), "<CTL>L", menu_clear_cb, 0, "<StockItem>", GTK_STOCK_CLEAR },
3114 3131
3115 { "/Conversation/sep1", NULL, NULL, 0, "<Separator>", NULL }, 3132 { "/Conversation/sep1", NULL, NULL, 0, "<Separator>", NULL },
3116 3133
3134 #ifdef USE_VV
3135 { N_("/Conversation/M_edia"), NULL, NULL, 0, "<Branch>", NULL },
3136
3137 { N_("/Conversation/Media/_Audio Call"), NULL, menu_initiate_media_call_cb, 0,
3138 "<StockItem>", PIDGIN_STOCK_TOOLBAR_AUDIO_CALL },
3139 { N_("/Conversation/Media/_Video Call"), NULL, menu_initiate_media_call_cb, 1,
3140 "<StockItem>", PIDGIN_STOCK_TOOLBAR_VIDEO_CALL },
3141 { N_("/Conversation/Media/Audio\\/Video _Call"), NULL, menu_initiate_media_call_cb, 2,
3142 "<StockItem>", PIDGIN_STOCK_TOOLBAR_VIDEO_CALL },
3143 #endif
3144
3117 { N_("/Conversation/Se_nd File..."), NULL, menu_send_file_cb, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_SEND_FILE }, 3145 { N_("/Conversation/Se_nd File..."), NULL, menu_send_file_cb, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_SEND_FILE },
3118 { N_("/Conversation/Add Buddy _Pounce..."), NULL, menu_add_pounce_cb, 3146 { N_("/Conversation/Add Buddy _Pounce..."), NULL, menu_add_pounce_cb,
3119 0, "<Item>", NULL }, 3147 0, "<Item>", NULL },
3120 { N_("/Conversation/_Get Info"), "<CTL>O", menu_get_info_cb, 0, 3148 { N_("/Conversation/_Get Info"), "<CTL>O", menu_get_info_cb, 0,
3121 "<StockItem>", PIDGIN_STOCK_TOOLBAR_USER_INFO }, 3149 "<StockItem>", PIDGIN_STOCK_TOOLBAR_USER_INFO },
3422 3450
3423 win->menu.view_log = 3451 win->menu.view_log =
3424 gtk_item_factory_get_widget(win->menu.item_factory, 3452 gtk_item_factory_get_widget(win->menu.item_factory,
3425 N_("/Conversation/View Log")); 3453 N_("/Conversation/View Log"));
3426 3454
3455 #ifdef USE_VV
3456 win->menu.audio_call =
3457 gtk_item_factory_get_widget(win->menu.item_factory,
3458 N_("/Conversation/Media/Audio Call"));
3459 win->menu.video_call =
3460 gtk_item_factory_get_widget(win->menu.item_factory,
3461 N_("/Conversation/Media/Video Call"));
3462 win->menu.audio_video_call =
3463 gtk_item_factory_get_widget(win->menu.item_factory,
3464 N_("/Conversation/Media/Audio\\/Video Call"));
3465 #endif
3466
3427 /* --- */ 3467 /* --- */
3428 3468
3429 win->menu.send_file = 3469 win->menu.send_file =
3430 gtk_item_factory_get_widget(win->menu.item_factory, 3470 gtk_item_factory_get_widget(win->menu.item_factory,
3431 N_("/Conversation/Send File...")); 3471 N_("/Conversation/Send File..."));
6405 if (conv->features & PURPLE_CONNECTION_ALLOW_CUSTOM_SMILEY) 6445 if (conv->features & PURPLE_CONNECTION_ALLOW_CUSTOM_SMILEY)
6406 buttons |= GTK_IMHTML_CUSTOM_SMILEY; 6446 buttons |= GTK_IMHTML_CUSTOM_SMILEY;
6407 else 6447 else
6408 buttons &= ~GTK_IMHTML_CUSTOM_SMILEY; 6448 buttons &= ~GTK_IMHTML_CUSTOM_SMILEY;
6409 6449
6450 #ifdef USE_VV
6451 /* check if account support voice calls, and if the current buddy
6452 supports it */
6453 if (account != NULL && purple_conversation_get_type(conv)
6454 == PURPLE_CONV_TYPE_IM) {
6455 PurpleMediaCaps caps =
6456 purple_prpl_get_media_caps(account,
6457 purple_conversation_get_name(conv));
6458
6459 gtk_widget_set_sensitive(win->menu.audio_call,
6460 caps & PURPLE_MEDIA_CAPS_AUDIO
6461 ? TRUE : FALSE);
6462 gtk_widget_set_sensitive(win->menu.video_call,
6463 caps & PURPLE_MEDIA_CAPS_VIDEO
6464 ? TRUE : FALSE);
6465 gtk_widget_set_sensitive(win->menu.audio_video_call,
6466 caps & PURPLE_MEDIA_CAPS_AUDIO_VIDEO
6467 ? TRUE : FALSE);
6468 } else if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT) {
6469 /* for now, don't care about chats... */
6470 gtk_widget_set_sensitive(win->menu.audio_call, FALSE);
6471 gtk_widget_set_sensitive(win->menu.video_call, FALSE);
6472 gtk_widget_set_sensitive(win->menu.audio_video_call, FALSE);
6473 } else {
6474 gtk_widget_set_sensitive(win->menu.audio_call, FALSE);
6475 gtk_widget_set_sensitive(win->menu.video_call, FALSE);
6476 gtk_widget_set_sensitive(win->menu.audio_video_call, FALSE);
6477 }
6478 #endif
6479
6410 gtk_imhtml_set_format_functions(GTK_IMHTML(gtkconv->entry), buttons); 6480 gtk_imhtml_set_format_functions(GTK_IMHTML(gtkconv->entry), buttons);
6411 if (account != NULL) 6481 if (account != NULL)
6412 gtk_imhtmltoolbar_associate_smileys(GTK_IMHTMLTOOLBAR(gtkconv->toolbar), purple_account_get_protocol_id(account)); 6482 gtk_imhtmltoolbar_associate_smileys(GTK_IMHTMLTOOLBAR(gtkconv->toolbar), purple_account_get_protocol_id(account));
6413 6483
6414 /* Deal with menu items */ 6484 /* Deal with menu items */
6942 gtk_container_add(GTK_CONTAINER(gtkconv->u.im->icon_container), event); 7012 gtk_container_add(GTK_CONTAINER(gtkconv->u.im->icon_container), event);
6943 #if GTK_CHECK_VERSION(2,4,0) 7013 #if GTK_CHECK_VERSION(2,4,0)
6944 gtk_event_box_set_visible_window(GTK_EVENT_BOX(event), FALSE); 7014 gtk_event_box_set_visible_window(GTK_EVENT_BOX(event), FALSE);
6945 #endif 7015 #endif
6946 gtk_widget_add_events(event, 7016 gtk_widget_add_events(event,
6947 GDK_POINTER_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK); 7017 GDK_POINTER_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK);
6948 g_signal_connect(G_OBJECT(event), "button-press-event", 7018 g_signal_connect(G_OBJECT(event), "button-press-event",
6949 G_CALLBACK(icon_menu), gtkconv); 7019 G_CALLBACK(icon_menu), gtkconv);
6950 7020
6951 pidgin_tooltip_setup_for_widget(event, gtkconv, pidgin_conv_create_tooltip, NULL); 7021 pidgin_tooltip_setup_for_widget(event, gtkconv, pidgin_conv_create_tooltip, NULL);
6952 gtk_widget_show(event); 7022 gtk_widget_show(event);
7781 show_buddy_icons_pref_cb, NULL); 7851 show_buddy_icons_pref_cb, NULL);
7782 purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/blist/show_protocol_icons", 7852 purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/blist/show_protocol_icons",
7783 show_protocol_icons_pref_cb, NULL); 7853 show_protocol_icons_pref_cb, NULL);
7784 purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/conversations/im/hide_new", 7854 purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/conversations/im/hide_new",
7785 hide_new_pref_cb, NULL); 7855 hide_new_pref_cb, NULL);
7786
7787 7856
7788 7857
7789 /********************************************************************** 7858 /**********************************************************************
7790 * Register signals 7859 * Register signals
7791 **********************************************************************/ 7860 **********************************************************************/