X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-data-store.c;h=45104f5cbb8ff519418fee88edf92e496e91652c;hb=7fbfc32fc3c636959b0a25b3e76609f86519e84a;hp=1bbd2bb8e517ddb48dd989a9734a88f9c46f1dc5;hpb=deb4fd96c0c171fc8eb64f7f1e7f5c2af4931416;p=pspp-builds.git diff --git a/src/ui/gui/psppire-data-store.c b/src/ui/gui/psppire-data-store.c index 1bbd2bb8..45104f5c 100644 --- a/src/ui/gui/psppire-data-store.c +++ b/src/ui/gui/psppire-data-store.c @@ -263,6 +263,7 @@ static GtkJustification get_column_justification (const PsppireSheetModel *model static gchar * get_row_button_label (const PsppireSheetModel *model, gint row); static gboolean get_row_sensitivity (const PsppireSheetModel *model, gint row); +static gboolean get_row_overstrike (const PsppireSheetModel *model, gint row); static void @@ -285,6 +286,7 @@ psppire_data_store_sheet_model_init (PsppireSheetModelIface *iface) iface->get_row_title = get_row_button_label; iface->get_row_sensitivity = get_row_sensitivity; + iface->get_row_overstrike = get_row_overstrike; } @@ -311,9 +313,9 @@ delete_variable_callback (GObject *obj, gint dict_index, static void variable_changed_callback (GObject *obj, gint var_num, gpointer data) { +#if AXIS_TRANSITION PsppireDataStore *store = PSPPIRE_DATA_STORE (data); -#if AXIS_TRANSITION psppire_sheet_column_columns_changed (PSPPIRE_SHEET_COLUMN (store), var_num, 1); @@ -657,6 +659,7 @@ gboolean psppire_data_store_set_string (PsppireDataStore *store, const gchar *text, glong row, glong col) { + gchar *s; glong n_cases; const struct variable *pv = psppire_dict_get_variable (store->dict, col); if ( NULL == pv) @@ -670,9 +673,12 @@ psppire_data_store_set_string (PsppireDataStore *store, if (row == n_cases) psppire_data_store_insert_new_case (store, row); + s = utf8_to_pspp_locale (text, -1, NULL); + psppire_data_store_data_in (store, row, - var_get_case_index (pv), ss_cstr (text), + var_get_case_index (pv), ss_cstr (s), var_get_write_format (pv)); + free (s); psppire_sheet_model_range_changed (PSPPIRE_SHEET_MODEL (store), row, col, row, col); @@ -1003,3 +1009,30 @@ psppire_data_store_insert_values (PsppireDataStore *ds, return TRUE; } + +static gboolean +get_row_overstrike (const PsppireSheetModel *model, gint row) +{ + union value val; + PsppireDataStore *ds = PSPPIRE_DATA_STORE (model); + + const struct dictionary *dict = ds->dict->dict; + + const struct variable *filter = dict_get_filter (dict); + + if ( row < 0 || row >= datasheet_get_row_cnt (ds->datasheet)) + return FALSE; + + if ( ! filter) + return FALSE; + + g_assert (var_is_numeric (filter)); + + if ( ! datasheet_get_value (ds->datasheet, row, + var_get_case_index (filter), + &val, 0) ) + return FALSE; + + + return (val.f == 0.0); +}