| 1229 } |
1229 } |
| 1230 |
1230 |
| 1231 } |
1231 } |
| 1232 |
1232 |
| 1233 static void |
1233 static void |
| |
1234 menu_get_attention_cb(gpointer data, guint action, GtkWidget *widget) |
| |
1235 { |
| |
1236 PidginWindow *win = data; |
| |
1237 PurpleConversation *conv = pidgin_conv_window_get_active_conversation(win); |
| |
1238 |
| |
1239 if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) { |
| |
1240 purple_prpl_send_attention(purple_conversation_get_gc(conv), |
| |
1241 purple_conversation_get_name(conv), 0); |
| |
1242 purple_conversation_attention(conv, purple_conversation_get_name(conv), |
| |
1243 0, PURPLE_MESSAGE_SEND, time(NULL)); |
| |
1244 } |
| |
1245 } |
| |
1246 |
| |
1247 static void |
| 1234 menu_add_pounce_cb(gpointer data, guint action, GtkWidget *widget) |
1248 menu_add_pounce_cb(gpointer data, guint action, GtkWidget *widget) |
| 1235 { |
1249 { |
| 1236 PidginWindow *win = data; |
1250 PidginWindow *win = data; |
| 1237 PurpleConversation *conv; |
1251 PurpleConversation *conv; |
| 1238 |
1252 |
| 2294 g_return_if_fail(conv != NULL); |
2308 g_return_if_fail(conv != NULL); |
| 2295 |
2309 |
| 2296 gtkconv = PIDGIN_CONVERSATION(conv); |
2310 gtkconv = PIDGIN_CONVERSATION(conv); |
| 2297 old_conv = gtkconv->active_conv; |
2311 old_conv = gtkconv->active_conv; |
| 2298 |
2312 |
| |
2313 purple_debug_info("gtkconv", "setting active conversation on toolbar %p\n", |
| |
2314 conv); |
| |
2315 gtk_imhtmltoolbar_switch_active_conversation(GTK_IMHTMLTOOLBAR(gtkconv->toolbar), |
| |
2316 conv); |
| |
2317 |
| 2299 if (old_conv == conv) |
2318 if (old_conv == conv) |
| 2300 return; |
2319 return; |
| 2301 |
2320 |
| 2302 purple_conversation_close_logs(old_conv); |
2321 purple_conversation_close_logs(old_conv); |
| 2303 gtkconv->active_conv = conv; |
2322 gtkconv->active_conv = conv; |
| 3141 { N_("/Conversation/Media/Audio\\/Video _Call"), NULL, menu_initiate_media_call_cb, 2, |
3160 { N_("/Conversation/Media/Audio\\/Video _Call"), NULL, menu_initiate_media_call_cb, 2, |
| 3142 "<StockItem>", PIDGIN_STOCK_TOOLBAR_VIDEO_CALL }, |
3161 "<StockItem>", PIDGIN_STOCK_TOOLBAR_VIDEO_CALL }, |
| 3143 #endif |
3162 #endif |
| 3144 |
3163 |
| 3145 { N_("/Conversation/Se_nd File..."), NULL, menu_send_file_cb, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_SEND_FILE }, |
3164 { N_("/Conversation/Se_nd File..."), NULL, menu_send_file_cb, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_SEND_FILE }, |
| |
3165 { N_("/Conversation/Get _Attention"), NULL, menu_get_attention_cb, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_SEND_ATTENTION }, |
| 3146 { N_("/Conversation/Add Buddy _Pounce..."), NULL, menu_add_pounce_cb, |
3166 { N_("/Conversation/Add Buddy _Pounce..."), NULL, menu_add_pounce_cb, |
| 3147 0, "<Item>", NULL }, |
3167 0, "<Item>", NULL }, |
| 3148 { N_("/Conversation/_Get Info"), "<CTL>O", menu_get_info_cb, 0, |
3168 { N_("/Conversation/_Get Info"), "<CTL>O", menu_get_info_cb, 0, |
| 3149 "<StockItem>", PIDGIN_STOCK_TOOLBAR_USER_INFO }, |
3169 "<StockItem>", PIDGIN_STOCK_TOOLBAR_USER_INFO }, |
| 3150 { N_("/Conversation/In_vite..."), NULL, menu_invite_cb, 0, |
3170 { N_("/Conversation/In_vite..."), NULL, menu_invite_cb, 0, |
| 3468 |
3488 |
| 3469 win->menu.send_file = |
3489 win->menu.send_file = |
| 3470 gtk_item_factory_get_widget(win->menu.item_factory, |
3490 gtk_item_factory_get_widget(win->menu.item_factory, |
| 3471 N_("/Conversation/Send File...")); |
3491 N_("/Conversation/Send File...")); |
| 3472 |
3492 |
| |
3493 win->menu.get_attention = |
| |
3494 gtk_item_factory_get_widget(win->menu.item_factory, |
| |
3495 N_("/Conversation/Get Attention")); |
| 3473 win->menu.add_pounce = |
3496 win->menu.add_pounce = |
| 3474 gtk_item_factory_get_widget(win->menu.item_factory, |
3497 gtk_item_factory_get_widget(win->menu.item_factory, |
| 3475 N_("/Conversation/Add Buddy Pounce...")); |
3498 N_("/Conversation/Add Buddy Pounce...")); |
| 3476 |
3499 |
| 3477 /* --- */ |
3500 /* --- */ |
| 6384 /* Show stuff that applies to IMs, hide stuff that applies to chats */ |
6407 /* Show stuff that applies to IMs, hide stuff that applies to chats */ |
| 6385 |
6408 |
| 6386 /* Deal with menu items */ |
6409 /* Deal with menu items */ |
| 6387 gtk_widget_show(win->menu.view_log); |
6410 gtk_widget_show(win->menu.view_log); |
| 6388 gtk_widget_show(win->menu.send_file); |
6411 gtk_widget_show(win->menu.send_file); |
| |
6412 gtk_widget_show(win->menu.get_attention); |
| 6389 gtk_widget_show(win->menu.add_pounce); |
6413 gtk_widget_show(win->menu.add_pounce); |
| 6390 gtk_widget_show(win->menu.get_info); |
6414 gtk_widget_show(win->menu.get_info); |
| 6391 gtk_widget_hide(win->menu.invite); |
6415 gtk_widget_hide(win->menu.invite); |
| 6392 gtk_widget_show(win->menu.alias); |
6416 gtk_widget_show(win->menu.alias); |
| 6393 if (purple_privacy_check(account, purple_conversation_get_name(conv))) { |
6417 if (purple_privacy_check(account, purple_conversation_get_name(conv))) { |
| 6412 /* Show stuff that applies to Chats, hide stuff that applies to IMs */ |
6436 /* Show stuff that applies to Chats, hide stuff that applies to IMs */ |
| 6413 |
6437 |
| 6414 /* Deal with menu items */ |
6438 /* Deal with menu items */ |
| 6415 gtk_widget_show(win->menu.view_log); |
6439 gtk_widget_show(win->menu.view_log); |
| 6416 gtk_widget_hide(win->menu.send_file); |
6440 gtk_widget_hide(win->menu.send_file); |
| |
6441 gtk_widget_hide(win->menu.get_attention); |
| 6417 gtk_widget_hide(win->menu.add_pounce); |
6442 gtk_widget_hide(win->menu.add_pounce); |
| 6418 gtk_widget_hide(win->menu.get_info); |
6443 gtk_widget_hide(win->menu.get_info); |
| 6419 gtk_widget_show(win->menu.invite); |
6444 gtk_widget_show(win->menu.invite); |
| 6420 gtk_widget_show(win->menu.alias); |
6445 gtk_widget_show(win->menu.alias); |
| 6421 gtk_widget_hide(win->menu.block); |
6446 gtk_widget_hide(win->menu.block); |
| 6519 gtk_widget_set_sensitive(win->menu.add, (prpl_info->add_buddy != NULL)); |
6544 gtk_widget_set_sensitive(win->menu.add, (prpl_info->add_buddy != NULL)); |
| 6520 gtk_widget_set_sensitive(win->menu.remove, (prpl_info->remove_buddy != NULL)); |
6545 gtk_widget_set_sensitive(win->menu.remove, (prpl_info->remove_buddy != NULL)); |
| 6521 gtk_widget_set_sensitive(win->menu.send_file, |
6546 gtk_widget_set_sensitive(win->menu.send_file, |
| 6522 (prpl_info->send_file != NULL && (!prpl_info->can_receive_file || |
6547 (prpl_info->send_file != NULL && (!prpl_info->can_receive_file || |
| 6523 prpl_info->can_receive_file(gc, purple_conversation_get_name(conv))))); |
6548 prpl_info->can_receive_file(gc, purple_conversation_get_name(conv))))); |
| |
6549 gtk_widget_set_sensitive(win->menu.get_attention, (prpl_info->send_attention != NULL)); |
| 6524 gtk_widget_set_sensitive(win->menu.alias, |
6550 gtk_widget_set_sensitive(win->menu.alias, |
| 6525 (account != NULL) && |
6551 (account != NULL) && |
| 6526 (purple_find_buddy(account, purple_conversation_get_name(conv)) != NULL)); |
6552 (purple_find_buddy(account, purple_conversation_get_name(conv)) != NULL)); |
| 6527 } |
6553 } |
| 6528 else if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT) |
6554 else if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT) |
| 6539 /* Or it's a chat that we've left. */ |
6565 /* Or it's a chat that we've left. */ |
| 6540 |
6566 |
| 6541 /* Then deal with menu items */ |
6567 /* Then deal with menu items */ |
| 6542 gtk_widget_set_sensitive(win->menu.view_log, TRUE); |
6568 gtk_widget_set_sensitive(win->menu.view_log, TRUE); |
| 6543 gtk_widget_set_sensitive(win->menu.send_file, FALSE); |
6569 gtk_widget_set_sensitive(win->menu.send_file, FALSE); |
| |
6570 gtk_widget_set_sensitive(win->menu.get_attention, FALSE); |
| 6544 gtk_widget_set_sensitive(win->menu.add_pounce, TRUE); |
6571 gtk_widget_set_sensitive(win->menu.add_pounce, TRUE); |
| 6545 gtk_widget_set_sensitive(win->menu.get_info, FALSE); |
6572 gtk_widget_set_sensitive(win->menu.get_info, FALSE); |
| 6546 gtk_widget_set_sensitive(win->menu.invite, FALSE); |
6573 gtk_widget_set_sensitive(win->menu.invite, FALSE); |
| 6547 gtk_widget_set_sensitive(win->menu.alias, FALSE); |
6574 gtk_widget_set_sensitive(win->menu.alias, FALSE); |
| 6548 gtk_widget_set_sensitive(win->menu.add, FALSE); |
6575 gtk_widget_set_sensitive(win->menu.add, FALSE); |