Merge 'master' into 'psppsheet'.
[pspp] / src / ui / gui / aggregate-dialog.c
index c06011da92fd19096d25dbac440c2efee0488c23..a5c243a8e2de40c5fa4f80d5f581248f471807a0 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPPIRE - a graphical user interface for PSPP.
-   Copyright (C) 2010, 2011  Free Software Foundation
+   Copyright (C) 2010, 2011, 2012  Free Software Foundation
 
    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
@@ -35,6 +35,7 @@
 #include "dict-display.h"
 
 #include "executor.h"
+#include "builder-wrapper.h"
 #include "helper.h"
 
 #include <gtk/gtk.h>
@@ -164,20 +165,19 @@ choose_filename (struct aggregate *fd)
                                                           GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
                                                           GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,
                                                           NULL);
+  g_object_set (dialog, "local-only", FALSE, NULL);
 
   gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), TRUE);
 
 
   filter = gtk_file_filter_new ();
   gtk_file_filter_set_name (filter, _("System Files (*.sav)"));
-  gtk_file_filter_add_pattern (filter, "*.sav");
-  gtk_file_filter_add_pattern (filter, "*.SAV");
+  gtk_file_filter_add_mime_type (filter, "application/x-spss-sav");
   gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);
 
   filter = gtk_file_filter_new ();
   gtk_file_filter_set_name (filter, _("Portable Files (*.por) "));
-  gtk_file_filter_add_pattern (filter, "*.por");
-  gtk_file_filter_add_pattern (filter, "*.POR");
+  gtk_file_filter_add_mime_type (filter, "application/x-spss-por");
   gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);
 
 
@@ -226,6 +226,7 @@ populate_combo_model (GtkComboBox *cb)
   gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (cb), renderer, "text", 0);
 
   gtk_combo_box_set_model (GTK_COMBO_BOX (cb), GTK_TREE_MODEL (list));
+  g_object_unref (list);
 }
 
 
@@ -468,8 +469,6 @@ aggregate_dialog (PsppireDataWindow *dw)
   struct aggregate fd;
   gint response;
 
-  PsppireVarStore *vs;
-
   GtkWidget *dialog ;
   GtkWidget *source ;
 
@@ -527,6 +526,7 @@ aggregate_dialog (PsppireDataWindow *dw)
                                             G_TYPE_DOUBLE);
 
     psppire_acr_set_model (PSPPIRE_ACR (fd.summary_acr), list);
+    g_object_unref (list);
 
     psppire_acr_set_get_value_func (PSPPIRE_ACR (fd.summary_acr),
                                                 get_summary_spec, &fd);
@@ -564,11 +564,9 @@ aggregate_dialog (PsppireDataWindow *dw)
 
   g_signal_connect_swapped (dialog, "refresh", G_CALLBACK (refresh),  &fd);
 
-  g_object_get (fd.de->data_editor, "var-store", &vs, NULL);
-
   gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (fd.de));
 
-  g_object_get (vs, "dictionary", &fd.dict, NULL);
+  g_object_get (fd.de->data_editor, "dictionary", &fd.dict, NULL);
   g_object_set (source, "model", fd.dict, NULL);
 
 
@@ -633,8 +631,8 @@ static void
 append_summary_spec (const struct aggregate *agg, GtkTreeIter *iter, GString *string)
 {
   GtkTreeIter combo_iter;
-  const char *varname;
-  const char *funcname;
+  char *varname = NULL;
+  char *funcname = NULL;
 
   GtkTreeModel *acr_model = GTK_TREE_MODEL (PSPPIRE_ACR (agg->summary_acr)->list_store);
   GtkTreeModel *combo_model = gtk_combo_box_get_model (GTK_COMBO_BOX (agg->function_combo));
@@ -645,8 +643,8 @@ append_summary_spec (const struct aggregate *agg, GtkTreeIter *iter, GString *st
   double arg1, arg2;
   int arity;
   enum agr_src_vars has_src_vars;
-    const gchar *label ;
-  const gchar *srcvar ;
+  gchar *label = NULL;
+  gchar *srcvar = NULL;
 
   gtk_tree_model_get (acr_model, iter,
                      SUMMARY_COL_VARNAME, &varname,
@@ -693,6 +691,11 @@ append_summary_spec (const struct aggregate *agg, GtkTreeIter *iter, GString *st
 
       g_string_append (string, ")");
     }
+
+   free (label);
+   free (srcvar);
+   free (varname);
+   free (funcname);
 }