From 5619f4e44bb92f9c185c0b6422be321df7ac50c2 Mon Sep 17 00:00:00 2001 From: John Darrington Date: Fri, 7 Apr 2017 09:36:54 +0200 Subject: [PATCH] Move paste related code from PsppireDataWindow to PsppireDataEditor --- src/ui/gui/psppire-data-editor.c | 26 ++++++++++++++++++++++++++ src/ui/gui/psppire-data-editor.h | 3 +-- src/ui/gui/psppire-data-window.c | 29 +---------------------------- 3 files changed, 28 insertions(+), 30 deletions(-) diff --git a/src/ui/gui/psppire-data-editor.c b/src/ui/gui/psppire-data-editor.c index eb2e8eb4f9..2546c8e7a9 100644 --- a/src/ui/gui/psppire-data-editor.c +++ b/src/ui/gui/psppire-data-editor.c @@ -1119,3 +1119,29 @@ psppire_data_editor_goto_variable (PsppireDataEditor *de, gint dict_index) break; } } + +/* Set the datum at COL, ROW, to that contained in VALUE. + */ +static void +store_set_datum (GtkTreeModel *model, gint col, gint row, + const GValue *value) +{ + PsppireDataStore *store = PSPPIRE_DATA_STORE (model); + GVariant *v = g_value_get_variant (value); + union value uv; + value_variant_get (&uv, v); + const struct variable *var = psppire_dict_get_variable (store->dict, col); + psppire_data_store_set_value (store, row, var, &uv); + value_destroy_from_variant (&uv, v); +} + +void +psppire_data_editor_paste (PsppireDataEditor *de) +{ + JmdSheet *sheet = JMD_SHEET (de->data_sheet); + GtkClipboard *clip = + gtk_clipboard_get_for_display (gtk_widget_get_display (GTK_WIDGET (sheet)), + GDK_SELECTION_CLIPBOARD); + + jmd_sheet_paste (sheet, clip, store_set_datum); +} diff --git a/src/ui/gui/psppire-data-editor.h b/src/ui/gui/psppire-data-editor.h index 490c8d56d3..37deec0626 100644 --- a/src/ui/gui/psppire-data-editor.h +++ b/src/ui/gui/psppire-data-editor.h @@ -110,8 +110,7 @@ struct _PsppireDataSheet *psppire_data_editor_get_active_data_sheet (PsppireData enum {PSPPIRE_DATA_EDITOR_DATA_VIEW = 0, PSPPIRE_DATA_EDITOR_VARIABLE_VIEW}; - - +void psppire_data_editor_paste (PsppireDataEditor *de); G_END_DECLS diff --git a/src/ui/gui/psppire-data-window.c b/src/ui/gui/psppire-data-window.c index 37ff6bc7d7..091af6503e 100644 --- a/src/ui/gui/psppire-data-window.c +++ b/src/ui/gui/psppire-data-window.c @@ -1118,8 +1118,6 @@ on_cut (PsppireDataWindow *dw) } } - - static void on_copy (PsppireDataWindow *dw) { @@ -1134,35 +1132,16 @@ on_copy (PsppireDataWindow *dw) } } - -static void -trf (GtkClipboard *clip, - GdkAtom *atoms, - gint n_atoms, - gpointer data) -{ - int i; - for (i = 0; i < n_atoms; ++i) - { - g_print ("%s\n", gdk_atom_name (atoms[i])); - } -} - static void on_paste (PsppireDataWindow *dw) { int p = gtk_notebook_get_current_page (GTK_NOTEBOOK (dw->data_editor)); if (p == PSPPIRE_DATA_EDITOR_DATA_VIEW) { - GtkClipboard *clip = - gtk_clipboard_get_for_display (gtk_widget_get_display (GTK_WIDGET (dw)), - GDK_SELECTION_CLIPBOARD); - - gtk_clipboard_request_targets (clip, trf, dw); + psppire_data_editor_paste (dw->data_editor); } } - static void on_clear_cases (PsppireDataWindow *dw) { @@ -1192,8 +1171,6 @@ on_clear_variables (PsppireDataWindow *dw) } } - - static void insert_variable (PsppireDataWindow *dw) { @@ -1212,8 +1189,6 @@ insert_variable (PsppireDataWindow *dw) } } - - static void insert_case_at_row (PsppireDataWindow *dw) { @@ -1222,7 +1197,6 @@ insert_case_at_row (PsppireDataWindow *dw) psppire_data_editor_insert_new_case_at_posn (de, range->start_y); } - static void goto_case (PsppireDataWindow *dw) { @@ -1234,7 +1208,6 @@ goto_case (PsppireDataWindow *dw) } } - static GtkWidget * create_file_menu (PsppireDataWindow *dw) { -- 2.30.2