Author: akv
Date: 2009-12-20 14:06:26 +0100 (Sun, 20 Dec 2009)
New Revision: 2805
Modified:
trunk/src/rs-store.c
trunk/src/rs-store.h
Log:
Moved load file from load_directory() to load_file() and made
rs_store_load_file() to use elsewhere.
Modified: trunk/src/rs-store.c
===================================================================
--- trunk/src/rs-store.c 2009-12-20 13:03:40 UTC (rev 2804)
+++ trunk/src/rs-store.c 2009-12-20 13:06:26 UTC (rev 2805)
@@ -49,6 +49,8 @@
static GdkPixbuf *icon_priority_D = NULL;
static GdkPixbuf *icon_exported = NULL;
+static GdkPixbuf *icon_default = NULL;
+
enum {
PIXBUF_COLUMN, /* The displayed pixbuf */
PIXBUF_CLEAN_COLUMN, /* The clean thumbnail */
@@ -1028,20 +1030,63 @@
return ret;
}
+void
+load_file(RSStore *store, gchar *fullname) {
+ GtkTreeIter iter;
+ gboolean exported;
+ gint priority;
+ WORKER_JOB *job;
+
+ gchar *name = g_path_get_basename(fullname);
+
+ /* Global default icon */
+ if (!icon_default)
+ icon_default = gdk_pixbuf_new_from_file(PACKAGE_DATA_DIR
"/icons/" PACKAGE ".png", NULL);
+
+ /* Sane defaults */
+ priority = PRIO_U;
+ exported = FALSE;
+
+ /* Load flags from XML cache */
+ rs_cache_load_quick(fullname, &priority, &exported);
+
+ /* Add thumbnail to store */
+ gtk_list_store_prepend (store->store, &iter);
+ gtk_list_store_set (store->store, &iter,
+ METADATA_COLUMN, NULL,
+ PIXBUF_COLUMN, icon_default,
+ PIXBUF_CLEAN_COLUMN, icon_default,
+ TEXT_COLUMN, g_strdup(""),
+ FULLNAME_COLUMN, fullname,
+ PRIORITY_COLUMN, priority,
+ EXPORTED_COLUMN, exported,
+ -1);
+
+ /* Push an asynchronous job for loading the thumbnail */
+ job = g_new(WORKER_JOB, 1);
+ job->store = g_object_ref(store);
+ job->filename = g_strdup(fullname);
+ job->name = g_strdup(name);
+ job->priority = priority;
+ job->exported = exported;
+ job->model = g_object_ref(GTK_TREE_MODEL(store->store));
+ job->path = gtk_tree_model_get_path(GTK_TREE_MODEL(store->store),
&iter);
+ g_async_queue_push(loader_queue, job);
+}
+
+void
+rs_store_load_file(RSStore *store, gchar *fullname) {
+ load_file(store, fullname);
+}
+
static gint
load_directory(RSStore *store, const gchar *path, RS_LIBRARY *library, const
gboolean load_8bit, const gboolean load_recursive)
{
const gchar *name;
gchar *fullname;
GDir *dir;
- GdkPixbuf *pixbuf;
gint count = 0;
- GtkTreeIter iter;
- gboolean exported;
- gint priority;
- pixbuf = gdk_pixbuf_new_from_file(PACKAGE_DATA_DIR "/icons/" PACKAGE
".png", NULL);
-
dir = g_dir_open(path, 0, NULL); /* FIXME: check errors */
while((dir != NULL) && (name = g_dir_read_name(dir)))
@@ -1054,38 +1099,8 @@
if (rs_filetype_can_load(fullname))
{
- WORKER_JOB *job;
+ load_file(store, fullname);
- /* Sane defaults */
- priority = PRIO_U;
- exported = FALSE;
-
- /* Load flags from XML cache */
- rs_cache_load_quick(fullname, &priority, &exported);
-
- /* Add thumbnail to store */
- gtk_list_store_prepend (store->store, &iter);
- gtk_list_store_set (store->store, &iter,
- METADATA_COLUMN, NULL,
- PIXBUF_COLUMN, pixbuf,
- PIXBUF_CLEAN_COLUMN, pixbuf,
- TEXT_COLUMN, g_strdup(""),
- FULLNAME_COLUMN, fullname,
- PRIORITY_COLUMN, priority,
- EXPORTED_COLUMN, exported,
- -1);
-
- /* Push an asynchronous job for loading the thumbnail */
- job = g_new(WORKER_JOB, 1);
- job->store = g_object_ref(store);
- job->filename = g_strdup(fullname);
- job->name = g_strdup(name);
- job->priority = priority;
- job->exported = exported;
- job->model = g_object_ref(GTK_TREE_MODEL(store->store));
- job->path =
gtk_tree_model_get_path(GTK_TREE_MODEL(store->store), &iter);
- g_async_queue_push(loader_queue, job);
-
/* Add photo to library */
rs_library_add_photo(library, fullname);
@@ -1097,8 +1112,6 @@
g_free(fullname);
}
- g_object_unref(pixbuf);
-
if (dir)
g_dir_close(dir);
Modified: trunk/src/rs-store.h
===================================================================
--- trunk/src/rs-store.h 2009-12-20 13:03:40 UTC (rev 2804)
+++ trunk/src/rs-store.h 2009-12-20 13:06:26 UTC (rev 2805)
@@ -220,4 +220,7 @@
extern void
rs_store_group_ungroup_name(RSStore *store, const gchar *filename);
+extern void
+rs_store_load_file(RSStore *store, gchar *fullname);
+
#endif /* RS_STORE_H */
_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit