Use new sheet in var-sheet
authorJohn Darrington <john@darrington.wattle.id.au>
Sat, 13 Feb 2016 16:52:52 +0000 (17:52 +0100)
committerJohn Darrington <john@darrington.wattle.id.au>
Mon, 22 Feb 2016 12:47:46 +0000 (13:47 +0100)
src/ui/gui/automake.mk
src/ui/gui/psppire-data-editor.c
src/ui/gui/psppire-dict.c
src/ui/gui/psppire-dict.h
src/ui/gui/psppire-import-assistant.c
src/ui/gui/psppire-var-sheet-header.c [new file with mode: 0644]
src/ui/gui/psppire-var-sheet-header.h [new file with mode: 0644]
src/ui/gui/psppire-var-sheet.c

index 4d0e6ff4a33801b2c6fa89b4105f91d04a0b325a..fb4c2d65cea4127e4d3a75e9446d3061e61f0312 100644 (file)
@@ -302,8 +302,9 @@ src_ui_gui_psppire_SOURCES = \
        src/ui/gui/psppire-value-entry.h \
        src/ui/gui/psppire-var-ptr.c \
        src/ui/gui/psppire-var-ptr.h \
-       src/ui/gui/psppire-var-sheet.c \
        src/ui/gui/psppire-var-sheet.h \
+       src/ui/gui/psppire-var-sheet-header.h \
+       src/ui/gui/psppire-var-sheet-header.c \
        src/ui/gui/psppire-vbuttonbox.h \
        src/ui/gui/psppire-window.c \
        src/ui/gui/psppire-window.h \
index 9c8f3aa93fad4204ad5c4d50bb79d469d2181737..14f2076f359de9d3b8bd42af7826909b50c61e42 100644 (file)
@@ -31,6 +31,7 @@
 #include "ui/gui/psppire-value-entry.h"
 #include "ui/gui/psppire-var-sheet.h"
 #include "ui/gui/psppire-conf.h"
+#include "ui/gui/psppire-var-sheet-header.h"
 
 #include "ui/gui/efficient-sheet/jmd-sheet.h"
 
@@ -122,10 +123,6 @@ enum
 static void
 psppire_data_editor_refresh_model (PsppireDataEditor *de)
 {
-  PsppireVarSheet *var_sheet = PSPPIRE_VAR_SHEET (de->var_sheet);
-    int i;
-
-  psppire_var_sheet_set_dictionary (var_sheet, de->dict);
 }
 
 static void
