/*
- * Geeqie
- * (C) 2004 John Ellis
- * Copyright (C) 2008 - 2009 The Geeqie Team
+ * Copyright (C) 2004 John Ellis
+ * Copyright (C) 2008 - 2016 The Geeqie Team
*
* Author: John Ellis
*
- * This software is released under the GNU General Public License (GNU GPL).
- * Please read the included file COPYING for more information.
- * This software comes with no warranty of any kind, use at your own risk!
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-
#ifndef COLLECT_H
#define COLLECT_H
+#include <gdk-pixbuf/gdk-pixbuf.h>
+#include <gdk/gdk.h>
+#include <glib.h>
+#include <gtk/gtk.h>
+
+#include "typedefs.h"
+
+struct CollectTable;
+struct FileData;
+struct ThumbLoader;
+
+struct CollectInfo
+{
+ FileData *fd;
+ GdkPixbuf *pixbuf;
+ guint flag_mask;
+};
CollectInfo *collection_info_new(FileData *fd, struct stat *st, GdkPixbuf *pixbuf);
void collection_info_free(CollectInfo *ci);
void collection_info_set_thumb(CollectInfo *ci, GdkPixbuf *pixbuf);
-gint collection_info_load_thumb(CollectInfo *ci);
-
-void collection_list_free(GList *list);
GList *collection_list_sort(GList *list, SortType method);
GList *collection_list_add(GList *list, CollectInfo *ci, SortType method);
CollectInfo *collection_list_find_fd(GList *list, FileData *fd);
GList *collection_list_to_filelist(GList *list);
+struct CollectionData
+{
+ gchar *path;
+ gchar *name;
+ GList *list;
+ SortType sort_method;
+
+ ThumbLoader *thumb_loader;
+ CollectInfo *thumb_info;
+
+ void (*info_updated_func)(CollectionData *, CollectInfo *, gpointer);
+ gpointer info_updated_data;
+
+ gint ref;
+
+ /* geometry */
+ gboolean window_read;
+ GdkRectangle window;
+
+ gboolean changed; /**< contents changed since save flag */
+
+ GHashTable *existence;
+
+ GtkWidget *dialog_name_entry;
+ gchar *collection_path; /**< Full path to collection including extension */
+ gint collection_append_index;
+};
+
CollectionData *collection_new(const gchar *path);
void collection_free(CollectionData *cd);
gint collection_to_number(CollectionData *cd);
CollectionData *collection_from_number(gint n);
-/* pass a NULL pointer to whatever you don't need
+/**
+ * @headerfile collection_from_dnd_data
+ * pass a NULL pointer to whatever you don't need
* use free_selected_list to free list, and
* g_list_free to free info_list, which is a list of
* CollectInfo pointers into CollectionData
CollectInfo *collection_get_last(CollectionData *cd);
void collection_set_sort_method(CollectionData *cd, SortType method);
+void collection_randomize(CollectionData *cd);
void collection_set_update_info_func(CollectionData *cd,
void (*func)(CollectionData *, CollectInfo *, gpointer), gpointer data);
-gint collection_add(CollectionData *cd, FileData *fd, gint sorted);
-gint collection_add_check(CollectionData *cd, FileData *fd, gint sorted, gint must_exist);
-gint collection_insert(CollectionData *cd, FileData *fd, CollectInfo *insert_ci, gint sorted);
-gint collection_remove(CollectionData *cd, FileData *fd);
+gboolean collection_add(CollectionData *cd, FileData *fd, gboolean sorted);
+gboolean collection_add_check(CollectionData *cd, FileData *fd, gboolean sorted, gboolean must_exist);
+gboolean collection_insert(CollectionData *cd, FileData *fd, CollectInfo *insert_ci, gboolean sorted);
+gboolean collection_remove(CollectionData *cd, FileData *fd);
void collection_remove_by_info_list(CollectionData *cd, GList *list);
-gint collection_rename(CollectionData *cd, FileData *fd);
+gboolean collection_rename(CollectionData *cd, FileData *fd);
void collection_update_geometry(CollectionData *cd);
+struct CollectWindow
+{
+ GtkWidget *window;
+ CollectTable *table;
+ GtkWidget *status_box;
+
+ GtkWidget *close_dialog;
+
+ CollectionData *cd;
+};
+
CollectWindow *collection_window_new(const gchar *path);
void collection_window_close_by_collection(CollectionData *cd);
CollectWindow *collection_window_find(CollectionData *cd);
CollectWindow *collection_window_find_by_path(const gchar *path);
-gint collection_window_modified_exists(void);
+gboolean collection_window_modified_exists();
+gboolean is_collection(const gchar *param);
+gchar *collection_path(const gchar *param);
+void collection_contents(const gchar *name, GString **contents);
+GList *collection_contents_fd(const gchar *name);
#endif
/* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */