[Goodies-commits] r6478 - ristretto/branches/ristretto-gio/src

Stephan Arts stephan at xfce.org
Fri Jan 16 23:15:56 CET 2009


Author: stephan
Date: 2009-01-16 22:15:56 +0000 (Fri, 16 Jan 2009)
New Revision: 6478

Added:
   ristretto/branches/ristretto-gio/src/main_window_ui.xml
Modified:
   ristretto/branches/ristretto-gio/src/Makefile.am
   ristretto/branches/ristretto-gio/src/image.c
   ristretto/branches/ristretto-gio/src/main.c
   ristretto/branches/ristretto-gio/src/main_window.c
   ristretto/branches/ristretto-gio/src/navigator.c
   ristretto/branches/ristretto-gio/src/navigator.h
Log:
Add ui-manager support for generating the menu and toolbar



Modified: ristretto/branches/ristretto-gio/src/Makefile.am
===================================================================
--- ristretto/branches/ristretto-gio/src/Makefile.am	2009-01-16 21:05:30 UTC (rev 6477)
+++ ristretto/branches/ristretto-gio/src/Makefile.am	2009-01-16 22:15:56 UTC (rev 6478)
@@ -7,6 +7,7 @@
 	image_transformation.c image_transformation.h \
 	image_transform_orientation.c image_transform_orientation.h \
 	picture_viewer.c picture_viewer.h \
+	main_window_ui.h \
 	main_window.c main_window.h \
 	main.c
 #	save_dialog.h save_dialog.c
@@ -36,3 +37,16 @@
 
 INCLUDES = \
 	-I${top_srcdir}
+
+if MAINTAINER_MODE
+
+BUILT_SOURCES = \
+	main_window_ui.h
+
+main_window_ui.h: main_window_ui.xml
+	exo-csource --strip-comments --strip-content --static --name=main_window_ui $< > $@
+
+endif
+
+EXTRA_DIST = \
+	main_window_ui.xml

Modified: ristretto/branches/ristretto-gio/src/image.c
===================================================================
--- ristretto/branches/ristretto-gio/src/image.c	2009-01-16 21:05:30 UTC (rev 6477)
+++ ristretto/branches/ristretto-gio/src/image.c	2009-01-16 22:15:56 UTC (rev 6478)
@@ -96,6 +96,10 @@
     GFile *file;
     GFileMonitor *monitor;
 
+    /* File I/O data */
+    /*****************/
+    guchar *buffer;
+
     /* Image data */
     /**************/
     GdkPixbufLoader *loader;
@@ -108,8 +112,6 @@
     gint    animation_timeout_id;
 
     GList *transformations;
-
-    guchar *buffer;
 };
 
 
@@ -301,6 +303,10 @@
     gssize read_bytes = g_input_stream_read_finish (G_INPUT_STREAM (source_object), result, NULL);
     GError *error = NULL;
 
