comparison pidgin/gtkconv.c @ 26213:ff4212a5268f

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