evince r3498 - in trunk: . thumbnailer



Author: carlosgc
Date: Fri Feb 27 12:33:14 2009
New Revision: 3498
URL: http://svn.gnome.org/viewvc/evince?rev=3498&view=rev

Log:
2009-02-27  Carlos Garcia Campos  <carlosgc gnome org>

	* thumbnailer/evince-thumbnailer.c: (print_usage), (main):

	Use GOption in thumbnailer.

Modified:
   trunk/ChangeLog
   trunk/thumbnailer/evince-thumbnailer.c

Modified: trunk/thumbnailer/evince-thumbnailer.c
==============================================================================
--- trunk/thumbnailer/evince-thumbnailer.c	(original)
+++ trunk/thumbnailer/evince-thumbnailer.c	Fri Feb 27 12:33:14 2009
@@ -27,6 +27,15 @@
 
 #define THUMBNAIL_SIZE 128
 
+static gint size = THUMBNAIL_SIZE;
+static const gchar **file_arguments;
+
+static const GOptionEntry goption_options[] = {
+	{ "size", 's', 0, G_OPTION_ARG_INT, &size, NULL, "SIZE" },
+	{ G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &file_arguments, NULL, "<input> <ouput>" },
+	{ NULL }
+};
+
 struct AsyncData {
 	EvDocument  *document;
 	const gchar *output;
@@ -127,37 +136,58 @@
 	return NULL;
 }
 
+static void
+print_usage (GOptionContext *context)
+{
+	gchar *help;
+
+	help = g_option_context_get_help (context, TRUE, NULL);
+	g_print ("%s", help);
+	g_free (help);
+}
+
 int
 main (int argc, char *argv[])
 {
-	EvDocument *document;
-	const char *input;
-	const char *output;
-	int         size;
-	char       *uri;
-	GFile      *file;
-
-	if (argc <= 2 || argc > 5 || strcmp (argv[1], "-h") == 0 ||
-	    strcmp (argv[1], "--help") == 0) {
-		g_print ("Usage: %s [-s <size>] <input> <output>\n", argv[0]);
+	EvDocument     *document;
+	GOptionContext *context;
+	const char     *input;
+	const char     *output;
+	char           *uri;
+	GFile          *file;
+	GError         *error = NULL;
+
+	context = g_option_context_new ("- GNOME Document Thumbnailer");
+	g_option_context_add_main_entries (context, goption_options, NULL);
+
+	if (!g_option_context_parse (context, &argc, &argv, &error)) {
+		g_printerr ("%s\n", error->message);
+		g_error_free (error);
+		print_usage (context);
+		g_option_context_free (context);
+
 		return -1;
 	}
 
-	if (!strcmp (argv[1], "-s")) {
-		input = argv[3];
-		output = argv[4];
-		size = atoi (argv[2]);
-	} else {
-		input = argv[1];
-		output = argv[2];
-		size = THUMBNAIL_SIZE;
+	input = file_arguments ? file_arguments[0] : NULL;
+	output = input ? file_arguments[1] : NULL;
+	if (!input || !output) {
+		print_usage (context);
+		g_option_context_free (context);
+
+		return -1;
 	}
+	
+	g_option_context_free (context);
 
 	if (size < 40) {
 		g_print ("Size cannot be smaller than 40 pixels\n");
 		return -1;
 	}
 
+	input = file_arguments[0];
+	output = file_arguments[1];
+
 	g_type_init ();
 
 	if (!g_thread_supported ())



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]