Added property for the backend
authorJohn Darrington <john@darrington.wattle.id.au>
Sat, 26 Jan 2013 11:46:50 +0000 (12:46 +0100)
committerJohn Darrington <john@darrington.wattle.id.au>
Sat, 16 Feb 2013 14:03:38 +0000 (15:03 +0100)
src/ui/gui/psppire-spreadsheet-model.c
src/ui/gui/psppire-spreadsheet-model.h
src/ui/gui/sheet-test.c

index d5915a3db5206fdd15541734b661b2e18e956765..20a8a66e7eb304333144eaee54f4d7d40ecdd8af 100644 (file)
@@ -20,6 +20,8 @@
 
 #include "psppire-spreadsheet-model.h"
 
+#include "data/spreadsheet-reader.h"
+
 static void psppire_spreadsheet_model_init           (PsppireSpreadsheetModel *spreadsheetModel);
 static void psppire_spreadsheet_model_class_init     (PsppireSpreadsheetModelClass *class);
 
@@ -71,6 +73,35 @@ psppire_spreadsheet_model_get_type (void)
 }
 
 
+/* Properties */
+enum
+{
+  PROP_0,
+  PROP_SPREADSHEET
+};
+
+
+static void
+psppire_spreadsheet_model_set_property (GObject         *object,
+                                       guint            prop_id,
+                                       const GValue    *value,
+                                       GParamSpec      *pspec)
+{
+  PsppireSpreadsheetModel *spreadsheetModel = PSPPIRE_SPREADSHEET_MODEL (object);
+
+  switch (prop_id)
+    {
+    case PROP_SPREADSHEET:
+      spreadsheetModel->spreadsheet = g_value_get_pointer (value);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+    };
+}
+
+
+
 static void
 psppire_spreadsheet_model_dispose  (GObject *object)
 {
@@ -87,9 +118,23 @@ psppire_spreadsheet_model_class_init (PsppireSpreadsheetModelClass *class)
 {
   GObjectClass *object_class;
 
+  GParamSpec *spreadsheet_spec =
+    g_param_spec_pointer ("spreadsheet",
+                         "Spreadsheet",
+                         "The spreadsheet that this model represents",
+                         G_PARAM_CONSTRUCT_ONLY | G_PARAM_WRITABLE);
+
   parent_class = g_type_class_peek_parent (class);
   object_class = (GObjectClass*) class;
 
+  object_class->set_property = psppire_spreadsheet_model_set_property;
+
+  g_object_class_install_property (object_class,
+                                   PROP_SPREADSHEET,
+                                   spreadsheet_spec);
+
+
+
   object_class->finalize = psppire_spreadsheet_model_finalize;
   object_class->dispose = psppire_spreadsheet_model_dispose;
 }
@@ -104,9 +149,11 @@ psppire_spreadsheet_model_init (PsppireSpreadsheetModel *spreadsheetModel)
 
 
 GtkTreeModel*
-psppire_spreadsheet_model_new (void)
+psppire_spreadsheet_model_new (struct spreadsheet *sp)
 {
-  return g_object_new (psppire_spreadsheet_model_get_type (), NULL);
+  return g_object_new (psppire_spreadsheet_model_get_type (), 
+                      "spreadsheet", sp,
+                      NULL);
 }
 
 
@@ -174,7 +221,7 @@ tree_model_iter_next (GtkTreeModel *model, GtkTreeIter *iter)
 
   g_print ("%s %d\n", __FUNCTION__, iter->user_data);
 
-  if ( iter->user_data >= 5 - 1)
+  if ( iter->user_data >= spreadsheetModel->spreadsheet->sheets - 1)
     return FALSE;
 
   iter->user_data++;
@@ -209,16 +256,10 @@ tree_model_nth_child (GtkTreeModel *model, GtkTreeIter *iter,
   if ( parent )
     return FALSE;
 
-  if ( n >= 5)
+  if ( n >= spreadsheetModel->spreadsheet->sheets)
     return FALSE;
 
   iter->stamp = spreadsheetModel->stamp;
-  /*
-  iter->user_data = psppire_dict_get_variable (dict, n);
-
-  if ( !iter->user_data)
-    return FALSE;
-  */
 
   return TRUE;
 }
index 5956f32e11946912bf4cd7ec3a48d7aecbb86877..94be3c397ef75f3ac4b1fc0d9b640eb6e7433cea 100644 (file)
@@ -53,6 +53,8 @@ typedef struct _PsppireSpreadsheetModel       PsppireSpreadsheetModel;
 typedef struct _PsppireSpreadsheetModelClass  PsppireSpreadsheetModelClass;
 
 
+struct spreadsheet;
+
 struct _PsppireSpreadsheetModel
 {
   GObject parent;
@@ -60,6 +62,7 @@ struct _PsppireSpreadsheetModel
 
   /*< private >*/
   gint stamp;
+  struct spreadsheet *spreadsheet;
 
   gboolean dispose_has_run ;
 };
@@ -73,7 +76,8 @@ struct _PsppireSpreadsheetModelClass
 
 GType psppire_spreadsheet_model_get_type (void) G_GNUC_CONST;
 
-GtkTreeModel * psppire_spreadsheet_model_new (void);
+
+GtkTreeModel * psppire_spreadsheet_model_new (struct spreadsheet *sp);
 
 
 G_END_DECLS
index 45f1061a0628074b4a8ebeb0480179e4c5ece143..ab6a8c879f64397233dbb82fd2510bfa83a2dcea 100644 (file)
@@ -6,6 +6,8 @@
 
 #include "psppire-spreadsheet-model.h"
 
+#include "data/gnumeric-reader.h"
+
 #define N 10
 
 static GtkListStore *
@@ -27,8 +29,6 @@ make_store ()
     return list_store;
   }
 
-
-
 int
 main (int argc, char *argv[] )
 {
@@ -37,8 +37,18 @@ main (int argc, char *argv[] )
   GtkTreeModel *tm;
   gtk_init (&argc, &argv);
     
+  if ( argc < 2)
+    g_error ("Usage: prog file\n");
+
+  struct spreadsheet *sp = gnumeric_probe (argv[1]);
+  
+  if (sp == NULL)
+    {
+      g_error ("%s is not a gnumeric file\n", argv[1]);
+      return 0;
+    }
 
-  tm = psppire_spreadsheet_model_new ();
+  tm = psppire_spreadsheet_model_new (sp);
   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
     
   gtk_container_set_border_width (GTK_CONTAINER (window), 10);