Add support for reading and writing SPV files.
[pspp] / src / ui / gui / psppire.c
index 20f5130e81895d00bff35c5208ef781a8ea1d697..2d5c185e018edb41ac603daec7d60f883b1fc702 100644 (file)
@@ -39,6 +39,7 @@
 #include "output/driver.h"
 #include "output/journal.h"
 #include "output/message-item.h"
+#include "output/spv/spv.h"
 
 #include "ui/gui/dict-display.h"
 #include "ui/gui/executor.h"
@@ -145,31 +146,7 @@ struct icon_size
   size_t n_sizes;  /* The number of items in the array below. */
   const GtkIconSize *usage; /* An array determining for what the icon set is used */
 };
-
-static const GtkIconSize menus[] = {GTK_ICON_SIZE_MENU};
-static const GtkIconSize large_toolbar[] = {GTK_ICON_SIZE_LARGE_TOOLBAR};
-static const GtkIconSize small_toolbar[] = {GTK_ICON_SIZE_SMALL_TOOLBAR};
-
-
-/* We currently have three icon sets viz: 16x16, 24x24 and 32x32
-   We use the 16x16 for menus, the 32x32 for the large_toolbars and 
-   the 24x24 for small_toolbars.
-
-   The order of this array is pertinent.  The icons in the sets occuring
-   earlier in the array will be used a the wildcard (default) icon size,
-   if such an icon exists.
-*/
-static const struct icon_size sizemap[] = 
-  {
-    {24,  sizeof (small_toolbar) / sizeof (GtkIconSize), small_toolbar},
-    {16,  sizeof (menus) / sizeof (GtkIconSize), menus},
-    {32,  sizeof (large_toolbar) / sizeof (GtkIconSize), large_toolbar}
-  };
-
-
-
 \f
-
 static void
 handle_msg (const struct msg *m_, void *lexer_)
 {
@@ -184,6 +161,7 @@ handle_msg (const struct msg *m_, void *lexer_)
       m.first_column = lex_get_first_column (lexer, 0);
       m.last_column = lex_get_last_column (lexer, 0);
     }
+  m.command_name = CONST_CAST (char *, output_get_command_name ());
 
   message_item_submit (message_item_create (&m));
 }
@@ -199,13 +177,13 @@ GtkWindow *
 psppire_preload_file (const gchar *file)
 {
   const gchar *local_encoding = "UTF-8";
-  
+
   struct file_handle *fh = fh_create_file (NULL,
                                           file,
                                           local_encoding,
                                           fh_default_properties ());
   const char *filename = fh_get_file_name (fh);
-  
+
   int retval = any_reader_detect (fh, NULL);
 
   GtkWindow *w = NULL;
@@ -215,8 +193,15 @@ psppire_preload_file (const gchar *file)
     w = open_data_window (NULL, filename, NULL, NULL);
   else if (retval == 0)
     {
-      create_data_window ();
-      w = open_syntax_window (filename, NULL);
+      char *error = spv_detect (filename);
+      if (!error)
+        read_spv_file (filename);
+      else
+        {
+          free (error);
+          create_data_window ();
+          open_syntax_window (filename, NULL);
+        }
     }
 
   fh_unref (fh);