| 1531 } |
1531 } |
| 1532 |
1532 |
| 1533 void |
1533 void |
| 1534 pidgin_dnd_file_manage(GtkSelectionData *sd, PurpleAccount *account, const char *who) |
1534 pidgin_dnd_file_manage(GtkSelectionData *sd, PurpleAccount *account, const char *who) |
| 1535 { |
1535 { |
| 1536 GList *tmp; |
|
| 1537 GdkPixbuf *pb; |
1536 GdkPixbuf *pb; |
| 1538 GList *files = purple_uri_list_extract_filenames((const gchar *)sd->data); |
1537 GList *files = purple_uri_list_extract_filenames((const gchar *)sd->data); |
| 1539 PurpleConnection *gc = purple_account_get_connection(account); |
1538 PurpleConnection *gc = purple_account_get_connection(account); |
| 1540 PurplePluginProtocolInfo *prpl_info = NULL; |
1539 PurplePluginProtocolInfo *prpl_info = NULL; |
| 1541 gboolean file_send_ok = FALSE; |
1540 gboolean file_send_ok = FALSE; |
| 1542 #ifndef _WIN32 |
1541 #ifndef _WIN32 |
| 1543 PurpleDesktopItem *item; |
1542 PurpleDesktopItem *item; |
| 1544 #endif |
1543 #endif |
| |
1544 gchar *filename = NULL; |
| |
1545 gchar *basename = NULL; |
| 1545 |
1546 |
| 1546 g_return_if_fail(account != NULL); |
1547 g_return_if_fail(account != NULL); |
| 1547 g_return_if_fail(who != NULL); |
1548 g_return_if_fail(who != NULL); |
| 1548 |
1549 |
| 1549 for(tmp = files; tmp != NULL ; tmp = g_list_next(tmp)) { |
1550 for ( ; files; files = g_list_delete_link(files, files)) { |
| 1550 gchar *filename = tmp->data; |
1551 g_free(filename); |
| 1551 gchar *basename = g_path_get_basename(filename); |
1552 g_free(basename); |
| |
1553 |
| |
1554 filename = files->data; |
| |
1555 basename = g_path_get_basename(filename); |
| 1552 |
1556 |
| 1553 /* Set the default action: don't send anything */ |
1557 /* Set the default action: don't send anything */ |
| 1554 file_send_ok = FALSE; |
1558 file_send_ok = FALSE; |
| 1555 |
1559 |
| 1556 /* XXX - Make ft API support creating a transfer with more than one file */ |
1560 /* XXX - Make ft API support creating a transfer with more than one file */ |
| 1627 data, |
1630 data, |
| 1628 _("Set as buddy icon"), DND_BUDDY_ICON, |
1631 _("Set as buddy icon"), DND_BUDDY_ICON, |
| 1629 (ft ? _("Send image file") : _("Insert in message")), (ft ? DND_FILE_TRANSFER : DND_IM_IMAGE), |
1632 (ft ? _("Send image file") : _("Insert in message")), (ft ? DND_FILE_TRANSFER : DND_IM_IMAGE), |
| 1630 NULL); |
1633 NULL); |
| 1631 g_object_unref(G_OBJECT(pb)); |
1634 g_object_unref(G_OBJECT(pb)); |
| |
1635 |
| |
1636 g_free(basename); |
| |
1637 while (files) { |
| |
1638 g_free(files->data); |
| |
1639 files = g_list_delete_link(files, files); |
| |
1640 } |
| 1632 return; |
1641 return; |
| 1633 } |
1642 } |
| 1634 |
1643 |
| 1635 #ifndef _WIN32 |
1644 #ifndef _WIN32 |
| 1636 /* Are we trying to send a .desktop file? */ |
1645 /* Are we trying to send a .desktop file? */ |
| 1684 "of this launcher instead of this " |
1693 "of this launcher instead of this " |
| 1685 "launcher itself.")); |
1694 "launcher itself.")); |
| 1686 break; |
1695 break; |
| 1687 } |
1696 } |
| 1688 purple_desktop_item_unref(item); |
1697 purple_desktop_item_unref(item); |
| |
1698 g_free(basename); |
| |
1699 while (files) { |
| |
1700 g_free(files->data); |
| |
1701 files = g_list_delete_link(files, files); |
| |
1702 } |
| 1689 return; |
1703 return; |
| 1690 } |
1704 } |
| 1691 #endif /* _WIN32 */ |
1705 #endif /* _WIN32 */ |
| 1692 |
1706 |
| 1693 /* Everything is fine, let's send */ |
1707 /* Everything is fine, let's send */ |
| 1694 serv_send_file(gc, who, filename); |
1708 serv_send_file(gc, who, filename); |
| 1695 g_free(filename); |
1709 } |
| 1696 } |
1710 |
| 1697 g_list_free(files); |
1711 g_free(filename); |
| |
1712 g_free(basename); |
| 1698 } |
1713 } |
| 1699 |
1714 |
| 1700 void pidgin_buddy_icon_get_scale_size(GdkPixbuf *buf, PurpleBuddyIconSpec *spec, PurpleIconScaleRules rules, int *width, int *height) |
1715 void pidgin_buddy_icon_get_scale_size(GdkPixbuf *buf, PurpleBuddyIconSpec *spec, PurpleIconScaleRules rules, int *width, int *height) |
| 1701 { |
1716 { |
| 1702 *width = gdk_pixbuf_get_width(buf); |
1717 *width = gdk_pixbuf_get_width(buf); |