49f9ba8f561bb517458e238d73aa791cd7bc1a41
[pspp] / src / ui / gui / sheet-test.c
1 #include <config.h>
2
3 #include <gtk/gtk.h>
4
5 #include "psppire-spreadsheet-model.h"
6
7 #include "data/gnumeric-reader.h"
8 #include "data/ods-reader.h"
9 #include "data/spreadsheet-reader.h"
10 #include "data/casereader.h"
11 #include "data/case.h"
12
13 #if 0
14 #define N 10
15
16
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
38 struct xxx
39 {
40   struct spreadsheet *sp;
41   GtkWidget *combo_box;
42 };
43
44
45
46 static void
47 on_clicked (GtkButton *button, struct xxx *stuff)
48 {
49   const struct caseproto *proto;
50   int nvals;
51   struct ccase *c;
52   gint x = gtk_combo_box_get_active (GTK_COMBO_BOX (stuff->combo_box));
53   struct casereader *reader ;
54   struct spreadsheet_read_options opts;
55
56   g_print( "%s %d\n", __FUNCTION__, x);
57
58   opts.sheet_index = x + 1;
59   opts.cell_range = NULL;
60   opts.sheet_name = NULL;
61   opts.read_names = TRUE;
62   opts.asw = -1;
63
64   reader = ods_make_reader (stuff->sp, &opts);
65   proto = casereader_get_proto (reader);
66
67   nvals = caseproto_get_n_widths (proto);
68   
69   for (;
70            (c = casereader_read (reader)) != NULL; case_unref (c))
71     {
72       int i;
73
74       for (i = 0; i < nvals ; ++i)
75       {
76         const double val = case_data_idx (c, i)->f;
77         printf ("%g ", val);
78       }
79       printf ("\n");
80     }
81 }
82
83
84 int
85 main (int argc, char *argv[] )
86 {
87   GtkWidget *window;
88   GtkWidget *hbox;
89   GtkWidget *vbox;
90   GtkWidget *treeview;
91
92   GtkTreeModel *tm;
93   GtkWidget *button;
94   struct xxx stuff;
95
96   gtk_init (&argc, &argv);
97     
98   if ( argc < 2)
99     g_error ("Usage: prog file\n");
100
101   stuff.sp = NULL;
102
103 #if 0
104   if (sp == NULL)
105     sp = gnumeric_probe (argv[1], false);
106 #endif
107
108   if (stuff.sp == NULL)
109     stuff.sp = ods_probe (argv[1], false);
110   
111   if (stuff.sp == NULL)
112     {
113       g_error ("%s is neither a gnumeric nor a ods file\n", argv[1]);
114       return 0;
115     }
116
117   tm = psppire_spreadsheet_model_new (stuff.sp);
118   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
119   hbox = gtk_hbox_new (FALSE, 5);
120   vbox = gtk_vbox_new (FALSE, 5);
121
122   button = gtk_button_new_with_label ("Test reader");
123   g_signal_connect (button, "clicked", G_CALLBACK (on_clicked), &stuff);
124    
125   gtk_container_set_border_width (GTK_CONTAINER (window), 10);
126   
127   stuff.combo_box = gtk_combo_box_new();
128
129   {
130     GtkCellRenderer *renderer = gtk_cell_renderer_text_new ();
131     gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (stuff.combo_box), renderer, TRUE);
132     gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (stuff.combo_box), renderer,
133                                     "text", 0,
134                                     NULL);
135   }
136
137   gtk_combo_box_set_model (GTK_COMBO_BOX (stuff.combo_box), tm);
138
139   gtk_combo_box_set_active (GTK_COMBO_BOX (stuff.combo_box), 0);
140
141   treeview = gtk_tree_view_new_with_model (tm);
142
143   gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview),
144                                                0, "sheet name",
145                                                gtk_cell_renderer_text_new (),
146                                                "text", 0,
147                                                NULL);
148
149
150   gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview),
151                                                1, "range",
152                                                gtk_cell_renderer_text_new (),
153                                                "text", 1,
154                                                NULL);
155
156
157   gtk_box_pack_start (GTK_BOX (hbox), treeview, TRUE, TRUE, 5);
158
159   gtk_box_pack_start (GTK_BOX (vbox), stuff.combo_box, FALSE, FALSE, 5);
160   gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 5);
161   gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 5);
162
163   gtk_container_add (GTK_CONTAINER (window), hbox);
164
165   g_signal_connect (window, "destroy", gtk_main_quit, 0);
166
167   gtk_widget_show_all (window);
168
169   gtk_main ();
170
171   //  gnumeric_destroy (sp);
172     
173   return 0;
174 }