X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-data-editor.c;h=861191917e4160e524ed3927e30a1f3389aac42b;hb=a86739f7fdb0a11a16f6c0a47c0e90773f134a53;hp=ef2c8826f554579d9d226c835563bc99c20062b5;hpb=04a62b3c3fc21cc5d320c9e68cd46642bb309553;p=pspp-builds.git diff --git a/src/ui/gui/psppire-data-editor.c b/src/ui/gui/psppire-data-editor.c index ef2c8826..86119191 100644 --- a/src/ui/gui/psppire-data-editor.c +++ b/src/ui/gui/psppire-data-editor.c @@ -1,5 +1,5 @@ /* PSPPIRE - a graphical user interface for PSPP. - Copyright (C) 2008 Free Software Foundation, Inc. + Copyright (C) 2008, 2009 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,16 +17,16 @@ #include #include #include -#include +#include #include "psppire-data-editor.h" #include "psppire-var-sheet.h" #include #include "psppire-data-store.h" -#include +#include #include "helper.h" -#include +#include #include #define _(msgid) gettext (msgid) #define N_(msgid) msgid @@ -548,6 +548,8 @@ psppire_data_editor_class_init (PsppireDataEditorClass *klass) object_class->set_property = psppire_data_editor_set_property; object_class->get_property = psppire_data_editor_get_property; + + data_store_spec = g_param_spec_pointer ("data-store", "Data Store", @@ -990,11 +992,11 @@ psppire_data_editor_init (PsppireDataEditor *de) G_CALLBACK (on_switch_page), NULL); + g_object_set (de, "can-focus", FALSE, NULL); g_signal_connect (de, "map", G_CALLBACK (on_map), NULL); - // psppire_sheet_hide_column_titles (de->var_sheet); // psppire_sheet_hide_row_titles (de->data_sheet); @@ -1455,13 +1457,19 @@ static gboolean on_switch_page (PsppireDataEditor *de, GtkNotebookPage *p, gint pagenum, gpointer data) { - if ( pagenum != PSPPIRE_DATA_EDITOR_DATA_VIEW ) + switch (pagenum) { + case PSPPIRE_DATA_EDITOR_DATA_VIEW: + gtk_widget_grab_focus (de->data_vbox); + on_select_range (de); + break; + case PSPPIRE_DATA_EDITOR_VARIABLE_VIEW: + gtk_widget_grab_focus (de->var_sheet); emit_selected_signal (de); - return TRUE; - } - - on_select_range (de); + break; + default: + break; + }; return TRUE; } @@ -1607,16 +1615,9 @@ data_sheet_set_clip (PsppireSheet *sheet) writer = autopaging_writer_create (dict_get_next_value_idx (clip_dict)); for (i = range.row0; i <= range.rowi ; ++i ) { - struct ccase old; - - if (psppire_data_store_get_case (ds, i, &old)) - { - struct ccase new; - - case_map_execute (map, &old, &new); - case_destroy (&old); - casewriter_write (writer, &new); - } + struct ccase *old = psppire_data_store_get_case (ds, i); + if (old != NULL) + casewriter_write (writer, case_map_execute (map, old)); else casewriter_force_error (writer); } @@ -1667,8 +1668,10 @@ clip_to_text (void) for (r = 0 ; r < case_cnt ; ++r ) { int c; - struct ccase cc; - if ( ! casereader_peek (clip_datasheet, r, &cc)) + struct ccase *cc; + + cc = casereader_peek (clip_datasheet, r); + if (cc == NULL) { g_warning ("Clipboard seems to have inexplicably shrunk"); break; @@ -1677,7 +1680,7 @@ clip_to_text (void) for (c = 0 ; c < var_cnt ; ++c) { const struct variable *v = dict_get_var (clip_dict, c); - data_out_g_string (string, v, &cc); + data_out_g_string (string, v, cc); if ( c < val_cnt - 1 ) g_string_append (string, "\t"); } @@ -1685,7 +1688,7 @@ clip_to_text (void) if ( r < case_cnt) g_string_append (string, "\n"); - case_destroy (&cc); + case_unref (cc); } return string; @@ -1710,8 +1713,8 @@ clip_to_html (void) for (r = 0 ; r < case_cnt ; ++r ) { int c; - struct ccase cc; - if ( ! casereader_peek (clip_datasheet, r, &cc)) + struct ccase *cc = casereader_peek (clip_datasheet, r); + if (cc == NULL) { g_warning ("Clipboard seems to have inexplicably shrunk"); break; @@ -1722,13 +1725,13 @@ clip_to_html (void) { const struct variable *v = dict_get_var (clip_dict, c); g_string_append (string, ""); - data_out_g_string (string, v, &cc); + data_out_g_string (string, v, cc); g_string_append (string, "\n"); } g_string_append (string, "\n"); - case_destroy (&cc); + case_unref (cc); } g_string_append (string, "\n"); @@ -1889,5 +1892,3 @@ on_owner_change (GtkClipboard *clip, GdkEventOwnerChange *event, gpointer data) g_signal_emit (de, data_editor_signals[DATA_AVAILABLE_CHANGED], 0, compatible_target); } - -