[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