Refactor code from psppire.c
authorJohn Darrington <john@darrington.wattle.id.au>
Mon, 23 Feb 2009 03:09:13 +0000 (12:09 +0900)
committerJohn Darrington <john@darrington.wattle.id.au>
Mon, 23 Feb 2009 03:09:13 +0000 (12:09 +0900)
Instead of using custom code for loading files given
on the command line, instead use code from psppire-data-window.c

src/ui/gui/psppire-data-window.c
src/ui/gui/psppire-data-window.h
src/ui/gui/psppire.c

index 40e41dccca4bc544dbc51d56d4e326d264170d19..e2fa79692c112534e756b622601b02af6e2fa848 100644 (file)
@@ -319,8 +319,9 @@ add_most_recent (const char *file_name)
 #endif
 }
 
-static void
-open_data_file (const gchar *file_name, PsppireDataWindow *de)
+void
+psppire_data_window_load_file (PsppireDataWindow *de,
+                                   const gchar *file_name)
 {
   struct getl_interface *sss;
   struct string filename;
@@ -389,7 +390,7 @@ open_data_dialog (GtkAction *action, PsppireDataWindow *de)
        de->file_name =
          gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
 
-       open_data_file (de->file_name, de);
+       psppire_data_window_load_file (de, de->file_name);
       }
       break;
     default:
@@ -920,7 +921,7 @@ on_recent_data_select (GtkMenuShell *menushell,   gpointer user_data)
 
   g_free (uri);
 
-  open_data_file (file, de);
+  psppire_data_window_load_file (de, file);
 
   g_free (file);
 }
index 77687dc9c53a2098c68f300243a93fbb4fa1bc54..68b77817cc411c4e29e4887d0689b0686913b576 100644 (file)
@@ -113,6 +113,7 @@ struct _PsppireDataWindowClass
 
 GType      psppire_data_window_get_type        (void);
 GtkWidget* psppire_data_window_new             (void);
+void       psppire_data_window_load_file (PsppireDataWindow *, const gchar *);
 
 
 G_END_DECLS
index b87a29f2a48db9d12c692e9a126b66e2f199f2f9..737b965c116b35d5ac7c214ca465d341c00e3463 100644 (file)
@@ -257,46 +257,8 @@ parse_non_options (int key, char *arg, struct argp_state *state)
     {
     case ARGP_KEY_ARG:
       {
-       struct string syntax;
-       FILE *fp = fopen (arg, "r");
-       if (NULL == fp)
-         {
-           const int errnum = errno;
-           fprintf (state->err_stream, _("Cannot open %s: %s.\n"),
-                    arg, strerror (errnum));
-           return 0;
-         }
-       if ( sfm_detect (fp))
-         {
-           ds_init_cstr (&syntax, "GET FILE=");
-           goto close;
-         }
-       rewind (fp);
-       if (pfm_detect (fp))
-         {
-           ds_init_cstr (&syntax, "IMPORT FILE=");
-           goto close;
-         }
-
-       fclose (fp);
-       msg (ME, _("%s is neither a system nor portable file"), arg);
-       break;
-
-      close:
-       fclose (fp);
-
-       syntax_gen_string (&syntax, ss_cstr (arg));
-       ds_put_cstr (&syntax, ".");
-
-       getl_append_source (ss,
-                           create_syntax_string_source (ds_cstr (&syntax)),
-                           GETL_BATCH,
-                           ERRMODE_CONTINUE);
-
-       ds_destroy (&syntax);
-
-       psppire_window_set_filename (PSPPIRE_WINDOW (the_data_window), arg);
-
+       psppire_data_window_load_file (PSPPIRE_DATA_WINDOW (the_data_window),
+                                      arg);
        break;
       }
     default: