[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