| 738 else |
738 else |
| 739 return; |
739 return; |
| 740 |
740 |
| 741 if (strcmp(convprotocol, gaim_account_get_protocol_id(buddy->account))) |
741 if (strcmp(convprotocol, gaim_account_get_protocol_id(buddy->account))) |
| 742 { |
742 { |
| 743 gaim_notify_error(NULL, NULL, |
743 gaim_notify_error(GAIM_GTK_CONVERSATION(info->conv), NULL, |
| 744 _("That buddy is not on the same protocol as this " |
744 _("That buddy is not on the same protocol as this " |
| 745 "chat."), NULL); |
745 "chat."), NULL); |
| 746 } |
746 } |
| 747 else |
747 else |
| 748 gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(info->entry)->entry), buddy->name); |
748 gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(info->entry)->entry), buddy->name); |
| 758 if (gaim_gtk_parse_x_im_contact((const char *)sd->data, FALSE, &account, |
758 if (gaim_gtk_parse_x_im_contact((const char *)sd->data, FALSE, &account, |
| 759 &protocol, &username, NULL)) |
759 &protocol, &username, NULL)) |
| 760 { |
760 { |
| 761 if (account == NULL) |
761 if (account == NULL) |
| 762 { |
762 { |
| 763 gaim_notify_error(NULL, NULL, |
763 gaim_notify_error(GAIM_GTK_CONVERSATION(info->conv), NULL, |
| 764 _("You are not currently signed on with an account that " |
764 _("You are not currently signed on with an account that " |
| 765 "can invite that buddy."), NULL); |
765 "can invite that buddy."), NULL); |
| 766 } |
766 } |
| 767 else if (strcmp(convprotocol, gaim_account_get_protocol_id(account))) |
767 else if (strcmp(convprotocol, gaim_account_get_protocol_id(account))) |
| 768 { |
768 { |
| 769 gaim_notify_error(NULL, NULL, |
769 gaim_notify_error(GAIM_GTK_CONVERSATION(info->conv), NULL, |
| 770 _("That buddy is not on the same protocol as this " |
770 _("That buddy is not on the same protocol as this " |
| 771 "chat."), NULL); |
771 "chat."), NULL); |
| 772 } |
772 } |
| 773 else |
773 else |
| 774 { |
774 { |
| 940 FILE *fp; |
940 FILE *fp; |
| 941 const char *name; |
941 const char *name; |
| 942 gchar *text; |
942 gchar *text; |
| 943 |
943 |
| 944 if ((fp = g_fopen(filename, "w+")) == NULL) { |
944 if ((fp = g_fopen(filename, "w+")) == NULL) { |
| 945 gaim_notify_error(conv, NULL, _("Unable to open file."), NULL); |
945 gaim_notify_error(GAIM_GTK_CONVERSATION(conv), NULL, _("Unable to open file."), NULL); |
| 946 return; |
946 return; |
| 947 } |
947 } |
| 948 |
948 |
| 949 name = gaim_conversation_get_name(conv); |
949 name = gaim_conversation_get_name(conv); |
| 950 fprintf(fp, "<html>\n<head><title>%s</title></head>\n<body>", name); |
950 fprintf(fp, "<html>\n<head><title>%s</title></head>\n<body>", name); |
| 970 GaimConversation *conv = gaim_gtk_conv_window_get_active_conversation(win); |
970 GaimConversation *conv = gaim_gtk_conv_window_get_active_conversation(win); |
| 971 gchar *buf; |
971 gchar *buf; |
| 972 |
972 |
| 973 buf = g_strdup_printf("%s.html", gaim_normalize(conv->account, conv->name)); |
973 buf = g_strdup_printf("%s.html", gaim_normalize(conv->account, conv->name)); |
| 974 |
974 |
| 975 gaim_request_file(conv, _("Save Conversation"), gaim_escape_filename(buf), |
975 gaim_request_file(GAIM_GTK_CONVERSATION(conv), _("Save Conversation"), |
| |
976 gaim_escape_filename(buf), |
| 976 TRUE, G_CALLBACK(savelog_writefile_cb), NULL, conv); |
977 TRUE, G_CALLBACK(savelog_writefile_cb), NULL, conv); |
| 977 |
978 |
| 978 g_free(buf); |
979 g_free(buf); |
| 979 } |
980 } |
| 980 |
981 |
| 2393 GaimBuddyIcon *icon; |
2394 GaimBuddyIcon *icon; |
| 2394 const void *data; |
2395 const void *data; |
| 2395 size_t len; |
2396 size_t len; |
| 2396 |
2397 |
| 2397 if ((fp = g_fopen(filename, "wb")) == NULL) { |
2398 if ((fp = g_fopen(filename, "wb")) == NULL) { |
| 2398 gaim_notify_error(conv, NULL, _("Unable to open file."), NULL); |
2399 gaim_notify_error(gtkconv, NULL, _("Unable to open file."), NULL); |
| 2399 return; |
2400 return; |
| 2400 } |
2401 } |
| 2401 |
2402 |
| 2402 icon = gaim_conv_im_get_icon(GAIM_CONV_IM(conv)); |
2403 icon = gaim_conv_im_get_icon(GAIM_CONV_IM(conv)); |
| 2403 data = gaim_buddy_icon_get_data(icon, &len); |
2404 data = gaim_buddy_icon_get_data(icon, &len); |
| 2404 |
2405 |
| 2405 if ((len <= 0) || (data == NULL)) { |
2406 if ((len <= 0) || (data == NULL)) { |
| 2406 gaim_notify_error(conv, NULL, _("Unable to save icon file to disk."), NULL); |
2407 gaim_notify_error(gtkconv, NULL, _("Unable to save icon file to disk."), NULL); |
| 2407 return; |
2408 return; |
| 2408 } |
2409 } |
| 2409 |
2410 |
| 2410 fwrite(data, 1, len, fp); |
2411 fwrite(data, 1, len, fp); |
| 2411 fclose(fp); |
2412 fclose(fp); |
| 2424 if (ext == NULL) |
2425 if (ext == NULL) |
| 2425 ext = "icon"; |
2426 ext = "icon"; |
| 2426 |
2427 |
| 2427 buf = g_strdup_printf("%s.%s", gaim_normalize(conv->account, conv->name), ext); |
2428 buf = g_strdup_printf("%s.%s", gaim_normalize(conv->account, conv->name), ext); |
| 2428 |
2429 |
| 2429 gaim_request_file(conv, _("Save Icon"), buf, TRUE, |
2430 gaim_request_file(gtkconv, _("Save Icon"), buf, TRUE, |
| 2430 G_CALLBACK(saveicon_writefile_cb), NULL, gtkconv); |
2431 G_CALLBACK(saveicon_writefile_cb), NULL, gtkconv); |
| 2431 |
2432 |
| 2432 g_free(buf); |
2433 g_free(buf); |
| 2433 } |
2434 } |
| 2434 |
2435 |
| 4196 if (gaim_gtk_parse_x_im_contact((const char *)sd->data, FALSE, &account, |
4197 if (gaim_gtk_parse_x_im_contact((const char *)sd->data, FALSE, &account, |
| 4197 &protocol, &username, NULL)) |
4198 &protocol, &username, NULL)) |
| 4198 { |
4199 { |
| 4199 if (account == NULL) |
4200 if (account == NULL) |
| 4200 { |
4201 { |
| 4201 gaim_notify_error(NULL, NULL, |
4202 gaim_notify_error(win, NULL, |
| 4202 _("You are not currently signed on with an account that " |
4203 _("You are not currently signed on with an account that " |
| 4203 "can add that buddy."), NULL); |
4204 "can add that buddy."), NULL); |
| 4204 } |
4205 } |
| 4205 else |
4206 else |
| 4206 { |
4207 { |
| 4445 return; |
4446 return; |
| 4446 |
4447 |
| 4447 gaim_gtk_conv_window_remove_gtkconv(gtkconv->win, gtkconv); |
4448 gaim_gtk_conv_window_remove_gtkconv(gtkconv->win, gtkconv); |
| 4448 |
4449 |
| 4449 /* If the "Save Conversation" or "Save Icon" dialogs are open then close them */ |
4450 /* If the "Save Conversation" or "Save Icon" dialogs are open then close them */ |
| 4450 gaim_request_close_with_handle(conv); |
4451 gaim_request_close_with_handle(gtkconv); |
| |
4452 gaim_notify_close_with_handle(gtkconv); |
| 4451 |
4453 |
| 4452 gtk_widget_destroy(gtkconv->tab_cont); |
4454 gtk_widget_destroy(gtkconv->tab_cont); |
| 4453 g_object_unref(gtkconv->tab_cont); |
4455 g_object_unref(gtkconv->tab_cont); |
| 4454 |
4456 |
| 4455 if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM) { |
4457 if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM) { |