[Goodies-commits] r2991 - ristretto/trunk/src

Stephan Arts stephan at xfce.org
Mon Aug 13 09:42:04 CEST 2007


Author: stephan
Date: 2007-08-13 07:42:04 +0000 (Mon, 13 Aug 2007)
New Revision: 2991

Modified:
   ristretto/trunk/src/navigator.c
   ristretto/trunk/src/picture_viewer.c
   ristretto/trunk/src/picture_viewer.h
   ristretto/trunk/src/thumbnail_viewer.c
Log:
fix warning

Modified: ristretto/trunk/src/navigator.c
===================================================================
--- ristretto/trunk/src/navigator.c	2007-08-13 07:37:05 UTC (rev 2990)
+++ ristretto/trunk/src/navigator.c	2007-08-13 07:42:04 UTC (rev 2991)
@@ -263,7 +263,9 @@
         if(!pixbuf)
             pixbuf = gtk_icon_theme_load_icon(navigator->icon_theme, GTK_STOCK_MISSING_IMAGE, 48, 0, NULL);
 
-        rstto_picture_viewer_set_pixbuf(navigator->viewer, pixbuf);
+        
+        //rstto_picture_viewer_set_pixbuf(navigator->viewer, pixbuf);
+        rstto_picture_viewer_set_file(navigator->viewer, filename);
         if(pixbuf)
             gdk_pixbuf_unref(pixbuf);
 

Modified: ristretto/trunk/src/picture_viewer.c
===================================================================
--- ristretto/trunk/src/picture_viewer.c	2007-08-13 07:37:05 UTC (rev 2990)
+++ ristretto/trunk/src/picture_viewer.c	2007-08-13 07:42:04 UTC (rev 2991)
@@ -27,6 +27,7 @@
 	GdkPixbuf        *dst_pixbuf; /* The pixbuf which ends up on screen */
 	gdouble           scale;
 	gboolean          scale_fts; /* Scale image to fit to screen */
+    GdkPixbufLoader  *loader;
 	void             (*cb_value_changed)(GtkAdjustment *, RsttoPictureViewer *);
     gboolean          show_border;
 };
@@ -53,6 +54,10 @@
 rstto_picture_viewer_paint(GtkWidget *widget);
 static void
 rstto_picture_viewer_refresh(RsttoPictureViewer *viewer);
+static void
+rstto_picture_viewer_area_prepared(GdkPixbufLoader *loader, RsttoPictureViewer *viewer);
+static void
+rstto_picture_viewer_area_updated(GdkPixbufLoader *loader, gint x, gint y, gint width, gint height, RsttoPictureViewer *viewer);
 
 static void
 rstto_picture_viewer_set_scroll_adjustments(RsttoPictureViewer *, GtkAdjustment *, GtkAdjustment *);
@@ -99,6 +104,10 @@
     viewer->priv->dst_pixbuf = NULL;
     gtk_widget_set_redraw_on_allocate(GTK_WIDGET(viewer), TRUE);
 
+    viewer->priv->loader = gdk_pixbuf_loader_new();
+    g_signal_connect(G_OBJECT(viewer->priv->loader), "area-prepared", (GCallback)rstto_picture_viewer_area_prepared, viewer);
+    g_signal_connect(G_OBJECT(viewer->priv->loader), "area-updated", (GCallback)rstto_picture_viewer_area_updated, viewer);
+
     viewer->priv->scale = 1;
     viewer->priv->scale_fts = FALSE;
     viewer->priv->show_border = TRUE;
@@ -417,7 +426,37 @@
 	return viewer->priv->scale;
 }
 
+gboolean
+parse_file_data(GIOChannel *channel, GIOCondition cond, RsttoPictureViewer *viewer)
+{
+    if (cond & G_IO_NVAL)
+    {
+        return TRUE;
+    }
+    gchar buffer[1024];
+    guint bytes_read;
+    GError *error = NULL;
+    GIOStatus status;
+    status = g_io_channel_read_chars(channel, buffer, 1024, &bytes_read, &error);
+    if(status == G_IO_STATUS_NORMAL)
+    {
+        gdk_pixbuf_loader_write(viewer->priv->loader, (guchar *)buffer, bytes_read, NULL);
+        return bytes_read==0?FALSE:TRUE;
+    }
+    if(error)
+        g_print(error->message);
+    return FALSE;
+}
+
 void
+rstto_picture_viewer_set_file(RsttoPictureViewer *viewer, const gchar *filename)
+{
+    GIOChannel *channel = g_io_channel_new_file(filename, "r", NULL);
+    g_io_channel_set_encoding(channel, NULL, NULL);
+    g_io_add_watch(channel, G_IO_IN | G_IO_PRI, (GIOFunc)parse_file_data, viewer);
+}
+
+void
 rstto_picture_viewer_set_pixbuf(RsttoPictureViewer *viewer, GdkPixbuf *pixbuf)
 {
 	if(viewer->priv->src_pixbuf)
@@ -515,3 +554,17 @@
 	}
 
 }
+
+static void
+rstto_picture_viewer_area_prepared(GdkPixbufLoader *loader, RsttoPictureViewer *viewer)
+{
+    GdkPixbuf *pixbuf = gdk_pixbuf_loader_get_pixbuf(loader);
+    
+    rstto_picture_viewer_set_pixbuf(viewer, pixbuf);
+}
+
+static void
+rstto_picture_viewer_area_updated(GdkPixbufLoader *loader, gint x, gint y, gint width, gint height, RsttoPictureViewer *viewer)
+{
+//    rstto_picture_viewer_paint(GTK_WIDGET(viewer));
+}

Modified: ristretto/trunk/src/picture_viewer.h
===================================================================
--- ristretto/trunk/src/picture_viewer.h	2007-08-13 07:37:05 UTC (rev 2990)
+++ ristretto/trunk/src/picture_viewer.h	2007-08-13 07:42:04 UTC (rev 2991)
@@ -71,6 +71,7 @@
 gdouble    rstto_picture_viewer_fit_scale(RsttoPictureViewer *viewer);
 
 void       rstto_picture_viewer_set_pixbuf(RsttoPictureViewer *viewer, GdkPixbuf *pixbuf);
+void       rstto_picture_viewer_set_file(RsttoPictureViewer *viewer, const gchar *filename);
 
 G_END_DECLS
 

Modified: ristretto/trunk/src/thumbnail_viewer.c
===================================================================
--- ristretto/trunk/src/thumbnail_viewer.c	2007-08-13 07:37:05 UTC (rev 2990)
+++ ristretto/trunk/src/thumbnail_viewer.c	2007-08-13 07:42:04 UTC (rev 2991)
@@ -254,7 +254,7 @@
     gint i;
     gdk_window_clear(widget->window);
     gint begin = viewer->priv->offset / viewer->priv->dimension;
-    gint end;
+    gint end = 0;
     switch (viewer->priv->orientation)
     {
         case GTK_ORIENTATION_HORIZONTAL:




More information about the Goodies-commits mailing list