desktop: reversed mimetype to application/x-spss-sps
[pspp] / src / ui / gui / psppire-data-window.c
index 8af85b946b590e233417451317d6afd0f6809219..3a45fbe137b07ffd3b1261727fe9358dac5874ed 100644 (file)
@@ -47,7 +47,7 @@
 #include "gl/c-strcasestr.h"
 #include "gl/xvasprintf.h"
 
-#include "ui/gui/efficient-sheet/src/jmd-sheet.h"
+#include <ssw-sheet.h>
 
 #include "find-dialog.h"
 #include "options-dialog.h"
@@ -69,6 +69,7 @@
 #include "psppire-dialog-action-frequencies.h"
 #include "psppire-dialog-action-histogram.h"
 #include "psppire-dialog-action-indep-samps.h"
+#include "psppire-dialog-action-k-independent.h"
 #include "psppire-dialog-action-k-related.h"
 #include "psppire-dialog-action-kmeans.h"
 #include "psppire-dialog-action-logistic.h"
@@ -208,7 +209,7 @@ transformation_change_callback (bool transformations_pending,
                                 transformations_pending);
   }
 
-  if ( transformations_pending)
+  if (transformations_pending)
     gtk_label_set_text (GTK_LABEL (status_label),
                        _("Transformations Pending"));
   else
@@ -224,7 +225,7 @@ on_filter_change (GObject *o, gint filter_index, gpointer data)
   GtkWidget *filter_status_area =
     get_widget_assert (de->builder, "filter-use-status-area");
 
-  if ( filter_index == -1 )
+  if (filter_index == -1)
     {
       gtk_label_set_text (GTK_LABEL (filter_status_area), _("Filter off"));
     }
@@ -257,7 +258,7 @@ on_split_change (PsppireDict *dict, gpointer data)
   GtkWidget *split_status_area =
     get_widget_assert (de->builder, "split-file-status-area");
 
-  if ( n_split_vars == 0 )
+  if (n_split_vars == 0)
     {
       gtk_label_set_text (GTK_LABEL (split_status_area), _("No Split"));
     }
@@ -270,7 +271,7 @@ on_split_change (PsppireDict *dict, gpointer data)
 
       text = g_string_new (_("Split by "));
 
-      for (i = 0 ; i < n_split_vars - 1; ++i )
+      for (i = 0 ; i < n_split_vars - 1; ++i)
        {
          g_string_append_printf (text, "%s, ", var_get_name (split_vars[i]));
        }
@@ -294,7 +295,7 @@ on_weight_change (GObject *o, gint weight_index, gpointer data)
   GtkWidget *weight_status_area =
     get_widget_assert (de->builder, "weight-status-area");
 
-  if ( weight_index == -1 )
+  if (weight_index == -1)
     {
       gtk_label_set_text (GTK_LABEL (weight_status_area), _("Weights off"));
     }
@@ -334,7 +335,7 @@ dump_rm (GtkRecentManager *rm)
               gtk_recent_info_get_mime_type (ri),
               gtk_recent_info_get_description (ri),
               gtk_recent_info_get_uri (ri)
-              );
+       );
 
 
       gtk_recent_info_unref (ri);
@@ -450,7 +451,7 @@ save_file (PsppireWindow *w)
 
   fnx = g_string_new (file_name);
 
-  if ( ! name_has_suffix (fnx->str))
+  if (! name_has_suffix (fnx->str))
     g_string_append (fnx, psppire_data_window_format_to_string (de->format));
 
   ds_init_empty (&filename);
@@ -487,7 +488,7 @@ sysfile_info (PsppireDataWindow *de)
 {
   GtkWidget *dialog = psppire_window_file_chooser_dialog (PSPPIRE_WINDOW (de));
 
-  if  ( GTK_RESPONSE_ACCEPT == gtk_dialog_run (GTK_DIALOG (dialog)))
+  if  (GTK_RESPONSE_ACCEPT == gtk_dialog_run (GTK_DIALOG (dialog)))
     {
       struct string filename;
       gchar *file_name =
@@ -612,7 +613,7 @@ data_pick_filename (PsppireWindow *window)
          g_string_new
          (
           gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog))
-          );
+       );
 
         GtkTreeIter iter;
         int format;
