[Goodies-commits] r2947 - in ristretto/trunk: po src

Stephan Arts stephan at xfce.org
Sun Aug 5 01:13:27 CEST 2007


Author: stephan
Date: 2007-08-04 23:13:27 +0000 (Sat, 04 Aug 2007)
New Revision: 2947

Modified:
   ristretto/trunk/po/fr.po
   ristretto/trunk/po/nl.po
   ristretto/trunk/po/ristretto.pot
   ristretto/trunk/src/main.c
   ristretto/trunk/src/navigator.c
   ristretto/trunk/src/navigator.h
   ristretto/trunk/src/picture_viewer.c
   ristretto/trunk/src/picture_viewer.h
   ristretto/trunk/src/thumbnail_viewer.c
   ristretto/trunk/src/thumbnail_viewer.h
Log:
show thumbnails and cleanup some code

Modified: ristretto/trunk/po/fr.po
===================================================================
--- ristretto/trunk/po/fr.po	2007-08-03 08:32:29 UTC (rev 2946)
+++ ristretto/trunk/po/fr.po	2007-08-04 23:13:27 UTC (rev 2947)
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: ristretto\n"
 "Report-Msgid-Bugs-To: stephan at xfce.org\n"
-"POT-Creation-Date: 2007-07-31 01:46+0200\n"
+"POT-Creation-Date: 2007-08-05 00:55+0200\n"
 "PO-Revision-Date: 2007-07-03 00:59:21+0200\n"
 "Last-Translator: Mike Massonnet <mmassonnet at xfce.org>\n"
 "Language-Team: French\n"
@@ -15,43 +15,39 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ../src/main.c:94
+#: ../src/main.c:117
 msgid "_File"
 msgstr "_Fichier"
 
-#: ../src/main.c:96
+#: ../src/main.c:119
 msgid "O_pen Folder"
 msgstr "O_uvrir un répertoire"
 
-#: ../src/main.c:107
+#: ../src/main.c:130
 msgid "_Edit"
 msgstr "_Editer"
 
-#: ../src/main.c:112
+#: ../src/main.c:135
 msgid "_View"
 msgstr "A_fficher"
 
-#: ../src/main.c:113
-msgid "View Zoom toolbar"
-msgstr "Barre de zoom"
-
-#: ../src/main.c:119
+#: ../src/main.c:142
 msgid "_Help"
 msgstr "_Aide"
 
-#: ../src/main.c:229
+#: ../src/main.c:257
 msgid "Open image"
 msgstr "Ouvrir une image"
 
-#: ../src/main.c:257
+#: ../src/main.c:285
 msgid "Open folder"
 msgstr "Ouvrir un répertoire"
 
-#: ../src/main.c:284
+#: ../src/main.c:312
 msgid "Developer:"
 msgstr "Développeur :"
 
-#: ../src/main.c:293
+#: ../src/main.c:321
 msgid ""
 "Ristretto is a fast and lightweight picture-viewer for the Xfce desktop "
 "environment."
@@ -59,6 +55,9 @@
 "Ristretto est un visualiseur d'images léger et rapide pour l'environnement "
 "de bureau Xfce."
 
-#: ../src/main.c:300
+#: ../src/main.c:328
 msgid "translator-credits"
 msgstr ""
+
+#~ msgid "View Zoom toolbar"
+#~ msgstr "Barre de zoom"

Modified: ristretto/trunk/po/nl.po
===================================================================
--- ristretto/trunk/po/nl.po	2007-08-03 08:32:29 UTC (rev 2946)
+++ ristretto/trunk/po/nl.po	2007-08-04 23:13:27 UTC (rev 2947)
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: ristretto 0.0.1-svn-r02537\n"
 "Report-Msgid-Bugs-To: stephan at xfce.org\n"
-"POT-Creation-Date: 2007-08-02 19:14+0200\n"
+"POT-Creation-Date: 2007-08-05 00:55+0200\n"
 "PO-Revision-Date: 2007-07-13 00:48+0200\n"
 "Last-Translator: Stephan Arts <stephan at xfce.org>\n"
 "Language-Team: Dutch\n"
@@ -16,45 +16,45 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: ../src/main.c:114
+#: ../src/main.c:117
 msgid "_File"
 msgstr "_Bestand"
 
-#: ../src/main.c:116
+#: ../src/main.c:119
 msgid "O_pen Folder"
 msgstr "Map o_penen"
 
-#: ../src/main.c:127
+#: ../src/main.c:130
 msgid "_Edit"
 msgstr "B_ewerken"
 
-#: ../src/main.c:132
+#: ../src/main.c:135
 msgid "_View"
 msgstr "_Beeld"
 
-#: ../src/main.c:139
+#: ../src/main.c:142
 msgid "_Help"
 msgstr "_Help"
 
-#: ../src/main.c:251
+#: ../src/main.c:257
 msgid "Open image"
 msgstr "Afbeelding openen"
 
-#: ../src/main.c:279
+#: ../src/main.c:285
 msgid "Open folder"
 msgstr "Map openen"
 
-#: ../src/main.c:306
+#: ../src/main.c:312
 msgid "Developer:"
 msgstr "Ontwikkelaar:"
 
-#: ../src/main.c:315
+#: ../src/main.c:321
 msgid ""
 "Ristretto is a fast and lightweight picture-viewer for the Xfce desktop "
 "environment."
 msgstr ""
 
-#: ../src/main.c:322
+#: ../src/main.c:328
 msgid "translator-credits"
 msgstr "Stephan Arts <stephan at xfce.org>"
 

