added .gitattributes file such that lexer.at shows diff
[pspp] / src / ui / gui / psppire-data-window.c
index 811d5e9eb8825bd52d4922e787773fb6f5b9132c..c43c65d120ee7307fd68fba953b4f8fe83385d03 100644 (file)
@@ -1073,6 +1073,22 @@ on_cut (PsppireDataWindow *dw)
       SswSheet *sheet = SSW_SHEET (dw->data_editor->data_sheet);
       SswRange sel = *sheet->selection;
 
+      if (ssw_sheet_try_cut (sheet))
+       return;
+
+      if (sel.start_x > sel.end_x)
+       {
+         gint tmp = sel.start_x;
+         sel.start_x = sel.end_x;
+         sel.end_x = tmp;
+       }
+      if (sel.start_y > sel.end_y)
+       {
+         gint tmp = sel.start_y;
+         sel.start_y = sel.end_y;
+         sel.end_y = tmp;
+       }
+         
       GtkClipboard *clip =
        gtk_clipboard_get_for_display (gtk_widget_get_display (GTK_WIDGET (dw)),
                                       GDK_SELECTION_CLIPBOARD);
@@ -1084,32 +1100,41 @@ on_cut (PsppireDataWindow *dw)
          for (x = sel.start_x ; x <= sel.end_x; ++x)
            {
              const struct variable * var = psppire_dict_get_variable (dict, x);
+             gboolean use_value_label = FALSE;
+             g_object_get (dw->data_editor, "value-labels", &use_value_label, NULL);
              gchar *s = psppire_data_store_get_string (dw->data_editor->data_store,
-                                                         y, var, FALSE);
+                                                         y, var, use_value_label);
              g_string_append (str, s);
-             g_string_append (str, "\t");
+              if (x < sel.end_x)
+                g_string_append (str, "\t");
              g_free (s);
            }
-         g_string_append (str, "\n");
+          if (y < sel.end_y)
+            g_string_append (str, "\n");
        }
 
       gtk_clipboard_set_text (clip, str->str, str->len);
       g_string_free (str, TRUE);
 
-      /* Now fill the selected area with SYSMIS */
-      union value sm ;
-      sm.f = SYSMIS;
+      /* Now fill the selected area with SYSMIS or blanks */
       for (x = sel.start_x ; x <= sel.end_x; ++x)
        {
-         const struct variable * var = psppire_dict_get_variable (dict, x);
+         const struct variable *var = psppire_dict_get_variable (dict, x);
+          int width = var_get_width (var);
+          union value sm ;
+          value_init (&sm, width);
+          if (var_is_numeric (var))
+            sm.f = SYSMIS;
+          else
+            memset (sm.s, 0, width);
          for (y = sel.start_y ; y <= sel.end_y; ++y)
            {
              psppire_data_store_set_value (dw->data_editor->data_store,
                                            y,
                                            var, &sm);
            }
+          value_destroy (&sm, width);
        }
-
     }
 }
 
@@ -1470,8 +1495,6 @@ psppire_data_window_finish_init (PsppireDataWindow *de,
 
   dataset_set_callbacks (de->dataset, &cbs, de);
 
-  connect_help (de->builder);
-
   gtk_box_pack_start (GTK_BOX (box), menubar, FALSE, TRUE, 0);
   gtk_box_pack_start (GTK_BOX (box), hb, FALSE, TRUE, 0);
   gtk_box_pack_start (GTK_BOX (box), GTK_WIDGET (de->data_editor), TRUE, TRUE, 0);
@@ -1667,14 +1690,14 @@ psppire_data_window_finish_init (PsppireDataWindow *de,
       GtkToolItem *ti = gtk_tool_button_new (NULL, "Open");
       g_signal_connect_swapped (ti, "clicked", G_CALLBACK (psppire_window_open), de);
       gtk_toolbar_insert (GTK_TOOLBAR (hb), ti, idx++);
-      gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (ti), "file-open-data");
+      gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (ti), "pspp-file-open-data");
     }
 
     {
       GtkToolItem *ti = gtk_tool_button_new (NULL, "Save");
       g_signal_connect_swapped (ti, "clicked", G_CALLBACK (psppire_window_save), de);
       gtk_toolbar_insert (GTK_TOOLBAR (hb), ti, idx++);
-      gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (ti), "file-save-data");
+      gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (ti), "pspp-file-save-data");
     }
 
     gtk_toolbar_insert (GTK_TOOLBAR (hb), gtk_separator_tool_item_new (), idx++);
