X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fdata-editor.c;h=a8b3d5e3549fd4555ea42390b603c9fde03c5e70;hb=4c938ca6e42d409551da41486906ec70ef6fb6c0;hp=2f15096c3f274cf8140457c139ba9cfe2f0b95be;hpb=3e2bf013a731344daed7ab206d4a3c2460688208;p=pspp-builds.git diff --git a/src/ui/gui/data-editor.c b/src/ui/gui/data-editor.c index 2f15096c..a8b3d5e3 100644 --- a/src/ui/gui/data-editor.c +++ b/src/ui/gui/data-editor.c @@ -171,7 +171,22 @@ on_recent_files_select (GtkMenuShell *menushell, gpointer user_data) #endif +static void +datum_entry_activate (GtkEntry *entry, gpointer data) +{ + gint row, column; + GtkSheet *data_sheet = GTK_SHEET (data); + PsppireDataStore *store = PSPPIRE_DATA_STORE (gtk_sheet_get_model (data_sheet)); + + const char *text = gtk_entry_get_text (entry); + gtk_sheet_get_active_cell (data_sheet, &row, &column); + + if ( row == -1 || column == -1) + return; + + psppire_data_store_set_string (store, text, row, column); +} /* Create a new data editor. @@ -184,6 +199,7 @@ new_data_editor (void) GtkSheet *var_sheet ; GtkSheet *data_sheet ; PsppireVarStore *vs; + GtkWidget *datum_entry; de = g_malloc0 (sizeof (*de)); @@ -202,6 +218,12 @@ new_data_editor (void) G_CALLBACK (update_data_ref_entry), de->xml); + datum_entry = get_widget_assert (de->xml, "datum_entry"); + + g_signal_connect (G_OBJECT (datum_entry), "activate", + G_CALLBACK (datum_entry_activate), + data_sheet); + g_signal_connect (vs->dict, "weight-changed", G_CALLBACK (on_weight_change), de); @@ -302,9 +324,6 @@ new_data_editor (void) de->action_data_open); - - - #if RECENT_LISTS_AVAILABLE { GtkRecentManager *rm = gtk_recent_manager_get_default (); @@ -1247,34 +1266,47 @@ update_data_ref_entry (const GtkSheet *sheet, gint row, gint col, gpointer data) { GladeXML *data_editor_xml = data; - /* The entry where the reference to the current cell is displayed */ - GtkEntry *cell_ref_entry; - PsppireDataStore *data_store = PSPPIRE_DATA_STORE (gtk_sheet_get_model (sheet)); g_return_val_if_fail (data_editor_xml, FALSE); if (data_store) { - const struct variable *pv = + const struct variable *var = psppire_dict_get_variable (data_store->dict, col); - gchar *text ; - gchar *s ; + { + /* The entry where the reference to the current cell is displayed */ + GtkEntry *cell_ref_entry = + GTK_ENTRY (get_widget_assert (data_editor_xml, + "cell_ref_entry")); - text = g_strdup_printf ("%d: %s", row, - pv ? var_get_name (pv) : ""); + gchar *text = g_strdup_printf ("%d: %s", row, + var ? var_get_name (var) : ""); - cell_ref_entry = GTK_ENTRY (get_widget_assert (data_editor_xml, - "cell_ref_entry")); + gchar *s = pspp_locale_to_utf8 (text, -1, 0); - s = pspp_locale_to_utf8 (text, -1, 0); + g_free (text); - g_free (text); + gtk_entry_set_text (cell_ref_entry, s); - gtk_entry_set_text (cell_ref_entry, s); + g_free (s); + } - g_free (s); + { + GtkEntry *datum_entry = + GTK_ENTRY (get_widget_assert (data_editor_xml, + "datum_entry")); + + gchar *text = + psppire_data_store_get_string (data_store, row, + var_get_dict_index(var)); + g_strchug (text); + + gtk_entry_set_text (datum_entry, text); + + free (text); + } } return FALSE;