| 1255 } |
1255 } |
| 1256 |
1256 |
| 1257 } |
1257 } |
| 1258 |
1258 |
| 1259 static void |
1259 static void |
| |
1260 menu_get_attention_cb(gpointer data, guint action, GtkWidget *widget) |
| |
1261 { |
| |
1262 PidginWindow *win = data; |
| |
1263 PurpleConversation *conv = pidgin_conv_window_get_active_conversation(win); |
| |
1264 |
| |
1265 if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) { |
| |
1266 purple_prpl_send_attention(purple_conversation_get_gc(conv), |
| |
1267 purple_conversation_get_name(conv), 0); |
| |
1268 purple_conversation_attention(conv, purple_conversation_get_name(conv), |
| |
1269 0, PURPLE_MESSAGE_SEND, time(NULL)); |
| |
1270 } |
| |
1271 } |
| |
1272 |
| |
1273 static void |
| 1260 menu_add_pounce_cb(gpointer data, guint action, GtkWidget *widget) |
1274 menu_add_pounce_cb(gpointer data, guint action, GtkWidget *widget) |
| 1261 { |
1275 { |
| 1262 PidginWindow *win = data; |
1276 PidginWindow *win = data; |
| 1263 PurpleConversation *conv; |
1277 PurpleConversation *conv; |
| 1264 |
1278 |
| 2320 g_return_if_fail(conv != NULL); |
2334 g_return_if_fail(conv != NULL); |
| 2321 |
2335 |
| 2322 gtkconv = PIDGIN_CONVERSATION(conv); |
2336 gtkconv = PIDGIN_CONVERSATION(conv); |
| 2323 old_conv = gtkconv->active_conv; |
2337 old_conv = gtkconv->active_conv; |
| 2324 |
2338 |
| |
2339 purple_debug_info("gtkconv", "setting active conversation on toolbar %p\n", |
| |
2340 conv); |
| |
2341 gtk_imhtmltoolbar_switch_active_conversation(GTK_IMHTMLTOOLBAR(gtkconv->toolbar), |
| |
2342 conv); |
| |
2343 |
| 2325 if (old_conv == conv) |
2344 if (old_conv == conv) |
| 2326 return; |
2345 return; |
| 2327 |
2346 |
| 2328 purple_conversation_close_logs(old_conv); |
2347 purple_conversation_close_logs(old_conv); |
| 2329 gtkconv->active_conv = conv; |
2348 gtkconv->active_conv = conv; |
| 3183 { N_("/Conversation/Media/Audio\\/Video _Call"), NULL, menu_initiate_media_call_cb, 2, |
3202 { N_("/Conversation/Media/Audio\\/Video _Call"), NULL, menu_initiate_media_call_cb, 2, |
| 3184 "<StockItem>", PIDGIN_STOCK_TOOLBAR_VIDEO_CALL }, |
3203 "<StockItem>", PIDGIN_STOCK_TOOLBAR_VIDEO_CALL }, |
| 3185 #endif |
3204 #endif |
| 3186 |
3205 |
| 3187 { N_("/Conversation/Se_nd File..."), NULL, menu_send_file_cb, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_SEND_FILE }, |
3206 { N_("/Conversation/Se_nd File..."), NULL, menu_send_file_cb, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_SEND_FILE }, |
| |
3207 { N_("/Conversation/Get _Attention"), NULL, menu_get_attention_cb, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_SEND_ATTENTION }, |
| 3188 { N_("/Conversation/Add Buddy _Pounce..."), NULL, menu_add_pounce_cb, |
3208 { N_("/Conversation/Add Buddy _Pounce..."), NULL, menu_add_pounce_cb, |
| 3189 0, "<Item>", NULL }, |
3209 0, "<Item>", NULL }, |
| 3190 { N_("/Conversation/_Get Info"), "<CTL>O", menu_get_info_cb, 0, |
3210 { N_("/Conversation/_Get Info"), "<CTL>O", menu_get_info_cb, 0, |
| 3191 "<StockItem>", PIDGIN_STOCK_TOOLBAR_USER_INFO }, |
3211 "<StockItem>", PIDGIN_STOCK_TOOLBAR_USER_INFO }, |
| 3192 { N_("/Conversation/In_vite..."), NULL, menu_invite_cb, 0, |
3212 { N_("/Conversation/In_vite..."), NULL, menu_invite_cb, 0, |
| 3567 |
3587 |
| 3568 win->menu.send_file = |
3588 win->menu.send_file = |
| 3569 gtk_item_factory_get_widget(win->menu.item_factory, |
3589 gtk_item_factory_get_widget(win->menu.item_factory, |
| 3570 N_("/Conversation/Send File...")); |
3590 N_("/Conversation/Send File...")); |
| 3571 |
3591 |
| |
3592 win->menu.get_attention = |
| |
3593 gtk_item_factory_get_widget(win->menu.item_factory, |
| |
3594 N_("/Conversation/Get Attention")); |
| 3572 win->menu.add_pounce = |
3595 win->menu.add_pounce = |
| 3573 gtk_item_factory_get_widget(win->menu.item_factory, |
3596 gtk_item_factory_get_widget(win->menu.item_factory, |
| 3574 N_("/Conversation/Add Buddy Pounce...")); |
3597 N_("/Conversation/Add Buddy Pounce...")); |
| 3575 |
3598 |
| 3576 /* --- */ |
3599 /* --- */ |
| 6497 /* Show stuff that applies to IMs, hide stuff that applies to chats */ |
6520 /* Show stuff that applies to IMs, hide stuff that applies to chats */ |
| 6498 |
6521 |
| 6499 /* Deal with menu items */ |
6522 /* Deal with menu items */ |
| 6500 gtk_widget_show(win->menu.view_log); |
6523 gtk_widget_show(win->menu.view_log); |
| 6501 gtk_widget_show(win->menu.send_file); |
6524 gtk_widget_show(win->menu.send_file); |
| |
6525 gtk_widget_show(win->menu.get_attention); |
| 6502 gtk_widget_show(win->menu.add_pounce); |
6526 gtk_widget_show(win->menu.add_pounce); |
| 6503 gtk_widget_show(win->menu.get_info); |
6527 gtk_widget_show(win->menu.get_info); |
| 6504 gtk_widget_hide(win->menu.invite); |
6528 gtk_widget_hide(win->menu.invite); |
| 6505 gtk_widget_show(win->menu.alias); |
6529 gtk_widget_show(win->menu.alias); |
| 6506 if (purple_privacy_check(account, purple_conversation_get_name(conv))) { |
6530 if (purple_privacy_check(account, purple_conversation_get_name(conv))) { |
| 6525 /* Show stuff that applies to Chats, hide stuff that applies to IMs */ |
6549 /* Show stuff that applies to Chats, hide stuff that applies to IMs */ |
| 6526 |
6550 |
| 6527 /* Deal with menu items */ |
6551 /* Deal with menu items */ |
| 6528 gtk_widget_show(win->menu.view_log); |
6552 gtk_widget_show(win->menu.view_log); |
| 6529 gtk_widget_hide(win->menu.send_file); |
6553 gtk_widget_hide(win->menu.send_file); |
| |
6554 gtk_widget_hide(win->menu.get_attention); |
| 6530 gtk_widget_hide(win->menu.add_pounce); |
6555 gtk_widget_hide(win->menu.add_pounce); |
| 6531 gtk_widget_hide(win->menu.get_info); |
6556 gtk_widget_hide(win->menu.get_info); |
| 6532 gtk_widget_show(win->menu.invite); |
6557 gtk_widget_show(win->menu.invite); |
| 6533 gtk_widget_show(win->menu.alias); |
6558 gtk_widget_show(win->menu.alias); |
| 6534 gtk_widget_hide(win->menu.block); |
6559 gtk_widget_hide(win->menu.block); |
| 6602 gtk_widget_set_sensitive(win->menu.add, (prpl_info->add_buddy != NULL)); |
6627 gtk_widget_set_sensitive(win->menu.add, (prpl_info->add_buddy != NULL)); |
| 6603 gtk_widget_set_sensitive(win->menu.remove, (prpl_info->remove_buddy != NULL)); |
6628 gtk_widget_set_sensitive(win->menu.remove, (prpl_info->remove_buddy != NULL)); |
| 6604 gtk_widget_set_sensitive(win->menu.send_file, |
6629 gtk_widget_set_sensitive(win->menu.send_file, |
| 6605 (prpl_info->send_file != NULL && (!prpl_info->can_receive_file || |
6630 (prpl_info->send_file != NULL && (!prpl_info->can_receive_file || |
| 6606 prpl_info->can_receive_file(gc, purple_conversation_get_name(conv))))); |
6631 prpl_info->can_receive_file(gc, purple_conversation_get_name(conv))))); |
| |
6632 gtk_widget_set_sensitive(win->menu.get_attention, (prpl_info->send_attention != NULL)); |
| 6607 gtk_widget_set_sensitive(win->menu.alias, |
6633 gtk_widget_set_sensitive(win->menu.alias, |
| 6608 (account != NULL) && |
6634 (account != NULL) && |
| 6609 (purple_find_buddy(account, purple_conversation_get_name(conv)) != NULL)); |
6635 (purple_find_buddy(account, purple_conversation_get_name(conv)) != NULL)); |
| 6610 } |
6636 } |
| 6611 else if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT) |
6637 else if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT) |
| 6622 /* Or it's a chat that we've left. */ |
6648 /* Or it's a chat that we've left. */ |
| 6623 |
6649 |
| 6624 /* Then deal with menu items */ |
6650 /* Then deal with menu items */ |
| 6625 gtk_widget_set_sensitive(win->menu.view_log, TRUE); |
6651 gtk_widget_set_sensitive(win->menu.view_log, TRUE); |
| 6626 gtk_widget_set_sensitive(win->menu.send_file, FALSE); |
6652 gtk_widget_set_sensitive(win->menu.send_file, FALSE); |
| |
6653 gtk_widget_set_sensitive(win->menu.get_attention, FALSE); |
| 6627 gtk_widget_set_sensitive(win->menu.add_pounce, TRUE); |
6654 gtk_widget_set_sensitive(win->menu.add_pounce, TRUE); |
| 6628 gtk_widget_set_sensitive(win->menu.get_info, FALSE); |
6655 gtk_widget_set_sensitive(win->menu.get_info, FALSE); |
| 6629 gtk_widget_set_sensitive(win->menu.invite, FALSE); |
6656 gtk_widget_set_sensitive(win->menu.invite, FALSE); |
| 6630 gtk_widget_set_sensitive(win->menu.alias, FALSE); |
6657 gtk_widget_set_sensitive(win->menu.alias, FALSE); |
| 6631 gtk_widget_set_sensitive(win->menu.add, FALSE); |
6658 gtk_widget_set_sensitive(win->menu.add, FALSE); |