| 2345 |
2345 |
| 2346 return data; |
2346 return data; |
| 2347 } |
2347 } |
| 2348 |
2348 |
| 2349 static void |
2349 static void |
| 2350 file_yes_no_cb(PidginRequestData *data, gint id) |
|
| 2351 { |
|
| 2352 /* Only call the callback if yes was selected, otherwise the request |
|
| 2353 * (eg. file transfer) will be cancelled, then when a new filename is chosen |
|
| 2354 * things go BOOM */ |
|
| 2355 if (id == 1) { |
|
| 2356 if (data->cbs[1] != NULL) |
|
| 2357 ((PurpleRequestFileCb)data->cbs[1])(data->user_data, data->u.file.name); |
|
| 2358 purple_request_close(data->type, data); |
|
| 2359 } else { |
|
| 2360 pidgin_clear_cursor(GTK_WIDGET(data->dialog)); |
|
| 2361 } |
|
| 2362 } |
|
| 2363 |
|
| 2364 static void |
|
| 2365 file_ok_check_if_exists_cb(GtkWidget *widget, gint response, PidginRequestData *data) |
2350 file_ok_check_if_exists_cb(GtkWidget *widget, gint response, PidginRequestData *data) |
| 2366 { |
2351 { |
| 2367 gchar *current_folder; |
2352 gchar *current_folder; |
| 2368 |
2353 |
| 2369 generic_response_start(data); |
2354 generic_response_start(data); |
| 2383 } else { |
2368 } else { |
| 2384 purple_prefs_set_path(PIDGIN_PREFS_ROOT "/filelocations/last_open_folder", current_folder); |
2369 purple_prefs_set_path(PIDGIN_PREFS_ROOT "/filelocations/last_open_folder", current_folder); |
| 2385 } |
2370 } |
| 2386 g_free(current_folder); |
2371 g_free(current_folder); |
| 2387 } |
2372 } |
| 2388 if ((data->u.file.savedialog == TRUE) && |
2373 if (data->cbs[1] != NULL) { |
| 2389 (g_file_test(data->u.file.name, G_FILE_TEST_EXISTS))) { |
2374 ((PurpleRequestFileCb)data->cbs[1])(data->user_data, data->u.file.name); |
| 2390 purple_request_action(data, NULL, _("That file already exists"), |
2375 } |
| 2391 _("Would you like to overwrite it?"), 0, |
2376 purple_request_close(data->type, data); |
| 2392 NULL, |
|
| 2393 data, 2, |
|
| 2394 _("Overwrite"), G_CALLBACK(file_yes_no_cb), |
|
| 2395 _("Choose New Name"), G_CALLBACK(file_yes_no_cb)); |
|
| 2396 } else |
|
| 2397 file_yes_no_cb(data, 1); |
|
| 2398 } |
2377 } |
| 2399 |
2378 |
| 2400 static void * |
2379 static void * |
| 2401 pidgin_request_file(const char *title, const char *filename, |
2380 pidgin_request_file(const char *title, const char *filename, |
| 2402 gboolean savedialog, GCallback ok_cb, GCallback cancel_cb, |
2381 gboolean savedialog, GCallback ok_cb, GCallback cancel_cb, |
| 2428 savedialog ? _("_Save") |
2407 savedialog ? _("_Save") |
| 2429 : _("_Open"), |
2408 : _("_Open"), |
| 2430 GTK_RESPONSE_ACCEPT, |
2409 GTK_RESPONSE_ACCEPT, |
| 2431 NULL); |
2410 NULL); |
| 2432 gtk_dialog_set_default_response(GTK_DIALOG(filesel), GTK_RESPONSE_ACCEPT); |
2411 gtk_dialog_set_default_response(GTK_DIALOG(filesel), GTK_RESPONSE_ACCEPT); |
| |
2412 gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(filesel), |
| |
2413 TRUE); |
| 2433 |
2414 |
| 2434 pidgin_request_add_help(GTK_DIALOG(filesel), cpar); |
2415 pidgin_request_add_help(GTK_DIALOG(filesel), cpar); |
| 2435 |
2416 |
| 2436 if ((filename != NULL) && (*filename != '\0')) { |
2417 if ((filename != NULL) && (*filename != '\0')) { |
| 2437 if (savedialog) |
2418 if (savedialog) |