- else
- {
- if (n_cases == 0 || n_vars == 0)
- {
- ref_cell_text = NULL;
- }
- else
- {
- struct string s;
-
- /* The glib string library does not understand the ' printf modifier
- on all platforms, but the "struct string" library does (because
- Gnulib fixes that problem), so use the latter. */
- ds_init_empty (&s);
- ds_put_format (&s, ngettext ("%'d case", "%'d cases", n_cases),
- n_cases);
- ds_put_byte (&s, ' ');
- ds_put_unichar (&s, 0xd7); /* U+00D7 MULTIPLICATION SIGN */
- ds_put_byte (&s, ' ');
- ds_put_format (&s, ngettext ("%'d variable", "%'d variables",
- n_vars),
- n_vars);
- ref_cell_text = ds_steal_cstr (&s);
- }
-
- psppire_value_entry_set_variable (PSPPIRE_VALUE_ENTRY (de->datum_entry),
- NULL);
- gtk_entry_set_text (
- GTK_ENTRY (gtk_bin_get_child (GTK_BIN (de->datum_entry))), "");
- gtk_widget_set_sensitive (de->datum_entry, FALSE);
- }
-
- gtk_label_set_label (GTK_LABEL (de->cell_ref_label),
- ref_cell_text ? ref_cell_text : "");
- g_free (ref_cell_text);
-}
-
-static void
-on_datum_entry_activate (PsppireValueEntry *entry, PsppireDataEditor *de)
-{
- PsppireDataSheet *data_sheet = psppire_data_editor_get_active_data_sheet (de);
- struct variable *var;
- union value value;
- int width;
- gint row;
-
- row = psppire_data_sheet_get_current_case (data_sheet);
- var = psppire_data_sheet_get_current_variable (data_sheet);
- if (row < 0 || !var)
- return;
-
- width = var_get_width (var);
- value_init (&value, width);
- if (psppire_value_entry_get_value (PSPPIRE_VALUE_ENTRY (de->datum_entry),
- &value, width))
- psppire_data_store_set_value (de->data_store, row, var, &value);
- value_destroy (&value, width);