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