@@ -136,8 +133,6 @@ psppire_data_editor_set_property (GObject         *object,
 {
   PsppireDataEditor *de = PSPPIRE_DATA_EDITOR (object);
 
-  int i;
-
   switch (prop_id)
     {
     case PROP_SPLIT_WINDOW:
@@ -170,9 +165,8 @@ psppire_data_editor_set_property (GObject         *object,
       g_object_ref (de->dict);
 
       g_object_set (de->data_sheet, "hmodel", de->dict, NULL);
+      g_object_set (de->var_sheet, "data-model", de->dict, NULL);
 
-      psppire_var_sheet_set_dictionary (PSPPIRE_VAR_SHEET (de->var_sheet),
-                                        de->dict);
       break;
     case PROP_VALUE_LABELS:
       break;
@@ -306,19 +300,6 @@ psppire_data_editor_class_init (PsppireDataEditorClass *klass)
                                    ui_manager_spec);
 }
 
-static gboolean
-on_data_sheet_var_double_clicked (GtkWidget *data_sheet,
-                                  gint dict_index,
-                                  PsppireDataEditor *de)
-{
-  gtk_notebook_set_current_page (GTK_NOTEBOOK (de),
-                                 PSPPIRE_DATA_EDITOR_VARIABLE_VIEW);
-
-  psppire_var_sheet_goto_variable (PSPPIRE_VAR_SHEET (de->var_sheet),
-                                   dict_index);
-
-  return TRUE;
-}
 
 static gboolean
 on_var_sheet_var_double_clicked (PsppireVarSheet *var_sheet, gint dict_index,
@@ -344,27 +325,10 @@ on_datum_entry_activate (PsppireValueEntry *entry, PsppireDataEditor *de)
 {
 }
 
-static void
-on_data_sheet_selection_changed (PsppSheetSelection *selection,
-                                 PsppireDataEditor *de)
-{
-  /* In a split view, ensure that only a single data sheet has a nonempty
-     selection.  */
-  if (de->split
-      && pspp_sheet_selection_count_selected_rows (selection)
-      && pspp_sheet_selection_count_selected_columns (selection))
-    {
-    }
-
-  refresh_entry (de);
-}
-
 
 static void
 disconnect_data_sheets (PsppireDataEditor *de)
 {
-  int i;
-
 }
 
 
@@ -373,7 +337,6 @@ static void set_font_recursively (GtkWidget *w, gpointer data);
 static void
 psppire_data_editor_init (PsppireDataEditor *de)
 {
-  GtkWidget *var_sheet_scroller;
   GtkWidget *hbox;
   gchar *fontname = NULL;
 
@@ -396,10 +359,9 @@ psppire_data_editor_init (PsppireDataEditor *de)
   gtk_box_pack_start (GTK_BOX (hbox), de->datum_entry, TRUE, TRUE, 0);
 
   de->split = FALSE;
-  de->data_sheet = g_object_new (JMD_TYPE_SHEET,
-                                NULL);
-  GtkWidget *button = jmd_sheet_get_button (JMD_SHEET (de->data_sheet));
-  gtk_button_set_label (GTK_BUTTON (button), _("Case"));
+  de->data_sheet = g_object_new (JMD_TYPE_SHEET, NULL);
+  GtkWidget *data_button = jmd_sheet_get_button (JMD_SHEET (de->data_sheet));
+  gtk_button_set_label (GTK_BUTTON (data_button), _("Case"));
   de->vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
   gtk_box_pack_start (GTK_BOX (de->vbox), hbox, FALSE, FALSE, 0);
   gtk_box_pack_start (GTK_BOX (de->vbox), de->data_sheet, TRUE, TRUE, 0);
@@ -409,19 +371,21 @@ psppire_data_editor_init (PsppireDataEditor *de)
 
   gtk_widget_show_all (de->vbox);
 
-  de->var_sheet = GTK_WIDGET (psppire_var_sheet_new ());
+  de->var_sheet = g_object_new (JMD_TYPE_SHEET, NULL);
 
-  pspp_sheet_view_set_grid_lines (PSPP_SHEET_VIEW (de->var_sheet),
-                                  GTK_TREE_VIEW_GRID_LINES_BOTH);
-  var_sheet_scroller = gtk_scrolled_window_new (NULL, NULL);
-  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (var_sheet_scroller),
-                                  GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
-  gtk_container_add (GTK_CONTAINER (var_sheet_scroller), de->var_sheet);
-  gtk_widget_show_all (var_sheet_scroller);
+  PsppireVarSheetHeader *vsh = g_object_new (PSPPIRE_TYPE_VAR_SHEET_HEADER, NULL);
+  
+  g_object_set (de->var_sheet, "hmodel", vsh, NULL);
 
-  gtk_notebook_append_page (GTK_NOTEBOOK (de), var_sheet_scroller,
+  
+  GtkWidget *var_button = jmd_sheet_get_button (JMD_SHEET (de->var_sheet));
+  gtk_button_set_label (GTK_BUTTON (var_button), _("Variable"));
+  
+  gtk_notebook_append_page (GTK_NOTEBOOK (de), de->var_sheet,
                            gtk_label_new_with_mnemonic (_("Variable View")));
 
+  gtk_widget_show_all (de->var_sheet);
+  
   g_signal_connect (de->var_sheet, "var-double-clicked",
                     G_CALLBACK (on_var_sheet_var_double_clicked), de);
 
@@ -455,7 +419,6 @@ void
 psppire_data_editor_show_grid (PsppireDataEditor *de, gboolean grid_visible)
 {
   GtkTreeViewGridLines grid;
-  int i;
 
   grid = (grid_visible
           ? GTK_TREE_VIEW_GRID_LINES_BOTH
@@ -499,14 +462,9 @@ psppire_data_editor_set_font (PsppireDataEditor *de, PangoFontDescription *font_
 void
 psppire_data_editor_split_window (PsppireDataEditor *de, gboolean split)
 {
-  GtkTreeViewGridLines grid_lines;
-  gboolean labels;
-
   if (split == de->split)
     return;
 
-
-
   disconnect_data_sheets (de);
 
   psppire_data_editor_refresh_model (de);
@@ -526,15 +484,6 @@ psppire_data_editor_split_window (PsppireDataEditor *de, gboolean split)
 void
 psppire_data_editor_goto_variable (PsppireDataEditor *de, gint dict_index)
 {
-
-  switch (gtk_notebook_get_current_page (GTK_NOTEBOOK (de)))
-    {
-
-    case PSPPIRE_DATA_EDITOR_VARIABLE_VIEW:
-      psppire_var_sheet_goto_variable (PSPPIRE_VAR_SHEET (de->var_sheet),
-                                       dict_index);
-      break;
-    }
 }
 
 
@@ -564,8 +513,6 @@ psppire_data_editor_update_ui_manager (PsppireDataEditor *de)
       break;
 
     case PSPPIRE_DATA_EDITOR_VARIABLE_VIEW:
-      ui_manager = psppire_var_sheet_get_ui_manager (
-        PSPPIRE_VAR_SHEET (de->var_sheet));
       break;
 
     default:
index cedb74258370f1c95edd32bf3a8d62f42f369c42..9d7afcc5a74c3fb4b7395c2e4c7bc3c672d4a5cc 100644 (file)
@@ -781,6 +781,7 @@ tree_model_get_path (GtkTreeModel *model, GtkTreeIter *iter)
   return path;
 }
 
+const struct fmt_spec *var_get_write_format (const struct variable *);
 
 static void
 tree_model_get_value (GtkTreeModel *model, GtkTreeIter *iter,
@@ -791,22 +792,51 @@ tree_model_get_value (GtkTreeModel *model, GtkTreeIter *iter,
 
   g_return_if_fail (iter->stamp == dict->stamp);
 
-  var =  iter->user_data;
+  var = iter->user_data;
 
+  const struct fmt_spec *fs = var_get_write_format (var);
+  
   switch (column)
     {
     case DICT_TVM_COL_NAME:
-      {
-       g_value_init (value, G_TYPE_STRING);
-       g_value_set_string (value, var_get_name (var));
-      }
+      g_value_init (value, G_TYPE_STRING);
+      g_value_set_string (value, var_get_name (var));
+      break;
+    case DICT_TVM_COL_WIDTH:
+      g_value_init (value, G_TYPE_INT);
+      g_value_set_int (value, fs->w);
+      break;
+    case DICT_TVM_COL_DECIMAL:
+      g_value_init (value, G_TYPE_INT);
+      g_value_set_int (value, fs->d);
+      break;
+    case DICT_TVM_COL_LABEL:
+      g_value_init (value, G_TYPE_STRING);
+      g_value_set_string (value, var_get_label (var));
+      break;
+    case DICT_TVM_COL_COLUMNS:
+      g_value_init (value, G_TYPE_INT);
+      g_value_set_int (value, var_get_display_width (var));
+      break;
+    case DICT_TVM_COL_ALIGNMENT:
+      g_value_init (value, G_TYPE_INT);
+      g_value_set_int (value, var_get_alignment (var));
+      break;
+    case DICT_TVM_COL_MEASURE:
+      g_value_init (value, G_TYPE_INT);
+      g_value_set_int (value, var_get_measure (var));
+      break;
+    case DICT_TVM_COL_ROLE:
+      g_value_init (value, G_TYPE_INT);
+      g_value_set_int (value, var_get_role (var));
       break;
     case DICT_TVM_COL_VAR:
       g_value_init (value, PSPPIRE_VAR_PTR_TYPE);
       g_value_set_boxed (value, var);
       break;
     default:
-      g_return_if_reached ();
+      g_value_init (value, G_TYPE_STRING);
+      g_value_set_string (value, "????");
       break;
     }
 }
index ecd5de063fbe4d37ec4b4dcc500c2793ce2e99d6..4d78807cba2d97464d9b9a052b8df5904207587d 100644 (file)
@@ -42,7 +42,19 @@ G_BEGIN_DECLS
 typedef struct _PsppireDict       PsppireDict;
 typedef struct _PsppireDictClass PsppireDictClass;
 
-enum {DICT_TVM_COL_NAME=0, DICT_TVM_COL_VAR, DICT_TVM_COL_LABEL, n_DICT_COLS} ;
+enum {DICT_TVM_COL_NAME=0,
+      DICT_TVM_COL_TYPE,
+      DICT_TVM_COL_WIDTH,
+      DICT_TVM_COL_DECIMAL,
+      DICT_TVM_COL_LABEL,
+      DICT_TVM_COL_VALUE_LABELS,
+      DICT_TVM_COL_MISSING_VALUES,
+      DICT_TVM_COL_COLUMNS,
+      DICT_TVM_COL_ALIGNMENT,
+      DICT_TVM_COL_MEASURE,
+      DICT_TVM_COL_ROLE,
+      DICT_TVM_COL_VAR,
+      n_DICT_COLS} ;
 
 struct _PsppireDict
 {
index 1b6cf570afd10b99ff95a2c1c34ccc4fec43694a..d3131a3a2ca795b6dc38965e1d87606988587931 100644 (file)
@@ -1951,200 +1951,6 @@ on_variable_change (PsppireDict *dict, int dict_idx,
 static void
 prepare_formats_page (PsppireImportAssistant *ia)
 {
-  PsppireDict *psppire_dict = NULL;
-  PsppireVarSheet *var_sheet;
-  GtkBin *vars_scroller;
-  GtkWidget *old_var_sheet;
-
-  
-  push_watch_cursor (ia);
-
-  if (ia->spreadsheet == NULL)
-    {
-      struct fmt_guesser *fg;
-      unsigned long int number = 0;
-      size_t column_idx;
-
-      
-      ia->dict = dict_create (get_default_encoding ());
-      fg = fmt_guesser_create ();
-      for (column_idx = 0; column_idx < ia->column_cnt; column_idx++)
-       {
-         struct variable *modified_var = 
-           (column_idx < ia->modified_var_cnt ? ia->modified_vars[column_idx] : NULL);
-
-         if (modified_var == NULL)
-           {
-             struct column *column = &ia->columns[column_idx];
-             struct variable *var;
-             struct fmt_spec format;
-             char *name;
-             size_t row;
-
-             /* Choose variable name. */
-             name = dict_make_unique_var_name (ia->dict, column->name, &number);
-
-             /* Choose variable format. */
-             fmt_guesser_clear (fg);
-             for (row = ia->skip_lines; row < ia->line_cnt; row++)
-               fmt_guesser_add (fg, column->contents[row]);
-             fmt_guesser_guess (fg, &format);
-             fmt_fix_input (&format);
-
-             /* Create variable. */
-             var = dict_create_var_assert (ia->dict, name, fmt_var_width (&format));
-             var_set_both_formats (var, &format);
-
-             free (name);
-           }
-         else
-           {
-             char *name;
-
-             name = dict_make_unique_var_name (ia->dict, var_get_name (modified_var),
-                                               &number);
-             dict_clone_var_as_assert (ia->dict, modified_var, name);
-             free (name);
-           }
-       }
-      fmt_guesser_destroy (fg);
-    }
-  else
-    {
-      int row_start = -1;
-      int row_stop = -1;
-      int col_start = -1;
-      int col_stop = -1;
-
-      GtkBuilder *builder = ia->builder;
-
-      struct casereader *reader = NULL;
-
-      GtkWidget *readnames_checkbox = get_widget_assert (builder, "readnames-checkbox");
-      GtkWidget *range_entry = get_widget_assert (builder, "cell-range-entry");
-      const gchar *range = gtk_entry_get_text (GTK_ENTRY (range_entry));
-      GtkWidget *combo_box = get_widget_assert (builder, "sheet-entry");
-
-      gint num = gtk_combo_box_get_active (GTK_COMBO_BOX (combo_box));
-
-      struct spreadsheet_read_options sro;
-  
-      sro.sheet_name = NULL;
-      sro.cell_range = NULL;
-      sro.sheet_index = num + 1;
-
-      if ( convert_cell_ref (range, &col_start, &row_start, &col_stop, &row_stop))
-       {
-         sro.cell_range = g_strdup (range);
-       }
-
-      sro.read_names = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (readnames_checkbox));
-      sro.asw = -1;
-  
-      switch (ia->spreadsheet->type)
-       {
-       case SPREADSHEET_ODS:
-       case SPREADSHEET_GNUMERIC:
-         {
-           reader = spreadsheet_make_reader (ia->spreadsheet, &sro);
-           ia->dict = dict_clone (ia->spreadsheet->dict);
-         }
-         break;
-       default:
-         g_assert_not_reached ();
-         break;
-       }
-      g_free (sro.cell_range);
-
-      if (reader && ia->dict)
-       {
-         struct ccase *c;
-         int col;
-
-         ia->column_cnt = dict_get_var_cnt (ia->dict);
-         ia->columns = xcalloc (ia->column_cnt, sizeof (*ia->columns));
-         for (col = 0; col < ia->column_cnt ; ++col)
-           {
-             const struct variable *var = dict_get_var (ia->dict, col);
-             ia->columns[col].name = xstrdup (var_get_name (var));
-             ia->columns[col].contents = NULL;
-           }
-
-         casenumber rows = 0;
-         for (; (c = casereader_read (reader)) != NULL; case_unref (c))
-           {
-             rows++;
-             for (col = 0; col < ia->column_cnt ; ++col)
-               {
-                 char *ss;
-                 const struct variable *var = dict_get_var (ia->dict, col);
-             
-                 ia->columns[col].contents = xrealloc (ia->columns[col].contents,
-                                                       sizeof (struct substring) * rows);
-             
-                 ss = data_out (case_data (c, var), dict_get_encoding (ia->dict), 
-                                var_get_print_format (var));
-             
-                 ia->columns[col].contents[rows - 1] = ss_cstr (ss);
-               }
-         
-             if (rows > MAX_PREVIEW_LINES)
-               {
-                 case_unref (c);
-                 break;
-               }
-           }
-         casereader_destroy (reader);
-         ia->line_cnt = rows;
-       }
-      else
-       {
-         GtkWidget * dialog = gtk_message_dialog_new (NULL,
-                                                      GTK_DIALOG_MODAL,
-                                                      GTK_MESSAGE_ERROR,
-                                                      GTK_BUTTONS_CLOSE,
-                                                      _("An error occurred reading the spreadsheet file."));
-
-         gtk_dialog_run (GTK_DIALOG (dialog));
-         gtk_widget_destroy (dialog);
-       }
-    }
-
-  psppire_dict = psppire_dict_new_from_dict (ia->dict);
-  g_signal_connect (psppire_dict, "variable-changed",
-                   G_CALLBACK (on_variable_change), ia);
-  ia->psppire_dict = psppire_dict;
-
-  
-  /* XXX: PsppireVarStore doesn't hold a reference to
-     psppire_dict for now, but it should.  After it does, we
-     should g_object_ref the psppire_dict here, since we also
-     hold a reference via ia->formats->dict. */
-  var_sheet = PSPPIRE_VAR_SHEET (psppire_var_sheet_new ());
-  g_object_set (var_sheet,
-               "dictionary", psppire_dict,
-               "may-create-vars", FALSE,
-               "may-delete-vars", FALSE,
-               "format-use", FMT_FOR_INPUT,
-               "enable-grid-lines", PSPP_SHEET_VIEW_GRID_LINES_BOTH,
-               (void *) NULL);
-
-  vars_scroller = GTK_BIN (get_widget_assert (ia->builder, "vars-scroller"));
-  old_var_sheet = gtk_bin_get_child (GTK_BIN (vars_scroller));
-  if (old_var_sheet != NULL)
-    gtk_container_remove (GTK_CONTAINER (vars_scroller),  old_var_sheet);
-  gtk_container_add (GTK_CONTAINER (vars_scroller), GTK_WIDGET (var_sheet));
-  gtk_widget_show (GTK_WIDGET (var_sheet));
-
-  ia->data_tree_view =
-    GTK_WIDGET (create_data_tree_view (
-                                      FALSE,
-                                      GTK_CONTAINER (get_widget_assert (ia->builder, "data-scroller")),
-                                      ia));
-
-  gtk_widget_show (ia->paste_button);
-
-  pop_watch_cursor (ia);
 }
 
 static void
diff --git a/src/ui/gui/psppire-var-sheet-header.c b/src/ui/gui/psppire-var-sheet-header.c
new file mode 100644 (file)
index 0000000..5032c38
--- /dev/null
@@ -0,0 +1,114 @@
+/*
+    A candidate replacement for Pspp's sheet
+    Copyright (C) 2016  John Darrington
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <config.h>
+#include <gtk/gtk.h>
+
+#include "psppire-var-sheet-header.h"
+
+#include "efficient-sheet/jmd-axis-model.h"
+#include "efficient-sheet/jmd-datum.h"
+
+
+static guint
+gni (GListModel *list)
+{
+  return 11;
+}
+
+static GType
+git (GListModel *list)
+{
+  return JMD_TYPE_DATUM;
+}
+
+static gpointer
+gi (GListModel *list, guint position)
+{
+  JmdDatum *gd = JMD_DATUM (g_object_new (JMD_TYPE_DATUM, NULL));
+
+  switch (position)
+    {
+    case 0:
+      gd->text = g_strdup ("Name");
+      break;
+    case 1:
+      gd->text = g_strdup ("Type");
+      break;
+    case 2:
+      gd->text = g_strdup ("Width");
+      break;
+    case 3:
+      gd->text = g_strdup ("Decimal");
+      break;
+    case 4:
+      gd->text = g_strdup ("Label");
+      break;
+    case 5:
+      gd->text = g_strdup ("Value Labels");
+      break;
+    case 6:
+      gd->text = g_strdup ("Missing Values");
+      break;
+    case 7:
+      gd->text = g_strdup ("Columns");
+      break;
+    case 8:
+      gd->text = g_strdup ("Align");
+      break;
+    case 9:
+      gd->text = g_strdup ("Measure");
+      break;
+    case 10:
+      gd->text = g_strdup ("Role");
+      break;
+    default:
+      //      g_assert_not_reached ();
+      g_print ("Bug: Request for item %d", position);
+      break;
+    }
+
+  return gd;
+}
+
+
+static void
+psppire_init_iface (GListModelInterface *iface)
+{
+  iface->get_n_items = gni;
+  iface->get_item = gi;
+  iface->get_item_type = git;
+}
+
+
+G_DEFINE_TYPE_WITH_CODE (PsppireVarSheetHeader, psppire_var_sheet_header,
+                         G_TYPE_OBJECT,
+                         G_IMPLEMENT_INTERFACE (G_TYPE_LIST_MODEL, psppire_init_iface));
+
+static void
+psppire_var_sheet_header_init (PsppireVarSheetHeader *d)
+{
+}
+
+
+
+static void
+psppire_var_sheet_header_class_init (PsppireVarSheetHeaderClass *dc)
+{
+}
+
diff --git a/src/ui/gui/psppire-var-sheet-header.h b/src/ui/gui/psppire-var-sheet-header.h
new file mode 100644 (file)
index 0000000..476faaf
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+    A candidate replacement for Pspp's sheet
+    Copyright (C) 2016  John Darrington
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef _PSPPIRE_VAR_SHEET_HEADER_H
+#define _PSPPIRE_VAR_SHEET_HEADER_H
+
+
+G_DECLARE_FINAL_TYPE (PsppireVarSheetHeader, psppire_var_sheet_header, PSPPIRE, VAR_SHEET_HEADER, GObject)
+
+
+struct _PsppireVarSheetHeader
+{
+  GObject parent_instance;
+};
+
+struct _PsppireVarSheetHeaderClass
+{
+  GObjectClass parent_instance;
+};
+
+
+
+#define PSPPIRE_TYPE_VAR_SHEET_HEADER psppire_var_sheet_header_get_type ()
+
+#endif
index 66a95deeed2ad4831cd712d6b016600fcbe6f38a..b75d9017a39b2b002657a366d1016a4ffe1ecccb 100644 (file)
@@ -16,6 +16,8 @@
 
 #include <config.h>
 
+#error "Do not do this"
+
 #include "ui/gui/psppire-var-sheet.h"
 
 #include "data/format.h"