X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fspreadsheet-test.c;h=b70227008331377db9dd626fbd5582bbf4164cdd;hb=c2d972816fce591524db963390a97ff32d55117c;hp=2e88402b527804d7b747ac33c885f77b642bb900;hpb=e49745e3d5dff8e5e8e1bf3dddd82fc54d9f4aa4;p=pspp diff --git a/src/ui/gui/spreadsheet-test.c b/src/ui/gui/spreadsheet-test.c index 2e88402b52..b702270083 100644 --- a/src/ui/gui/spreadsheet-test.c +++ b/src/ui/gui/spreadsheet-test.c @@ -1,5 +1,5 @@ /* PSPPIRE - a graphical user interface for PSPP. - Copyright (C) 2013 Free Software Foundation + Copyright (C) 2013, 2014 Free Software Foundation 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 @@ -19,6 +19,7 @@ #include +#include #include #include "psppire-spreadsheet-model.h" @@ -28,30 +29,11 @@ #include "data/spreadsheet-reader.h" #include "data/casereader.h" #include "data/case.h" +#include "data/settings.h" +#include "libpspp/message.h" +#include "libpspp/i18n.h" -#if 0 -#define N 10 - - -static GtkListStore * -make_store () - { - int i; - GtkTreeIter iter; - - GtkListStore * list_store = gtk_list_store_new (2, G_TYPE_INT, G_TYPE_STRING); - - for (i = 0; i < N; ++i) - { - gtk_list_store_append (list_store, &iter); - gtk_list_store_set (list_store, &iter, - 0, N - i, - 1, "xxx", - -1); - } - return list_store; - } -#endif +#include "gl/xalloc.h" struct xxx @@ -72,28 +54,40 @@ on_clicked (GtkButton *button, struct xxx *stuff) struct casereader *reader ; struct spreadsheet_read_options opts; - g_print( "%s %d\n", __FUNCTION__, x); - - opts.sheet_index = x + 1; - opts.cell_range = NULL; - opts.sheet_name = NULL; + opts.sheet_index = -1; + opts.cell_range = spreadsheet_get_sheet_range (stuff->sp, x); + opts.sheet_name = CONST_CAST (char *, + spreadsheet_get_sheet_name (stuff->sp, x)); opts.read_names = TRUE; opts.asw = -1; - reader = ods_make_reader (stuff->sp, &opts); + reader = spreadsheet_make_reader (stuff->sp, &opts); + + if (reader == NULL) + return; + proto = casereader_get_proto (reader); nvals = caseproto_get_n_widths (proto); - for (; - (c = casereader_read (reader)) != NULL; case_unref (c)) + for (; (c = casereader_read (reader)) != NULL; case_unref (c)) { int i; for (i = 0; i < nvals ; ++i) { - const double val = case_data_idx (c, i)->f; - printf ("%g ", val); + const int width = caseproto_get_width (proto, i); + const union value *val = case_data_idx (c, i); + if (0 == width) + printf ("%.*g ", DBL_DIG + 1, val->f); + else + { + char *ss = xzalloc (width + 1); + memcpy (ss, value_str (val, width), width); + + printf ("%s ", ss); + free (ss); + } } printf ("\n"); } @@ -101,6 +95,12 @@ on_clicked (GtkButton *button, struct xxx *stuff) casereader_destroy (reader); } +static void +print_msg (const struct msg *m, void *aux UNUSED) +{ + fprintf (stderr, "%s\n", m->text); +} + int main (int argc, char *argv[] ) @@ -114,17 +114,20 @@ main (int argc, char *argv[] ) GtkWidget *button; struct xxx stuff; + i18n_init (); + settings_init (); + gtk_init (&argc, &argv); if ( argc < 2) g_error ("Usage: prog file\n"); + msg_set_handler (print_msg, 0); + stuff.sp = NULL; -#if 0 - if (sp == NULL) - sp = gnumeric_probe (argv[1], false); -#endif + if (stuff.sp == NULL) + stuff.sp = gnumeric_probe (argv[1], false); if (stuff.sp == NULL) stuff.sp = ods_probe (argv[1], false); @@ -137,8 +140,8 @@ main (int argc, char *argv[] ) tm = psppire_spreadsheet_model_new (stuff.sp); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - hbox = gtk_hbox_new (FALSE, 5); - vbox = gtk_vbox_new (FALSE, 5); + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 5); + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5); button = gtk_button_new_with_label ("Test reader"); g_signal_connect (button, "clicked", G_CALLBACK (on_clicked), &stuff); @@ -189,7 +192,7 @@ main (int argc, char *argv[] ) gtk_main (); - // gnumeric_destroy (sp); - + spreadsheet_unref (stuff.sp); + return 0; }