| 1647 PurpleAccount *account, const char *who, PurpleConversation *conv, |
1647 PurpleAccount *account, const char *who, PurpleConversation *conv, |
| 1648 void *user_data) |
1648 void *user_data) |
| 1649 { |
1649 { |
| 1650 PidginRequestData *data; |
1650 PidginRequestData *data; |
| 1651 GtkWidget *filesel; |
1651 GtkWidget *filesel; |
| |
1652 #ifdef _WIN32 |
| 1652 const gchar *current_folder; |
1653 const gchar *current_folder; |
| 1653 gboolean folder_set = FALSE; |
1654 gboolean folder_set = FALSE; |
| |
1655 #endif |
| 1654 |
1656 |
| 1655 data = g_new0(PidginRequestData, 1); |
1657 data = g_new0(PidginRequestData, 1); |
| 1656 data->type = PURPLE_REQUEST_FILE; |
1658 data->type = PURPLE_REQUEST_FILE; |
| 1657 data->user_data = user_data; |
1659 data->user_data = user_data; |
| 1658 data->cb_count = 2; |
1660 data->cb_count = 2; |
| 1672 : GTK_STOCK_OPEN, |
1674 : GTK_STOCK_OPEN, |
| 1673 GTK_RESPONSE_ACCEPT, |
1675 GTK_RESPONSE_ACCEPT, |
| 1674 NULL); |
1676 NULL); |
| 1675 gtk_dialog_set_default_response(GTK_DIALOG(filesel), GTK_RESPONSE_ACCEPT); |
1677 gtk_dialog_set_default_response(GTK_DIALOG(filesel), GTK_RESPONSE_ACCEPT); |
| 1676 |
1678 |
| 1677 if (savedialog) { |
|
| 1678 current_folder = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/filelocations/last_save_folder"); |
|
| 1679 } else { |
|
| 1680 current_folder = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/filelocations/last_open_folder"); |
|
| 1681 } |
|
| 1682 |
|
| 1683 if ((filename != NULL) && (*filename != '\0')) { |
1679 if ((filename != NULL) && (*filename != '\0')) { |
| 1684 if (savedialog) |
1680 if (savedialog) |
| 1685 gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(filesel), filename); |
1681 gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(filesel), filename); |
| 1686 else if (g_file_test(filename, G_FILE_TEST_EXISTS)) |
1682 else if (g_file_test(filename, G_FILE_TEST_EXISTS)) |
| 1687 gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(filesel), filename); |
1683 gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(filesel), filename); |
| 1688 } |
1684 } |
| |
1685 |
| |
1686 #ifdef _WIN32 |
| |
1687 |
| |
1688 if (savedialog) { |
| |
1689 current_folder = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/filelocations/last_save_folder"); |
| |
1690 } else { |
| |
1691 current_folder = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/filelocations/last_open_folder"); |
| |
1692 } |
| |
1693 |
| 1689 if ((filename == NULL || *filename == '\0' || !g_file_test(filename, G_FILE_TEST_EXISTS)) && |
1694 if ((filename == NULL || *filename == '\0' || !g_file_test(filename, G_FILE_TEST_EXISTS)) && |
| 1690 (current_folder != NULL) && (*current_folder != '\0')) { |
1695 (current_folder != NULL) && (*current_folder != '\0')) { |
| 1691 folder_set = gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(filesel), current_folder); |
1696 folder_set = gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(filesel), current_folder); |
| 1692 } |
1697 } |
| 1693 |
1698 |
| 1694 #ifdef _WIN32 |
|
| 1695 if (!folder_set && (filename == NULL || *filename == '\0' || !g_file_test(filename, G_FILE_TEST_EXISTS))) { |
1699 if (!folder_set && (filename == NULL || *filename == '\0' || !g_file_test(filename, G_FILE_TEST_EXISTS))) { |
| 1696 char *my_documents = wpurple_get_special_folder(CSIDL_PERSONAL); |
1700 char *my_documents = wpurple_get_special_folder(CSIDL_PERSONAL); |
| 1697 |
1701 |
| 1698 if (my_documents != NULL) { |
1702 if (my_documents != NULL) { |
| 1699 gtk_file_chooser_set_current_folder( |
1703 gtk_file_chooser_set_current_folder( |