+    if (image->priv->loader == NULL)
+        return;
+
+
     if (read_bytes > 0)
     {
         if(gdk_pixbuf_loader_write (image->priv->loader, (const guchar *)image->priv->buffer, read_bytes, &error) == FALSE)
@@ -627,6 +633,8 @@
 /**
  * cb_rstto_image_update:
  * @image:
+ *
+ * Return value:
  */
 static gboolean
 cb_rstto_image_update(RsttoImage *image)

Modified: ristretto/branches/ristretto-gio/src/main.c
===================================================================
--- ristretto/branches/ristretto-gio/src/main.c	2009-01-16 21:05:30 UTC (rev 6477)
+++ ristretto/branches/ristretto-gio/src/main.c	2009-01-16 22:15:56 UTC (rev 6478)
@@ -76,7 +76,7 @@
     textdomain (GETTEXT_PACKAGE);
     #endif
 
-    if(!gtk_init_with_args(&argc, &argv, _(""), entries, PACKAGE, &cli_error))
+    if(!gtk_init_with_args(&argc, &argv, "", entries, PACKAGE, &cli_error))
     {
         if (cli_error != NULL)
         {

Modified: ristretto/branches/ristretto-gio/src/main_window.c
===================================================================
--- ristretto/branches/ristretto-gio/src/main_window.c	2009-01-16 21:05:30 UTC (rev 6477)
+++ ristretto/branches/ristretto-gio/src/main_window.c	2009-01-16 22:15:56 UTC (rev 6478)
@@ -18,8 +18,6 @@
 
 #include <config.h>
 #include <gtk/gtk.h>
-#include <gdk/gdkkeysyms.h>
-#include <gdk/gdkx.h>
 #include <X11/Xlib.h>
 #include <string.h>
 
@@ -32,6 +30,7 @@
 #include "navigator.h"
 #include "picture_viewer.h"
 #include "main_window.h"
+#include "main_window_ui.h"
 
 #define XFDESKTOP_SELECTION_FMT "XFDESKTOP_SELECTION_%d"
 
@@ -44,7 +43,6 @@
 #define ZOOM_FACTOR 1.2
 #endif
 
-
 struct _RsttoMainWindowPriv
 {
     struct {
@@ -58,10 +56,14 @@
 
     RsttoNavigatorIter *iter;
 
+    GtkActionGroup *action_group;
+    GtkUIManager *ui_manager;
+
     GtkWidget *menubar;
     GtkWidget *toolbar;
     GtkWidget *picture_viewer;
     GtkWidget *p_viewer_s_window;
+    GtkWidget *statusbar;
 };
 
 enum
@@ -89,12 +91,6 @@
                                 GParamSpec *pspec);
 
 static void
-rstto_main_window_build_toolbar (RsttoMainWindow *window, GtkToolbar *toolbar);
-static void
-rstto_main_window_build_menubar (RsttoMainWindow *window, GtkMenuBar *menubar);
-
-
-static void
 cb_rstto_main_window_zoom_100 (GtkWidget *widget, RsttoMainWindow *window);
 static void
 cb_rstto_main_window_zoom_fit (GtkWidget *widget, RsttoMainWindow *window);
@@ -103,14 +99,61 @@
 static void
 cb_rstto_main_window_zoom_out (GtkWidget *widget, RsttoMainWindow *window);
 static void
+cb_rstto_main_window_navigator_new_image (RsttoNavigator *navigator, RsttoImage *image, RsttoMainWindow *window);
+static void
 cb_rstto_main_window_next_image (GtkWidget *widget, RsttoMainWindow *window);
 static void
 cb_rstto_main_window_previous_image (GtkWidget *widget, RsttoMainWindow *window);
 static void
 cb_rstto_main_window_open_image (GtkWidget *widget, RsttoMainWindow *window);
+static void
+cb_rstto_main_window_quit (GtkWidget *widget, RsttoMainWindow *window);
 
 static GtkWidgetClass *parent_class = NULL;
 
+static GtkActionEntry action_entries[] =
+{
+    { "file-menu", NULL, N_ ("_File"), NULL, },
+        { "open", GTK_STOCK_OPEN, N_ ("_Open"), "<control>O", N_ ("Open an image"), G_CALLBACK (cb_rstto_main_window_open_image), },
+        { "open-folder", NULL, N_ ("Open _Folder"), NULL, N_ ("Open a folder"), NULL, },
+        { "open-recent-menu", NULL, N_ ("Open _Recent"), NULL, },
+        { "close", GTK_STOCK_CLOSE, N_ ("_Close"), "<control>W", N_ ("Close this image"), NULL, },
+        { "close-all", NULL, N_ ("_Close All"), NULL, N_ ("Close all images"), NULL, },
+        { "quit", GTK_STOCK_QUIT, N_ ("_Quit"), "<control>Q", N_ ("Quit "), G_CALLBACK (cb_rstto_main_window_quit), },
+    { "edit-menu", NULL, N_ ("_Edit"), NULL, },
+        { "preferences", GTK_STOCK_PREFERENCES, N_ ("_Preferences"), NULL, NULL, NULL, },
+    { "view-menu", NULL, N_ ("_View"), NULL, },
+        { "thumbnailbar-menu", NULL, N_ ("_Thumbnail Bar"), NULL, },
+            { "thumbnailbar-show-vertical", NULL, N_ ("Show _Vertically"), NULL, NULL, NULL, },
+            { "thumbnailbar-show-horizontal", NULL, N_ ("_Show Horizontally"), NULL, NULL, NULL, },
+            { "thumbnailbar-hide", NULL, N_ ("_Hide"), NULL, NULL, NULL, },
+        { "zoom-menu", NULL, N_ ("_Zooming"), NULL, },
+            { "zoom-in", GTK_STOCK_ZOOM_IN, N_ ("Zoom _In"), "<control>plus", NULL, G_CALLBACK (cb_rstto_main_window_zoom_in),},
+            { "zoom-out", GTK_STOCK_ZOOM_OUT, N_ ("Zoom _Out"), "<control>minus", NULL, G_CALLBACK (cb_rstto_main_window_zoom_out), },
+            { "zoom-fit", GTK_STOCK_ZOOM_FIT, N_ ("Zoom _Fit"), "<control>equal", NULL, G_CALLBACK (cb_rstto_main_window_zoom_fit), },
+            { "zoom-100", GTK_STOCK_ZOOM_100, N_ ("_Normal Size"), "<control>0", NULL, G_CALLBACK (cb_rstto_main_window_zoom_100), },
+        { "rotation-menu", NULL, N_ ("_Rotation"), NULL, },
+            { "rotate-cw", NULL, N_ ("Rotate _Right"), NULL, NULL, NULL, },
+            { "rotate-ccw", NULL, N_ ("Rotate _Left"), NULL, NULL, NULL, },
+        { "fullscreen", GTK_STOCK_FULLSCREEN, N_ ("_Fullscreen"), NULL, NULL, NULL, },
+        { "set-as-wallpaper", NULL, N_ ("_Set as Wallpaper"), NULL, NULL, NULL, },
+    { "go-menu", NULL, N_ ("_Go"), NULL, },
+        { "forward", GTK_STOCK_GO_FORWARD, N_ ("_Forward"), NULL, NULL, NULL, },
+        { "back", GTK_STOCK_GO_BACK, N_ ("_Back"), NULL, NULL, NULL, },
+        { "first", GTK_STOCK_GOTO_FIRST, N_ ("_First"), NULL, NULL, NULL, },
+        { "last", GTK_STOCK_GOTO_LAST, N_ ("_Last"), NULL, NULL, NULL, },
+        { "play", GTK_STOCK_MEDIA_PLAY, N_ ("_Play"), NULL, NULL, NULL, },
+    { "help-menu", NULL, N_ ("_Help"), NULL, },
+        { "contents", GTK_STOCK_HELP, N_ ("_Contents"), "F1", N_ ("Display ristretto user manual"), NULL, },
+        { "about", GTK_STOCK_ABOUT, N_ ("_About"), NULL, N_ ("Display information about ristretto"), NULL, }
+};
+
+static const GtkToggleActionEntry toggle_action_entries[] =
+{
+    { "show-toolbar", NULL, N_ ("Show _Toolbar"), NULL, NULL, NULL, FALSE, },
+};
+
+
 GType
 rstto_main_window_get_type ()
 {
@@ -140,6 +183,7 @@
 static void
 rstto_main_window_init(RsttoMainWindow *window)
 {
+    GtkAccelGroup  *accel_group;
     GtkWidget   *main_vbox = gtk_vbox_new (FALSE, 0);
 
     gtk_window_set_title (GTK_WINDOW (window), RISTRETTO_APP_TITLE);
@@ -148,103 +192,38 @@
 
     window->priv->iter = NULL;
 
-    window->priv->menubar = gtk_menu_bar_new();
-    window->priv->toolbar = gtk_toolbar_new ();
+    window->priv->ui_manager = gtk_ui_manager_new ();
+    accel_group = gtk_ui_manager_get_accel_group (window->priv->ui_manager);
+    gtk_window_add_accel_group (GTK_WINDOW (window), accel_group);
 
-    rstto_main_window_build_toolbar (window, GTK_TOOLBAR (window->priv->toolbar));
-    rstto_main_window_build_menubar (window, GTK_MENU_BAR (window->priv->menubar));
+    window->priv->action_group = gtk_action_group_new ("RsttoWindow");
 
+    gtk_ui_manager_insert_action_group (window->priv->ui_manager, window->priv->action_group, 0);
+
+    gtk_action_group_set_translation_domain (window->priv->action_group, GETTEXT_PACKAGE);
+    gtk_action_group_add_actions (window->priv->action_group, action_entries, G_N_ELEMENTS (action_entries), GTK_WIDGET (window));
+    gtk_action_group_add_toggle_actions (window->priv->action_group, toggle_action_entries, G_N_ELEMENTS (toggle_action_entries), GTK_WIDGET (window));
+
+    gtk_ui_manager_add_ui_from_string (window->priv->ui_manager,main_window_ui, main_window_ui_length, NULL);
+    window->priv->menubar = gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-menu");
+    window->priv->toolbar = gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-toolbar");
+
     window->priv->picture_viewer = rstto_picture_viewer_new ();
     window->priv->p_viewer_s_window = gtk_scrolled_window_new (NULL, NULL);
     gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (window->priv->p_viewer_s_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
     gtk_container_add (GTK_CONTAINER (window->priv->p_viewer_s_window), window->priv->picture_viewer);
 
+    window->priv->statusbar = gtk_statusbar_new();
 
+
     gtk_container_add (GTK_CONTAINER (window), main_vbox);
     gtk_box_pack_start(GTK_BOX(main_vbox), window->priv->menubar, FALSE, FALSE, 0);
     gtk_box_pack_start(GTK_BOX(main_vbox), window->priv->toolbar, FALSE, FALSE, 0);
     gtk_box_pack_start(GTK_BOX(main_vbox), window->priv->p_viewer_s_window, TRUE, TRUE, 0);
+    gtk_box_pack_start(GTK_BOX(main_vbox), window->priv->statusbar, FALSE, FALSE, 0);
 }
 
 static void
-rstto_main_window_build_toolbar (RsttoMainWindow *window, GtkToolbar *toolbar)
-{
-    GtkToolItem *toolbar_item_zoom_fit, *toolbar_item_zoom_100,
-                *toolbar_item_zoom_out, *toolbar_item_zoom_in,
-                *toolbar_item_next_image, *toolbar_item_previous_image,
-                *toolbar_item_open_image, *toolbar_separator1, *toolbar_separator2;
-
-    toolbar_item_zoom_fit = gtk_tool_button_new_from_stock (GTK_STOCK_ZOOM_FIT);
-    gtk_toolbar_insert (toolbar, toolbar_item_zoom_fit, 0);
-    g_signal_connect (toolbar_item_zoom_fit,
-                     "clicked",
-                      G_CALLBACK(cb_rstto_main_window_zoom_fit), window);
-    toolbar_item_zoom_100 = gtk_tool_button_new_from_stock (GTK_STOCK_ZOOM_100);
-    gtk_toolbar_insert (toolbar, toolbar_item_zoom_100, 0);
-    g_signal_connect (toolbar_item_zoom_100,
-                     "clicked",
-                      G_CALLBACK(cb_rstto_main_window_zoom_100), window);
-    toolbar_item_zoom_in = gtk_tool_button_new_from_stock (GTK_STOCK_ZOOM_IN);
-    gtk_toolbar_insert (toolbar, toolbar_item_zoom_in, 0);
-    g_signal_connect (toolbar_item_zoom_in,
-                     "clicked",
-                      G_CALLBACK(cb_rstto_main_window_zoom_in), window);
-    toolbar_item_zoom_out = gtk_tool_button_new_from_stock (GTK_STOCK_ZOOM_OUT);
-    gtk_toolbar_insert (toolbar, toolbar_item_zoom_out, 0);
-    g_signal_connect (toolbar_item_zoom_out,
-                     "clicked",
-                      G_CALLBACK(cb_rstto_main_window_zoom_out), window);
-
-    toolbar_separator1 = gtk_separator_tool_item_new ();
-    gtk_toolbar_insert (toolbar, toolbar_separator1, 0);
-    gtk_tool_item_set_expand (toolbar_separator1, TRUE);
-    gtk_separator_tool_item_set_draw (GTK_SEPARATOR_TOOL_ITEM (toolbar_separator1), FALSE);
-
-/** Navigation */
-    toolbar_item_open_image = gtk_tool_button_new_from_stock (GTK_STOCK_OPEN);
-    gtk_toolbar_insert (toolbar, toolbar_item_open_image, 0);
-    g_signal_connect (toolbar_item_open_image,
-                     "clicked",
-                      G_CALLBACK(cb_rstto_main_window_open_image), window);
-
-    toolbar_separator2 = gtk_separator_tool_item_new ();
-    gtk_toolbar_insert (toolbar, toolbar_separator2, 1);
-
-    toolbar_item_previous_image = gtk_tool_button_new_from_stock (GTK_STOCK_GO_BACK);
-    gtk_tool_item_set_is_important (toolbar_item_previous_image, TRUE);
-    gtk_toolbar_insert (toolbar, toolbar_item_previous_image, 2);
-    g_signal_connect (toolbar_item_previous_image,
-                     "clicked",
-                      G_CALLBACK(cb_rstto_main_window_previous_image), window);
-
-    toolbar_item_next_image = gtk_tool_button_new_from_stock (GTK_STOCK_GO_FORWARD);
-    gtk_tool_item_set_is_important (toolbar_item_next_image, TRUE);
-    gtk_toolbar_insert (toolbar, toolbar_item_next_image, 3);
-    g_signal_connect (toolbar_item_next_image,
-                     "clicked",
-                      G_CALLBACK(cb_rstto_main_window_next_image), window);
-
-}
-
-static void
-rstto_main_window_build_menubar (RsttoMainWindow *window, GtkMenuBar *menubar)
-{
-    GtkWidget *file, *edit, *view, *go, *help;
-
-    file = gtk_menu_item_new_with_mnemonic(_("_File"));
-    edit = gtk_menu_item_new_with_mnemonic(_("_Edit"));
-    view = gtk_menu_item_new_with_mnemonic(_("_View"));
-    go   = gtk_menu_item_new_with_mnemonic(_("_Go"));
-    help = gtk_menu_item_new_with_mnemonic(_("_Help"));
-
-    gtk_menu_shell_append(GTK_MENU_SHELL(menubar), file);
-    gtk_menu_shell_append(GTK_MENU_SHELL(menubar), edit);
-    gtk_menu_shell_append(GTK_MENU_SHELL(menubar), view);
-    gtk_menu_shell_append(GTK_MENU_SHELL(menubar), go);
-    gtk_menu_shell_append(GTK_MENU_SHELL(menubar), help);
-}
-
-static void
 rstto_main_window_class_init(RsttoMainWindowClass *window_class)
 {
     GParamSpec *pspec;
@@ -275,6 +254,12 @@
     G_OBJECT_CLASS (parent_class)->dispose(object); 
 }
 
+/**
+ * rstto_main_window_new:
+ * @navigator:
+ *
+ * Return value:
+ */
 GtkWidget *
 rstto_main_window_new (RsttoNavigator *navigator)
 {
@@ -285,34 +270,35 @@
     return widget;
 }
 
-/**
- * cb_rstto_main_window_navigator_new_image:
- * @navigator:
- * @image:
- * @window:
- *
- */
 static void
-cb_rstto_main_window_navigator_new_image (RsttoNavigator *navigator, RsttoImage *image, RsttoMainWindow *window)
+rstto_main_window_navigator_iter_changed (RsttoMainWindow *window)
 {
     gchar *path, *basename, *title;
     GFile *file = NULL;
     RsttoImage *cur_image;
+    gint position, count;
+    RsttoNavigator *navigator = window->priv->props.navigator;
 
-    window->priv->iter = rstto_navigator_get_iter (window->priv->props.navigator);
-    cur_image = rstto_navigator_iter_get_image (window->priv->iter);
-    file = rstto_image_get_file (cur_image);
+    if (window->priv->props.navigator)
+    {
+        window->priv->iter = rstto_navigator_get_iter (window->priv->props.navigator);
+        position = rstto_navigator_iter_get_position (window->priv->iter);
+        count = rstto_navigator_get_n_images (navigator);
+        cur_image = rstto_navigator_iter_get_image (window->priv->iter);
+        file = rstto_image_get_file (cur_image);
 
-    path = g_file_get_path (file);
-    basename = g_path_get_basename (path);
+        path = g_file_get_path (file);
+        basename = g_path_get_basename (path);
 
-    title = g_strdup_printf ("%s - %s [%d/%d]", RISTRETTO_APP_TITLE,  basename, -1, -1);
+        title = g_strdup_printf ("%s - %s [%d/%d]", RISTRETTO_APP_TITLE,  basename, position, count);
 
-    gtk_window_set_title (GTK_WINDOW (window), title);
-    rstto_picture_viewer_set_image (RSTTO_PICTURE_VIEWER (window->priv->picture_viewer), image);
+        gtk_window_set_title (GTK_WINDOW (window), title);
+        rstto_picture_viewer_set_image (RSTTO_PICTURE_VIEWER (window->priv->picture_viewer), cur_image);
 
-    g_free (basename);
-    g_free (path);
+        g_free (basename);
+        g_free (path);
+    }
+
 }
 
 /**
@@ -444,27 +430,8 @@
 static void
 cb_rstto_main_window_next_image (GtkWidget *widget, RsttoMainWindow *window)
 {
-    GFile *file;
-    RsttoImage *image;
-    gchar *path, *basename, *title;
     rstto_navigator_iter_next (window->priv->iter);
-    image = rstto_navigator_iter_get_image (window->priv->iter);
-    file = rstto_image_get_file (image);
-
-    rstto_picture_viewer_set_image (RSTTO_PICTURE_VIEWER (window->priv->picture_viewer), image);
-
-    path = g_file_get_path (file);
-    basename = g_path_get_basename (path);
-
-    title = g_strdup_printf ("%s - %s [%d/%d]", RISTRETTO_APP_TITLE,  basename, -1, -1);
-
-    gtk_window_set_title (GTK_WINDOW (window), title);
-
-
-    g_object_unref (file);
-    g_free (title);
-    g_free (path);
-    g_free (basename);
+    rstto_main_window_navigator_iter_changed (window);
 }
 
 /**
@@ -477,27 +444,8 @@
 static void
 cb_rstto_main_window_previous_image (GtkWidget *widget, RsttoMainWindow *window)
 {
-    GFile *file;
-    RsttoImage *image;
-    gchar *path, *basename, *title;
     rstto_navigator_iter_previous (window->priv->iter);
-    image = rstto_navigator_iter_get_image (window->priv->iter);
-    file = rstto_image_get_file (image);
-
-    rstto_picture_viewer_set_image (RSTTO_PICTURE_VIEWER (window->priv->picture_viewer), image);
-
-    path = g_file_get_path (file);
-    basename = g_path_get_basename (path);
-
-    title = g_strdup_printf ("%s - %s [%d/%d]", RISTRETTO_APP_TITLE,  basename, -1, -1);
-
-    gtk_window_set_title (GTK_WINDOW (window), title);
-
-
-    g_object_unref (file);
-    g_free (title);
-    g_free (path);
-    g_free (basename);
+    rstto_main_window_navigator_iter_changed (window);
 }
 
 /**
@@ -510,4 +458,33 @@
 static void
 cb_rstto_main_window_open_image (GtkWidget *widget, RsttoMainWindow *window)
 {
+    g_debug ("%s", __FUNCTION__);
 }
+
+/**
+ * cb_rstto_main_window_quit:
+ * @widget:
+ * @window:
+ *
+ *
+ */
+static void
+cb_rstto_main_window_quit (GtkWidget *widget, RsttoMainWindow *window)
+{
+    gtk_widget_destroy (GTK_WIDGET (window));
+}
+
+
+/**
+ * cb_rstto_main_window_navigator_new_image:
+ * @navigator:
+ * @image:
+ * @window:
+ *
+ */
+static void
+cb_rstto_main_window_navigator_new_image (RsttoNavigator *navigator, RsttoImage *image, RsttoMainWindow *window)
+{
+    rstto_main_window_navigator_iter_changed (window);
+}
+

Added: ristretto/branches/ristretto-gio/src/main_window_ui.xml
===================================================================
--- ristretto/branches/ristretto-gio/src/main_window_ui.xml	                        (rev 0)
+++ ristretto/branches/ristretto-gio/src/main_window_ui.xml	2009-01-16 22:15:56 UTC (rev 6478)
@@ -0,0 +1,73 @@
+<ui>
+    <!--
+
+
+    -->
+    <menubar name="main-menu">
+        <menu action="file-menu">
+            <menuitem action="open"/>
+            <menuitem action="open-folder"/>
+            <menu action="open-recent-menu">
+                <placeholder name="placeholder-open-recent"/>
+            </menu>
+            <separator/>
+            <menuitem action="close"/>
+            <menuitem action="close-all"/>
+            <separator/>
+            <menuitem action="quit"/>
+        </menu>
+        <menu action="edit-menu">
+            <menuitem action="preferences"/>
+        </menu>
+        <menu action="view-menu">
+            <menuitem action="show-toolbar"/>
+            <menu action="thumbnailbar-menu">
+                <menuitem action="thumbnailbar-show-vertical"/>
+                <menuitem action="thumbnailbar-show-horizontal"/>
+                <menuitem action="thumbnailbar-hide"/>
+            </menu>
+            <separator/>
+            <menu action="zoom-menu">
+                <menuitem action="zoom-in"/>
+                <menuitem action="zoom-out"/>
+                <menuitem action="zoom-fit"/>
+                <menuitem action="zoom-100"/>
+            </menu>
+            <menu action="rotation-menu">
+                <menuitem action="rotate-cw"/>
+                <menuitem action="rotate-ccw"/>
+            </menu>
+            <separator/>
+            <menuitem action="fullscreen"/>
+            <menuitem action="set-as-wallpaper"/>
+        </menu>
+        <menu action="go-menu">
+            <menuitem action="back"/>
+            <menuitem action="forward"/>
+            <menuitem action="first"/>
+            <menuitem action="last"/>
+            <separator/>
+            <menuitem action="play"/>
+        </menu>
+        <menu action="help-menu">
+            <menuitem action="contents"/>
+            <menuitem action="about"/>
+        </menu>
+    </menubar>
+
+    <!--
+
+
+    -->
+    <toolbar name="main-toolbar">
+        <toolitem action="open"/>
+        <separator />
+        <toolitem action="back"/>
+        <toolitem action="forward"/>
+        <separator />
+        <toolitem action="zoom-in"/>
+        <toolitem action="zoom-out"/>
+        <toolitem action="zoom-100"/>
+        <toolitem action="zoom-fit"/>
+    </toolbar>
+</ui>

Modified: ristretto/branches/ristretto-gio/src/navigator.c
===================================================================
--- ristretto/branches/ristretto-gio/src/navigator.c	2009-01-16 21:05:30 UTC (rev 6477)
+++ ristretto/branches/ristretto-gio/src/navigator.c	2009-01-16 22:15:56 UTC (rev 6478)
@@ -46,11 +46,13 @@
 struct _RsttoNavigatorIter
 {
     GList *data;
+    RsttoNavigator *navigator;
 };
 
 struct _RsttoNavigatorPriv
 {
     GList *images;
+    gint n_images;
 };
 
 static gint rstto_navigator_signals[RSTTO_NAVIGATOR_SIGNAL_COUNT];
@@ -131,20 +133,34 @@
     RsttoImage *image = rstto_image_new (file);
 
     navigator->priv->images = g_list_prepend (navigator->priv->images, image);
+    navigator->priv->n_images++;
 
     g_signal_emit (G_OBJECT (navigator), rstto_navigator_signals[RSTTO_NAVIGATOR_SIGNAL_NEW_IMAGE], 0, image, NULL);
 }
 
+gint
+rstto_navigator_get_n_images (RsttoNavigator *navigator)
+{
+    return g_list_length (navigator->priv->images);
+}
+
 RsttoNavigatorIter *
 rstto_navigator_get_iter (RsttoNavigator *navigator)
 {
     RsttoNavigatorIter *iter = g_new0 (RsttoNavigatorIter, 1);
 
     iter->data = navigator->priv->images;
+    iter->navigator = navigator;
 
     return iter;
 }
 
+gint
+rstto_navigator_iter_get_position (RsttoNavigatorIter *iter)
+{
+    return g_list_position (iter->navigator->priv->images, iter->data)+1;
+}
+
 gboolean
 rstto_navigator_iter_next (RsttoNavigatorIter *iter)
 {

Modified: ristretto/branches/ristretto-gio/src/navigator.h
===================================================================
--- ristretto/branches/ristretto-gio/src/navigator.h	2009-01-16 21:05:30 UTC (rev 6477)
+++ ristretto/branches/ristretto-gio/src/navigator.h	2009-01-16 22:15:56 UTC (rev 6478)
@@ -1,4 +1,6 @@
 /*
+ *  Copyright (c) 2009 Stephan Arts <stephan at xfce.org>
+ *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
  *  the Free Software Foundation; either version 2 of the License, or
@@ -60,14 +62,17 @@
 GType           rstto_navigator_get_type ();
 RsttoNavigator *rstto_navigator_new ();
 
+gint rstto_navigator_get_n_images (RsttoNavigator *navigator);
 void rstto_navigator_add_file (RsttoNavigator *navigator, GFile *file);
+
 RsttoNavigatorIter *rstto_navigator_get_iter (RsttoNavigator *navigator);
 
 
 /** Iter functions */
 RsttoImage *rstto_navigator_iter_get_image (RsttoNavigatorIter *iter);
-gboolean rstto_navigator_iter_previous (RsttoNavigatorIter *iter);
-gboolean rstto_navigator_iter_next (RsttoNavigatorIter *iter);
+gboolean    rstto_navigator_iter_previous (RsttoNavigatorIter *iter);
+gboolean    rstto_navigator_iter_next (RsttoNavigatorIter *iter);
+gint        rstto_navigator_iter_get_position (RsttoNavigatorIter *iter);
 
 
 G_END_DECLS




More information about the Goodies-commits mailing list