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_SIGNAL_RUN_FIRST,
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)
{
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_data_store_set_dictionary (retval, dict);
-
return retval;
}
void
psppire_data_store_set_dictionary (PsppireDataStore *data_store, PsppireDict *dict)
{
- gint var_cnt = psppire_dict_get_next_value_idx (dict);
-
data_store->dict = dict;
if ( data_store->case_file)
data_store->case_file = 0;
}
- data_store->case_file = psppire_case_file_new (var_cnt);
+ data_store->case_file = psppire_case_file_new ();
+
+
g_signal_connect (data_store->case_file, "cases-deleted",
G_CALLBACK (delete_cases_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),
data_store);
pv = psppire_dict_get_variable (store->dict, column);
+ g_assert (pv);
+
idx = var_get_case_index (pv);
+ g_assert (idx >= 0);
+
v = psppire_case_file_get_value (store->case_file, row, idx);
g_return_val_if_fail (v, NULL);
#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),
iface->get_button_label = geometry_get_row_button_label;
}
+