eog/collection/cimage.c
Jens Finke ec67c75892 s/path/uri/
2001-04-23  Jens Finke <jens@gnome.org>

	* cimage.[ch]: s/path/uri/

	* eog_image_loader.c: Added queue and idle loop based loading. Due
	to this, the EogImageLoader doesn't depend on EogCollectionModel
	anymore.
	(eog_image_loader_set_model): Removed.
	(loading_canceled),
	(loading_finished),
	(setup_next_uri): New functions.
	(real_image_loading): Renamed to load_uri and revised.
	(eog_image_loader_start): Append image to load to queue, changed signature.

	* eog_collection_model.c
	(eog_collection_model_get_next_loading_context): Removed.
	(eog_collection_model_real_image_loading): Assemble correct URI
	for cimage objects, call eog_image_loader_start and emit
	INTERVAL_ADDED signale for every single cimage object.
	(eog_collection_model_get_uri): Use cimage_get_uri function.

	* eog_item_factory_simple.c (ii_factory_update_item): Use
	cimage_get_uri.
2001-04-23 09:57:40 +00:00

265 lines
4.4 KiB
C

#include "cimage.h"
#include <gnome.h>
struct _CImagePrivate {
guint unique_id;
gchar *uri;
GdkPixbuf *thumbnail;
gchar *caption;
gboolean loading_failed;
gboolean is_selected;
};
static GtkObjectClass *parent_class;
static void cimage_class_init (CImageClass *klass);
static void cimage_init (CImage *image);
static void cimage_finalize (GtkObject *obj);
static void cimage_destroy (GtkObject *obj);
static guint
get_unique_id (void)
{
static guint last_id = 0;
return last_id++;
}
GtkType
cimage_get_type (void)
{
static GtkType type = 0;
if (!type) {
GtkTypeInfo info = {
"CollectionImage",
sizeof (CImage),
sizeof (CImageClass),
(GtkClassInitFunc) cimage_class_init,
(GtkObjectInitFunc) cimage_init,
NULL, /* reserved 1 */
NULL, /* reserved 2 */
(GtkClassInitFunc) NULL
};
type = gtk_type_unique (
gtk_object_get_type (), &info);
}
return type;
}
void
cimage_destroy (GtkObject *obj)
{
CImagePrivate *priv;
g_return_if_fail (obj != NULL);
g_return_if_fail (IS_CIMAGE (obj));
priv = CIMAGE (obj)->priv;
if (priv->uri) {
g_free (priv->uri);
priv->uri = NULL;
}
if (priv->thumbnail) {
gdk_pixbuf_unref (priv->thumbnail);
priv->thumbnail = NULL;
}
if (GTK_OBJECT_CLASS (parent_class)->destroy)
GTK_OBJECT_CLASS (parent_class)->destroy (obj);
}
void
cimage_finalize (GtkObject *obj)
{
CImage *img;
img = CIMAGE (obj);
if (img->priv)
g_free (img->priv);
if (GTK_OBJECT_CLASS (parent_class)->finalize)
GTK_OBJECT_CLASS (parent_class)->finalize (obj);
}
void
cimage_class_init (CImageClass *klass)
{
GtkObjectClass *obj_class = (GtkObjectClass*) klass;
parent_class = gtk_type_class (gtk_object_get_type ());
obj_class->destroy = cimage_destroy;
obj_class->finalize = cimage_finalize;
}
void
cimage_init (CImage *img)
{
CImagePrivate *priv;
priv = g_new0(CImagePrivate, 1);
priv->unique_id = get_unique_id ();
priv->uri = NULL;
priv->thumbnail = NULL;
priv->caption = NULL;
priv->loading_failed = FALSE;
priv->is_selected = FALSE;
img->priv = priv;
}
CImage*
cimage_new (gchar *uri)
{
CImage *img;
g_return_val_if_fail (uri != NULL, NULL);
img = gtk_type_new (cimage_get_type ());
img->priv->uri = g_strdup (uri);
return img;
}
guint
cimage_get_unique_id (CImage *img)
{
g_return_val_if_fail (img != NULL, 0);
return (img->priv->unique_id);
}
gchar*
cimage_get_uri (CImage *img)
{
g_return_val_if_fail (img != NULL, NULL);
if (img->priv->uri)
return g_strdup (img->priv->uri);
else
return NULL;
}
GdkPixbuf*
cimage_get_thumbnail (CImage *img)
{
GdkPixbuf *thumb;
g_return_val_if_fail (img != NULL, FALSE);
thumb = img->priv->thumbnail;
if (thumb)
gdk_pixbuf_ref (thumb);
return thumb;
}
void
cimage_set_loading_failed (CImage *img)
{
g_return_if_fail (img != NULL);
img->priv->loading_failed = TRUE;
}
void
cimage_toggle_select_status (CImage *img)
{
g_return_if_fail (img != NULL);
img->priv->is_selected = img->priv->is_selected ? FALSE : TRUE;
}
void
cimage_set_select_status (CImage *img, gboolean status)
{
g_return_if_fail (img != NULL);
img->priv->is_selected = status;
}
void
cimage_set_thumbnail (CImage *img, GdkPixbuf *thumbnail)
{
g_return_if_fail (img != NULL);
g_return_if_fail (thumbnail != NULL);
if(img->priv->thumbnail)
gdk_pixbuf_unref (img->priv->thumbnail);
gdk_pixbuf_ref (thumbnail);
img->priv->thumbnail = thumbnail;
}
void
cimage_set_caption (CImage *img, gchar *caption)
{
g_return_if_fail (img != NULL);
g_return_if_fail (caption != NULL);
if (img->priv->caption)
g_free (img->priv->caption);
img->priv->caption = g_strdup (caption);
}
gchar*
cimage_get_caption (CImage *img)
{
g_return_val_if_fail (img != NULL, FALSE);
if (img->priv->caption)
return g_strdup (img->priv->caption);
else
return NULL;
}
gboolean
cimage_is_directory (CImage *img)
{
g_return_val_if_fail (img != NULL, FALSE);
return g_file_test (img->priv->uri, G_FILE_TEST_ISDIR);
}
gboolean
cimage_is_selected (CImage *img)
{
g_return_val_if_fail (img != NULL, FALSE);
return img->priv->is_selected;
}
gboolean
cimage_has_thumbnail (CImage *img)
{
g_return_val_if_fail (img != NULL, FALSE);
return (img->priv->thumbnail != NULL);
}
gboolean
cimage_has_caption (CImage *img)
{
g_return_val_if_fail (img != NULL, FALSE);
return (img->priv->caption != NULL);
}
gboolean
cimage_has_loading_failed (CImage *img)
{
g_return_val_if_fail (img != NULL, FALSE);
return img->priv->loading_failed;
}