# HG changeset patch # User Luke Schierer # Date 1089170677 0 # Node ID 4d0b0d5485e6b64a439dd84d77168a7a6e09bcb2 # Parent b6971539f7afe34a0804a5e5bd1c2ec925144573 [gaim-migrate @ 10293] (23:23:20) datallah: LSchiere: if you are up to it, this: http://www.butfer.com/gaim-patches/gtkconv_send_file.patch, makes it so that you can send files to people from the conversation window. committer: Tailor Script diff -r b6971539f7af -r 4d0b0d5485e6 src/gtkconv.c --- a/src/gtkconv.c Wed Jul 07 01:51:28 2004 +0000 +++ b/src/gtkconv.c Wed Jul 07 03:24:37 2004 +0000 @@ -683,6 +683,13 @@ } static void +send_file_cb(GtkWidget *widget, GaimConversation *conv) +{ + serv_send_file(gaim_conversation_get_gc(conv), gaim_conversation_get_name(conv), NULL); + +} + +static void do_invite(GtkWidget *w, int resp, InviteBuddyInfo *info) { const char *buddy, *message; @@ -956,6 +963,18 @@ } static void +menu_send_file_cb(gpointer data, guint action, GtkWidget *widget) +{ + GaimConvWindow *win = (GaimConvWindow *)data; + GaimConversation *conv = gaim_conv_window_get_active_conversation(win); + + if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { + serv_send_file(gaim_conversation_get_gc(conv), gaim_conversation_get_name(conv), NULL); + } + +} + +static void menu_add_pounce_cb(gpointer data, guint action, GtkWidget *widget) { GaimConvWindow *win = (GaimConvWindow *)data; @@ -1267,6 +1286,15 @@ } static void +menu_chat_send_file_cb(GtkWidget *w, GaimConversation *conv) +{ + const char *who = g_object_get_data(G_OBJECT(w), "user_data"); + GaimConnection *gc = gaim_conversation_get_gc(conv); + + serv_send_file(gc, who, NULL); +} + +static void menu_chat_info_cb(GtkWidget *w, GaimConversation *conv) { char *who; @@ -1343,6 +1371,16 @@ gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); gtk_widget_show(button); + if (gc && prpl_info && prpl_info->send_file + && (!prpl_info->can_receive_file || prpl_info->can_receive_file(gc, who))) { + button = gtk_menu_item_new_with_label(_("Send File")); + g_signal_connect(G_OBJECT(button), "activate", + G_CALLBACK(menu_chat_send_file_cb), conv); + g_object_set_data(G_OBJECT(button), "user_data", who); + gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); + gtk_widget_show(button); + } + if (gaim_conv_chat_is_user_ignored(GAIM_CONV_CHAT(conv), who)) button = gtk_menu_item_new_with_label(_("Un-Ignore")); else @@ -2557,9 +2595,11 @@ gtk_widget_show(gtkconv->send); gtk_widget_show(gtkconv->u.im->warn); gtk_widget_show(gtkconv->u.im->block); + gtk_widget_show(gtkconv->u.im->send_file); /* Deal with menu items */ gtk_widget_show(gtkwin->menu.view_log); + gtk_widget_show(gtkwin->menu.send_file); gtk_widget_show(gtkwin->menu.add_pounce); gtk_widget_show(gtkwin->menu.get_info); gtk_widget_show(gtkwin->menu.warn); @@ -2592,6 +2632,7 @@ /* Deal with menu items */ gtk_widget_hide(gtkwin->menu.view_log); + gtk_widget_hide(gtkwin->menu.send_file); gtk_widget_hide(gtkwin->menu.add_pounce); gtk_widget_hide(gtkwin->menu.get_info); gtk_widget_hide(gtkwin->menu.warn); @@ -2638,6 +2679,10 @@ (prpl_info->warn != NULL)); gtk_widget_set_sensitive(gtkconv->u.im->block, (prpl_info->add_deny != NULL)); + gtk_widget_set_sensitive(gtkconv->u.im->send_file, + (prpl_info->send_file + && (!prpl_info->can_receive_file + || prpl_info->can_receive_file(gc, gaim_conversation_get_name(conv))))); } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { @@ -2676,6 +2721,10 @@ (prpl_info->chat_invite != NULL)); if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { + gtk_widget_set_sensitive(gtkwin->menu.send_file, + (gc && prpl_info->send_file != NULL + && (!prpl_info->can_receive_file + || prpl_info->can_receive_file(gc, gaim_conversation_get_name(conv))))); if (gaim_find_buddy(gaim_conversation_get_account(conv), gaim_conversation_get_name(conv)) == NULL) gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE); @@ -2709,12 +2758,14 @@ if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { gtk_widget_set_sensitive(gtkconv->u.im->warn, FALSE); gtk_widget_set_sensitive(gtkconv->u.im->block, FALSE); + gtk_widget_set_sensitive(gtkconv->u.im->send_file, FALSE); } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { gtk_widget_set_sensitive(gtkconv->u.chat->invite, FALSE); } /* Then deal with menu items */ gtk_widget_set_sensitive(gtkwin->menu.view_log, TRUE); + gtk_widget_set_sensitive(gtkwin->menu.send_file, FALSE); gtk_widget_set_sensitive(gtkwin->menu.add_pounce, TRUE); gtk_widget_set_sensitive(gtkwin->menu.get_info, FALSE); gtk_widget_set_sensitive(gtkwin->menu.warn, FALSE); @@ -3392,6 +3443,7 @@ { "/Conversation/sep1", NULL, NULL, 0, "" }, + { N_("/Conversation/Se_nd File..."), NULL, menu_send_file_cb, 0, "", GAIM_STOCK_FILE_TRANSFER }, { N_("/Conversation/Add Buddy _Pounce..."), NULL, menu_add_pounce_cb, 0, NULL }, { N_("/Conversation/_Get Info"), NULL, menu_get_info_cb, 0, @@ -3474,6 +3526,10 @@ N_("/Conversation/View Log")); /* --- */ + gtkwin->menu.send_file = + gtk_item_factory_get_widget(gtkwin->menu.item_factory, + N_("/Conversation/Send File...")); + gtkwin->menu.add_pounce = gtk_item_factory_get_widget(gtkwin->menu.item_factory, N_("/Conversation/Add Buddy Pounce...")); @@ -3586,6 +3642,13 @@ _("Block the user"), NULL); gtk_box_pack_start(GTK_BOX(parent), gtkim->block, FALSE, FALSE, 0); + /* Block button */ + gtkim->send_file = gaim_gtk_change_text(_("Send File"), gtkim->send_file, + GAIM_STOCK_FILE_TRANSFER, GAIM_CONV_IM); + gtk_tooltips_set_tip(gtkconv->tooltips, gtkim->send_file, + _("Send a file to the user"), NULL); + gtk_box_pack_start(GTK_BOX(parent), gtkim->send_file, FALSE, FALSE, 0); + /* Add button */ gtkconv->add = gaim_gtk_change_text(_("Add"), gtkconv->add, GTK_STOCK_ADD, GAIM_CONV_IM); @@ -3609,6 +3672,7 @@ gtk_button_set_relief(GTK_BUTTON(gtkim->warn), GTK_RELIEF_NONE); gtk_button_set_relief(GTK_BUTTON(gtkim->block), GTK_RELIEF_NONE); + gtk_button_set_relief(GTK_BUTTON(gtkim->send_file), GTK_RELIEF_NONE); gtk_button_set_relief(GTK_BUTTON(gtkconv->add), GTK_RELIEF_NONE); gtk_button_set_relief(GTK_BUTTON(gtkconv->remove), GTK_RELIEF_NONE); gtk_button_set_relief(GTK_BUTTON(gtkconv->info), GTK_RELIEF_NONE); @@ -3616,6 +3680,7 @@ gtk_size_group_add_widget(gtkconv->sg, gtkim->warn); gtk_size_group_add_widget(gtkconv->sg, gtkim->block); + gtk_size_group_add_widget(gtkconv->sg, gtkim->send_file); gtk_size_group_add_widget(gtkconv->sg, gtkconv->add); gtk_size_group_add_widget(gtkconv->sg, gtkconv->remove); gtk_size_group_add_widget(gtkconv->sg, gtkconv->info); @@ -3623,9 +3688,10 @@ gtk_box_reorder_child(GTK_BOX(parent), gtkim->warn, 1); gtk_box_reorder_child(GTK_BOX(parent), gtkim->block, 2); - gtk_box_reorder_child(GTK_BOX(parent), gtkconv->add, 3); - gtk_box_reorder_child(GTK_BOX(parent), gtkconv->remove, 4); - gtk_box_reorder_child(GTK_BOX(parent), gtkconv->info, 5); + gtk_box_reorder_child(GTK_BOX(parent), gtkim->send_file,3); + gtk_box_reorder_child(GTK_BOX(parent), gtkconv->add, 4); + gtk_box_reorder_child(GTK_BOX(parent), gtkconv->remove, 5); + gtk_box_reorder_child(GTK_BOX(parent), gtkconv->info, 6); gaim_gtkconv_update_buttons_by_protocol(conv); @@ -3640,6 +3706,8 @@ G_CALLBACK(warn_cb), conv); g_signal_connect(G_OBJECT(gtkim->block), "clicked", G_CALLBACK(block_cb), conv); + g_signal_connect(G_OBJECT(gtkim->send_file), "clicked", + G_CALLBACK(send_file_cb), conv); g_signal_connect(G_OBJECT(gtkconv->add), "clicked", G_CALLBACK(add_remove_cb), conv); g_signal_connect(G_OBJECT(gtkconv->remove), "clicked", diff -r b6971539f7af -r 4d0b0d5485e6 src/gtkconv.h --- a/src/gtkconv.h Wed Jul 07 01:51:28 2004 +0000 +++ b/src/gtkconv.h Wed Jul 07 03:24:37 2004 +0000 @@ -53,6 +53,7 @@ GtkWidget *view_log; + GtkWidget *send_file; GtkWidget *add_pounce; GtkWidget *get_info; GtkWidget *warn; @@ -96,6 +97,7 @@ { GtkWidget *warn; GtkWidget *block; + GtkWidget *send_file; GtkWidget *sep1; GtkWidget *sep2; GtkWidget *check;