diff --git a/src/inkview.cpp b/src/inkview.cpp
index bd1ef6e31cfde05b6011de31633c8e4a4d6374b2..95af5b73432b4596d485d4ae6ab720978e05b965 100644 (file)
--- a/src/inkview.cpp
+++ b/src/inkview.cpp
*
* Copyright (C) 1999-2002 authors
* Copyright (C) 2001-2002 Ximian, Inc.
- *
+ *
* Inkscape authors:
* Johan Ceuppens
- *
+ *
* Copyright (C) 2004 Inkscape authors
- *
+ *
* Released under GNU GPL, read the file 'COPYING' for more information
*/
# include "config.h"
#endif
+#ifdef HAVE_GETOPT_H
+#include <getopt.h>
+#endif
+
#include <string.h>
#include <sys/stat.h>
#include <locale.h>
+#include <glib/gmem.h>
#include <libnr/nr-macros.h>
+// #include <stropts.h>
+
#include <libxml/tree.h>
#include <gdk/gdkkeysyms.h>
#include <gtk/gtkmain.h>
#define bind_textdomain_codeset(p,c)
#endif
+extern char *optarg;
+extern int optind, opterr;
+
struct SPSlideShow {
char **slides;
int size;
GtkWidget *view;
GtkWindow *window;
bool fullscreen;
+ int timer;
};
static GtkWidget *sp_svgview_control_show (struct SPSlideShow *ss);
if (argc == 1) {
usage();
}
-
- struct SPSlideShow ss;
-
+
+ struct SPSlideShow ss;
+
+ int option,
+ num_parsed_options = 0;
+
+ // the list of arguments is in the net line
+ while ((option = getopt(argc, (char* const* )argv, "t:")) != -1)
+ {
+ switch(option) {
+ case 't': // for timer
+ // fprintf(stderr, "set timer arg %s\n", optarg );
+ ss.timer = atoi(optarg);
+ num_parsed_options += 2; // 2 because of flag + option
+ break;
+ case '?':
+ default:
+ usage();
+ }
+ }
+
GtkWidget *w;
int i;
textdomain (GETTEXT_PACKAGE);
LIBXML_TEST_VERSION
-
+
Inkscape::GC::init();
Inkscape::Preferences::loadSkeleton();
ss.size = 32;
ss.length = 0;
ss.current = 0;
- ss.slides = nr_new (char *, ss.size);
+ ss.slides = g_new (char *, ss.size);
ss.current = 0;
ss.doc = NULL;
ss.view = NULL;
inkscape = (Inkscape::Application *)g_object_new (SP_TYPE_INKSCAPE, NULL);
Inkscape::Preferences::load();
-
- for (i = 1; i < argc; i++) {
+
+ // starting at where the commandline options stopped parsing because
+ // we want all the files to be in the list
+ for (i = num_parsed_options + 1 ; i < argc; i++) {
struct stat st;
- if (stat (argv[i], &st)
- || !S_ISREG (st.st_mode)
+ if (stat (argv[i], &st)
+ || !S_ISREG (st.st_mode)
|| (st.st_size < 64)) {
fprintf(stderr, "could not open file %s\n", argv[i]);
} else {
if (ss.length >= ss.size) {
/* Expand */
ss.size <<= 1;
- ss.slides = nr_renew (ss.slides, char *, ss.size);
+ ss.slides = g_renew (char *, ss.slides, ss.size);
}
-
- ss.doc = sp_document_new_from_mem ((const gchar *)gba->data,
+
+ ss.doc = sp_document_new_from_mem ((const gchar *)gba->data,
gba->len,
TRUE);
gchar *last_filename = jar_file_reader.get_last_filename();
if (ss.length >= ss.size) {
/* Expand */
ss.size <<= 1;
- ss.slides = nr_renew (ss.slides, char *, ss.size);
-
+ ss.slides = g_renew (char *, ss.slides, ss.size);
+
}
-
+
ss.slides[ss.length++] = strdup (argv[i]);
ss.doc = sp_document_new (ss.slides[ss.current], TRUE, false);
-
+
if (!ss.doc && ++ss.current >= ss.length) {
/* No loadable documents */
return 1;
#endif
}
}
-
+
if(!ss.doc)
return 1; /* none of the slides loadable */
t = gtk_table_new (1, 4, TRUE);
gtk_container_add ((GtkContainer *) ctrlwin, t);
b = gtk_button_new_from_stock (GTK_STOCK_GOTO_FIRST);
- gtk_table_attach ((GtkTable *) t, b, 0, 1, 0, 1,
- (GtkAttachOptions)(GTK_EXPAND | GTK_FILL),
- (GtkAttachOptions)(GTK_EXPAND | GTK_FILL),
+ gtk_table_attach ((GtkTable *) t, b, 0, 1, 0, 1,
+ (GtkAttachOptions)(GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions)(GTK_EXPAND | GTK_FILL),
0, 0);
- g_signal_connect ((GObject *) b, "clicked", (GCallback) sp_svgview_goto_first_cb, ss);
+ g_signal_connect ((GObject *) b, "clicked", (GCallback) sp_svgview_goto_first_cb, ss);
b = gtk_button_new_from_stock (GTK_STOCK_GO_BACK);
gtk_table_attach ((GtkTable *) t, b, 1, 2, 0, 1,
- (GtkAttachOptions)(GTK_EXPAND | GTK_FILL),
- (GtkAttachOptions)(GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions)(GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions)(GTK_EXPAND | GTK_FILL),
0, 0);
- g_signal_connect (G_OBJECT(b), "clicked", (GCallback) sp_svgview_show_prev_cb, ss);
+ g_signal_connect (G_OBJECT(b), "clicked", (GCallback) sp_svgview_show_prev_cb, ss);
b = gtk_button_new_from_stock (GTK_STOCK_GO_FORWARD);
gtk_table_attach ((GtkTable *) t, b, 2, 3, 0, 1,
- (GtkAttachOptions)(GTK_EXPAND | GTK_FILL),
- (GtkAttachOptions)(GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions)(GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions)(GTK_EXPAND | GTK_FILL),
0, 0);
- g_signal_connect (G_OBJECT(b), "clicked", (GCallback) sp_svgview_show_next_cb, ss);
+ g_signal_connect (G_OBJECT(b), "clicked", (GCallback) sp_svgview_show_next_cb, ss);
b = gtk_button_new_from_stock (GTK_STOCK_GOTO_LAST);
gtk_table_attach ((GtkTable *) t, b, 3, 4, 0, 1,
- (GtkAttachOptions)(GTK_EXPAND | GTK_FILL),
- (GtkAttachOptions)(GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions)(GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions)(GTK_EXPAND | GTK_FILL),
0, 0);
- g_signal_connect (G_OBJECT(b), "clicked", (GCallback) sp_svgview_goto_last_cb, ss);
+ g_signal_connect (G_OBJECT(b), "clicked", (GCallback) sp_svgview_goto_last_cb, ss);
gtk_widget_show_all (ctrlwin);
} else {
gtk_window_present ((GtkWindow *) ctrlwin);
return NULL;
}
-static int
+static int
sp_svgview_show_next_cb (GtkWidget *widget, void *data)
{
sp_svgview_show_next(static_cast<struct SPSlideShow *>(data));
return FALSE;
}
-static int
+static int
sp_svgview_show_prev_cb (GtkWidget *widget, void *data)
{
sp_svgview_show_prev(static_cast<struct SPSlideShow *>(data));
return FALSE;
}
-static int
+static int
sp_svgview_goto_first_cb (GtkWidget *widget, void *data)
{
sp_svgview_goto_first(static_cast<struct SPSlideShow *>(data));
return FALSE;
}
-static int
+static int
sp_svgview_goto_last_cb (GtkWidget *widget, void *data)
{
sp_svgview_goto_last(static_cast<struct SPSlideShow *>(data));
static void usage()
{
- fprintf(stderr,
- "Usage: inkview [FILES ...]\n"
+ fprintf(stderr,
+ "Usage: inkview [OPTIONS...] [FILES ...]\n"
"\twhere FILES are SVG (.svg or .svgz)"
#ifdef WITH_INKJAR
- "or archives of SVGs (.sxw, .jar)"
+ " or archives of SVGs (.sxw, .jar)"
#endif
+ "\n\n"
+ "Available options:\n"
+ "\t-t\t\tTimer for automatically changing slides in seconds.\n"
"\n");
exit(1);
}