#define _(msgid) gettext (msgid)
#define N_(msgid) msgid
-#include <data/casefile.h>
-#include <data/case.h>
+#include <data/casewriter.h>
+#include <data/datasheet.h>
#include <data/data-out.h>
#include <data/variable.h>
enum {FONT_CHANGED,
n_SIGNALS};
-static guint signal[n_SIGNALS];
+static guint signals [n_SIGNALS];
inline GType
object_class->finalize = psppire_data_store_finalize;
- signal[FONT_CHANGED] =
+ signals [FONT_CHANGED] =
g_signal_new ("font_changed",
- G_TYPE_FROM_CLASS(class),
+ G_TYPE_FROM_CLASS (class),
G_SIGNAL_RUN_FIRST,
0,
NULL, NULL,
static gint
psppire_data_store_get_var_count (const GSheetModel *model)
{
- const PsppireDataStore *store = PSPPIRE_DATA_STORE(model);
+ const PsppireDataStore *store = PSPPIRE_DATA_STORE (model);
return psppire_dict_get_var_cnt (store->dict);
}
static gint
psppire_data_store_get_case_count (const GSheetModel *model)
{
- const PsppireDataStore *store = PSPPIRE_DATA_STORE(model);
+ const PsppireDataStore *store = PSPPIRE_DATA_STORE (model);
return psppire_case_file_get_case_count (store->case_file);
}
psppire_data_store_get_font_desc (const GSheetModel *model,
gint row, gint column)
{
- PsppireDataStore *store = PSPPIRE_DATA_STORE(model);
+ PsppireDataStore *store = PSPPIRE_DATA_STORE (model);
return store->font_desc;
}
g_return_if_fail (data);
- store = PSPPIRE_DATA_STORE(data);
+ store = PSPPIRE_DATA_STORE (data);
g_assert (first >= 0);
- g_sheet_model_rows_deleted (G_SHEET_MODEL(store), first, n_cases);
+ g_sheet_model_rows_deleted (G_SHEET_MODEL (store), first, n_cases);
}
g_return_if_fail (data);
- store = PSPPIRE_DATA_STORE(data);
+ store = PSPPIRE_DATA_STORE (data);
- g_sheet_model_range_changed (G_SHEET_MODEL(store),
+ g_sheet_model_range_changed (G_SHEET_MODEL (store),
casenum, -1,
psppire_case_file_get_case_count (store->case_file),
-1);
- g_sheet_model_rows_inserted (G_SHEET_MODEL(store), casenum, 1);
+ g_sheet_model_rows_inserted (G_SHEET_MODEL (store), casenum, 1);
}
PsppireDataStore *store ;
g_return_if_fail (data);
- store = PSPPIRE_DATA_STORE(data);
+ store = PSPPIRE_DATA_STORE (data);
- g_sheet_model_range_changed (G_SHEET_MODEL(store),
+ g_sheet_model_range_changed (G_SHEET_MODEL (store),
casenum, -1,
casenum, -1);
}
g_return_if_fail (data);
- store = PSPPIRE_DATA_STORE(data);
+ store = PSPPIRE_DATA_STORE (data);
- g_sheet_model_columns_deleted (G_SHEET_MODEL(store), var_num, n_vars);
+ g_sheet_model_columns_deleted (G_SHEET_MODEL (store), var_num, n_vars);
- g_sheet_column_columns_changed (G_SHEET_COLUMN(store),
+ g_sheet_column_columns_changed (G_SHEET_COLUMN (store),
var_num, -1);
}
+
+static void
+variable_changed_callback (GObject *obj, gint var_num, gpointer data)
+{
+ PsppireDataStore *store;
+
+ g_return_if_fail (data);
+
+ store = PSPPIRE_DATA_STORE (data);
+
+ g_sheet_column_columns_changed (G_SHEET_COLUMN (store),
+ var_num, 1);
+
+
+ g_sheet_model_range_changed (G_SHEET_MODEL (store),
+ -1, var_num,
+ -1, var_num);
+}
+
static void
insert_variable_callback (GObject *obj, gint var_num, gpointer data)
{
g_return_if_fail (data);
- store = PSPPIRE_DATA_STORE(data);
+ store = PSPPIRE_DATA_STORE (data);
if ( var_num > 0 )
{
- struct variable *variable;
- variable = psppire_dict_get_variable (store->dict, var_num);
+ struct variable *variable =
+ psppire_dict_get_variable (store->dict, var_num);
+
+ g_assert (variable != NULL);
posn = var_get_case_index (variable);
}
psppire_case_file_insert_values (store->case_file, 1, posn);
- g_sheet_column_columns_changed (G_SHEET_COLUMN(store),
+ g_sheet_column_columns_changed (G_SHEET_COLUMN (store),
var_num, 1);
- g_sheet_model_columns_inserted (G_SHEET_MODEL(store), var_num, 1);
+ g_sheet_model_columns_inserted (G_SHEET_MODEL (store), var_num, 1);
}
g_return_if_fail (data);
- store = PSPPIRE_DATA_STORE(data);
+ store = PSPPIRE_DATA_STORE (data);
psppire_case_file_insert_values (store->case_file, adjustment, posn);
}
psppire_data_store_set_dictionary (retval, dict);
-
return retval;
}
-
-/**
- * psppire_data_store_replace_set_dictionary:
- * @data_store: The variable store
- * @dict: The dictionary to set
- *
- * If a dictionary is already associated with the data-store, then it will be
- * destroyed.
- **/
void
-psppire_data_store_set_dictionary (PsppireDataStore *data_store, PsppireDict *dict)
+psppire_data_store_set_case_file (PsppireDataStore *data_store,
+ PsppireCaseFile *cf)
{
- gint var_cnt = psppire_dict_get_next_value_idx (dict);
-
- data_store->dict = dict;
-
if ( data_store->case_file)
{
g_object_unref (data_store->case_file);
- data_store->case_file = 0;
}
- data_store->case_file = psppire_case_file_new (var_cnt);
+ data_store->case_file = cf;
g_signal_connect (data_store->case_file, "cases-deleted",
- G_CALLBACK(delete_cases_callback),
+ G_CALLBACK (delete_cases_callback),
data_store);
g_signal_connect (data_store->case_file, "case-inserted",
- G_CALLBACK(insert_case_callback),
+ G_CALLBACK (insert_case_callback),
data_store);
g_signal_connect (data_store->case_file, "case-changed",
- G_CALLBACK(changed_case_callback),
+ G_CALLBACK (changed_case_callback),
data_store);
+}
+
+
+
+/**
+ * psppire_data_store_replace_set_dictionary:
+ * @data_store: The variable store
+ * @dict: The dictionary to set
+ *
+ * If a dictionary is already associated with the data-store, then it will be
+ * destroyed.
+ **/
+void
+psppire_data_store_set_dictionary (PsppireDataStore *data_store, PsppireDict *dict)
+{
+ data_store->dict = dict;
g_signal_connect (dict, "variable-inserted",
- G_CALLBACK(insert_variable_callback),
+ G_CALLBACK (insert_variable_callback),
data_store);
g_signal_connect (dict, "variables-deleted",
- G_CALLBACK(delete_variables_callback),
+ G_CALLBACK (delete_variables_callback),
data_store);
+ g_signal_connect (dict, "variable-changed",
+ G_CALLBACK (variable_changed_callback),
+ data_store);
+
+
g_signal_connect (dict, "dict-size-changed",
- G_CALLBACK(dict_size_change_callback),
+ G_CALLBACK (dict_size_change_callback),
data_store);
/* The entire model has changed */
- g_sheet_model_range_changed (G_SHEET_MODEL(data_store), -1, -1, -1, -1);
+ g_sheet_model_range_changed (G_SHEET_MODEL (data_store), -1, -1, -1, -1);
- g_sheet_column_columns_changed (G_SHEET_COLUMN(data_store), 0, -1);
+ g_sheet_column_columns_changed (G_SHEET_COLUMN (data_store), 0, -1);
}
static void
/* Opportunity for optimisation exists here when creating a blank case */
- val_cnt = casefile_get_value_cnt (ds->case_file->flexifile) ;
+ val_cnt = datasheet_get_column_cnt (ds->case_file->datasheet) ;
case_create (&cc, val_cnt);
char *text;
const struct fmt_spec *fp ;
const struct variable *pv ;
- const union value *v ;
+ union value *v ;
GString *s;
- PsppireDataStore *store = PSPPIRE_DATA_STORE(model);
+ PsppireDataStore *store = PSPPIRE_DATA_STORE (model);
g_return_val_if_fail (store->dict, NULL);
g_return_val_if_fail (store->case_file, NULL);
pv = psppire_dict_get_variable (store->dict, column);
+ g_assert (pv);
+
idx = var_get_case_index (pv);
- v = psppire_case_file_get_value (store->case_file, row, idx);
+ g_assert (idx >= 0);
+
+ v = psppire_case_file_get_value (store->case_file, row, idx, NULL,
+ var_get_width (pv));
g_return_val_if_fail (v, NULL);
if ( store->show_labels)
{
- const struct val_labs * vl = var_get_value_labels (pv);
-
- const gchar *label;
- if ( (label = val_labs_find (vl, *v)) )
- {
+ const gchar *label = var_lookup_value_label (pv, v);
+ if (label)
+ {
+ free (v);
return pspp_locale_to_utf8 (label, -1, 0);
- }
+ }
}
fp = var_get_write_format (pv);
g_strchomp (text);
+ free (v);
return text;
}
gint row, gint col)
{
- PsppireDataStore *store = PSPPIRE_DATA_STORE(model);
+ PsppireDataStore *store = PSPPIRE_DATA_STORE (model);
union value v;
const struct variable *pv = psppire_dict_get_variable (store->dict, col);
psppire_data_store_set_string (GSheetModel *model,
const gchar *text, gint row, gint col)
{
- PsppireDataStore *store = PSPPIRE_DATA_STORE(model);
+ PsppireDataStore *store = PSPPIRE_DATA_STORE (model);
const struct variable *pv = psppire_dict_get_variable (store->dict, col);
g_return_val_if_fail (pv, FALSE);
#if 0
store->width_of_m = calc_m_width (fd);
#endif
- g_signal_emit (store, signal[FONT_CHANGED], 0);
+ g_signal_emit (store, signals [FONT_CHANGED], 0);
- g_sheet_model_range_changed (G_SHEET_MODEL(store),
+ g_sheet_model_range_changed (G_SHEET_MODEL (store),
-1, -1, -1, -1);
}
store->show_labels = show_labels;
- g_sheet_model_range_changed (G_SHEET_MODEL(store),
+ g_sheet_model_range_changed (G_SHEET_MODEL (store),
-1, -1, -1, -1);
}
3 /* version */
};
- struct sfm_writer *writer ;
+ struct casewriter *writer;
g_assert (handle);
return;
- var_cnt = psppire_data_store_get_var_count (G_SHEET_MODEL(store));
+ var_cnt = psppire_data_store_get_var_count (G_SHEET_MODEL (store));
for (i = 0 ; i < psppire_case_file_get_case_count (store->case_file); ++i )
{
struct ccase c;
-
- case_create (&c, var_cnt);
psppire_case_file_get_case (store->case_file, i, &c);
- sfm_write_case (writer, &c);
-
- case_destroy (&c);
+ casewriter_write (writer, &c);
}
-
- sfm_close_writer (writer);
+ casewriter_destroy (writer);
}
static gint
geometry_get_column_count (const GSheetColumn *geom)
{
- PsppireDataStore *ds = PSPPIRE_DATA_STORE(geom);
+ PsppireDataStore *ds = PSPPIRE_DATA_STORE (geom);
- return MAX(MIN_COLUMNS, psppire_dict_get_var_cnt (ds->dict));
+ return MAX (MIN_COLUMNS, psppire_dict_get_var_cnt (ds->dict));
}
geometry_get_width (const GSheetColumn *geom, gint unit)
{
const struct variable *pv ;
- PsppireDataStore *ds = PSPPIRE_DATA_STORE(geom);
+ PsppireDataStore *ds = PSPPIRE_DATA_STORE (geom);
if ( unit >= psppire_dict_get_var_cnt (ds->dict) )
return ds->width_of_m * 8 ;
static void
geometry_set_width (GSheetColumn *geom, gint unit, gint width)
{
- PsppireDataStore *ds = PSPPIRE_DATA_STORE(geom);
+ PsppireDataStore *ds = PSPPIRE_DATA_STORE (geom);
struct variable *pv = psppire_dict_get_variable (ds->dict, unit);
static GtkJustification
geometry_get_justification (const GSheetColumn *geom, gint unit)
{
- PsppireDataStore *ds = PSPPIRE_DATA_STORE(geom);
+ PsppireDataStore *ds = PSPPIRE_DATA_STORE (geom);
const struct variable *pv ;
{
gchar *text;
struct variable *pv ;
- PsppireDataStore *ds = PSPPIRE_DATA_STORE(geom);
+ PsppireDataStore *ds = PSPPIRE_DATA_STORE (geom);
if ( unit >= psppire_dict_get_var_cnt (ds->dict) )
return g_locale_to_utf8 (null_var_name, -1, 0, 0, 0);
static gboolean
geometry_get_sensitivity (const GSheetColumn *geom, gint unit)
{
- PsppireDataStore *ds = PSPPIRE_DATA_STORE(geom);
+ PsppireDataStore *ds = PSPPIRE_DATA_STORE (geom);
return (unit < psppire_dict_get_var_cnt (ds->dict));
}
static gint
geometry_get_row_count (const GSheetRow *geom, gpointer data)
{
- PsppireDataStore *ds = PSPPIRE_DATA_STORE(geom);
+ PsppireDataStore *ds = PSPPIRE_DATA_STORE (geom);
return TRAILING_ROWS + psppire_case_file_get_case_count (ds->case_file);
}
static gboolean
geometry_get_row_sensitivity (const GSheetRow *geom, gint unit, gpointer data)
{
- PsppireDataStore *ds = PSPPIRE_DATA_STORE(geom);
+ PsppireDataStore *ds = PSPPIRE_DATA_STORE (geom);
return (unit < psppire_case_file_get_case_count (ds->case_file));
{
gchar *text;
gchar *s;
- PsppireDataStore *ds = PSPPIRE_DATA_STORE(geom);
+ PsppireDataStore *ds = PSPPIRE_DATA_STORE (geom);
if ( unit >
TRAILING_ROWS + psppire_case_file_get_case_count (ds->case_file))
iface->get_button_label = geometry_get_row_button_label;
}
+