[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