Show errors on reading badly formed gnumeric files
[pspp] / src / ui / gui / sheet-test.c
1 /* This is a file */
2
3 #include <config.h>
4
5 #include <gtk/gtk.h>
6
7 #include "psppire-spreadsheet-model.h"
8
9 #include "data/gnumeric-reader.h"
10 #include "data/spreadsheet-reader.h"
11 #include "data/casereader.h"
12 #include "data/case.h"
13
14 #define N 10
15
16 #if 0
17 static GtkListStore *
18 make_store ()
19   {
20     int i;
21     GtkTreeIter iter;
22     
23     GtkListStore * list_store  = gtk_list_store_new (2, G_TYPE_INT, G_TYPE_STRING);
24
25     for (i = 0; i < N; ++i)
26       {
27         gtk_list_store_append (list_store, &iter);
28         gtk_list_store_set (list_store, &iter,
29                             0, N - i,
30                             1, "xxx", 
31                             -1);
32       }
33     return list_store;
34   }
35 #endif
36
37 struct spreadsheet *sp = NULL;
38 GtkWidget *combo_box;
39
40 static void
41 on_clicked (GtkButton *button, gpointer data)
42 {
43   struct ccase *c;
44   gint x = gtk_combo_box_get_active (GTK_COMBO_BOX (combo_box));
45   struct casereader *reader ;
46   struct spreadsheet_read_info ri;
47   struct spreadsheet_read_options opts;
48
49   g_print( "%s %d\n", __FUNCTION__, x);
50
51   opts.sheet_index = x + 1;
52   opts.cell_range = NULL;
53   opts.sheet_name = NULL;
54
55   ri.read_names = TRUE;
56   ri.asw = -1;
57
58   reader = gnumeric_make_reader (sp, &ri, &opts);
59   for (;
60            (c = casereader_read (reader)) != NULL; case_unref (c))
61     {
62       const double val = case_data_idx (c, 0)->f;
63       printf ("%g\n", val);
64     }
65 }
66
67 int
68 main (int argc, char *argv[] )
69 {
70   GtkWidget *window;
71   GtkWidget *hbox;
72   GtkWidget *vbox;
73   GtkWidget *treeview;
74
75   GtkTreeModel *tm;
76   GtkWidget *button;
77
78   gtk_init (&argc, &argv);
79     
80   if ( argc < 2)
81     g_error ("Usage: prog file\n");
82
83   sp = gnumeric_probe (argv[1], true);
84   
85   if (sp == NULL)
86     {
87       g_error ("%s is not a gnumeric file\n", argv[1]);
88       return 0;
89     }
90
91   tm = psppire_spreadsheet_model_new (sp);
92   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
93   hbox = gtk_hbox_new (FALSE, 5);
94   vbox = gtk_vbox_new (FALSE, 5);
95
96   button = gtk_button_new_with_label ("Test reader");
97   g_signal_connect (button, "clicked", G_CALLBACK (on_clicked), NULL);
98    
99   gtk_container_set_border_width (GTK_CONTAINER (window), 10);
100   
101   combo_box = gtk_combo_box_new();
102
103   {
104     GtkCellRenderer *renderer = gtk_cell_renderer_text_new ();
105     gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo_box), renderer, TRUE);
106     gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo_box), renderer,
107                                     "text", 0,
108                                     NULL);
109   }
110
111   gtk_combo_box_set_model (GTK_COMBO_BOX (combo_box), tm);
112
113   gtk_combo_box_set_active (GTK_COMBO_BOX (combo_box), 0);
114
115   treeview = gtk_tree_view_new_with_model (tm);
116
117   gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview),
118                                                0, "sheet name",
119                                                gtk_cell_renderer_text_new (),
120                                                "text", 0,
121                                                NULL);
122
123
124   gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview),
125                                                1, "range",
126                                                gtk_cell_renderer_text_new (),
127                                                "text", 1,
128                                                NULL);
129
130
131   gtk_box_pack_start (GTK_BOX (hbox), treeview, TRUE, TRUE, 5);
132
133   gtk_box_pack_start (GTK_BOX (vbox), combo_box, FALSE, FALSE, 5);
134   gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 5);
135   gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 5);
136
137   gtk_container_add (GTK_CONTAINER (window), hbox);
138
139   g_signal_connect (window, "destroy", gtk_main_quit, 0);
140
141   gtk_widget_show_all (window);
142
143   gtk_main ();
144
145   gnumeric_destroy (sp);
146     
147   return 0;
148 }