Modified: ristretto/trunk/po/ristretto.pot
===================================================================
--- ristretto/trunk/po/ristretto.pot	2007-08-03 08:32:29 UTC (rev 2946)
+++ ristretto/trunk/po/ristretto.pot	2007-08-04 23:13:27 UTC (rev 2947)
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: stephan at xfce.org\n"
-"POT-Creation-Date: 2007-08-02 19:14+0200\n"
+"POT-Creation-Date: 2007-08-05 00:55+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"
@@ -16,44 +16,44 @@
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ../src/main.c:114
+#: ../src/main.c:117
 msgid "_File"
 msgstr ""
 
-#: ../src/main.c:116
+#: ../src/main.c:119
 msgid "O_pen Folder"
 msgstr ""
 
-#: ../src/main.c:127
+#: ../src/main.c:130
 msgid "_Edit"
 msgstr ""
 
-#: ../src/main.c:132
+#: ../src/main.c:135
 msgid "_View"
 msgstr ""
 
-#: ../src/main.c:139
+#: ../src/main.c:142
 msgid "_Help"
 msgstr ""
 
-#: ../src/main.c:251
+#: ../src/main.c:257
 msgid "Open image"
 msgstr ""
 
-#: ../src/main.c:279
+#: ../src/main.c:285
 msgid "Open folder"
 msgstr ""
 
-#: ../src/main.c:306
+#: ../src/main.c:312
 msgid "Developer:"
 msgstr ""
 
-#: ../src/main.c:315
+#: ../src/main.c:321
 msgid ""
 "Ristretto is a fast and lightweight picture-viewer for the Xfce desktop "
 "environment."
 msgstr ""
 
-#: ../src/main.c:322
+#: ../src/main.c:328
 msgid "translator-credits"
 msgstr ""

Modified: ristretto/trunk/src/main.c
===================================================================
--- ristretto/trunk/src/main.c	2007-08-03 08:32:29 UTC (rev 2946)
+++ ristretto/trunk/src/main.c	2007-08-04 23:13:27 UTC (rev 2947)
@@ -104,13 +104,11 @@
 	g_signal_connect(G_OBJECT(navigator), "file-changed", G_CALLBACK(cb_rstto_nav_file_changed), window);
 
 	GtkWidget *s_window = gtk_scrolled_window_new(NULL,NULL);
