X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-data-store.c;h=f36fe38acb798c64eae63532862fbc8855c0ab50;hb=28ced40c7ddd248b5d64b7b5272fb17b6e97b13a;hp=71d7d5f53976c124fc779a7a56fa127b13eaa09e;hpb=cc57a28ef6796ae9a64ef80d453f72126956d49d;p=pspp-builds.git diff --git a/src/ui/gui/psppire-data-store.c b/src/ui/gui/psppire-data-store.c index 71d7d5f5..f36fe38a 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; } @@ -308,18 +310,15 @@ delete_variable_callback (GObject *obj, gint dict_index, #endif } - - 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); - psppire_sheet_model_range_changed (PSPPIRE_SHEET_MODEL (store), -1, var_num, -1, var_num); @@ -1006,3 +1005,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); +}