X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-data-store.c;h=986f30e02d1cf109fedeb3d86db0248eeee592ae;hb=4517b68e7248f22e7b7ed81f0d73179351a53047;hp=d75348584211afe2e72b3dbe5da8f8975c6d7fc9;hpb=75fe94ea24fd7b12a0d99b8f36a79d8423e668d4;p=pspp-builds.git diff --git a/src/ui/gui/psppire-data-store.c b/src/ui/gui/psppire-data-store.c index d7534858..986f30e0 100644 --- a/src/ui/gui/psppire-data-store.c +++ b/src/ui/gui/psppire-data-store.c @@ -286,6 +286,25 @@ delete_variables_callback (GObject *obj, gint var_num, gint n_vars, gpointer dat 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) { @@ -298,8 +317,10 @@ 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); } @@ -348,7 +369,6 @@ psppire_data_store_new (PsppireDict *dict) psppire_data_store_set_dictionary (retval, dict); - return retval; } @@ -365,8 +385,6 @@ psppire_data_store_new (PsppireDict *dict) 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) @@ -375,7 +393,9 @@ psppire_data_store_set_dictionary (PsppireDataStore *data_store, PsppireDict *di 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), @@ -398,6 +418,11 @@ psppire_data_store_set_dictionary (PsppireDataStore *data_store, PsppireDict *di 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); @@ -474,8 +499,12 @@ psppire_data_store_get_string (const GSheetModel *model, gint row, gint column) 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); @@ -821,3 +850,4 @@ psppire_data_store_sheet_row_init (GSheetRowIface *iface) iface->get_button_label = geometry_get_row_button_label; } +