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
iface->get_row_title = get_row_button_label;
iface->get_row_sensitivity = get_row_sensitivity;
+ iface->get_row_overstrike = get_row_overstrike;
}
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)
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);
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);
+}