Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--thumbnailer/evince-thumbnailer.c66
2 files changed, 54 insertions, 18 deletions
diff --git a/ChangeLog b/ChangeLog
index 8ca8341..67e96ba 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2009-02-27 Carlos Garcia Campos <carlosgc@gnome.org>
+
+ * thumbnailer/evince-thumbnailer.c: (print_usage), (main):
+
+ Use GOption in thumbnailer.
+
2009-02-22 Carlos Garcia Campos <carlosgc@gnome.org>
* backend/pdf/ev-poppler.cc: (pdf_document_save),
diff --git a/thumbnailer/evince-thumbnailer.c b/thumbnailer/evince-thumbnailer.c
index 217210b..da0f5d4 100644
--- a/thumbnailer/evince-thumbnailer.c
+++ b/thumbnailer/evince-thumbnailer.c
@@ -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 @@ evince_thumbnail_pngenc_get_async (struct AsyncData *data)
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 ())