[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