-	GtkWidget *s_window1 = gtk_scrolled_window_new(NULL,NULL);
 	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(s_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
-	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(s_window1), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
 	GtkWidget *main_vbox = gtk_vbox_new(0, FALSE);
 	GtkWidget *main_hbox = gtk_hbox_new(0, FALSE);
     GtkWidget *main_paned = gtk_vpaned_new();
-    GtkWidget *thumbnail_viewer = rstto_thumbnail_viewer_new();
+    GtkWidget *thumbnail_viewer = rstto_thumbnail_viewer_new(navigator);
     menu_bar = gtk_menu_bar_new();
 	image_tool_bar = gtk_toolbar_new();
 	app_tool_bar = gtk_toolbar_new();
@@ -174,13 +172,12 @@
 
 
 	gtk_container_add(GTK_CONTAINER(s_window), viewer);
-	gtk_container_add(GTK_CONTAINER(s_window1), thumbnail_viewer);
     gtk_toolbar_set_orientation(GTK_TOOLBAR(image_tool_bar), GTK_ORIENTATION_VERTICAL);
 	gtk_box_pack_start(GTK_BOX(main_hbox), image_tool_bar, FALSE, TRUE, 0);
 	gtk_box_pack_start(GTK_BOX(main_hbox), main_paned, TRUE, TRUE, 0);
 
     gtk_paned_pack1(GTK_PANED(main_paned), s_window, TRUE, TRUE);
-    gtk_paned_pack2(GTK_PANED(main_paned), s_window1, FALSE, TRUE);
+    gtk_paned_pack2(GTK_PANED(main_paned), thumbnail_viewer, FALSE, TRUE);
 
 	gtk_box_pack_start(GTK_BOX(main_vbox), menu_bar, FALSE, TRUE, 0);
 	gtk_box_pack_start(GTK_BOX(main_vbox), app_tool_bar, FALSE, TRUE, 0);
@@ -354,7 +351,9 @@
 static void
 cb_rstto_nav_file_changed(RsttoNavigator *navigator, GtkWindow *window)
 {
-    const gchar *filename = rstto_navigator_get_filename(navigator);
+    RsttoNavigatorEntry *entry = rstto_navigator_get_file(navigator);
+    ThunarVfsInfo *info = rstto_navigator_entry_get_info(entry);
+    const gchar *filename = info->display_name;
     gchar *title;
     if(filename)
     {

Modified: ristretto/trunk/src/navigator.c
===================================================================
--- ristretto/trunk/src/navigator.c	2007-08-03 08:32:29 UTC (rev 2946)
+++ ristretto/trunk/src/navigator.c	2007-08-04 23:13:27 UTC (rev 2947)
@@ -39,6 +39,17 @@
     RSTTO_NAVIGATOR_SIGNAL_COUNT	
 };
 
+struct _RsttoNavigatorEntry
+{
+    ThunarVfsInfo *info;
+    GdkPixbuf     *pixbuf;
+};
+
+static RsttoNavigatorEntry *
+_rstto_navigator_entry_new (ThunarVfsInfo *info);
+static void
+_rstto_navigator_entry_free(RsttoNavigatorEntry *nav_entry);
+
 static gint rstto_navigator_signals[RSTTO_NAVIGATOR_SIGNAL_COUNT];
 
 GType
@@ -168,15 +179,18 @@
             gchar *file_media = thunar_vfs_mime_info_get_media(file_info->mime_info);
             if(!strcmp(file_media, "image"))
             {
+                RsttoNavigatorEntry *nav_entry = _rstto_navigator_entry_new(file_info);
 
                 if(thunar_vfs_path_equal(path, file_path))
                 {
-                    navigator->file_list = g_list_prepend(navigator->file_list, file_info);
+                    navigator->file_list = g_list_prepend(navigator->file_list, nav_entry);
                     navigator->file_iter = navigator->file_list;
                 }
                 else
                     if(index_path)
-                        navigator->file_list = g_list_prepend(navigator->file_list, file_info);
+                        navigator->file_list = g_list_prepend(navigator->file_list, nav_entry);
+                    else
+                        _rstto_navigator_entry_free(nav_entry);
             }
             else
             {
@@ -196,7 +210,7 @@
 
     if(navigator->file_iter)
     {
-        gchar *filename = thunar_vfs_path_dup_string(((ThunarVfsInfo *)navigator->file_iter->data)->path);
+        gchar *filename = thunar_vfs_path_dup_string(((ThunarVfsInfo *)((RsttoNavigatorEntry *)navigator->file_iter->data)->info)->path);
         GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file(filename , NULL);
         if(!pixbuf)
             pixbuf = gtk_icon_theme_load_icon(navigator->icon_theme, GTK_STOCK_MISSING_IMAGE, 48, 0, NULL);
@@ -265,16 +279,54 @@
     }
 }
 
-const gchar *
-rstto_navigator_get_filename (RsttoNavigator *navigator)
+RsttoNavigatorEntry *
+rstto_navigator_get_file (RsttoNavigator *navigator)
 {
-    const gchar *filename = NULL;
-    if (navigator->file_iter)
-    {
-        ThunarVfsInfo *file_info = (ThunarVfsInfo *)(navigator->file_iter->data);
-        filename = thunar_vfs_path_get_name(file_info->path);
-    }
+    return (RsttoNavigatorEntry *)(navigator->file_iter->data);
+}
 
-    return filename;
+gint
+rstto_navigator_get_n_files (RsttoNavigator *navigator)
+{
+    return g_list_length(navigator->file_list);
 }
 
+RsttoNavigatorEntry *
+rstto_navigator_get_nth_file (RsttoNavigator *navigator, gint n)
+{
+    return g_list_nth_data(navigator->file_list, n);
+}
+
+static RsttoNavigatorEntry *
+_rstto_navigator_entry_new (ThunarVfsInfo *info)
+{
+    RsttoNavigatorEntry *entry = g_new(RsttoNavigatorEntry, 1);
+    gchar *filename = thunar_vfs_path_dup_string(info->path);
+
+    entry->info = info;
+    entry->pixbuf = gdk_pixbuf_new_from_file_at_size(filename, 64, 64, NULL);
+
+    g_free(filename);
+    return entry;
+}
+
+ThunarVfsInfo *
+rstto_navigator_entry_get_info (RsttoNavigatorEntry *entry)
+{
+    return entry->info;
+}
+
+GdkPixbuf *
+rstto_navigator_entry_get_thumbnail (RsttoNavigatorEntry *entry)
+{
+    return entry->pixbuf;
+}
+
+static void
+_rstto_navigator_entry_free(RsttoNavigatorEntry *nav_entry)
+{
+    thunar_vfs_info_unref(nav_entry->info);
+    if(nav_entry->pixbuf)
+        g_object_unref(nav_entry->pixbuf);
+    g_free(nav_entry);
+}

Modified: ristretto/trunk/src/navigator.h
===================================================================
--- ristretto/trunk/src/navigator.h	2007-08-03 08:32:29 UTC (rev 2946)
+++ ristretto/trunk/src/navigator.h	2007-08-04 23:13:27 UTC (rev 2947)
@@ -39,16 +39,18 @@
         G_TYPE_CHECK_CLASS_TYPE ((klass), \
 				RSTTO_TYPE_NAVIGATOR()))
 
+typedef struct _RsttoNavigatorEntry RsttoNavigatorEntry;
+
 typedef struct _RsttoNavigator RsttoNavigator;
 
 struct _RsttoNavigator
 {
     GObject             parent;
     RsttoPictureViewer *viewer;
-    GtkIconTheme *icon_theme;
+    GtkIconTheme       *icon_theme;
     ThunarVfsPath      *path;
     GList              *file_list;
-    GList            *file_iter;
+    GList              *file_iter;
 };
 
 typedef struct _RsttoNavigatorClass RsttoNavigatorClass;
@@ -68,9 +70,19 @@
 void       rstto_navigator_forward (RsttoNavigator *navigator);
 void       rstto_navigator_back (RsttoNavigator *navigator);
 
-const gchar *
-rstto_navigator_get_filename (RsttoNavigator *navigator);
+RsttoNavigatorEntry *
+rstto_navigator_get_file (RsttoNavigator *navigator);
 
+gint
+rstto_navigator_get_n_files (RsttoNavigator *navigator);
+RsttoNavigatorEntry *
+rstto_navigator_get_nth_file (RsttoNavigator *navigator, gint n);
+
+
+GdkPixbuf *
+rstto_navigator_entry_get_thumbnail (RsttoNavigatorEntry *entry);
+ThunarVfsInfo *
+rstto_navigator_entry_get_info (RsttoNavigatorEntry *entry);
 G_END_DECLS
 
 #endif /* __RISTRETTO_NAVIGATOR_H__ */

Modified: ristretto/trunk/src/picture_viewer.c
===================================================================
--- ristretto/trunk/src/picture_viewer.c	2007-08-03 08:32:29 UTC (rev 2946)
+++ ristretto/trunk/src/picture_viewer.c	2007-08-04 23:13:27 UTC (rev 2947)
@@ -21,6 +21,16 @@
 
 #include "picture_viewer.h"
 
+struct _RsttoPictureViewerPriv
+{
+	GdkPixbuf        *src_pixbuf;
+	GdkPixbuf        *dst_pixbuf; /* The pixbuf which ends up on screen */
+	gdouble           scale;
+	gboolean          scale_fts; /* Scale image to fit to screen */
+	void             (*cb_value_changed)(GtkAdjustment *, RsttoPictureViewer *);
+    gboolean          show_border;
+};
+
 static void
 rstto_picture_viewer_init(RsttoPictureViewer *);
 static void
@@ -82,15 +92,16 @@
 static void
 rstto_picture_viewer_init(RsttoPictureViewer *viewer)
 {
-    viewer->cb_value_changed = cb_rstto_picture_viewer_value_changed;
+    viewer->priv = g_new0(RsttoPictureViewerPriv, 1);
+    viewer->priv->cb_value_changed = cb_rstto_picture_viewer_value_changed;
 
-    viewer->src_pixbuf = NULL;
-    viewer->dst_pixbuf = NULL;
+    viewer->priv->src_pixbuf = NULL;
+    viewer->priv->dst_pixbuf = NULL;
     gtk_widget_set_redraw_on_allocate(GTK_WIDGET(viewer), TRUE);
 
-    viewer->scale = 1;
-    viewer->scale_fts = FALSE;
-    viewer->show_border = TRUE;
+    viewer->priv->scale = 1;
+    viewer->priv->scale_fts = FALSE;
+    viewer->priv->show_border = TRUE;
 }
 
 static void
@@ -204,7 +215,7 @@
 rstto_picture_viewer_paint(GtkWidget *widget)
 {
     RsttoPictureViewer *viewer = RSTTO_PICTURE_VIEWER(widget);
-	GdkPixbuf *pixbuf = viewer->dst_pixbuf;
+    GdkPixbuf *pixbuf = viewer->priv->dst_pixbuf;
 	GdkColor color;
 	GdkColor line_color;
 
@@ -278,7 +289,7 @@
 							y2,
 			                GDK_RGB_DITHER_NONE,
 			                0,0);
-            if(viewer->show_border)
+            if(viewer->priv->show_border)
             {
                 gdk_gc_set_foreground(gc, &line_color);
                 gdk_draw_line(GDK_DRAWABLE(buffer), gc, x1, y1, x1, y1+y2);
@@ -312,12 +323,12 @@
 {
 	if(viewer->hadjustment)
 	{
-		g_signal_handlers_disconnect_by_func(viewer->hadjustment, viewer->cb_value_changed, viewer);
+		g_signal_handlers_disconnect_by_func(viewer->hadjustment, viewer->priv->cb_value_changed, viewer);
 		g_object_unref(viewer->hadjustment);
 	}
 	if(viewer->vadjustment)
 	{
-		g_signal_handlers_disconnect_by_func(viewer->vadjustment, viewer->cb_value_changed, viewer);
+		g_signal_handlers_disconnect_by_func(viewer->vadjustment, viewer->priv->cb_value_changed, viewer);
 		g_object_unref(viewer->vadjustment);
 	}
 
@@ -326,12 +337,12 @@
 
 	if(viewer->hadjustment)
 	{
-		g_signal_connect(G_OBJECT(viewer->hadjustment), "value-changed", (GCallback)viewer->cb_value_changed, viewer);
+		g_signal_connect(G_OBJECT(viewer->hadjustment), "value-changed", (GCallback)viewer->priv->cb_value_changed, viewer);
 		g_object_ref(viewer->hadjustment);
 	}
 	if(viewer->vadjustment)
 	{
-		g_signal_connect(G_OBJECT(viewer->vadjustment), "value-changed", (GCallback)viewer->cb_value_changed, viewer);
+		g_signal_connect(G_OBJECT(viewer->vadjustment), "value-changed", (GCallback)viewer->priv->cb_value_changed, viewer);
 		g_object_ref(viewer->vadjustment);
 	}
 }
@@ -339,29 +350,32 @@
 static void
 cb_rstto_picture_viewer_value_changed(GtkAdjustment *adjustment, RsttoPictureViewer *viewer)
 {
-	gdouble width = (gdouble)gdk_pixbuf_get_width(viewer->src_pixbuf);
-	gdouble height = (gdouble)gdk_pixbuf_get_height(viewer->src_pixbuf);
+    gdouble width = (gdouble)gdk_pixbuf_get_width(viewer->priv->src_pixbuf);
+    gdouble height = (gdouble)gdk_pixbuf_get_height(viewer->priv->src_pixbuf);
 
-	GdkPixbuf *tmp_pixbuf = NULL;
-	tmp_pixbuf = gdk_pixbuf_new_subpixbuf(viewer->src_pixbuf,
-	                         viewer->hadjustment->value / viewer->scale >= 0? viewer->hadjustment->value / viewer->scale : 0,
-	                         viewer->vadjustment->value / viewer->scale >= 0? viewer->vadjustment->value / viewer->scale : 0,
-	                         ((GTK_WIDGET(viewer)->allocation.width/viewer->scale)) < width?GTK_WIDGET(viewer)->allocation.width/viewer->scale:width,
-                             ((GTK_WIDGET(viewer)->allocation.height/viewer->scale)) < height?GTK_WIDGET(viewer)->allocation.height/viewer->scale:height);
+    GdkPixbuf *tmp_pixbuf = NULL;
+    tmp_pixbuf = gdk_pixbuf_new_subpixbuf(viewer->priv->src_pixbuf,
+    viewer->hadjustment->value / viewer->priv->scale >= 0? viewer->hadjustment->value / viewer->priv->scale : 0,
+    viewer->vadjustment->value / viewer->priv->scale >= 0? viewer->vadjustment->value / viewer->priv->scale : 0,
+    ((GTK_WIDGET(viewer)->allocation.width/viewer->priv->scale)) < width?GTK_WIDGET(viewer)->allocation.width/viewer->priv->scale:width,
+    ((GTK_WIDGET(viewer)->allocation.height/viewer->priv->scale)) < height?GTK_WIDGET(viewer)->allocation.height/viewer->priv->scale:height);
 
-	if(viewer->dst_pixbuf)
-	{
-		g_object_unref(viewer->dst_pixbuf);
-		viewer->dst_pixbuf = NULL;
-	}
-	viewer->dst_pixbuf = gdk_pixbuf_scale_simple(tmp_pixbuf, gdk_pixbuf_get_width(tmp_pixbuf)*viewer->scale, gdk_pixbuf_get_height(tmp_pixbuf)*viewer->scale, GDK_INTERP_BILINEAR);
+    if(viewer->priv->dst_pixbuf)
+    {
+        g_object_unref(viewer->priv->dst_pixbuf);
+        viewer->priv->dst_pixbuf = NULL;
+    }
 
-	if(tmp_pixbuf)
-	{
-		g_object_unref(tmp_pixbuf);
-		tmp_pixbuf = NULL;
-	}
-	rstto_picture_viewer_paint((GtkWidget *)viewer);
+    viewer->priv->dst_pixbuf = gdk_pixbuf_scale_simple(tmp_pixbuf,
+                                gdk_pixbuf_get_width(tmp_pixbuf)*viewer->priv->scale,
+                                gdk_pixbuf_get_height(tmp_pixbuf)*viewer->priv->scale,
+                                GDK_INTERP_BILINEAR);
+    if(tmp_pixbuf)
+    {
+        g_object_unref(tmp_pixbuf);
+        tmp_pixbuf = NULL;
+    }
+    rstto_picture_viewer_paint((GtkWidget *)viewer);
 }
 
 GtkWidget *
@@ -378,8 +392,8 @@
 rstto_picture_viewer_set_scale(RsttoPictureViewer *viewer, gdouble scale)
 {
 	g_return_if_fail(scale > 0);
-    viewer->scale_fts = FALSE;
-	viewer->scale = scale;
+    viewer->priv->scale_fts = FALSE;
+	viewer->priv->scale = scale;
 
 	rstto_picture_viewer_refresh(viewer);
 	rstto_picture_viewer_paint(GTK_WIDGET(viewer));
@@ -389,31 +403,31 @@
 gdouble
 rstto_picture_viewer_fit_scale(RsttoPictureViewer *viewer)
 {
-    viewer->scale_fts = TRUE;
+    viewer->priv->scale_fts = TRUE;
 
 	rstto_picture_viewer_refresh(viewer);
 	rstto_picture_viewer_paint(GTK_WIDGET(viewer));
 
-	return viewer->scale;
+	return viewer->priv->scale;
 }
 
 gdouble
 rstto_picture_viewer_get_scale(RsttoPictureViewer *viewer)
 {
-	return viewer->scale;
+	return viewer->priv->scale;
 }
 
 void
 rstto_picture_viewer_set_pixbuf(RsttoPictureViewer *viewer, GdkPixbuf *pixbuf)
 {
-	if(viewer->src_pixbuf)
-		g_object_unref(viewer->src_pixbuf);
+	if(viewer->priv->src_pixbuf)
+		g_object_unref(viewer->priv->src_pixbuf);
 
-	viewer->src_pixbuf = pixbuf;
+	viewer->priv->src_pixbuf = pixbuf;
 
-	if(viewer->src_pixbuf)
+	if(viewer->priv->src_pixbuf)
 	{
-		g_object_ref(viewer->src_pixbuf);
+		g_object_ref(viewer->priv->src_pixbuf);
 		rstto_picture_viewer_refresh(viewer);
 		rstto_picture_viewer_paint(GTK_WIDGET(viewer));
 	}
@@ -423,29 +437,29 @@
 rstto_picture_viewer_refresh(RsttoPictureViewer *viewer)
 {
 	GtkWidget *widget = GTK_WIDGET(viewer);
-	if(viewer->src_pixbuf)
+	if(viewer->priv->src_pixbuf)
 	{
 
-        if(viewer->scale_fts)
+        if(viewer->priv->scale_fts)
         {
-            gdouble width = (gdouble)gdk_pixbuf_get_width(viewer->src_pixbuf);
-            gdouble height = (gdouble)gdk_pixbuf_get_height(viewer->src_pixbuf);
+            gdouble width = (gdouble)gdk_pixbuf_get_width(viewer->priv->src_pixbuf);
+            gdouble height = (gdouble)gdk_pixbuf_get_height(viewer->priv->src_pixbuf);
             gdouble h_scale = GTK_WIDGET(viewer)->allocation.width / width;
             gdouble v_scale = GTK_WIDGET(viewer)->allocation.height / height;
             if(h_scale < v_scale)
-                viewer->scale = h_scale;
+                viewer->priv->scale = h_scale;
             else
-                viewer->scale = v_scale;
+                viewer->priv->scale = v_scale;
         }
 		if(GTK_WIDGET_REALIZED(widget))
 		{
-			gdouble width = (gdouble)gdk_pixbuf_get_width(viewer->src_pixbuf);
-			gdouble height = (gdouble)gdk_pixbuf_get_height(viewer->src_pixbuf);
+			gdouble width = (gdouble)gdk_pixbuf_get_width(viewer->priv->src_pixbuf);
+			gdouble height = (gdouble)gdk_pixbuf_get_height(viewer->priv->src_pixbuf);
 			
 			if(viewer->hadjustment)
 			{
 				viewer->hadjustment->page_size = widget->allocation.width;
-				viewer->hadjustment->upper = width * viewer->scale;
+				viewer->hadjustment->upper = width * viewer->priv->scale;
 				viewer->hadjustment->lower = 0;
 				viewer->hadjustment->step_increment = 1;
 				viewer->hadjustment->page_increment = 100;
@@ -453,7 +467,7 @@
 			if(viewer->vadjustment)
 			{
 				viewer->vadjustment->page_size = widget->allocation.height;
-				viewer->vadjustment->upper = height * viewer->scale;
+				viewer->vadjustment->upper = height * viewer->priv->scale;
 				viewer->vadjustment->lower = 0;
 				viewer->vadjustment->step_increment = 1;
 				viewer->vadjustment->page_increment = 100;
@@ -472,18 +486,22 @@
 
 
 			GdkPixbuf *tmp_pixbuf = NULL;
-			tmp_pixbuf = gdk_pixbuf_new_subpixbuf(viewer->src_pixbuf,
-												  viewer->hadjustment->value / viewer->scale >= 0? viewer->hadjustment->value / viewer->scale : 0,
-												  viewer->vadjustment->value / viewer->scale >= 0? viewer->vadjustment->value / viewer->scale : 0,
-												  ((widget->allocation.width/viewer->scale)) < width?widget->allocation.width/viewer->scale:width,
-												  ((widget->allocation.height/viewer->scale))< height?widget->allocation.height/viewer->scale:height);
+			tmp_pixbuf = gdk_pixbuf_new_subpixbuf(viewer->priv->src_pixbuf,
+												  viewer->hadjustment->value / viewer->priv->scale >= 0?
+                                                        viewer->hadjustment->value / viewer->priv->scale : 0,
+												  viewer->vadjustment->value / viewer->priv->scale >= 0?
+                                                        viewer->vadjustment->value / viewer->priv->scale : 0,
+												  ((widget->allocation.width/viewer->priv->scale)) < width?
+                                                        widget->allocation.width/viewer->priv->scale:width,
+												  ((widget->allocation.height/viewer->priv->scale))< height?
+                                                        widget->allocation.height/viewer->priv->scale:height);
 
-			if(viewer->dst_pixbuf)
+			if(viewer->priv->dst_pixbuf)
 			{
-				g_object_unref(viewer->dst_pixbuf);
-				viewer->dst_pixbuf = NULL;
+				g_object_unref(viewer->priv->dst_pixbuf);
+				viewer->priv->dst_pixbuf = NULL;
 			}
-			viewer->dst_pixbuf = gdk_pixbuf_scale_simple(tmp_pixbuf, gdk_pixbuf_get_width(tmp_pixbuf)*viewer->scale, gdk_pixbuf_get_height(tmp_pixbuf)*viewer->scale, GDK_INTERP_BILINEAR);
+			viewer->priv->dst_pixbuf = gdk_pixbuf_scale_simple(tmp_pixbuf, gdk_pixbuf_get_width(tmp_pixbuf)*viewer->priv->scale, gdk_pixbuf_get_height(tmp_pixbuf)*viewer->priv->scale, GDK_INTERP_BILINEAR);
 
 			if(tmp_pixbuf)
 			{

Modified: ristretto/trunk/src/picture_viewer.h
===================================================================
--- ristretto/trunk/src/picture_viewer.h	2007-08-03 08:32:29 UTC (rev 2946)
+++ ristretto/trunk/src/picture_viewer.h	2007-08-04 23:13:27 UTC (rev 2947)
@@ -39,19 +39,17 @@
         G_TYPE_CHECK_CLASS_TYPE ((klass), \
 				RSTTO_TYPE_PICTURE_VIEWER()))
 
+typedef struct _RsttoPictureViewerPriv RsttoPictureViewerPriv;
+
 typedef struct _RsttoPictureViewer RsttoPictureViewer;
 
 struct _RsttoPictureViewer
 {
 	GtkWidget         parent;
-	GdkPixbuf        *src_pixbuf;
-	GdkPixbuf        *dst_pixbuf; /* The pixbuf which ends up on screen */
+    RsttoPictureViewerPriv *priv;
+
 	GtkAdjustment    *vadjustment;
 	GtkAdjustment    *hadjustment;
-	gdouble           scale;
-	gboolean          scale_fts; /* Scale image to fit to screen */
-	void             (*cb_value_changed)(GtkAdjustment *, RsttoPictureViewer *);
-    gboolean          show_border;
 };
 
 typedef struct _RsttoPictureViewerClass RsttoPictureViewerClass;

Modified: ristretto/trunk/src/thumbnail_viewer.c
===================================================================
--- ristretto/trunk/src/thumbnail_viewer.c	2007-08-03 08:32:29 UTC (rev 2946)
+++ ristretto/trunk/src/thumbnail_viewer.c	2007-08-04 23:13:27 UTC (rev 2947)
@@ -19,11 +19,21 @@
 #include <gtk/gtkmarshal.h>
 #include <string.h>
 
+#include <thunar-vfs/thunar-vfs.h>
+
 #include <pango/pango.h>
 #include <pango/pangoxft.h>
 
+#include "picture_viewer.h"
+#include "navigator.h"
 #include "thumbnail_viewer.h"
 
+struct _RsttoThumbnailViewerPriv
+{
+    GtkOrientation  orientation;
+    RsttoNavigator *navigator;
+};
+
 static void
 rstto_thumbnail_viewer_init(RsttoThumbnailViewer *);
 static void
@@ -43,12 +53,8 @@
 rstto_thumbnail_viewer_expose(GtkWidget *, GdkEventExpose *);
 
 static void
-rstto_thumbnail_viewer_set_scroll_adjustments(RsttoThumbnailViewer *, GtkAdjustment *, GtkAdjustment *);
+rstto_thumbnail_viewer_paint(RsttoThumbnailViewer *viewer);
 
-static void
-cb_rstto_thumbnail_viewer_value_changed(GtkAdjustment *adjustment, RsttoThumbnailViewer *viewer);
-
-
 static GtkWidgetClass *parent_class = NULL;
 
 GType
@@ -81,7 +87,7 @@
 static void
 rstto_thumbnail_viewer_init(RsttoThumbnailViewer *viewer)
 {
-    viewer->cb_value_changed = cb_rstto_thumbnail_viewer_value_changed;
+    viewer->priv = g_new0(RsttoThumbnailViewerPriv, 1);
 
     gtk_widget_set_redraw_on_allocate(GTK_WIDGET(viewer), TRUE);
 }
@@ -97,8 +103,6 @@
 
 	parent_class = g_type_class_peek_parent(viewer_class);
 
-	viewer_class->set_scroll_adjustments = rstto_thumbnail_viewer_set_scroll_adjustments;
-
 	widget_class->realize = rstto_thumbnail_viewer_realize;
 	widget_class->unrealize = rstto_thumbnail_viewer_unrealize;
 	widget_class->expose_event = rstto_thumbnail_viewer_expose;
@@ -107,33 +111,20 @@
 	widget_class->size_allocate = rstto_thumbnail_viewer_size_allocate;
 
 	object_class->destroy = rstto_thumbnail_viewer_destroy;
-
-
-	widget_class->set_scroll_adjustments_signal =
-	              g_signal_new ("set_scroll_adjustments",
-	                            G_TYPE_FROM_CLASS (object_class),
-	                            G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
-	                            G_STRUCT_OFFSET (RsttoThumbnailViewerClass, set_scroll_adjustments),
-	                            NULL, NULL,
-	                            gtk_marshal_VOID__POINTER_POINTER,
-	                            G_TYPE_NONE, 2,
-	                            GTK_TYPE_ADJUSTMENT,
-	                            GTK_TYPE_ADJUSTMENT);
-
 }
 
 static void
 rstto_thumbnail_viewer_size_request(GtkWidget *widget, GtkRequisition *requisition)
 {
     RsttoThumbnailViewer *viewer = RSTTO_THUMBNAIL_VIEWER(widget);
-    switch(viewer->orientation)
+    switch(viewer->priv->orientation)
     {
         case GTK_ORIENTATION_HORIZONTAL:
-            requisition->height = 96;
+            requisition->height = 64;
             requisition->width = 10;
             break;
         case GTK_ORIENTATION_VERTICAL:
-            requisition->width = 120;
+            requisition->width = 64;
             break;
     }
 }
@@ -153,22 +144,14 @@
 			allocation->width - border_width * 2,
 			allocation->height - border_width * 2);
 
-        if(viewer->hadjustment)
+        switch(viewer->priv->orientation)
         {
-	    	viewer->hadjustment->page_size = widget->allocation.width;
-	    	viewer->hadjustment->upper = 128*10;
-	    	viewer->hadjustment->lower = 0;
-            viewer->hadjustment->step_increment = 1;
-            viewer->hadjustment->page_increment = 100;
+            case GTK_ORIENTATION_HORIZONTAL:
+            case GTK_ORIENTATION_VERTICAL:
+                break;
+        }
 
-			if((viewer->hadjustment->value + viewer->hadjustment->page_size) > viewer->hadjustment->upper)
-			{
-				viewer->hadjustment->value = viewer->hadjustment->upper - viewer->hadjustment->page_size;
-				gtk_adjustment_value_changed(viewer->hadjustment);
-			}
 
-			gtk_adjustment_changed(viewer->hadjustment);
-        }
 	}
 }
 
@@ -211,58 +194,87 @@
 static gboolean
 rstto_thumbnail_viewer_expose(GtkWidget *widget, GdkEventExpose *event)
 {
+    RsttoThumbnailViewer *viewer = RSTTO_THUMBNAIL_VIEWER(widget);
+
+    rstto_thumbnail_viewer_paint(viewer);
+
+	return FALSE;
+}
+
+static void
+rstto_thumbnail_viewer_paint(RsttoThumbnailViewer *viewer)
+{
+    GtkWidget *widget = GTK_WIDGET(viewer);
 	GdkColor color;
 	GdkColor color_1;
+    gint dimension = 0;
 
+    switch(viewer->priv->orientation)
+    {
+        case GTK_ORIENTATION_HORIZONTAL:
+            dimension = widget->allocation.height;
+            break;
+        case GTK_ORIENTATION_VERTICAL:
+            dimension = widget->allocation.width;
+            break;
+    }
+
     PangoContext *pc = gtk_widget_get_pango_context(widget);
     PangoLayout *pl = pango_layout_new(pc);
 
     pango_layout_set_text(pl, "Ristretto Image Viewer", 22);
-    pango_layout_set_width(pl, 96 * PANGO_SCALE);
+    pango_layout_set_width(pl, (dimension - 24) * PANGO_SCALE);
     pango_layout_set_ellipsize(pl, PANGO_ELLIPSIZE_MIDDLE);
 
     color.pixel = 0xffffffff;
     color_1.pixel = 0;
-    RsttoThumbnailViewer *viewer = RSTTO_THUMBNAIL_VIEWER(widget);
 	GdkGC *gc = gdk_gc_new(GDK_DRAWABLE(widget->window));
 	GdkGC *gc_1 = gdk_gc_new(GDK_DRAWABLE(widget->window));
 
 	gdk_gc_set_foreground(gc, &color);
 	gdk_gc_set_foreground(gc_1, &color_1);
-    if(viewer->hadjustment)
-    {
-        viewer->hadjustment->page_size = widget->allocation.width;
-        viewer->hadjustment->upper = 72*5;
-        viewer->hadjustment->lower = 0;
-        viewer->hadjustment->step_increment = 1;
-        viewer->hadjustment->page_increment = 100;
 
-        if((viewer->hadjustment->value + viewer->hadjustment->page_size) > viewer->hadjustment->upper)
-        {
-            viewer->hadjustment->value = viewer->hadjustment->upper - viewer->hadjustment->page_size;
-            gtk_adjustment_value_changed(viewer->hadjustment);
-        }
-
-//        gtk_adjustment_changed(viewer->hadjustment);
-    }
     gint i;
-    for(i = 0; i < 10; ++i)
-    {
-        gdk_draw_rectangle(GDK_DRAWABLE(widget->window),
+    for(i = 0; i < rstto_navigator_get_n_files(viewer->priv->navigator); ++i)
+    { 
+        RsttoNavigatorEntry *entry = rstto_navigator_get_nth_file(viewer->priv->navigator, i);
+        ThunarVfsInfo *info = rstto_navigator_entry_get_info(entry);
+        GdkPixbuf *pixbuf = rstto_navigator_entry_get_thumbnail(entry);
+
+        pango_layout_set_text(pl, info->display_name, strlen(info->display_name));
+
+        if(viewer->priv->orientation == GTK_ORIENTATION_HORIZONTAL)
+        {
+            gdk_draw_rectangle(GDK_DRAWABLE(widget->window),
                   gc,
                   TRUE,
-                  (i*128), 0, 128, 128);
-        gdk_draw_rectangle(GDK_DRAWABLE(widget->window),
+                  (i*dimension), 0, dimension, dimension);
+
+
+            /*
+            gdk_draw_rectangle(GDK_DRAWABLE(widget->window),
                   gc_1,
                   TRUE,
-                  (i*128)+12, 12, 96, 72);
-        gdk_draw_layout(GDK_DRAWABLE(widget->window),
+                  (i*dimension)+12, 12, inner_dimension, inner_dimension-12);
+            */
+            gdk_draw_pixbuf(GDK_DRAWABLE(widget->window),
+                            gc,
+                            pixbuf,
+                            0, 0,
+                            i*dimension + 12,
+                            12,
+                            -1, -1,
+                            GDK_RGB_DITHER_NORMAL,
+                            0, 0);
+
+            gdk_draw_layout(GDK_DRAWABLE(widget->window),
                   gc_1,
-                  (i*128)+12, 96,
+                  (i*dimension)+12, dimension-24,
                   pl);
+
+        }
     }
 
-	return FALSE;
 }
 
 static void
@@ -271,48 +283,14 @@
 
 }
 
-static void
-rstto_thumbnail_viewer_set_scroll_adjustments(RsttoThumbnailViewer *viewer, GtkAdjustment *hadjustment, GtkAdjustment *vadjustment)
+GtkWidget *
+rstto_thumbnail_viewer_new(RsttoNavigator *navigator)
 {
-	if(viewer->hadjustment)
-	{
-		g_signal_handlers_disconnect_by_func(viewer->hadjustment, viewer->cb_value_changed, viewer);
-		g_object_unref(viewer->hadjustment);
-	}
-	if(viewer->vadjustment)
-	{
-		g_signal_handlers_disconnect_by_func(viewer->vadjustment, viewer->cb_value_changed, viewer);
-		g_object_unref(viewer->vadjustment);
-	}
+	RsttoThumbnailViewer *viewer;
 
-	viewer->hadjustment = hadjustment;
-	viewer->vadjustment = vadjustment;
+	viewer = g_object_new(RSTTO_TYPE_THUMBNAIL_VIEWER, NULL);
 
-	if(viewer->hadjustment)
-	{
-		g_signal_connect(G_OBJECT(viewer->hadjustment), "value-changed", (GCallback)viewer->cb_value_changed, viewer);
-		g_object_ref(viewer->hadjustment);
-	}
-	if(viewer->vadjustment)
-	{
-		g_signal_connect(G_OBJECT(viewer->vadjustment), "value-changed", (GCallback)viewer->cb_value_changed, viewer);
-		g_object_ref(viewer->vadjustment);
-	}
+    viewer->priv->navigator = navigator;
 
+	return (GtkWidget *)viewer;
 }
-
-static void
-cb_rstto_thumbnail_viewer_value_changed(GtkAdjustment *adjustment, RsttoThumbnailViewer *viewer)
-{
-
-}
-
-GtkWidget *
-rstto_thumbnail_viewer_new()
-{
-	GtkWidget *widget;
-
-	widget = g_object_new(RSTTO_TYPE_THUMBNAIL_VIEWER, NULL);
-
-	return widget;
-}

Modified: ristretto/trunk/src/thumbnail_viewer.h
===================================================================
--- ristretto/trunk/src/thumbnail_viewer.h	2007-08-03 08:32:29 UTC (rev 2946)
+++ ristretto/trunk/src/thumbnail_viewer.h	2007-08-04 23:13:27 UTC (rev 2947)
@@ -39,16 +39,14 @@
         G_TYPE_CHECK_CLASS_TYPE ((klass), \
 				RSTTO_TYPE_THUMBNAIL_VIEWER()))
 
+typedef struct _RsttoThumbnailViewerPriv RsttoThumbnailViewerPriv;
+
 typedef struct _RsttoThumbnailViewer RsttoThumbnailViewer;
 
 struct _RsttoThumbnailViewer
 {
 	GtkWidget         parent;
-
-    GtkOrientation    orientation;
-	GtkAdjustment    *vadjustment;
-	GtkAdjustment    *hadjustment;
-	void             (*cb_value_changed)(GtkAdjustment *, RsttoThumbnailViewer *);
+    RsttoThumbnailViewerPriv *priv;
 };
 
 typedef struct _RsttoThumbnailViewerClass RsttoThumbnailViewerClass;
@@ -56,10 +54,6 @@
 struct _RsttoThumbnailViewerClass
 {
 	GtkWidgetClass  parent_class;
-
-    void (* set_scroll_adjustments) (RsttoThumbnailViewer *viewer,
-	      GtkAdjustment     *hadjustment,
-	      GtkAdjustment     *vadjustment);
 };
 
 GType      rstto_thumbnail_viewer_get_type();




More information about the Goodies-commits mailing list