mirror of
https://gitlab.gnome.org/GNOME/eog
synced 2024-10-19 14:34:42 +00:00
ec67c75892
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.
265 lines
4.4 KiB
C
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;
|
|
}
|
|
|