Merge branch 'master' of ssh://jmd@git.sv.gnu.org/srv/git/pspp
[pspp-builds.git] / src / ui / gui / psppire-data-window.c
index 16db8131a16c4970efa7380cda16c1de2b557181..5efb02dedb1e1ecade630d4e25af1025cb59d2c1 100644 (file)
@@ -53,7 +53,6 @@
 #include "crosstabs-dialog.h"
 #include "frequencies-dialog.h"
 #include "examine-dialog.h"
-#include "dict-display.h"
 #include "regression-dialog.h"
 #include "oneway-anova-dialog.h"
 #include "t-test-independent-samples-dialog.h"
@@ -448,14 +447,15 @@ name_has_suffix (const gchar *name)
 
 /* Save DE to file */
 static void
-save_file (PsppireDataWindow *de)
+save_file (PsppireWindow *w)
 {
   gchar *fn = NULL;
   GString *fnx;
   struct getl_interface *sss;
   struct string file_name ;
+  PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (w);
 
-  g_object_get (de, "filename", &fn, NULL);
+  g_object_get (w, "filename", &fn, NULL);
 
   fnx = g_string_new (fn);
 
@@ -485,8 +485,6 @@ save_file (PsppireDataWindow *de)
   ds_destroy (&file_name);
 
   execute_syntax (sss);
-
-  psppire_window_set_unsaved (PSPPIRE_WINDOW (de), FALSE);
 }
 
 
@@ -578,7 +576,7 @@ data_save_as_dialog (PsppireDataWindow *de)
 
        psppire_window_set_filename (PSPPIRE_WINDOW (de), filename->str);
 
-       save_file (de);
+       save_file (PSPPIRE_WINDOW (de));
 
        g_string_free (filename, TRUE);
       }
@@ -599,7 +597,7 @@ data_save (PsppireWindow *de)
   const gchar *fn = psppire_window_get_filename (de);
 
   if ( NULL != fn)
-    save_file (PSPPIRE_DATA_WINDOW (de));
+    psppire_window_save (de);
   else
     data_save_as_dialog (PSPPIRE_DATA_WINDOW (de));
 }
@@ -691,6 +689,7 @@ static void
 fonts_activate (GtkMenuItem *menuitem, gpointer data)
 {
   PsppireDataWindow  *de = PSPPIRE_DATA_WINDOW (data);
+  GtkWidget *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (de));
   PangoFontDescription *current_font;
   gchar *font_name;
   GtkWidget *dialog =
@@ -705,8 +704,8 @@ fonts_activate (GtkMenuItem *menuitem, gpointer data)
   g_free (font_name);
 
   gtk_window_set_transient_for (GTK_WINDOW (dialog),
-                               GTK_WINDOW (get_widget_assert (de->builder,
-                                                              "data_editor")));
+                               GTK_WINDOW (toplevel));
+
   if ( GTK_RESPONSE_OK == gtk_dialog_run (GTK_DIALOG (dialog)) )
     {
       const gchar *font = gtk_font_selection_dialog_get_font_name
@@ -800,15 +799,15 @@ create_data_sheet_variable_popup_menu (PsppireDataWindow *de)
   gtk_menu_shell_append (GTK_MENU_SHELL (menu), sort_ascending);
 
 
-  g_signal_connect_swapped (G_OBJECT (sort_ascending), "activate",
+  g_signal_connect_swapped (sort_ascending, "activate",
                            G_CALLBACK (psppire_data_editor_sort_ascending),
                            de->data_editor);
 
-  g_signal_connect_swapped (G_OBJECT (sort_descending), "activate",
+  g_signal_connect_swapped (sort_descending, "activate",
                            G_CALLBACK (psppire_data_editor_sort_descending),
                            de->data_editor);
 
-  g_signal_connect_swapped (G_OBJECT (insert_variable), "activate",
+  g_signal_connect_swapped (insert_variable, "activate",
                            G_CALLBACK (gtk_action_activate),
                            de->insert_variable);
 
@@ -839,7 +838,7 @@ create_data_sheet_cases_popup_menu (PsppireDataWindow *de)
 
   gtk_menu_shell_append (GTK_MENU_SHELL (menu), insert_case);
 
-  g_signal_connect_swapped (G_OBJECT (insert_case), "activate",
+  g_signal_connect_swapped (insert_case, "activate",
                            G_CALLBACK (gtk_action_activate),
                            de->insert_case);
 
@@ -875,7 +874,7 @@ create_var_sheet_variable_popup_menu (PsppireDataWindow *de)
 
   gtk_menu_shell_append (GTK_MENU_SHELL (menu), insert_variable);
 
-  g_signal_connect_swapped (G_OBJECT (insert_variable), "activate",
+  g_signal_connect_swapped (insert_variable, "activate",
                            G_CALLBACK (gtk_action_activate),
                            de->insert_variable);
 
@@ -1016,7 +1015,7 @@ resolve_action (GtkBuilder *builder, const gchar *action, const gchar *proxy)
 static void
 set_unsaved (gpointer w)
 {
-  psppire_window_set_unsaved (PSPPIRE_WINDOW (w), TRUE);
+  psppire_window_set_unsaved (PSPPIRE_WINDOW (w));
 }
 
 static void
@@ -1051,15 +1050,6 @@ psppire_data_window_init (PsppireDataWindow *de)
 
   connect_help (de->builder);
 
-  g_object_ref (menubar);
-  gtk_widget_unparent (menubar);
-
-  g_object_ref (hb);
-  gtk_widget_unparent (hb);
-
-  g_object_ref (sb);
-  gtk_widget_unparent (sb);
-
   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);
@@ -1111,8 +1101,10 @@ psppire_data_window_init (PsppireDataWindow *de)
 
 
   {
+    GtkWidget *toolbarbutton = get_widget_assert (de->builder, "button-open");
+
     GtkAction *action_data_open =
-      resolve_action (de->builder, "file_open_data", "button-open");
+      resolve_action (de->builder, "file_open_data", NULL);
 
     g_object_set (action_data_open,
                  "tooltip",  _("Open a data file"),
@@ -1121,6 +1113,9 @@ psppire_data_window_init (PsppireDataWindow *de)
 
     g_signal_connect (action_data_open, "activate",
                      G_CALLBACK (open_data_dialog), de);
+
+    g_signal_connect_swapped (toolbarbutton, "clicked",
+                     G_CALLBACK (gtk_action_activate), action_data_open);
   }
 
 
@@ -1679,7 +1674,7 @@ psppire_data_window_init (PsppireDataWindow *de)
                    de);
 
 
-  g_signal_connect (GTK_NOTEBOOK (de->data_editor),
+  g_signal_connect (de->data_editor,
                    "switch-page",
                    G_CALLBACK (on_switch_sheet), de);
 
@@ -1793,6 +1788,6 @@ psppire_data_window_new (void)
 static void
 psppire_data_window_iface_init (PsppireWindowIface *iface)
 {
-  iface->save = data_save;
+  iface->save = save_file;
   iface->load = load_file;
 }