@@ -623,7 +624,7 @@ data_pick_filename (PsppireWindow *window)
                             -1);
        de->format = format;
 
-       if ( ! name_has_suffix (filename->str))
+       if (! name_has_suffix (filename->str))
           g_string_append (filename,
                            psppire_data_window_format_to_string (format));
 
@@ -800,7 +801,7 @@ fonts_activate (PsppireDataWindow  *de)
   gtk_window_set_transient_for (GTK_WINDOW (dialog),
                                GTK_WINDOW (toplevel));
 
-  if ( GTK_RESPONSE_OK == gtk_dialog_run (GTK_DIALOG (dialog)) )
+  if (GTK_RESPONSE_OK == gtk_dialog_run (GTK_DIALOG (dialog)))
     {
       PangoFontDescription* font_desc = gtk_font_chooser_get_font_desc (GTK_FONT_CHOOSER (dialog));
 
@@ -919,7 +920,7 @@ on_recent_files_select (GtkMenuShell *menushell,   gpointer user_data)
 
   free (encoding);
 
-  if ( psppire_window_load (PSPPIRE_WINDOW (se), file, encoding, NULL) )
+  if (psppire_window_load (PSPPIRE_WINDOW (se), file, encoding, NULL))
     gtk_widget_show (se);
   else
     gtk_widget_destroy (se);
@@ -970,14 +971,9 @@ file_import (PsppireDataWindow *dw)
   PsppireImportAssistant *asst = PSPPIRE_IMPORT_ASSISTANT (w);
   gtk_widget_show_all (w);
 
-  asst->main_loop = g_main_loop_new (NULL, TRUE);
-  g_main_loop_run (asst->main_loop);
-  g_main_loop_unref (asst->main_loop);
+  int response = psppire_import_assistant_run (asst);
 
-  if (!asst->file_name)
-    goto end;
-
-  switch (asst->response)
+  switch (response)
     {
     case GTK_RESPONSE_APPLY:
       {
@@ -993,7 +989,6 @@ file_import (PsppireDataWindow *dw)
       break;
     }
 
- end:
   gtk_widget_destroy (GTK_WIDGET (asst));
 }
 
@@ -1058,10 +1053,9 @@ connect_action_to_menuitem (GActionMap *map, const gchar *action_name, GtkWidget
 
 
 static void
-set_data_page (PsppireDataWindow *dw)
+on_realize (PsppireDataWindow *dw)
 {
   gtk_notebook_set_current_page (GTK_NOTEBOOK (dw->data_editor), 1);
-  gtk_notebook_set_current_page (GTK_NOTEBOOK (dw->data_editor), 0);
 }
 
 
@@ -1075,8 +1069,8 @@ on_cut (PsppireDataWindow *dw)
       g_object_get (dw->data_editor, "dictionary", &dict, NULL);
 
       gint x, y;
-      JmdSheet *sheet = JMD_SHEET (dw->data_editor->data_sheet);
-      JmdRange sel = *sheet->selection;
+      SswSheet *sheet = SSW_SHEET (dw->data_editor->data_sheet);
+      SswRange sel = *sheet->selection;
 
       GtkClipboard *clip =
        gtk_clipboard_get_for_display (gtk_widget_get_display (GTK_WIDGET (dw)),
@@ -1128,7 +1122,7 @@ on_copy (PsppireDataWindow *dw)
        gtk_clipboard_get_for_display (gtk_widget_get_display (GTK_WIDGET (dw)),
                                   GDK_SELECTION_CLIPBOARD);
 
-      jmd_sheet_set_clip (JMD_SHEET (dw->data_editor->data_sheet), clip);
+      ssw_sheet_set_clip (SSW_SHEET (dw->data_editor->data_sheet), clip);
     }
 }
 
@@ -1149,7 +1143,8 @@ on_clear_cases (PsppireDataWindow *dw)
   int p = gtk_notebook_get_current_page (GTK_NOTEBOOK (de));
   if (p == PSPPIRE_DATA_EDITOR_DATA_VIEW)
     {
-      JmdRange *range = JMD_SHEET(de->data_sheet)->selection;
+      SswRange *range = SSW_SHEET(de->data_sheet)->selection;
+      g_return_if_fail (range->start_y >= 0);
       psppire_data_store_delete_cases (de->data_store, range->start_y,
                                       range->end_y - range->start_y + 1);
       gtk_widget_queue_draw (GTK_WIDGET (de->data_sheet));
@@ -1179,13 +1174,16 @@ insert_variable (PsppireDataWindow *dw)
 
   if (p == PSPPIRE_DATA_EDITOR_DATA_VIEW)
     {
-      JmdRange *range = JMD_SHEET(de->data_sheet)->selection;
+      SswRange *range = SSW_SHEET(de->data_sheet)->selection;
       psppire_data_editor_insert_new_variable_at_posn (de, range->start_x);
     }
   else
     {
-      JmdRange *range = JMD_SHEET(de->var_sheet)->selection;
-      psppire_data_editor_insert_new_variable_at_posn (de, range->start_y);
+      SswRange *range = SSW_SHEET(de->var_sheet)->selection;
+      PsppireDict *dict = NULL;
+      g_object_get (de->var_sheet, "data-model", &dict, NULL);
+      psppire_dict_insert_variable (dict, range->start_y, NULL);
+      gtk_widget_queue_draw (GTK_WIDGET (de->var_sheet));
     }
 }
 
@@ -1193,7 +1191,7 @@ static void
 insert_case_at_row (PsppireDataWindow *dw)
 {
   PsppireDataEditor *de = dw->data_editor;
-  JmdRange *range = JMD_SHEET(de->data_sheet)->selection;
+  SswRange *range = SSW_SHEET(de->data_sheet)->selection;
   psppire_data_editor_insert_new_case_at_posn (de, range->start_y);
 }
 
@@ -1458,7 +1456,7 @@ psppire_data_window_finish_init (PsppireDataWindow *de,
     PSPPIRE_DATA_EDITOR (psppire_data_editor_new (de->dict, de->data_store));
 
   g_signal_connect (de, "realize",
-                    G_CALLBACK (set_data_page), de);
+                    G_CALLBACK (on_realize), de);
 
   g_signal_connect_swapped (de->data_store, "case-changed",
                            G_CALLBACK (set_unsaved), de);
@@ -1543,6 +1541,7 @@ psppire_data_window_finish_init (PsppireDataWindow *de,
   connect_dialog_action (PSPPIRE_TYPE_DIALOG_ACTION_1SKS, de);
   connect_dialog_action (PSPPIRE_TYPE_DIALOG_ACTION_TWO_SAMPLE, de);
   connect_dialog_action (PSPPIRE_TYPE_DIALOG_ACTION_K_RELATED, de);
+  connect_dialog_action (PSPPIRE_TYPE_DIALOG_ACTION_K_INDEPENDENT, de);
 
   {
     GSimpleAction *file_import_action = g_simple_action_new ("file-import", NULL);
@@ -2020,12 +2019,10 @@ open_data_window (PsppireWindow *victim, const char *file_name,
       && psppire_data_window_is_empty (PSPPIRE_DATA_WINDOW (victim)))
     {
       window = GTK_WIDGET (victim);
-      gtk_widget_hide (GTK_WIDGET (PSPPIRE_DATA_WINDOW (window)->data_editor));
     }
   else
     window = psppire_data_window_new (NULL);
 
   psppire_window_load (PSPPIRE_WINDOW (window), file_name, encoding, hint);
-  gtk_widget_show_all (window);
   return GTK_WINDOW (window);
 }