summaryrefslogtreecommitdiffstats
path: root/src/slideshow.cpp
diff options
context:
space:
mode:
authorMenTaLguY <mental@rydia.net>2006-01-16 02:36:01 +0000
committermental <mental@users.sourceforge.net>2006-01-16 02:36:01 +0000
commit179fa413b047bede6e32109e2ce82437c5fb8d34 (patch)
treea5a6ac2c1708bd02288fbd8edb2ff500ff2e0916 /src/slideshow.cpp
downloadinkscape-179fa413b047bede6e32109e2ce82437c5fb8d34.tar.gz
inkscape-179fa413b047bede6e32109e2ce82437c5fb8d34.zip
moving trunk for module inkscape
(bzr r1)
Diffstat (limited to 'src/slideshow.cpp')
-rw-r--r--src/slideshow.cpp105
1 files changed, 105 insertions, 0 deletions
diff --git a/src/slideshow.cpp b/src/slideshow.cpp
new file mode 100644
index 000000000..d2bb39790
--- /dev/null
+++ b/src/slideshow.cpp
@@ -0,0 +1,105 @@
+#define __SLIDESHOW_C__
+
+/*
+ * Help/About window
+ *
+ * Authors:
+ * Lauris Kaplinski <lauris@kaplinski.com>
+ *
+ * Copyright (C) 1999-2003 authors
+ * Copyright (C) 2000-2002 Ximian, Inc.
+ *
+ * Released under GNU GPL, read the file 'COPYING' for more information
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <gdk/gdkkeysyms.h>
+#include <gtk/gtkwindow.h>
+
+#include <glibmm/i18n.h>
+#include "document.h"
+#include "svg-view-widget.h"
+#include "svg-view.h"
+
+static gint
+sp_slideshow_event (SPViewWidget *vw, GdkEvent *event, GtkWidget *window)
+{
+ GSList *slides;
+ const gchar *fname, *nname;
+ int idx;
+
+ slides = (GSList*)g_object_get_data (G_OBJECT (window), "slides");
+ fname = (const gchar*)g_object_get_data (G_OBJECT (window), "current");
+ idx = g_slist_index (slides, fname);
+
+ switch (event->type) {
+ case GDK_KEY_PRESS:
+ switch (event->key.keyval) {
+ case GDK_BackSpace:
+ case GDK_Delete:
+ case GDK_Left:
+ idx -= 1;
+ break;
+ case GDK_Escape:
+ gtk_widget_destroy (window);
+ return TRUE;
+ break;
+ default:
+ idx += 1;
+ break;
+ }
+ break;
+ case GDK_BUTTON_PRESS:
+ idx += 1;
+ break;
+ default:
+ break;
+ }
+
+ nname = (const gchar*)g_slist_nth_data (slides, idx);
+ g_print ("Old %s new %s\n", fname, nname);
+
+ if (nname && (nname != fname)) {
+ SPDocument *doc;
+ g_print ("Trying to load\n");
+ doc = sp_document_new (nname, TRUE);
+ if (doc) {
+ reinterpret_cast<SPSVGView*>(SP_VIEW_WIDGET_VIEW (vw))->setDocument (doc);
+ sp_document_unref (doc);
+ }
+ g_object_set_data (G_OBJECT (window), "current", (gpointer) nname);
+ }
+
+ return TRUE;
+}
+
+GtkWidget *
+sp_slideshow_new (const GSList *files)
+{
+ SPDocument *doc;
+ GtkWidget *w, *v;
+
+ doc = sp_document_new ((const gchar*)files->data, TRUE);
+ g_return_val_if_fail (doc != NULL, NULL);
+
+ w = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_title (GTK_WINDOW (w), _("Inkscape slideshow"));
+ gtk_window_set_default_size (GTK_WINDOW (w), 480, 360);
+ gtk_window_set_policy (GTK_WINDOW (w), TRUE, TRUE, FALSE);
+
+ v = sp_svg_view_widget_new (doc);
+ sp_svg_view_widget_set_resize (SP_SVG_VIEW_WIDGET (v), FALSE, sp_document_width (doc), sp_document_height (doc));
+ sp_document_unref (doc);
+ gtk_widget_show (v);
+ gtk_container_add (GTK_CONTAINER (w), v);
+
+ g_object_set_data (G_OBJECT (w), "slides", (gpointer) files);
+ g_object_set_data (G_OBJECT (w), "current", files->data);
+
+ g_signal_connect (G_OBJECT (v), "event", G_CALLBACK (sp_slideshow_event), w);
+
+ return w;
+}