@@ -1688,7 +1711,7 @@ psppire_data_window_finish_init (PsppireDataWindow *de,
                                G_CALLBACK (psppire_dialog_action_activate_null), a);
 
       gtk_toolbar_insert (GTK_TOOLBAR (hb), de->ti_jump_to_variable, idx++);
-      gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (de->ti_jump_to_variable), "edit-go-to-variable");
+      gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (de->ti_jump_to_variable), "pspp-edit-go-to-variable");
       gtk_widget_set_tooltip_text (GTK_WIDGET (de->ti_jump_to_variable), _("Jump to variable"));
     }
 
@@ -1701,7 +1724,7 @@ psppire_data_window_finish_init (PsppireDataWindow *de,
                                G_CALLBACK (g_action_activate_null), a);
 
       gtk_toolbar_insert (GTK_TOOLBAR (hb), de->ti_jump_to_case, idx++);
-      gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (de->ti_jump_to_case), "edit-go-to-case");
+      gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (de->ti_jump_to_case), "pspp-edit-go-to-case");
       gtk_widget_set_tooltip_text (GTK_WIDGET (de->ti_jump_to_case), _("Jump to a case in the data sheet"));
     }
 
@@ -1715,7 +1738,7 @@ psppire_data_window_finish_init (PsppireDataWindow *de,
 
 
       gtk_toolbar_insert (GTK_TOOLBAR (hb), de->ti_find, idx++);
-      gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (de->ti_find), "edit-find");
+      gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (de->ti_find), "pspp-edit-find");
       gtk_widget_set_tooltip_text (GTK_WIDGET (de->ti_find), _("Search for values in the data"));
     }
 
@@ -1727,7 +1750,7 @@ psppire_data_window_finish_init (PsppireDataWindow *de,
                                G_CALLBACK (g_action_activate_null), a);
 
       gtk_toolbar_insert (GTK_TOOLBAR (hb), de->ti_insert_case, idx++);
-      gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (de->ti_insert_case), "edit-insert-case");
+      gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (de->ti_insert_case), "pspp-edit-insert-case");
       gtk_widget_set_tooltip_text (GTK_WIDGET (de->ti_insert_case), _("Create a new case at the current position"));
     }
 
@@ -1739,7 +1762,7 @@ psppire_data_window_finish_init (PsppireDataWindow *de,
                                G_CALLBACK (g_action_activate_null), a);
 
       gtk_toolbar_insert (GTK_TOOLBAR (hb), de->ti_insert_variable, idx++);
-      gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (de->ti_insert_variable), "edit-insert-variable");
+      gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (de->ti_insert_variable), "pspp-edit-insert-variable");
       gtk_widget_set_tooltip_text (GTK_WIDGET (de->ti_insert_variable), _("Create a new variable at the current position"));
     }
 
@@ -1753,7 +1776,7 @@ psppire_data_window_finish_init (PsppireDataWindow *de,
       g_signal_connect_swapped (ti, "clicked",
                                G_CALLBACK (psppire_dialog_action_activate_null), a);
       gtk_toolbar_insert (GTK_TOOLBAR (hb), ti, idx++);
-      gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (ti), "data-split-file");
+      gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (ti), "pspp-data-split-file");
       gtk_widget_set_tooltip_text (GTK_WIDGET (ti), _("Split the active dataset"));
     }
 
@@ -1765,7 +1788,7 @@ psppire_data_window_finish_init (PsppireDataWindow *de,
       g_signal_connect_swapped (ti, "clicked",
                                G_CALLBACK (psppire_dialog_action_activate_null), a);
       gtk_toolbar_insert (GTK_TOOLBAR (hb), ti, idx++);
-      gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (ti), "data-weight-cases");
+      gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (ti), "pspp-data-weight-cases");
       gtk_widget_set_tooltip_text (GTK_WIDGET (ti), _("Weight cases by variable"));
     }
 
@@ -1776,7 +1799,7 @@ psppire_data_window_finish_init (PsppireDataWindow *de,
       g_signal_connect (de->ti_value_labels_button, "toggled",
                        G_CALLBACK (on_labels_button_toggle), de);
       gtk_toolbar_insert (GTK_TOOLBAR (hb), de->ti_value_labels_button, idx++);
-      gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (de->ti_value_labels_button), "view-value-labels");
+      gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (de->ti_value_labels_button), "pspp-view-value-labels");
       gtk_widget_set_tooltip_text (GTK_WIDGET (de->ti_value_labels_button), _("Show/hide value labels"));
     }
   }