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

Stephan Arts stephan at xfce.org
Tue Aug 7 01:52:10 CEST 2007


Author: stephan
Date: 2007-08-06 23:52:10 +0000 (Mon, 06 Aug 2007)
New Revision: 2954

Modified:
   ristretto/trunk/src/main.c
   ristretto/trunk/src/navigator.c
   ristretto/trunk/src/navigator.h
   ristretto/trunk/src/thumbnail_viewer.c
Log:
Allow navigation through thumbnailer.



Modified: ristretto/trunk/src/main.c
===================================================================
--- ristretto/trunk/src/main.c	2007-08-05 23:48:34 UTC (rev 2953)
+++ ristretto/trunk/src/main.c	2007-08-06 23:52:10 UTC (rev 2954)
@@ -101,7 +101,7 @@
     navigator = rstto_navigator_new(RSTTO_PICTURE_VIEWER(viewer));
 
     g_signal_connect(window , "key-press-event", G_CALLBACK(cb_rstto_key_press_event) , navigator);
-	g_signal_connect(G_OBJECT(navigator), "file-changed", G_CALLBACK(cb_rstto_nav_file_changed), window);
+	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);
 	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(s_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);

Modified: ristretto/trunk/src/navigator.c
===================================================================
--- ristretto/trunk/src/navigator.c	2007-08-05 23:48:34 UTC (rev 2953)
+++ ristretto/trunk/src/navigator.c	2007-08-06 23:52:10 UTC (rev 2954)
@@ -93,7 +93,7 @@
 
 	object_class->dispose = rstto_navigator_dispose;
 
-	rstto_navigator_signals[RSTTO_NAVIGATOR_SIGNAL_FILE_CHANGED] = g_signal_new("file-changed",
+	rstto_navigator_signals[RSTTO_NAVIGATOR_SIGNAL_FILE_CHANGED] = g_signal_new("file_changed",
 			G_TYPE_FROM_CLASS(nav_class),
 			G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
 			0,
@@ -341,3 +341,27 @@
         g_object_unref(nav_entry->pixbuf);
     g_free(nav_entry);
 }
+
+void
+rstto_navigator_set_file (RsttoNavigator *navigator, gint n)
+{
+    navigator->file_iter = g_list_nth(navigator->file_list, n);
+    if(navigator->file_iter)
+    {
+        ThunarVfsInfo *info = rstto_navigator_entry_get_info(((RsttoNavigatorEntry *)navigator->file_iter->data));
+        gchar *filename = thunar_vfs_path_dup_string(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);
+            rstto_picture_viewer_set_scale(navigator->viewer, 1);
+        }
+
+        rstto_picture_viewer_set_pixbuf(navigator->viewer, pixbuf);
+        if(pixbuf)
+            gdk_pixbuf_unref(pixbuf);
+
+        g_free(filename);
+        g_signal_emit(G_OBJECT(navigator), rstto_navigator_signals[RSTTO_NAVIGATOR_SIGNAL_FILE_CHANGED], 0, NULL);
+    }
+}

Modified: ristretto/trunk/src/navigator.h
===================================================================
--- ristretto/trunk/src/navigator.h	2007-08-05 23:48:34 UTC (rev 2953)
+++ ristretto/trunk/src/navigator.h	2007-08-06 23:52:10 UTC (rev 2954)
@@ -78,11 +78,15 @@
 RsttoNavigatorEntry *
 rstto_navigator_get_nth_file (RsttoNavigator *navigator, gint n);
 
+void
+rstto_navigator_set_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/thumbnail_viewer.c
===================================================================
--- ristretto/trunk/src/thumbnail_viewer.c	2007-08-05 23:48:34 UTC (rev 2953)
+++ ristretto/trunk/src/thumbnail_viewer.c	2007-08-06 23:52:10 UTC (rev 2954)
@@ -59,6 +59,8 @@
 
 static void
 cb_rstto_thumbnailer_nav_file_changed(RsttoNavigator *nav, RsttoThumbnailViewer *viewer);
+static void
+cb_rstto_thumbnailer_button_press_event (RsttoThumbnailViewer *viewer, GdkEventButton *event);
 
 GType
 rstto_thumbnail_viewer_get_type ()
@@ -93,6 +95,9 @@
     viewer->priv = g_new0(RsttoThumbnailViewerPriv, 1);
 
     gtk_widget_set_redraw_on_allocate(GTK_WIDGET(viewer), TRUE);
+    gtk_widget_set_events (GTK_WIDGET(viewer),
+                           GDK_BUTTON_PRESS_MASK);
+    g_signal_connect(G_OBJECT(viewer), "button_press_event", G_CALLBACK(cb_rstto_thumbnailer_button_press_event), NULL);
 }
 
 static void
@@ -305,7 +310,7 @@
 
     viewer->priv->navigator = navigator;
 
-	g_signal_connect(G_OBJECT(navigator), "file-changed", G_CALLBACK(cb_rstto_thumbnailer_nav_file_changed), viewer);
+	g_signal_connect(G_OBJECT(navigator), "file_changed", G_CALLBACK(cb_rstto_thumbnailer_nav_file_changed), viewer);
 
 	return (GtkWidget *)viewer;
 }
@@ -319,3 +324,25 @@
 
     }
 }
+
+static void
+cb_rstto_thumbnailer_button_press_event (RsttoThumbnailViewer *viewer,
+                                         GdkEventButton *event)
+{
+    switch(viewer->priv->orientation)
+    {
+        case GTK_ORIENTATION_HORIZONTAL:
+            if(event->button == 1)
+            {
+                rstto_navigator_set_file(viewer->priv->navigator, event->x / 74);
+            }
+            break;
+        case GTK_ORIENTATION_VERTICAL:
+            if(event->button == 1)
+            {
+                rstto_navigator_set_file(viewer->priv->navigator, event->y / 74);
+            }
+            break;
+
+    }
+}




More information about the Goodies-commits mailing list