static gint collection_save_confirmed(FileDialog *fd, gint overwrite, CollectionData *cd) { gchar *buf; if (isdir(fd->dest_path)) { buf = g_strdup_printf(_("Specified path:\n%s\nis a folder, collections are files"), fd->dest_path); file_util_warning_dialog(_("Invalid filename"), buf, GTK_STOCK_DIALOG_INFO, GENERIC_DIALOG(fd)->dialog); g_free(buf); return FALSE; } if (!overwrite && isfile(fd->dest_path)) { GenericDialog *gd; gd = file_util_gen_dlg(_("Overwrite File"), "GQview", "dlg_confirm", GENERIC_DIALOG(fd)->dialog, TRUE, collection_confirm_cancel_cb, fd); generic_dialog_add_message(gd, GTK_STOCK_DIALOG_QUESTION, _("Overwrite existing file?"), fd->dest_path); generic_dialog_add_button(gd, GTK_STOCK_OK, _("_Overwrite"), collection_confirm_ok_cb, TRUE); gtk_widget_show(gd->dialog); return TRUE; } if (!collection_save(cd, fd->dest_path)) { buf = g_strdup_printf(_("Failed to save the collection:\n%s"), fd->dest_path); file_util_warning_dialog(_("Save Failed"), buf, GTK_STOCK_DIALOG_ERROR, GENERIC_DIALOG(fd)->dialog); g_free(buf); } collection_unref(cd); file_dialog_sync_history(fd, TRUE); if (fd->type == DIALOG_SAVE_CLOSE) collection_window_close_by_collection(cd); file_dialog_close(fd); return TRUE; }
static void collection_close_save_cb(GenericDialog *gd, gpointer data) { CollectWindow *cw = data; cw->close_dialog = NULL; generic_dialog_close(gd); if (!cw->cd->path) { collection_dialog_save_close(NULL, cw->cd); return; } else if (!collection_save(cw->cd, cw->cd->path)) { gchar *buf; buf = g_strdup_printf(_("Failed to save the collection:\n%s"), cw->cd->path); warning_dialog(_("Save Failed"), buf, GTK_STOCK_DIALOG_ERROR, cw->window); g_free(buf); return; } collection_window_close_final(cw); }
static gboolean collection_window_keypress(GtkWidget *widget, GdkEventKey *event, gpointer data) { CollectWindow *cw = data; gboolean stop_signal = FALSE; GList *list; if (event->state & GDK_CONTROL_MASK) { stop_signal = TRUE; switch (event->keyval) { case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '0': break; case 'A': case 'a': if (event->state & GDK_SHIFT_MASK) { collection_table_unselect_all(cw->table); } else { collection_table_select_all(cw->table); } break; case 'L': case 'l': list = layout_list(NULL); if (list) { collection_table_add_filelist(cw->table, list); filelist_free(list); } break; case 'C': case 'c': file_util_copy(NULL, collection_table_selection_get_list(cw->table), NULL, cw->window); break; case 'M': case 'm': file_util_move(NULL, collection_table_selection_get_list(cw->table), NULL, cw->window); break; case 'R': case 'r': file_util_rename(NULL, collection_table_selection_get_list(cw->table), cw->window); break; case 'D': case 'd': file_util_delete(NULL, collection_table_selection_get_list(cw->table), cw->window); break; case 'S': case 's': collection_dialog_save_as(NULL, cw->cd); break; case 'W': case 'w': collection_window_close(cw); break; default: stop_signal = FALSE; break; } } else { stop_signal = TRUE; switch (event->keyval) { case GDK_KEY_Return: case GDK_KEY_KP_Enter: layout_image_set_collection(NULL, cw->cd, collection_table_get_focus_info(cw->table)); break; case 'V': case 'v': view_window_new_from_collection(cw->cd, collection_table_get_focus_info(cw->table)); break; case 'S': case 's': if (!cw->cd->path) { collection_dialog_save_as(NULL, cw->cd); } else if (!collection_save(cw->cd, cw->cd->path)) { log_printf("failed saving to collection path: %s\n", cw->cd->path); } break; case 'A': case 'a': collection_dialog_append(NULL, cw->cd); break; case 'N': case 'n': collection_set_sort_method(cw->cd, SORT_NAME); break; #ifdef HAVE_STRVERSCMP case 'I': case 'i': collection_set_sort_method(cw->cd, SORT_NUMBER); break; #endif case 'D': case 'd': collection_set_sort_method(cw->cd, SORT_TIME); break; case 'B': case 'b': collection_set_sort_method(cw->cd, SORT_SIZE); break; case 'P': case 'p': if (event->state & GDK_SHIFT_MASK) { CollectInfo *info; info = collection_table_get_focus_info(cw->table); print_window_new(info->fd, collection_table_selection_get_list(cw->table), collection_list_to_filelist(cw->cd->list), cw->window); } else { collection_set_sort_method(cw->cd, SORT_PATH); } break; case GDK_KEY_Delete: case GDK_KEY_KP_Delete: list = g_list_copy(cw->table->selection); if (list) { collection_remove_by_info_list(cw->cd, list); g_list_free(list); } else { collection_remove_by_info(cw->cd, collection_table_get_focus_info(cw->table)); } break; default: stop_signal = FALSE; break; } } return stop_signal; }