slideshow.cpp revision 6b15695578f07a3f72c4c9475c1a261a3021472a
#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;
}