Delayed calling gtk_init until after arguments have been parsed, so that
[pspp-builds.git] / src / ui / gui / psppire.c
index 6655a6ad5f40c68708dd17eddb8f610e89e220f6..fe2bf09e402c86d998113e4f297a3d651b3b0136 100644 (file)
@@ -29,6 +29,7 @@
 #include <data/file-handle-def.h>
 #include <data/format.h>
 #include <data/storage-stream.h>
+#include <data/case-source.h>
 #include <data/settings.h>
 #include <data/file-name.h>
 #include <data/procedure.h>
@@ -78,9 +79,14 @@ replace_flexifile (struct case_source *s)
     psppire_case_file_replace_flexifile (the_data_store->case_file,
                                         (struct flexifile *) flexifile_create (0));
   else
-    psppire_case_file_replace_flexifile (the_data_store->case_file,
-                                        (struct flexifile *)
-                                        storage_source_get_casefile (s));
+    {
+      if ( ! case_source_is_class (s, &storage_source_class))
+       return ;
+
+      psppire_case_file_replace_flexifile (the_data_store->case_file,
+                                          (struct flexifile *)
+                                          storage_source_get_casefile (s));
+    }
 }
 
 
@@ -90,12 +96,16 @@ main (int argc, char *argv[])
   struct casefile_factory *factory;
   PsppireDict *dictionary = 0;
 
-
   gchar *filename=0;
   GError *err = 0;
   gchar *vers;
 
-  gtk_init (&argc, &argv);
+  if ( ! gtk_parse_args (&argc, &argv) ) 
+    {
+      perror ("Error parsing arguments");
+      exit (1);
+    }
+
   if ( (vers = gtk_check_version (GTK_MAJOR_VERSION,
                                 GTK_MINOR_VERSION,
                                 GTK_MICRO_VERSION)) )
@@ -140,6 +150,8 @@ main (int argc, char *argv[])
 
   bind_textdomain_codeset (PACKAGE, "UTF-8");
 
+  gdk_init (&argc, &argv);
+
   /* Create the model for the var_sheet */
   the_var_store = psppire_var_store_new (dictionary);
 
@@ -259,5 +271,3 @@ create_icon_factory (void)
   gtk_icon_factory_add_default (factory);
 }
 
-
-