Merge commit 'HEAD'; commit 'savannah/master'
authorJohn Darrington <john@darrington.wattle.id.au>
Fri, 20 Feb 2009 01:22:49 +0000 (10:22 +0900)
committerJohn Darrington <john@darrington.wattle.id.au>
Fri, 20 Feb 2009 01:22:49 +0000 (10:22 +0900)
Conflicts:

src/ui/gui/crosstabs-dialog.c
src/ui/gui/goto-case-dialog.c
src/ui/gui/helper.c
src/ui/gui/output-viewer.c
src/ui/gui/output-viewer.h
src/ui/gui/psppire.c
src/ui/gui/regression-dialog.c

25 files changed:
1  2 
src/ui/gui/automake.mk
src/ui/gui/comments-dialog.c
src/ui/gui/compute-dialog.c
src/ui/gui/crosstabs-dialog.c
src/ui/gui/examine-dialog.c
src/ui/gui/find-dialog.c
src/ui/gui/frequencies-dialog.c
src/ui/gui/goto-case-dialog.c
src/ui/gui/helper.c
src/ui/gui/helper.h
src/ui/gui/oneway-anova-dialog.c
src/ui/gui/psppire-data-store.c
src/ui/gui/psppire.c
src/ui/gui/rank-dialog.c
src/ui/gui/recode-dialog.c
src/ui/gui/regression-dialog.c
src/ui/gui/select-cases-dialog.c
src/ui/gui/sort-cases-dialog.c
src/ui/gui/split-file-dialog.c
src/ui/gui/t-test-independent-samples-dialog.c
src/ui/gui/t-test-one-sample.c
src/ui/gui/t-test-paired-samples.c
src/ui/gui/transpose-dialog.c
src/ui/gui/variable-info-dialog.c
src/ui/gui/weight-cases-dialog.c

diff --combined src/ui/gui/automake.mk
index 895723a24b81e7572ba1db5637dba802f0bab78f,1549da4760dbf2b7c5950a321f16359f661d7f8d..6440215a7667f684edceb3f647314b136d0efb1f
@@@ -9,6 -9,7 +9,7 @@@ src_ui_gui_psppire_CFLAGS = $(GTK_CFLAG
  
  
  src_ui_gui_psppire_LDFLAGS = \
+       $(PSPPIRE_LDFLAGS) \
        $(PG_LDFLAGS)
  
  
@@@ -60,26 -61,41 +61,41 @@@ src_ui_gui_psppire_LDADD = 
        src/libpspp-core.la \
        $(GTK_LIBS) \
        $(GLADE_LIBS) \
-       @LIBINTL@
+       @LIBINTL@ \
+       $(LIB_CLOSE)
  
  src_ui_gui_psppiredir = $(pkgdatadir)
  
- dist_src_ui_gui_psppire_DATA = \
-       $(top_srcdir)/src/ui/gui/data-editor.glade \
-       $(top_srcdir)/src/ui/gui/descriptives-dialog.glade \
-       $(top_srcdir)/src/ui/gui/examine.glade \
+ nodist_src_ui_gui_psppire_DATA = \
+       $(top_builddir)/src/ui/gui/crosstabs.ui \
+       $(top_builddir)/src/ui/gui/examine.ui \
+       $(top_builddir)/src/ui/gui/frequencies.ui \
+       $(top_builddir)/src/ui/gui/message-dialog.ui \
+       $(top_builddir)/src/ui/gui/psppire.ui \
+       $(top_builddir)/src/ui/gui/oneway.ui \
+       $(top_builddir)/src/ui/gui/rank.ui \
+       $(top_builddir)/src/ui/gui/recode.ui \
+       $(top_builddir)/src/ui/gui/regression.ui \
+       $(top_builddir)/src/ui/gui/t-test.ui
+ EXTRA_DIST += \
        $(top_srcdir)/src/ui/gui/crosstabs.glade \
+       $(top_srcdir)/src/ui/gui/examine.glade \
        $(top_srcdir)/src/ui/gui/frequencies.glade \
        $(top_srcdir)/src/ui/gui/message-dialog.glade \
-       $(top_srcdir)/src/ui/gui/oneway.glade \
-       $(top_srcdir)/src/ui/gui/output-viewer.glade \
        $(top_srcdir)/src/ui/gui/psppire.glade \
+       $(top_srcdir)/src/ui/gui/oneway.glade \
        $(top_srcdir)/src/ui/gui/rank.glade \
        $(top_srcdir)/src/ui/gui/recode.glade \
        $(top_srcdir)/src/ui/gui/regression.glade \
+       $(top_srcdir)/src/ui/gui/t-test.glade
+ dist_src_ui_gui_psppire_DATA = \
+       $(top_srcdir)/src/ui/gui/data-editor.glade \
+       $(top_srcdir)/src/ui/gui/descriptives-dialog.glade \
+       $(top_srcdir)/src/ui/gui/output-viewer.glade \
        $(top_srcdir)/src/ui/gui/syntax-editor.glade \
        $(top_srcdir)/src/ui/gui/text-data-import.glade \
-       $(top_srcdir)/src/ui/gui/t-test.glade \
        $(top_srcdir)/src/ui/gui/psppicon.png \
        $(top_srcdir)/src/ui/gui/pspplogo.png \
        $(top_srcdir)/src/ui/gui/icons/value-labels.png \
@@@ -115,6 -131,8 +131,6 @@@ src_ui_gui_psppire_SOURCES = 
        src/ui/gui/frequencies-dialog.h \
        src/ui/gui/goto-case-dialog.c \
        src/ui/gui/goto-case-dialog.h \
 -      src/ui/gui/data-editor.c \
 -      src/ui/gui/data-editor.h \
        src/ui/gui/descriptives-dialog.c \
        src/ui/gui/descriptives-dialog.h \
        src/ui/gui/examine-dialog.c \
        src/ui/gui/missing-val-dialog.h \
          src/ui/gui/oneway-anova-dialog.c \
          src/ui/gui/oneway-anova-dialog.h \
 -      src/ui/gui/output-viewer.c \
 -      src/ui/gui/output-viewer.h \
        src/ui/gui/psppire-acr.h \
        src/ui/gui/psppire-buttonbox.h \
        src/ui/gui/psppire-hbuttonbox.h \
        src/ui/gui/sort-cases-dialog.h \
        src/ui/gui/split-file-dialog.c \
        src/ui/gui/split-file-dialog.h \
 -      src/ui/gui/syntax-editor.c \
 -      src/ui/gui/syntax-editor.h \
        src/ui/gui/syntax-editor-source.c \
        src/ui/gui/syntax-editor-source.h \
        src/ui/gui/text-data-import-dialog.c \
        src/ui/gui/weight-cases-dialog.h \
        src/ui/gui/widget-io.c \
        src/ui/gui/widget-io.h \
 -      src/ui/gui/window-manager.c \
 -      src/ui/gui/window-manager.h
 +      src/ui/gui/psppire-data-window.c \
 +      src/ui/gui/psppire-data-window.h \
 +      src/ui/gui/psppire-output-window.c \
 +      src/ui/gui/psppire-output-window.h \
 +      src/ui/gui/psppire-window.c \
 +      src/ui/gui/psppire-window.h \
 +      src/ui/gui/psppire-window-register.c \
 +      src/ui/gui/psppire-window-register.h \
 +      src/ui/gui/psppire-syntax-window.c \
 +      src/ui/gui/psppire-syntax-window.h
  
  nodist_src_ui_gui_psppire_SOURCES = \
        src/ui/gui/psppire-marshal.c \
        src/ui/gui/psppire-marshal.h
  
  
  yelp-check:
        @if ! yelp --version > /dev/null 2>&1 ; then \
                echo    ; \
@@@ -230,8 -242,12 +244,12 @@@ src/ui/gui/psppire-marshal.c: src/ui/gu
  src/ui/gui/psppire-marshal.h: src/ui/gui/marshaller-list
        glib-genmarshal --header --prefix=psppire_marshal $< > $@
  
+ .glade.ui:
+       gtk-builder-convert $< $@
  EXTRA_DIST += src/ui/gui/OChangeLog\
        src/ui/gui/marshaller-list
  
  BUILT_SOURCES += src/ui/gui/psppire-marshal.c src/ui/gui/psppire-marshal.h
- CLEANFILES += src/ui/gui/psppire-marshal.c src/ui/gui/psppire-marshal.h
+ CLEANFILES += src/ui/gui/psppire-marshal.c src/ui/gui/psppire-marshal.h \
+       $(nodist_src_ui_gui_psppire_DATA)
index 34c9957d4fea4ea659f56b7e02e9e91b090dc2df,f425fac2364d2d285429b6fdd48a4db9485d2b8d..49d143cb6c51f379df11ad5172c789fada53a7f6
  
  #include "psppire-dialog.h"
  #include "helper.h"
 -#include "data-editor.h"
 +#include "psppire-data-window.h"
 +#include "psppire-data-editor.h"
  #include <language/syntax-string-source.h>
 -#include "syntax-editor.h"
 +#include "helper.h"
  #include "psppire-var-store.h"
  #include <ui/syntax-gen.h>
  
@@@ -30,7 -29,6 +30,6 @@@
  #include "dialog-common.h"
  
  #include <gtk/gtk.h>
- #include <glade/glade.h>
  
  #include <gettext.h>
  
@@@ -40,7 -38,7 +39,7 @@@
  
  struct comment_dialog
  {
-   GladeXML *xml;
+   GtkBuilder *xml;
    PsppireDict *dict;
  };
  
@@@ -96,10 -94,10 +95,10 @@@ comments_dialog (GObject *o, gpointer d
  {
    GtkTextIter iter;
    gint response ;
 -  struct data_editor *de = data;
 +  PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
    struct comment_dialog cd;
  
-   GladeXML *xml = XML_NEW ("psppire.glade");
+   GtkBuilder *xml = builder_new ("psppire.ui");
  
    GtkWidget *dialog = get_widget_assert (xml, "comments-dialog");
    GtkWidget *textview = get_widget_assert (xml, "comments-textview1");
  
    g_object_get (de->data_editor, "var-store", &vs, NULL);
  
 -  gtk_window_set_transient_for (GTK_WINDOW (dialog), de->parent.window);
 +  gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
  
    {
      PangoContext * context ;
      case GTK_RESPONSE_OK:
        {
        gchar *syntax = generate_syntax (&cd);
 +
        struct getl_interface *sss = create_syntax_string_source (syntax);
        execute_syntax (sss);
  
        {
        gchar *syntax = generate_syntax (&cd);
  
 -      struct syntax_editor *se =
 -        (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
 -
 -      gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
 +      paste_syntax_in_new_window (syntax);
  
        g_free (syntax);
        }
index 96ea6630885b08fedf74a9b42d655fa94e18f333,76b9a7d1ce5e48d58faffc1810f78872bc763183..7269ab79750e76c3ed2cf5c7431045d5506545c3
  #include "helper.h"
  #include "psppire-dialog.h"
  #include "psppire-keypad.h"
 -#include "data-editor.h"
 +#include "psppire-data-window.h"
  #include "psppire-var-store.h"
  #include "dialog-common.h"
  #include "dict-display.h"
  
  #include <language/expressions/public.h>
  #include <language/syntax-string-source.h>
 -#include "syntax-editor.h"
 +#include "helper.h"
  
  static void function_list_populate (GtkTreeView *tv);
  
@@@ -47,7 -47,7 +47,7 @@@ static void insert_source_row_into_text
  
  struct compute_dialog
  {
-   GladeXML *xml;  /* The xml that generated the widgets */
+   GtkBuilder *xml;  /* The xml that generated the widgets */
    PsppireDict *dict;
    gboolean use_type;
  };
@@@ -113,7 -113,7 +113,7 @@@ erase_selection (GtkTextBuffer *buffer
  static void
  on_keypad_button (PsppireKeypad *kp, const gchar *syntax, gpointer data)
  {
-   GladeXML *xml = data;
+   GtkBuilder *xml = data;
  
    GtkWidget *rhs = get_widget_assert (xml, "compute-textview1");
  
  static void
  erase (PsppireKeypad *kp, gpointer data)
  {
-   GladeXML *xml = data;
+   GtkBuilder *xml = data;
  
    GtkWidget *rhs = get_widget_assert (xml, "compute-textview1");
  
@@@ -365,12 -365,12 +365,12 @@@ voi
  compute_dialog (GObject *o, gpointer data)
  {
    gint response;
 -  struct data_editor *de = data;
 +  PsppireDataWindow *de = data;
  
    PsppireVarStore *vs = NULL;
    struct compute_dialog scd;
  
-   GladeXML *xml = XML_NEW ("psppire.glade");
+   GtkBuilder *xml = builder_new ("psppire.ui");
  
    GtkWidget *dialog = get_widget_assert   (xml, "compute-variable-dialog");
  
    g_signal_connect (expression, "toggled",
                    G_CALLBACK(on_expression_toggle), &scd);
  
 -  gtk_window_set_transient_for (GTK_WINDOW (dialog), de->parent.window);
 +  gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
  
  
    attach_dictionary_to_treeview (GTK_TREE_VIEW (dict_view),
      case GTK_RESPONSE_OK:
        {
        gchar *syntax = generate_syntax (&scd);
 +
        struct getl_interface *sss = create_syntax_string_source (syntax);
        execute_syntax (sss);
  
        {
        gchar *syntax = generate_syntax (&scd);
  
 -      struct syntax_editor *se =
 -        (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
 -
 -      gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
 +      paste_syntax_in_new_window (syntax);
  
        g_free (syntax);
        }
index 9654a27ccf90364a368cd89937999e9f8c39167b,2c50b461844d38de4587e1bcc9fcad01212b4d04..a3498d1f6d72c4b70b72a46ccc6569721898c29e
  #include <stdlib.h>
  
  #include <language/syntax-string-source.h>
 -#include <ui/gui/data-editor.h>
 +#include <ui/gui/psppire-data-window.h>
  #include <ui/gui/dialog-common.h>
  #include <ui/gui/dict-display.h>
- #include <ui/gui/helper.h>
+ #include "helper.h"
  #include <ui/gui/psppire-dialog.h>
  #include <ui/gui/psppire-var-store.h>
 -#include <ui/gui/syntax-editor.h>
 +#include <ui/gui/helper.h>
  
  #include "gettext.h"
  #define _(msgid) gettext (msgid)
@@@ -385,15 -385,13 +385,15 @@@ voi
  crosstabs_dialog (GObject *o, gpointer data)
  {
    gint response;
 -  struct data_editor *de = data;
 -
    struct crosstabs_dialog cd;
  
-   GladeXML *xml = XML_NEW ("crosstabs.glade");
+   GtkBuilder *xml = builder_new ("crosstabs.ui");
 +
    PsppireVarStore *vs = NULL;
  
 +  PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
 +
 +
    GtkWidget *dialog = get_widget_assert   (xml, "crosstabs-dialog");
    GtkWidget *source = get_widget_assert   (xml, "dict-treeview");
    GtkWidget *dest_rows =   get_widget_assert   (xml, "rows");
                                  cells
                                  );
  
 -  gtk_window_set_transient_for (GTK_WINDOW (dialog), de->parent.window);
 +  gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
  
    attach_dictionary_to_treeview (GTK_TREE_VIEW (source),
                                 vs->dict,
    cd.current_opts.table = TRUE;
    cd.current_opts.pivot = TRUE;
  
 -  gtk_window_set_transient_for (GTK_WINDOW (cd.format_dialog), de->parent.window);
 -  gtk_window_set_transient_for (GTK_WINDOW (cd.cell_dialog), de->parent.window);
 -  gtk_window_set_transient_for (GTK_WINDOW (cd.stat_dialog), de->parent.window);
 +  gtk_window_set_transient_for (GTK_WINDOW (cd.format_dialog), GTK_WINDOW (de));
 +  gtk_window_set_transient_for (GTK_WINDOW (cd.cell_dialog), GTK_WINDOW (de));
 +  gtk_window_set_transient_for (GTK_WINDOW (cd.stat_dialog), GTK_WINDOW (de));
  
    g_signal_connect (dialog, "refresh", G_CALLBACK (refresh),  &cd);
  
      case GTK_RESPONSE_OK:
        {
        gchar *syntax = generate_syntax (&cd);
 +
        struct getl_interface *sss = create_syntax_string_source (syntax);
        execute_syntax (sss);
  
        {
        gchar *syntax = generate_syntax (&cd);
  
 -      struct syntax_editor *se =
 -        (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
 -
 -      gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
 +      paste_syntax_in_new_window (syntax);
  
        g_free (syntax);
        }
index 3c11a08aa477eea73f26f89f2f36ab737741934a,682af46bfe80bfa156bfc976879adb21180b0084..171d88cfc2f9f6def60a12b6fee571f22825bbce
  #include <stdlib.h>
  
  #include <language/syntax-string-source.h>
 -#include <ui/gui/data-editor.h>
 +#include <ui/gui/psppire-data-window.h>
  #include <ui/gui/dialog-common.h>
  #include <ui/gui/dict-display.h>
  #include <ui/gui/helper.h>
  #include <ui/gui/psppire-dialog.h>
  #include <ui/gui/psppire-var-store.h>
 -#include <ui/gui/syntax-editor.h>
 +#include <ui/gui/helper.h>
  
  #include "gettext.h"
  #define _(msgid) gettext (msgid)
@@@ -236,13 -236,11 +236,11 @@@ voi
  examine_dialog (GObject *o, gpointer data)
  {
    gint response;
 -  struct data_editor *de = data;
 +  PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
  
    struct examine_dialog ex_d;
  
-   GladeXML *xml = XML_NEW ("examine.glade");
+   GtkBuilder *xml = builder_new ("examine.ui");
  
    GtkWidget *dialog = get_widget_assert   (xml, "examine-dialog");
    GtkWidget *source = get_widget_assert   (xml, "treeview1");
    ex_d.percentiles_button = GTK_TOGGLE_BUTTON
      (get_widget_assert (xml, "percentiles-button"));
  
 -  gtk_window_set_transient_for (GTK_WINDOW (dialog), de->parent.window);
 -  gtk_window_set_transient_for (GTK_WINDOW (ex_d.stats_dialog), de->parent.window);
 -  gtk_window_set_transient_for (GTK_WINDOW (ex_d.opts_dialog), de->parent.window);
 +  gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
 +  gtk_window_set_transient_for (GTK_WINDOW (ex_d.stats_dialog), GTK_WINDOW (de));
 +  gtk_window_set_transient_for (GTK_WINDOW (ex_d.opts_dialog), GTK_WINDOW (de));
  
    attach_dictionary_to_treeview (GTK_TREE_VIEW (source),
                                 vs->dict,
      case PSPPIRE_RESPONSE_PASTE:
        {
        gchar *syntax = generate_syntax (&ex_d);
 -
 -      struct syntax_editor *se =
 -        (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
 -
 -      gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
 -
 +      paste_syntax_in_new_window (syntax);
        g_free (syntax);
        }
        break;
diff --combined src/ui/gui/find-dialog.c
index ad9bf842efb447c9afa17927665a78da3bc9575e,985e73fbc321f8dc5793a2dab193f4edc634a19a..130b25cfafe54db8f73eca358dada6da80f77b41
@@@ -24,7 -24,7 +24,7 @@@ which match particular strings *
  #include "psppire-selector.h"
  #include "psppire-dialog.h"
  #include "helper.h"
 -#include "data-editor.h"
 +#include "psppire-data-window.h"
  #include "dict-display.h"
  #include <data/value.h>
  #include <data/format.h>
@@@ -37,7 -37,6 +37,6 @@@
  #include <libpspp/message.h>
  
  #include <gtk/gtk.h>
- #include <glade/glade.h>
  #include <stdlib.h>
  
  #include "xalloc.h"
  
  struct find_dialog
  {
-   GladeXML *xml;
+   GtkBuilder *xml;
    PsppireDict *dict;
    struct datasheet *data;
 -  struct data_editor *de;
 +  PsppireDataWindow *de;
    GtkWidget *variable_entry;
    GtkWidget *value_entry;
    GtkWidget *value_labels_checkbox;
@@@ -186,7 -185,7 +185,7 @@@ value_labels_toggled (GtkToggleButton *
  void
  find_dialog (GObject *o, gpointer data)
  {
 -  struct data_editor *de = data;
 +  PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
  
    struct find_dialog fd;
  
    PsppireVarStore *vs ;
    PsppireDataStore *ds ;
  
-   fd.xml = XML_NEW ("psppire.glade");
+   fd.xml = builder_new ("psppire.ui");
    fd.de = de;
  
    find_button = gtk_button_new_from_stock  (GTK_STOCK_FIND);
  
  
  
 -  gtk_window_set_transient_for (GTK_WINDOW (dialog), de->parent.window);
 +  gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
  
  
    attach_dictionary_to_treeview (GTK_TREE_VIEW (source),
index 978bfcd2eda7eb095ff729fa889ea4eb0760e295,89cf7683e890cfad1ca97697047ae29fe77be832..37e301b88babb099490ed752a075e5e7f44da9f5
  #include <stdlib.h>
  
  #include <language/syntax-string-source.h>
 -#include <ui/gui/data-editor.h>
 +#include <ui/gui/psppire-data-window.h>
  #include <ui/gui/dialog-common.h>
  #include <ui/gui/dict-display.h>
  #include <ui/gui/helper.h>
  #include <ui/gui/psppire-dialog.h>
  #include <ui/gui/psppire-var-store.h>
 -#include <ui/gui/syntax-editor.h>
 +#include <ui/gui/helper.h>
  
  #include "gettext.h"
  #define _(msgid) gettext (msgid)
@@@ -307,11 -307,11 +307,11 @@@ voi
  frequencies_dialog (GObject *o, gpointer data)
  {
    gint response;
 -  struct data_editor *de = data;
 +  PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
  
    struct frequencies_dialog fd;
  
-   GladeXML *xml = XML_NEW ("frequencies.glade");
+   GtkBuilder *xml = builder_new ("frequencies.ui");
  
    GtkWidget *dialog = get_widget_assert   (xml, "frequencies-dialog");
    GtkWidget *source = get_widget_assert   (xml, "dict-treeview");
                                  );
  
  
 -  gtk_window_set_transient_for (GTK_WINDOW (dialog), de->parent.window);
 +  gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
  
    attach_dictionary_to_treeview (GTK_TREE_VIEW (source),
                                 vs->dict,
    fd.current_opts.limit = 50;
  
  
 -  gtk_window_set_transient_for (GTK_WINDOW (fd.format_dialog), de->parent.window);
 +  gtk_window_set_transient_for (GTK_WINDOW (fd.format_dialog), GTK_WINDOW (de));
  
  
    g_signal_connect (dialog, "refresh", G_CALLBACK (refresh),  &fd);
      case GTK_RESPONSE_OK:
        {
        gchar *syntax = generate_syntax (&fd);
 +
        struct getl_interface *sss = create_syntax_string_source (syntax);
        execute_syntax (sss);
  
      case PSPPIRE_RESPONSE_PASTE:
        {
        gchar *syntax = generate_syntax (&fd);
 -
 -      struct syntax_editor *se =
 -        (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
 -
 -      gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
 -
 +      paste_syntax_in_new_window (syntax);
        g_free (syntax);
        }
        break;
index 57db586511f27992fc7b569da1564f0c6c479434,a22b5cb0ebe4077f202de1a35931950b13822118..9a523943b1c5686e639d4df34b56530d4f1b55a5
  #include "goto-case-dialog.h"
  #include "helper.h"
  #include "psppire-dialog.h"
 -#include "data-editor.h"
 +#include "psppire-data-window.h"
  #include "psppire-data-store.h"
  
  
  static void
- refresh (const PsppireDataWindow *de, GladeXML *xml)
 -refresh (const struct data_editor *de, GtkBuilder *xml)
++refresh (const PsppireDataWindow *de, GtkBuilder *xml)
  {
    PsppireDataStore *ds = NULL;
    casenumber case_count ;
@@@ -43,13 -43,13 +43,13 @@@ voi
  goto_case_dialog (GObject *o, gpointer data)
  {
    gint response;
-   GladeXML *xml = XML_NEW ("psppire.glade");
+   GtkBuilder *xml = builder_new ("psppire.ui");
 -  struct data_editor *de = data;
 +  PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
  
    GtkWidget *dialog = get_widget_assert   (xml, "goto-case-dialog");
  
  
 -  gtk_window_set_transient_for (GTK_WINDOW (dialog), de->parent.window);
 +  gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
  
    refresh (de, xml);
  
diff --combined src/ui/gui/helper.c
index 12003e2ac23f8a48ec17a348c8aaca970921dd67,fc9105d75921456a8f94ea41e1246d7065c59a55..6a3a0f9e6ce0b83ee360f62ca9f790205084da7e
@@@ -20,8 -20,6 +20,8 @@@
  */
  #include <config.h>
  
 +#include "psppire-syntax-window.h"
 +
  #include      <glib-object.h>
  
  #include <glib.h>
@@@ -34,6 -32,7 +34,7 @@@
  #include <data/casereader-provider.h>
  #include <libpspp/message.h>
  
+ #include <gtk/gtkbuilder.h>
  #include <libpspp/i18n.h>
  
  #include <ctype.h>
@@@ -47,7 -46,7 +48,7 @@@
  #include <language/lexer/lexer.h>
  #include "psppire-data-store.h"
  #include <output/manager.h>
 -#include "output-viewer.h"
 +#include "psppire-output-window.h"
  
  #include "xalloc.h"
  
@@@ -102,14 -101,35 +103,35 @@@ text_to_value (const gchar *text, unio
  }
  
  
+ GtkBuilder *
+ builder_new_real (const gchar *name)
+ {
+   GtkBuilder *builder = gtk_builder_new ();
+   GError *err = NULL;
+   if ( ! gtk_builder_add_from_file (builder, name,  &err))
+     {
+       g_critical ("Couldnt open user interface  file %s: %s", name, err->message);
+       g_clear_error (&err);
+     }
+   return builder;
+ }
  GtkWidget *
- get_widget_assert (GladeXML *xml, const gchar *name)
+ get_widget_assert (gpointer x, const gchar *name)
  {
-   GtkWidget *w;
-   g_assert (xml);
+   GObject *obj = G_OBJECT (x);
+   GtkWidget *w = NULL;
    g_assert (name);
  
-   w = glade_xml_get_widget (xml, name);
+   if (GTK_IS_BUILDER (obj))
+     w = GTK_WIDGET (gtk_builder_get_object (GTK_BUILDER (obj), name));
+   if (GLADE_IS_XML (obj))
+     w = glade_xml_get_widget (GLADE_XML (obj), name);
  
    if ( !w )
      g_critical ("Widget \"%s\" could not be found\n", name);
@@@ -248,7 -268,7 +270,7 @@@ execute_syntax (struct getl_interface *
  
    som_flush ();
  
 -  reload_the_viewer ();
 +  psppire_output_window_reload ();
  
    return retval;
  }
@@@ -300,13 -320,3 +322,12 @@@ clone_list_store (const GtkListStore *s
  
  
  
 +void
 +paste_syntax_in_new_window (const gchar *syntax)
 +{
 +  GtkWidget *se = psppire_syntax_window_new ();
 +
 +  gtk_text_buffer_insert_at_cursor (PSPPIRE_SYNTAX_WINDOW (se)->buffer, syntax, -1);
 +
 +  gtk_widget_show (se);
 +}
diff --combined src/ui/gui/helper.h
index 25ff0aa00c4cdccd60268efca6321eb4c045f1f2,d08a17526bc59e6389d3d1ac996c1711238a7728..d388ccb41821b132afaf5670647ea3dd961a0cd4
  #include <gtk/gtk.h>
  #include <glade/glade.h>
  
 +
 +
 +void paste_syntax_in_new_window (const gchar *syntax);
 +
  /*
     GtkRecentChooserMenu was added in 2.10.0
     but it didn't support GtkRecentFilters until
@@@ -47,7 -43,7 +47,7 @@@ gchar * value_to_text (union value v, s
  gboolean text_to_value (const gchar *text, union value *v,
                       struct fmt_spec format);
  
- GtkWidget * get_widget_assert (GladeXML *xml, const gchar *name);
+ GtkWidget * get_widget_assert (gpointer x, const gchar *name);
  
  /* Converts a string in the pspp locale to utf-8 */
  char * pspp_locale_to_utf8 (const gchar *text, gssize len, GError **err);
@@@ -64,12 -60,9 +64,9 @@@ gboolean execute_syntax (struct getl_in
     glade_xml_new (relocate(PKGDATADIR "/" FILE), NULL, NULL)
  
  
- void marshaller_VOID__INT_INT_INT (GClosure     *closure,
-                                  GValue       *return_value,
-                                  guint         n_param_values,
-                                  const GValue *param_values,
-                                  gpointer      invocation_hint,
-                                  gpointer      marshal_data);
+ #define builder_new(NAME) builder_new_real (relocate (PKGDATADIR "/" NAME))
+ GtkBuilder *builder_new_real (const gchar *name);
  
  
  /* Create a deep copy of SRC */
index 45e888074cb586cc74f7de93fde4daedce62051a,59b65b4a2487dfc1ce793381d407cc1e6cb402f9..d41b2760aa97630510ca82315ae96c1b1eb1f87c
  
  
  #include <config.h>
- #include <glade/glade.h>
  #include <gtk/gtk.h>
  #include "oneway-anova-dialog.h"
  #include "psppire-dict.h"
  #include "psppire-var-store.h"
  #include "helper.h"
 -#include "data-editor.h"
 +#include "psppire-data-window.h"
  #include "psppire-dialog.h"
  #include "dialog-common.h"
  #include "dict-display.h"
@@@ -31,7 -30,7 +30,7 @@@
  
  
  #include <language/syntax-string-source.h>
 -#include "syntax-editor.h"
 +#include "helper.h"
  
  
  #include "gettext.h"
@@@ -121,54 -120,55 +120,55 @@@ refresh (struct oneway_anova_dialog *ow
  }
  
  
  /* Pops up the dialog box */
  void
  oneway_anova_dialog (GObject *o, gpointer data)
  {
    gint response;
 -  struct data_editor *de = data;
 +  PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
  
    PsppireVarStore *vs = NULL;
  
-   GladeXML *xml = XML_NEW ("oneway.glade");
    struct oneway_anova_dialog ow;
  
+   GtkBuilder *builder = builder_new ("oneway.ui");
    GtkWidget *dict_view =
-     get_widget_assert (xml, "oneway-anova-treeview1");
+     get_widget_assert (builder, "oneway-anova-treeview1");
  
    GtkWidget *selector2 =
-     get_widget_assert (xml, "oneway-anova-selector2");
+     get_widget_assert (builder, "oneway-anova-selector2");
  
    GtkWidget *selector1 =
-     get_widget_assert (xml, "oneway-anova-selector1");
+     get_widget_assert (builder, "oneway-anova-selector1");
  
    GtkWidget *contrasts_button =
-     get_widget_assert (xml, "contrasts-button");
+     get_widget_assert (builder, "contrasts-button");
  
  
    g_signal_connect_swapped (contrasts_button, "clicked",
                    G_CALLBACK (run_contrasts_dialog), &ow);
  
  
-   ow.factor_entry = get_widget_assert (xml, "oneway-anova-entry");
+   ow.factor_entry = get_widget_assert (builder, "oneway-anova-entry");
    ow.vars_treeview =
-     get_widget_assert (xml, "oneway-anova-treeview2");
+     get_widget_assert (builder, "oneway-anova-treeview2");
  
    ow.descriptives =
-     GTK_TOGGLE_BUTTON (get_widget_assert (xml, "checkbutton1"));
+     GTK_TOGGLE_BUTTON (get_widget_assert (builder, "checkbutton1"));
  
    ow.homogeneity =
-     GTK_TOGGLE_BUTTON (get_widget_assert (xml, "checkbutton2"));
+     GTK_TOGGLE_BUTTON (get_widget_assert (builder, "checkbutton2"));
  
    g_object_get (de->data_editor, "var-store", &vs, NULL);
  
    ow.dict = vs->dict;
  
    ow.dialog =
-     GTK_WINDOW (get_widget_assert (xml, "oneway-anova-dialog"));
+     GTK_WINDOW (get_widget_assert (builder, "oneway-anova-dialog"));
  
 -  gtk_window_set_transient_for (ow.dialog, de->parent.window);
 +  gtk_window_set_transient_for (ow.dialog, GTK_WINDOW (de));
  
    attach_dictionary_to_treeview (GTK_TREE_VIEW (dict_view),
                                 vs->dict,
  
    {
      struct contrasts_subdialog *cd = &ow.contrasts;
-     GtkEntry *entry = GTK_ENTRY (get_widget_assert (xml, "entry1"));
+     GtkEntry *entry = GTK_ENTRY (get_widget_assert (builder, "entry1"));
  
-     cd->acr = PSPPIRE_ACR (get_widget_assert (xml, "psppire-acr1"));
-     cd->contrasts_dialog = get_widget_assert (xml, "contrasts-dialog");
+     cd->acr = PSPPIRE_ACR (get_widget_assert (builder, "psppire-acr1"));
+     cd->contrasts_dialog = get_widget_assert (builder, "contrasts-dialog");
  
-     cd->next = get_widget_assert (xml, "next-button");
-     cd->prev = get_widget_assert (xml, "prev-button");
-     cd->ctotal = get_widget_assert (xml, "entry2");
+     cd->next = get_widget_assert (builder, "next-button");
+     cd->prev = get_widget_assert (builder, "prev-button");
+     cd->ctotal = get_widget_assert (builder, "entry2");
  
-     cd->stack_label = get_widget_assert (xml, "contrast-stack-label");
+     cd->stack_label = get_widget_assert (builder, "contrast-stack-label");
  
      /* Contrasts */
      ow.contrasts_array = g_array_new (FALSE, FALSE, sizeof (GtkListStore *));
      psppire_acr_set_entry (cd->acr, entry);
  
      gtk_window_set_transient_for (GTK_WINDOW (cd->contrasts_dialog),
 -                                de->parent.window);
 +                                GTK_WINDOW (de));
    }
  
    response = psppire_dialog_run (PSPPIRE_DIALOG (ow.dialog));
      case GTK_RESPONSE_OK:
        {
        gchar *syntax = generate_syntax (&ow);
 +
        struct getl_interface *sss = create_syntax_string_source (syntax);
        execute_syntax (sss);
  
      case PSPPIRE_RESPONSE_PASTE:
        {
        gchar *syntax = generate_syntax (&ow);
 -
 -      struct syntax_editor *se =
 -        (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
 -
 -      gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
 +        paste_syntax_in_new_window (syntax);
  
        g_free (syntax);
        }
  
    g_array_free (ow.contrasts_array, FALSE);
  
-   g_object_unref (xml);
+   g_object_unref (builder);
  }
  
  
index 91b96f64514da4a85ca0a696f652916f303f5b78,71d7d5f53976c124fc779a7a56fa127b13eaa09e..1bbd2bb8e517ddb48dd989a9734a88f9c46f1dc5
@@@ -1,5 -1,5 +1,5 @@@
  /* PSPPIRE - a graphical user interface for PSPP.
-    Copyright (C) 2006, 2008  Free Software Foundation
+    Copyright (C) 2006, 2008, 2009  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
@@@ -308,6 -308,8 +308,6 @@@ delete_variable_callback (GObject *obj
  #endif
  }
  
 -
 -
  static void
  variable_changed_callback (GObject *obj, gint var_num, gpointer data)
  {
    psppire_sheet_column_columns_changed (PSPPIRE_SHEET_COLUMN (store),
                                  var_num, 1);
  
 -
    psppire_sheet_model_range_changed (PSPPIRE_SHEET_MODEL (store),
                               -1, var_num,
                               -1, var_num);
@@@ -528,7 -531,7 +528,7 @@@ psppire_data_store_insert_new_case (Psp
  {
    gboolean result;
    gint val_cnt, v;
-   struct ccase cc;
+   struct ccase *cc;
    g_return_val_if_fail (ds, FALSE);
  
    val_cnt = datasheet_get_column_cnt (ds->datasheet) ;
  
    g_return_val_if_fail (posn <= psppire_data_store_get_case_count (ds), FALSE);
  
-   case_create (&cc, val_cnt);
+   cc = case_create (val_cnt);
  
-   memset ( case_data_rw_idx (&cc, 0), 0, val_cnt * MAX_SHORT_STRING);
+   memset ( case_data_rw_idx (cc, 0), 0, val_cnt * MAX_SHORT_STRING);
  
    for (v = 0 ; v < psppire_dict_get_var_cnt (ds->dict) ; ++v)
      {
        if ( var_is_alpha (pv))
        continue;
  
-       case_data_rw (&cc, pv)->f = SYSMIS;
+       case_data_rw (cc, pv)->f = SYSMIS;
      }
  
-   result = psppire_data_store_insert_case (ds, &cc, posn);
+   result = psppire_data_store_insert_case (ds, cc, posn);
  
-   case_destroy (&cc);
+   case_unref (cc);
  
    return result;
  }
@@@ -834,18 -837,16 +834,16 @@@ get_column_justification (const Psppire
  \f
  
  
- /* Fills C with the CASENUMth case.
-    Returns true on success, false otherwise.
+ /* Returns the CASENUMth case, or a null pointer on failure.
   */
- gboolean
+ struct ccase *
  psppire_data_store_get_case (const PsppireDataStore *ds,
-                            casenumber casenum,
-                            struct ccase *c)
+                            casenumber casenum)
  {
    g_return_val_if_fail (ds, FALSE);
    g_return_val_if_fail (ds->datasheet, FALSE);
  
-   return datasheet_get_row (ds->datasheet, casenum, c);
+   return datasheet_get_row (ds->datasheet, casenum);
  }
  
  
@@@ -876,14 -877,13 +874,13 @@@ psppire_data_store_insert_case (Psppire
                                struct ccase *cc,
                                casenumber posn)
  {
-   struct ccase tmp;
    bool result ;
  
    g_return_val_if_fail (ds, FALSE);
    g_return_val_if_fail (ds->datasheet, FALSE);
  
-   case_clone (&tmp, cc);
-   result = datasheet_insert_rows (ds->datasheet, posn, &tmp, 1);
+   case_ref (cc);
+   result = datasheet_insert_rows (ds->datasheet, posn, &cc, 1);
  
    if ( result )
      {
diff --combined src/ui/gui/psppire.c
index 62117a01bc0bbfc779476da08d3117a0913d59ad,9dd3b71372f6334fea60115c325aa35724353f06..bdd5ad5332f4062d4b0bf6927a42ea2b57223d30
@@@ -1,5 -1,5 +1,5 @@@
  /* PSPPIRE - a graphical user interface for PSPP.
-    Copyright (C) 2004, 2005, 2006  Free Software Foundation
+    Copyright (C) 2004, 2005, 2006, 2009  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
  #include <assert.h>
  #include <libintl.h>
  #include <gsl/gsl_errno.h>
- #include <signal.h>
  
  #include <argp.h>
  #include <ui/command-line.h>
  #include "relocatable.h"
  
 -#include "data-editor.h"
 +#include "psppire-data-window.h"
  #include "psppire.h"
  
  #include <libpspp/getl.h>
@@@ -53,8 -52,7 +52,8 @@@
  #include "message-dialog.h"
  #include <ui/syntax-gen.h>
  
 -#include "output-viewer.h"
 +
 +#include "psppire-output-window.h"
  
  #include <data/sys-file-reader.h>
  #include <data/por-file-reader.h>
@@@ -69,7 -67,6 +68,7 @@@ static void create_icon_factory (void)
  struct source_stream *the_source_stream ;
  struct dataset * the_dataset = NULL;
  
 +static GtkWidget *the_data_window;
  
  static void
  replace_casereader (struct casereader *s)
  #define _(msgid) gettext (msgid)
  #define N_(msgid) msgid
  
++
++const char * output_file_name (void);
++
++
  void
  initialize (struct command_line_processor *clp, int argc, char **argv)
  {
    the_data_store = psppire_data_store_new (dictionary);
    replace_casereader (NULL);
  
 -
 -
    create_icon_factory ();
  
-   outp_configure_driver_line (
-     ss_cstr ("gui:ascii:screen:squeeze=on headers=off top-margin=0 "
-              "bottom-margin=0 paginate=off length=auto width=auto "
-            "emphasis=none "
-              "output-file=\"" OUTPUT_FILE_NAME "\" append=yes"));
+   {
+     const char *filename = output_file_name ();
+     struct string config_string;
+     ds_init_empty (&config_string);
+     ds_put_format (&config_string,
+                  "gui:ascii:screen:squeeze=on headers=off top-margin=0 "
+                  "bottom-margin=0 paginate=off length=auto width=auto "
+                  "emphasis=none "
+                  "output-file=\"%s\" append=yes", filename);
+     outp_configure_driver_line (ds_ss (&config_string));
+     unlink (filename);
  
-   unlink (OUTPUT_FILE_NAME);
+     ds_destroy (&config_string);
+   }
  
    journal_enable ();
    textdomain (PACKAGE);
  
-   /* Ignore alarm clock signals */
-   signal (SIGALRM, SIG_IGN);
 +  the_data_window = psppire_data_window_new ();
 +
    command_line_processor_replace_aux (clp, &post_init_argp, the_source_stream);
    command_line_processor_replace_aux (clp, &non_option_argp, the_source_stream);
  
    command_line_processor_parse (clp, argc, argv);
  
 -  new_data_window (NULL, NULL);
 -
    execute_syntax (create_syntax_string_source (""));
 +
 +  gtk_widget_show (the_data_window);
  }
  
  
@@@ -282,9 -288,6 +294,9 @@@ parse_non_options (int key, char *arg, 
                            ERRMODE_CONTINUE);
  
        ds_destroy (&syntax);
 +
 +      psppire_window_set_filename (the_data_window, arg);
 +
        break;
        }
      default:
  
  
  const struct argp non_option_argp = {NULL, parse_non_options, 0, 0, 0, 0, 0};
++
++
++const char *
++output_file_name (void)
++{
++  const char *dir = default_output_path ();
++  static char *filename = NULL;
++
++  if ( NULL == filename )
++    filename = xasprintf ("%s%s", dir, OUTPUT_FILE_NAME);
++
++
++  return filename;
++}
diff --combined src/ui/gui/rank-dialog.c
index 307e37331038137e3e747fe02fd4e918aaf4e4d0,bf44dced6464fbc0c73246b71a6ad9734047db39..8ea25a1d9e8e5f9f93f39619ad39f37409bdce84
  #include <stdlib.h>
  
  #include <language/syntax-string-source.h>
 -#include <ui/gui/data-editor.h>
 +#include <ui/gui/psppire-data-window.h>
  #include <ui/gui/dialog-common.h>
  #include <ui/gui/dict-display.h>
  #include <ui/gui/helper.h>
  #include <ui/gui/psppire-dialog.h>
  #include <ui/gui/psppire-var-store.h>
 -#include <ui/gui/syntax-editor.h>
 +#include <ui/gui/helper.h>
  
  #include "gettext.h"
  #define _(msgid) gettext (msgid)
@@@ -220,77 -220,77 +220,77 @@@ voi
  rank_dialog (GObject *o, gpointer data)
  {
    gint response;
 -  struct data_editor *de = data;
 +  PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
  
    struct rank_dialog rd;
  
-   GladeXML *xml = XML_NEW ("rank.glade");
+   GtkBuilder * builder = builder_new ("rank.ui");
  
-   GtkWidget *vars = get_widget_assert   (xml, "dict-treeview");
-   GtkWidget *selector1 = get_widget_assert (xml, "psppire-selector1");
-   GtkWidget *selector2 = get_widget_assert (xml, "psppire-selector2");
+   GtkWidget *vars = get_widget_assert   (builder, "dict-treeview");
+   GtkWidget *selector1 = get_widget_assert (builder, "psppire-selector1");
+   GtkWidget *selector2 = get_widget_assert (builder, "psppire-selector2");
  
  
-   GtkWidget *types_button = get_widget_assert (xml, "button1");
-   GtkWidget *ties_button = get_widget_assert (xml, "button2");
+   GtkWidget *types_button = get_widget_assert (builder, "button1");
+   GtkWidget *ties_button = get_widget_assert (builder, "button2");
  
    PsppireVarStore *vs = NULL;
  
    g_object_get (de->data_editor, "var-store", &vs, NULL);
  
    rd.dict = vs->dict;
-   rd.rank_vars =   get_widget_assert (xml, "variables-treeview");
-   rd.group_vars =  get_widget_assert (xml, "group-vars-treeview");
-   rd.dialog = get_widget_assert   (xml, "rank-dialog");
+   rd.rank_vars =   get_widget_assert (builder, "variables-treeview");
+   rd.group_vars =  get_widget_assert (builder, "group-vars-treeview");
+   rd.dialog = get_widget_assert   (builder, "rank-dialog");
    rd.ascending_togglebutton =
-     GTK_TOGGLE_BUTTON (get_widget_assert (xml, "radiobutton1"));
+     GTK_TOGGLE_BUTTON (get_widget_assert (builder, "radiobutton1"));
  
    rd.summary_togglebutton =
-     GTK_TOGGLE_BUTTON (get_widget_assert (xml, "summary-checkbutton"));
+     GTK_TOGGLE_BUTTON (get_widget_assert (builder, "summary-checkbutton"));
  
-   rd.types_dialog = get_widget_assert (xml, "rank-types-dialog");
+   rd.types_dialog = get_widget_assert (builder, "rank-types-dialog");
  
  
-   rd.ntiles_entry  = get_widget_assert (xml, "ntiles-entry");
+   rd.ntiles_entry  = get_widget_assert (builder, "ntiles-entry");
  
    rd.func_button[RANK]    =
-     GTK_TOGGLE_BUTTON (get_widget_assert (xml, "rank-checkbutton"));
+     GTK_TOGGLE_BUTTON (get_widget_assert (builder, "rank-checkbutton"));
  
    rd.func_button[SAVAGE]  =
-     GTK_TOGGLE_BUTTON (get_widget_assert (xml, "savage-checkbutton"));
+     GTK_TOGGLE_BUTTON (get_widget_assert (builder, "savage-checkbutton"));
  
    rd.func_button[RFRACTION] =
-     GTK_TOGGLE_BUTTON (get_widget_assert (xml, "rfrac-checkbutton"));
+     GTK_TOGGLE_BUTTON (get_widget_assert (builder, "rfrac-checkbutton"));
  
    rd.func_button[PERCENT] =
-     GTK_TOGGLE_BUTTON (get_widget_assert (xml, "percent-checkbutton"));
+     GTK_TOGGLE_BUTTON (get_widget_assert (builder, "percent-checkbutton"));
  
    rd.func_button[N]       =
-     GTK_TOGGLE_BUTTON (get_widget_assert (xml, "sum-checkbutton"));
+     GTK_TOGGLE_BUTTON (get_widget_assert (builder, "sum-checkbutton"));
  
    rd.func_button[NTILES] =
-     GTK_TOGGLE_BUTTON (get_widget_assert (xml, "ntiles-checkbutton"));
+     GTK_TOGGLE_BUTTON (get_widget_assert (builder, "ntiles-checkbutton"));
  
    rd.func_button[PROPORTION] =
-     GTK_TOGGLE_BUTTON (get_widget_assert (xml, "prop-checkbutton"));
+     GTK_TOGGLE_BUTTON (get_widget_assert (builder, "prop-checkbutton"));
  
    rd.func_button[NORMAL] =
-     GTK_TOGGLE_BUTTON (get_widget_assert (xml, "normal-checkbutton"));
+     GTK_TOGGLE_BUTTON (get_widget_assert (builder, "normal-checkbutton"));
  
-   rd.formula_box = get_widget_assert (xml, "formula-frame");
+   rd.formula_box = get_widget_assert (builder, "formula-frame");
  
-   rd.blom = GTK_TOGGLE_BUTTON (get_widget_assert (xml, "blom-button"));
-   rd.tukey = GTK_TOGGLE_BUTTON (get_widget_assert (xml, "tukey-button"));
-   rd.rankit = GTK_TOGGLE_BUTTON (get_widget_assert (xml, "rankit-button"));
-   rd.vw = GTK_TOGGLE_BUTTON (get_widget_assert (xml, "vw-button"));
+   rd.blom = GTK_TOGGLE_BUTTON (get_widget_assert (builder, "blom-button"));
+   rd.tukey = GTK_TOGGLE_BUTTON (get_widget_assert (builder, "tukey-button"));
+   rd.rankit = GTK_TOGGLE_BUTTON (get_widget_assert (builder, "rankit-button"));
+   rd.vw = GTK_TOGGLE_BUTTON (get_widget_assert (builder, "vw-button"));
  
    /* Ties dialog */
-   rd.ties_dialog = PSPPIRE_DIALOG (get_widget_assert (xml, "ties-dialog"));
+   rd.ties_dialog = PSPPIRE_DIALOG (get_widget_assert (builder, "ties-dialog"));
  
-   rd.mean = GTK_TOGGLE_BUTTON (get_widget_assert (xml, "mean-button"));
-   rd.low = GTK_TOGGLE_BUTTON (get_widget_assert (xml, "low-button"));
-   rd.high = GTK_TOGGLE_BUTTON (get_widget_assert (xml, "high-button"));
-   rd.condense = GTK_TOGGLE_BUTTON (get_widget_assert (xml, "condense-button"));
+   rd.mean = GTK_TOGGLE_BUTTON (get_widget_assert (builder, "mean-button"));
+   rd.low = GTK_TOGGLE_BUTTON (get_widget_assert (builder, "low-button"));
+   rd.high = GTK_TOGGLE_BUTTON (get_widget_assert (builder, "high-button"));
+   rd.condense = GTK_TOGGLE_BUTTON (get_widget_assert (builder, "condense-button"));
  
    g_signal_connect_swapped (rd.func_button[PROPORTION], "toggled",
                            G_CALLBACK (set_sensitivity),
                    G_CALLBACK (on_ntiles_toggle),
                    rd.ntiles_entry);
  
 -  gtk_window_set_transient_for (GTK_WINDOW (rd.dialog), de->parent.window);
 +  gtk_window_set_transient_for (GTK_WINDOW (rd.dialog), GTK_WINDOW (de));
  
    attach_dictionary_to_treeview (GTK_TREE_VIEW (vars),
                                 vs->dict,
      case GTK_RESPONSE_OK:
        {
        gchar *syntax = generate_syntax (&rd);
 +
        struct getl_interface *sss = create_syntax_string_source (syntax);
        execute_syntax (sss);
  
      case PSPPIRE_RESPONSE_PASTE:
        {
        gchar *syntax = generate_syntax (&rd);
 -
 -      struct syntax_editor *se =
 -        (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
 -
 -      gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
 -
 +      paste_syntax_in_new_window (syntax);
        g_free (syntax);
        }
        break;
        break;
      }
  
-   g_object_unref (xml);
+   g_object_unref (builder);
  }
  
  
index 642dae02d4a01283276c86356618b79cf7689603,9d1ad79d6efcc4e29ef87e27bcc24b2d1be0d225..859737f63e7d4d7895c1347f2a585c60d28cb5ab
  #include <gtk/gtk.h>
  
  #include <language/syntax-string-source.h>
 -#include <ui/gui/data-editor.h>
 +#include <ui/gui/psppire-data-window.h>
  #include <ui/gui/dialog-common.h>
  #include <ui/gui/dict-display.h>
  #include <ui/gui/helper.h>
  #include <ui/gui/psppire-dialog.h>
  #include <ui/gui/psppire-var-store.h>
 -#include <ui/gui/syntax-editor.h>
 +#include <ui/gui/helper.h>
  #include <ui/syntax-gen.h>
  
  #include "psppire-acr.h"
@@@ -470,14 -470,14 +470,14 @@@ toggle_sensitivity (GtkToggleButton *bu
    gtk_widget_set_sensitive (target, state);
  }
  
 -static void recode_dialog (struct data_editor *de, gboolean diff);
 +static void recode_dialog (PsppireDataWindow *de, gboolean diff);
  
  
  /* Pops up the Recode Same version of the dialog box */
  void
  recode_same_dialog (GObject *o, gpointer data)
  {
 -  struct data_editor *de = data;
 +  PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
  
    recode_dialog (de, FALSE);
  }
  void
  recode_different_dialog (GObject *o, gpointer data)
  {
 -  struct data_editor *de = data;
 +  PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
  
    recode_dialog (de, TRUE);
  }
@@@ -836,34 -836,33 +836,33 @@@ set_acr (struct recode_dialog *rd
  }
  
  static void
 -recode_dialog (struct data_editor *de, gboolean diff)
 +recode_dialog (PsppireDataWindow *de, gboolean diff)
  {
    gint response;
  
    struct recode_dialog rd;
  
-   GladeXML *xml = XML_NEW ("recode.glade");
+   GtkBuilder *builder = builder_new ("recode.ui");
  
+   GtkWidget *selector = get_widget_assert (builder, "psppire-selector1");
  
-   GtkWidget *selector = get_widget_assert (xml, "psppire-selector1");
+   GtkWidget *oldandnew = get_widget_assert (builder, "button1");
  
-   GtkWidget *oldandnew = get_widget_assert (xml, "button1");
  
-   GtkWidget *output_variable_box = get_widget_assert (xml,"frame4");
+   GtkWidget *output_variable_box = get_widget_assert (builder,"frame4");
  
  
    PsppireVarStore *vs = NULL;
  
    g_object_get (de->data_editor, "var-store", &vs, NULL);
  
-   rd.change_button = get_widget_assert (xml, "change-button");
+   rd.change_button = get_widget_assert (builder, "change-button");
  
-   rd.dialog = get_widget_assert   (xml, "recode-dialog");
-   rd.dict_treeview = get_widget_assert (xml, "treeview1");
-   rd.variable_treeview =   get_widget_assert (xml, "treeview2");
-   rd.new_name_entry = get_widget_assert (xml, "dest-name-entry");
-   rd.new_label_entry = get_widget_assert (xml, "dest-label-entry");
+   rd.dialog = get_widget_assert   (builder, "recode-dialog");
+   rd.dict_treeview = get_widget_assert (builder, "treeview1");
+   rd.variable_treeview =   get_widget_assert (builder, "treeview2");
+   rd.new_name_entry = get_widget_assert (builder, "dest-name-entry");
+   rd.new_label_entry = get_widget_assert (builder, "dest-label-entry");
  
    rd.dict = vs->dict;
  
  
    rd.different = diff;
  
 -  gtk_window_set_transient_for (GTK_WINDOW (rd.dialog), de->parent.window);
 +  gtk_window_set_transient_for (GTK_WINDOW (rd.dialog), GTK_WINDOW (de));
  
  
    attach_dictionary_to_treeview (GTK_TREE_VIEW (rd.dict_treeview),
  
    /* Set up the Old & New Values subdialog */
    {
-     rd.string_button = get_widget_assert (xml, "checkbutton1");
-     rd.width_entry   = get_widget_assert (xml, "spinbutton1");
+     rd.string_button = get_widget_assert (builder, "checkbutton1");
+     rd.width_entry   = get_widget_assert (builder, "spinbutton1");
  
-     rd.convert_button           = get_widget_assert (xml, "checkbutton2");
+     rd.convert_button           = get_widget_assert (builder, "checkbutton2");
  
-     rd.ov_range_lower_entry = get_widget_assert (xml, "entry5");
-     rd.ov_range_upper_entry  = get_widget_assert (xml, "entry3");
-     rd.ov_low_up_entry       = get_widget_assert (xml, "entry6");
-     rd.ov_high_down_entry    = get_widget_assert (xml, "entry7");
+     rd.ov_range_lower_entry = get_widget_assert (builder, "entry5");
+     rd.ov_range_upper_entry  = get_widget_assert (builder, "entry3");
+     rd.ov_low_up_entry       = get_widget_assert (builder, "entry6");
+     rd.ov_high_down_entry    = get_widget_assert (builder, "entry7");
  
-     rd.new_value_entry = get_widget_assert (xml, "entry1");
-     rd.ov_value_entry  = get_widget_assert (xml, "entry2");
+     rd.new_value_entry = get_widget_assert (builder, "entry1");
+     rd.ov_value_entry  = get_widget_assert (builder, "entry2");
  
-     rd.toggle[BUTTON_NEW_VALUE]  = get_widget_assert (xml, "radiobutton1");
-     rd.toggle[BUTTON_NEW_SYSMIS] = get_widget_assert (xml, "radiobutton2");
-     rd.toggle[BUTTON_NEW_COPY]   = get_widget_assert (xml, "radiobutton3");
-     rd.toggle[BUTTON_OLD_VALUE]  = get_widget_assert (xml, "radiobutton4");
-     rd.toggle[BUTTON_OLD_SYSMIS] = get_widget_assert (xml, "radiobutton6");
-     rd.toggle[BUTTON_OLD_MISSING]= get_widget_assert (xml, "radiobutton7");
-     rd.toggle[BUTTON_OLD_RANGE]  = get_widget_assert (xml, "radiobutton8");
-     rd.toggle[BUTTON_OLD_LOW_UP] = get_widget_assert (xml, "radiobutton10");
-     rd.toggle[BUTTON_OLD_HIGH_DOWN] = get_widget_assert (xml, "radiobutton5");
-     rd.toggle[BUTTON_OLD_ELSE]   = get_widget_assert (xml, "radiobutton11");
+     rd.toggle[BUTTON_NEW_VALUE]  = get_widget_assert (builder, "radiobutton1");
+     rd.toggle[BUTTON_NEW_SYSMIS] = get_widget_assert (builder, "radiobutton2");
+     rd.toggle[BUTTON_NEW_COPY]   = get_widget_assert (builder, "radiobutton3");
+     rd.toggle[BUTTON_OLD_VALUE]  = get_widget_assert (builder, "radiobutton4");
+     rd.toggle[BUTTON_OLD_SYSMIS] = get_widget_assert (builder, "radiobutton6");
+     rd.toggle[BUTTON_OLD_MISSING]= get_widget_assert (builder, "radiobutton7");
+     rd.toggle[BUTTON_OLD_RANGE]  = get_widget_assert (builder, "radiobutton8");
+     rd.toggle[BUTTON_OLD_LOW_UP] = get_widget_assert (builder, "radiobutton10");
+     rd.toggle[BUTTON_OLD_HIGH_DOWN] = get_widget_assert (builder, "radiobutton5");
+     rd.toggle[BUTTON_OLD_ELSE]   = get_widget_assert (builder, "radiobutton11");
  
-     rd.new_copy_label = get_widget_assert (xml, "label3");
-     rd.strings_box    = get_widget_assert (xml, "table3");
+     rd.new_copy_label = get_widget_assert (builder, "label3");
+     rd.strings_box    = get_widget_assert (builder, "table3");
  
      rd.old_and_new_dialog =
-       PSPPIRE_DIALOG (get_widget_assert (xml, "old-new-values-dialog"));
+       PSPPIRE_DIALOG (get_widget_assert (builder, "old-new-values-dialog"));
  
      gtk_window_set_transient_for (GTK_WINDOW (rd.old_and_new_dialog),
 -                                de->parent.window);
 +                                GTK_WINDOW (de));
  
-     rd.acr = PSPPIRE_ACR (get_widget_assert (xml, "psppire-acr1"));
+     rd.acr = PSPPIRE_ACR (get_widget_assert (builder, "psppire-acr1"));
  
      g_signal_connect_swapped (rd.toggle[BUTTON_NEW_VALUE], "toggled",
                      G_CALLBACK (set_acr), &rd);
  
      g_signal_connect (rd.toggle[BUTTON_OLD_RANGE], "toggled",
                      G_CALLBACK (toggle_sensitivity),
-                     get_widget_assert (xml, "entry3"));
+                     get_widget_assert (builder, "entry3"));
  
      g_signal_connect (rd.toggle[BUTTON_OLD_RANGE], "toggled",
                      G_CALLBACK (toggle_sensitivity),
-                     get_widget_assert (xml, "entry5"));
+                     get_widget_assert (builder, "entry5"));
  
      g_signal_connect (rd.toggle[BUTTON_OLD_LOW_UP], "toggled",
                      G_CALLBACK (toggle_sensitivity), rd.ov_low_up_entry);
      case GTK_RESPONSE_OK:
        {
        gchar *syntax = generate_syntax (&rd);
 +
        struct getl_interface *sss = create_syntax_string_source (syntax);
        execute_syntax (sss);
  
      case PSPPIRE_RESPONSE_PASTE:
        {
        gchar *syntax = generate_syntax (&rd);
 -
 -      struct syntax_editor *se =
 -        (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
 -
 -      gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
 +        paste_syntax_in_new_window (syntax);
  
        g_free (syntax);
        }
    gtk_list_store_clear (GTK_LIST_STORE (rd.value_map));
    g_object_unref (rd.value_map);
  
-   g_object_unref (xml);
+   g_object_unref (builder);
  }
  
  /* Initialise VAL to reflect the current status of RD */
index b0c11b0798dc8d591594055f7b5cb8fdd14c169b,3e0e0fbc1d226d5815a57b6ea1d6845757661020..2d8aca3ebc6a5d074e3a329211d25c530df83f2e
  #include <stdlib.h>
  
  #include <language/syntax-string-source.h>
 -#include <ui/gui/data-editor.h>
 +#include <ui/gui/psppire-data-window.h>
  #include <ui/gui/dialog-common.h>
  #include <ui/gui/dict-display.h>
  #include <ui/gui/helper.h>
  #include <ui/gui/psppire-dialog.h>
  #include <ui/gui/psppire-var-store.h>
 -#include <ui/gui/syntax-editor.h>
 +#include <ui/gui/helper.h>
  
  #include "gettext.h"
  #define _(msgid) gettext (msgid)
@@@ -223,11 -223,11 +223,10 @@@ voi
  regression_dialog (GObject *o, gpointer data)
  {
    gint response;
 -  struct data_editor *de = data;
 -
    struct regression_dialog rd;
  
-   GladeXML *xml = XML_NEW ("regression.glade");
+   GtkBuilder *xml = builder_new ("regression.ui");
 +  PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
    PsppireVarStore *vs;
  
    GtkWidget *dialog = get_widget_assert   (xml, "regression-dialog");
                                  stats
                                  );
  
 -  gtk_window_set_transient_for (GTK_WINDOW (dialog), de->parent.window);
 +  gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
  
    attach_dictionary_to_treeview (GTK_TREE_VIEW (source),
                                 vs->dict,
    rd.current_opts.pred = FALSE;
    rd.current_opts.resid = FALSE;
  
 -  gtk_window_set_transient_for (GTK_WINDOW (rd.save_dialog), de->parent.window);
 -  gtk_window_set_transient_for (GTK_WINDOW (rd.stat_dialog), de->parent.window);
 +  gtk_window_set_transient_for (GTK_WINDOW (rd.save_dialog), GTK_WINDOW (de));
 +  gtk_window_set_transient_for (GTK_WINDOW (rd.stat_dialog), GTK_WINDOW (de));
  
    g_signal_connect (dialog, "refresh", G_CALLBACK (refresh),  &rd);
  
      case GTK_RESPONSE_OK:
        {
        gchar *syntax = generate_syntax (&rd);
 +
        struct getl_interface *sss = create_syntax_string_source (syntax);
        execute_syntax (sss);
  
      case PSPPIRE_RESPONSE_PASTE:
        {
        gchar *syntax = generate_syntax (&rd);
 -
 -      struct syntax_editor *se =
 -        (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
 -
 -      gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
 +        paste_syntax_in_new_window (syntax);
  
        g_free (syntax);
        }
index 58b2879d07fe79cfdfa7d774d3b833fd22d11bb3,143f7a6d7f122f31144361e7e5513dd571c87a24..d953308a09fbe8b27c92c84ff54c045e8eac4e27
  
  #include "select-cases-dialog.h"
  #include <gtk/gtk.h>
- #include <glade/glade.h>
  #include "helper.h"
  #include "psppire-dialog.h"
 -#include "data-editor.h"
 +#include "psppire-data-window.h"
  #include "dialog-common.h"
  #include "dict-display.h"
  #include "widget-io.h"
  #include <language/syntax-string-source.h>
 -#include "syntax-editor.h"
 +#include "helper.h"
  
  
  #include <gettext.h>
@@@ -42,7 -41,7 +41,7 @@@
  struct select_cases_dialog
  {
    /* The XML that created the dialog */
-   GladeXML *xml;
+   GtkBuilder *xml;
  
    GtkWidget *spinbutton ;
    GtkWidget *spinbutton1 ;
@@@ -241,13 -240,13 +240,13 @@@ select_cases_dialog (GObject *o, gpoint
    gint response;
    struct select_cases_dialog scd = {0,0,0,0,0,0};
    GtkWidget *dialog   ;
 -  struct data_editor *de = data;
 +  PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
    GtkWidget *entry = NULL;
    GtkWidget *selector ;
    GtkWidget *button_range;
    GtkWidget *button_sample;
  
-   scd.xml = XML_NEW ("psppire.glade");
+   scd.xml = builder_new ("psppire.ui");
  
    g_object_get (de->data_editor, "data-store", &scd.data_store, NULL);
  
  
  
    dialog = get_widget_assert (scd.xml, "select-cases-dialog");
 -  gtk_window_set_transient_for (GTK_WINDOW (dialog), de->parent.window);
 +  gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
  
    {
      GtkWidget *source = get_widget_assert   (scd.xml, "select-cases-treeview");
      case GTK_RESPONSE_OK:
        {
        gchar *syntax = generate_syntax (&scd);
 +
        struct getl_interface *sss = create_syntax_string_source (syntax);
        execute_syntax (sss);
  
      case PSPPIRE_RESPONSE_PASTE:
        {
        gchar *syntax = generate_syntax (&scd);
 -
 -      struct syntax_editor *se =
 -        (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
 -
 -      gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
 +        paste_syntax_in_new_window (syntax);
  
        g_free (syntax);
        }
index 6da083be724ef166b6a89f86259f39083e19d03b,dea226c76098886e43efed67e385d98d36475377..d9c665e69a8db988df983919d7ea6d651cc9c9ea
  #include "sort-cases-dialog.h"
  #include "helper.h"
  #include "psppire-dialog.h"
 -#include "data-editor.h"
 +#include "psppire-data-window.h"
  #include "psppire-var-store.h"
  #include "dialog-common.h"
  #include "dict-display.h"
  
  #include <language/syntax-string-source.h>
 -#include "syntax-editor.h"
 +#include "helper.h"
  
  static void
  refresh (PsppireDialog *dialog, GtkTreeView *dest)
@@@ -91,11 -91,11 +91,11 @@@ voi
  sort_cases_dialog (GObject *o, gpointer data)
  {
    gint response;
 -  struct data_editor *de = data;
 +  PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
  
    struct sort_cases_dialog scd;
  
-   GladeXML *xml = XML_NEW ("psppire.glade");
+   GtkBuilder *xml = builder_new ("psppire.ui");
  
    GtkWidget *dialog = get_widget_assert   (xml, "sort-cases-dialog");
  
  
    g_object_get (de->data_editor, "var-store", &vs, NULL);
  
 -  gtk_window_set_transient_for (GTK_WINDOW (dialog), de->parent.window);
 +  gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
  
    attach_dictionary_to_treeview (GTK_TREE_VIEW (source),
                                 vs->dict,
      case GTK_RESPONSE_OK:
        {
        gchar *syntax = generate_syntax (&scd);
 +
        struct getl_interface *sss = create_syntax_string_source (syntax);
        execute_syntax (sss);
  
      case PSPPIRE_RESPONSE_PASTE:
        {
        gchar *syntax = generate_syntax (&scd);
 -
 -      struct syntax_editor *se =
 -        (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
 -
 -      gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
 +        paste_syntax_in_new_window (syntax);
  
        g_free (syntax);
        }
index c44d5591cd9c08e20f88cd2bd90bf63658c09318,00f30c627080d53f96848d96c1c7ba4aca128ea7..8708b33f05df2d5613cc0b514d4cf0150e055156
  #include "psppire-selector.h"
  #include "psppire-dialog.h"
  #include "helper.h"
 -#include "data-editor.h"
 +#include "psppire-data-window.h"
  #include "dict-display.h"
  #include <language/syntax-string-source.h>
 -#include "syntax-editor.h"
 +#include "helper.h"
  #include <data/dictionary.h>
  
  #include <gtk/gtk.h>
- #include <glade/glade.h>
  
  
  #include "dialog-common.h"
@@@ -39,7 -38,7 +38,7 @@@
  struct split_file_dialog
  {
    /* The XML that created the dialog */
-   GladeXML *xml;
+   GtkBuilder *xml;
  
    /* The dictionary to which this dialog pertains */
    PsppireDict *dict;
@@@ -109,7 -108,7 +108,7 @@@ static voi
  on_off_toggled (GtkToggleButton *togglebutton,
                gpointer         user_data)
  {
-   GladeXML *xml = user_data;
+   GtkBuilder *xml = user_data;
    GtkWidget *dest =   get_widget_assert (xml, "split-file-grouping-vars");
    GtkWidget *selector = get_widget_assert (xml, "split-file-selector");
    GtkWidget *source = get_widget_assert (xml, "split-file-dict-treeview");
@@@ -167,7 -166,7 +166,7 @@@ voi
  split_file_dialog (GObject *o, gpointer data)
  {
    gint response;
 -  struct data_editor *de = data;
 +  PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
    struct split_file_dialog sfd;
    PsppireVarStore *vs ;
  
    GtkWidget *selector ;
    GtkWidget *on_off   ;
  
-   sfd.xml = XML_NEW ("psppire.glade");
+   sfd.xml = builder_new ("psppire.ui");
  
    dialog = get_widget_assert   (sfd.xml, "split-file-dialog");
    source = get_widget_assert   (sfd.xml, "split-file-dict-treeview");
  
    g_signal_connect (dialog, "refresh", G_CALLBACK (refresh),  &sfd);
  
 -  gtk_window_set_transient_for (GTK_WINDOW (dialog), de->parent.window);
 +  gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
  
    response = psppire_dialog_run (PSPPIRE_DIALOG (dialog));
  
      case GTK_RESPONSE_OK:
        {
        gchar *syntax = generate_syntax (&sfd);
 +
        struct getl_interface *sss = create_syntax_string_source (syntax);
        execute_syntax (sss);
  
      case PSPPIRE_RESPONSE_PASTE:
        {
        gchar *syntax = generate_syntax (&sfd);
 -
 -      struct syntax_editor *se =
 -        (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
 -
 -      gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
 +        paste_syntax_in_new_window (syntax);
  
        g_free (syntax);
        }
index 4ceab4d8e8cfa91840c359f866d97e5a62460ae1,22b4526c4d7027a2dccb8a235992d33fa1378427..392867adbb606acd5c62abad6ce6a58286807f13
  
  
  #include <config.h>
- #include <glade/glade.h>
  #include <gtk/gtk.h>
  #include "t-test-independent-samples-dialog.h"
  #include "psppire-dict.h"
  #include "psppire-var-store.h"
  #include "helper.h"
 -#include "data-editor.h"
 +#include "psppire-data-window.h"
  #include "psppire-dialog.h"
  #include "dialog-common.h"
  #include "dict-display.h"
@@@ -32,7 -31,7 +31,7 @@@
  #include <ui/syntax-gen.h>
  
  #include <language/syntax-string-source.h>
 -#include "syntax-editor.h"
 +#include "helper.h"
  
  #include <gl/xalloc.h>
  
@@@ -91,7 -90,7 +90,7 @@@ tt_groups_dialog_destroy (struct tt_gro
  }
  
  static struct tt_groups_dialog *
- tt_groups_dialog_create (GladeXML *xml, GtkWindow *parent)
+ tt_groups_dialog_create (GtkBuilder *xml, GtkWindow *parent)
  {
    struct tt_groups_dialog *grps = xmalloc (sizeof (*grps));
  
  
  struct tt_indep_samples_dialog
  {
-   GladeXML *xml;  /* The xml that generated the widgets */
+   GtkBuilder *xml;  /* The xml that generated the widgets */
    GtkWidget *dialog;
    PsppireDict *dict;
    GtkWidget *define_groups_button;
@@@ -392,11 -391,11 +391,11 @@@ t_test_independent_samples_dialog (GObj
  {
    struct tt_indep_samples_dialog tt_d;
    gint response;
 -  struct data_editor *de = data;
 +  PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
  
    PsppireVarStore *vs = NULL;
  
-   GladeXML *xml = XML_NEW ("t-test.glade");
+   GtkBuilder *xml = builder_new ("t-test.ui");
  
    GtkWidget *dict_view =
      get_widget_assert (xml, "indep-samples-t-test-treeview1");
  
    tt_d.define_groups_button = get_widget_assert (xml, "define-groups-button");
    tt_d.groups_entry = get_widget_assert (xml, "indep-samples-t-test-entry");
 -  tt_d.opts = tt_options_dialog_create (xml, de->parent.window);
 -  tt_d.grps = tt_groups_dialog_create (xml, de->parent.window);
 +  tt_d.opts = tt_options_dialog_create (xml, GTK_WINDOW (de));
 +  tt_d.grps = tt_groups_dialog_create (xml, GTK_WINDOW (de));
  
  
 -  gtk_window_set_transient_for (GTK_WINDOW (tt_d.dialog), de->parent.window);
 +  gtk_window_set_transient_for (GTK_WINDOW (tt_d.dialog), GTK_WINDOW (de));
  
    attach_dictionary_to_treeview (GTK_TREE_VIEW (dict_view),
                                 vs->dict,
      case GTK_RESPONSE_OK:
        {
        gchar *syntax = generate_syntax (&tt_d);
 +
        struct getl_interface *sss = create_syntax_string_source (syntax);
        execute_syntax (sss);
  
      case PSPPIRE_RESPONSE_PASTE:
        {
        gchar *syntax = generate_syntax (&tt_d);
 -
 -      struct syntax_editor *se =
 -        (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
 -
 -      gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
 -
 +        paste_syntax_in_new_window (syntax);
        g_free (syntax);
        }
        break;
index 985845015f56db5473cbd4d035a385666b0d2d05,98d9601bc4c7c6a2cacc184ac5eea47c7755a791..3cdc91c32721f4780684f2966c5b896ecaae6ef3
  
  
  #include <config.h>
- #include <glade/glade.h>
  #include <gtk/gtk.h>
  #include "t-test-one-sample.h"
  #include "psppire-dict.h"
  #include "psppire-var-store.h"
  #include "helper.h"
 -#include "data-editor.h"
 +#include "psppire-data-window.h"
  #include "psppire-dialog.h"
  #include "dialog-common.h"
  #include "dict-display.h"
@@@ -31,6 -30,7 +30,6 @@@
  
  #include "t-test-options.h"
  #include <language/syntax-string-source.h>
 -#include "syntax-editor.h"
  
  #include <gettext.h>
  #define _(msgid) gettext (msgid)
@@@ -123,11 -123,11 +122,11 @@@ t_test_one_sample_dialog (GObject *o, g
  {
    struct tt_one_sample_dialog tt_d;
    gint response;
 -  struct data_editor *de = data;
 +  PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
  
    PsppireVarStore *vs = NULL;
  
-   GladeXML *xml = XML_NEW ("t-test.glade");
+   GtkBuilder *xml = builder_new ("t-test.ui");
  
    GtkWidget *dict_view =
      get_widget_assert (xml, "one-sample-t-test-treeview2");
    tt_d.dict = vs->dict;
    tt_d.vars_treeview = get_widget_assert (xml, "one-sample-t-test-treeview1");
    tt_d.test_value_entry = get_widget_assert (xml, "test-value-entry");
 -  tt_d.opt = tt_options_dialog_create (xml, de->parent.window);
 +  tt_d.opt = tt_options_dialog_create (xml, GTK_WINDOW (de));
  
 -  gtk_window_set_transient_for (GTK_WINDOW (dialog), de->parent.window);
 +  gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
  
    attach_dictionary_to_treeview (GTK_TREE_VIEW (dict_view),
                                 vs->dict,
      case GTK_RESPONSE_OK:
        {
        gchar *syntax = generate_syntax (&tt_d);
 +
        struct getl_interface *sss = create_syntax_string_source (syntax);
        execute_syntax (sss);
  
        {
        gchar *syntax = generate_syntax (&tt_d);
  
 -      struct syntax_editor *se =
 -        (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
 -
 -      gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
 +        paste_syntax_in_new_window (syntax);
  
        g_free (syntax);
        }
index 58b68b2ff2f652d387f34d1d7394e33e20f8437f,ec7096035bb68b7f61f25a62e0006d7255bed331..ca1d776a7294f6bed0b91060e4be8f7878ef4b2c
  
  #include <config.h>
  #include <gtk/gtk.h>
- #include <glade/glade.h>
  #include <language/syntax-string-source.h>
  
 -#include "data-editor.h"
 +#include "psppire-data-window.h"
  
  #include "psppire-dict.h"
  #include "psppire-var-store.h"
@@@ -31,6 -30,8 +30,6 @@@
  #include "dialog-common.h"
  #include "psppire-dialog.h"
  
 -#include "syntax-editor.h"
 -
  #include "helper.h"
  
  #include "psppire-var-ptr.h"
@@@ -181,11 -182,11 +180,11 @@@ t_test_paired_samples_dialog (GObject *
  {
    struct tt_paired_samples_dialog tt_d;
    gint response;
 -  struct data_editor *de = data;
 +  PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
  
    PsppireVarStore *vs = NULL;
  
-   GladeXML *xml = XML_NEW ("t-test.glade");
+   GtkBuilder *xml = builder_new ("t-test.ui");
  
    GtkWidget *dict_view =
      get_widget_assert (xml, "paired-samples-t-test-treeview1");
    tt_d.dict = vs->dict;
    tt_d.pairs_treeview =
     get_widget_assert (xml, "paired-samples-t-test-treeview2");
 -  tt_d.opt = tt_options_dialog_create (xml, de->parent.window);
 +  tt_d.opt = tt_options_dialog_create (xml, GTK_WINDOW (de));
  
 -  gtk_window_set_transient_for (GTK_WINDOW (dialog), de->parent.window);
 +  gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
  
  
    attach_dictionary_to_treeview (GTK_TREE_VIEW (dict_view),
      case GTK_RESPONSE_OK:
        {
        gchar *syntax = generate_syntax (&tt_d);
 +
        struct getl_interface *sss = create_syntax_string_source (syntax);
        execute_syntax (sss);
  
      case PSPPIRE_RESPONSE_PASTE:
        {
        gchar *syntax = generate_syntax (&tt_d);
 -
 -      struct syntax_editor *se =
 -        (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
 -
 -      gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
 +        paste_syntax_in_new_window (syntax);
  
        g_free (syntax);
        }
index 9e8c18f44e2ac601bb9a56bca1ab245b78dce963,272ef1b3934daaa4f07043dc3dc2f5a5d9e04a8d..09756d3738919bc40f2f314b3d4d924a7a287499
  #include "psppire-selector.h"
  #include "psppire-dialog.h"
  #include "helper.h"
 -#include "data-editor.h"
 +#include "psppire-data-window.h"
  #include "dict-display.h"
  #include <language/syntax-string-source.h>
 -#include "syntax-editor.h"
 +#include "helper.h"
  
  #include "dialog-common.h"
  
  #include <gtk/gtk.h>
- #include <glade/glade.h>
  
  #include <gettext.h>
  
  #include "psppire-var-store.h"
  
  
- static gchar * generate_syntax (PsppireDict *dict, GladeXML *xml);
+ static gchar * generate_syntax (PsppireDict *dict, GtkBuilder *xml);
  
  static void
  refresh (PsppireDialog *dialog, gpointer data)
  {
-   GladeXML *xml = data;
+   GtkBuilder *xml = data;
    GtkWidget *dest = get_widget_assert (xml, "variables-treeview");
    GtkWidget *entry = get_widget_assert (xml, "new-name-entry");
    GtkTreeModel *dmodel = gtk_tree_view_get_model (GTK_TREE_VIEW (dest));
@@@ -57,7 -56,7 +56,7 @@@
  static gboolean
  dialog_state_valid (gpointer data)
  {
-   GladeXML *xml = data;
+   GtkBuilder *xml = data;
  
    GtkWidget *tv = get_widget_assert (xml, "variables-treeview");
    GtkWidget *entry = get_widget_assert (xml, "new-name-entry");
@@@ -80,9 -79,9 +79,9 @@@ voi
  transpose_dialog (GObject *o, gpointer data)
  {
    gint response ;
 -  struct data_editor *de = data;
 +  PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
  
-   GladeXML *xml = XML_NEW ("psppire.glade");
+   GtkBuilder *xml = builder_new ("psppire.ui");
  
    PsppireVarStore *vs = NULL;
  
  
    g_signal_connect (dialog, "refresh", G_CALLBACK (refresh),  xml);
  
 -  gtk_window_set_transient_for (GTK_WINDOW (dialog), de->parent.window);
 +  gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
  
    psppire_dialog_set_valid_predicate (PSPPIRE_DIALOG (dialog),
                                      dialog_state_valid, xml);
      case GTK_RESPONSE_OK:
        {
        gchar *syntax = generate_syntax (vs->dict, xml);
 +
        struct getl_interface *sss = create_syntax_string_source (syntax);
        execute_syntax (sss);
  
      case PSPPIRE_RESPONSE_PASTE:
        {
        gchar *syntax = generate_syntax (vs->dict, xml);
 -
 -      struct syntax_editor *se =
 -        (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
 -
 -      gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
 +        paste_syntax_in_new_window (syntax);
  
        g_free (syntax);
        }
       FLIP /VARIABLES=var_list /NEWNAMES=var_name.
    */
  static gchar *
- generate_syntax (PsppireDict *dict, GladeXML *xml)
+ generate_syntax (PsppireDict *dict, GtkBuilder *xml)
  {
    const gchar *text;
    GString *string = g_string_new ("FLIP");
index 43a3832c01822dd5829cc42aa317f29700e949a1,22af89f0894f7b5e6f6844c0ff6e9173519067c0..2f5495f137dd5a41f0e889cc847a210f7bf4b3e7
  
  #include <config.h>
  #include <gtk/gtk.h>
- #include <glade/glade.h>
  
  #include "dict-display.h"
  #include "var-display.h"
  #include <data/variable.h>
  #include <data/format.h>
  #include <data/value-labels.h>
 -#include "data-editor.h"
 +#include "psppire-data-window.h"
  #include "psppire-dialog.h"
  #include "psppire-var-store.h"
  #include "helper.h"
  
  #include <language/syntax-string-source.h>
 -#include "syntax-editor.h"
 +#include "helper.h"
  
  
  #include <gettext.h>
@@@ -164,11 -163,11 +163,11 @@@ static gchar * generate_syntax (GtkTree
  void
  variable_info_dialog (GObject *o, gpointer data)
  {
 -  struct data_editor *de = data;
 +  PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
  
    gint response ;
  
-   GladeXML *xml = XML_NEW ("psppire.glade");
+   GtkBuilder *xml = builder_new ("psppire.ui");
  
    GtkWidget *dialog = get_widget_assert (xml, "variable-info-dialog");
    GtkWidget *treeview = get_widget_assert (xml, "treeview2");
  
    g_object_get (de->data_editor, "var-store", &vs, NULL);
  
 -  gtk_window_set_transient_for (GTK_WINDOW (dialog), de->parent.window);
 +  gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
  
    attach_dictionary_to_treeview (GTK_TREE_VIEW (treeview),
                                 vs->dict,
      case PSPPIRE_RESPONSE_PASTE:
        {
        gchar *syntax = generate_syntax (GTK_TREE_VIEW (treeview));
 -
 -      struct syntax_editor *se =
 -        (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
 -
 -      gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
 +        paste_syntax_in_new_window (syntax);
  
        g_free (syntax);
        }
index 9d103e1c97c8e6b58023afd88be4fbdf00e1ff43,8b46ca5e8d7c988cfb1f2bd2649c55e92dd28fee..a464646fe7742eeacf0c0ece78467710c0ad5de8
  #include "psppire-selector.h"
  #include "psppire-dialog.h"
  #include "helper.h"
 -#include "data-editor.h"
 +#include "psppire-data-window.h"
  #include "dict-display.h"
  #include <language/syntax-string-source.h>
 -#include "syntax-editor.h"
 +#include "helper.h"
  
  #include <gtk/gtk.h>
- #include <glade/glade.h>
  
  #include <gettext.h>
  #define _(msgid) gettext (msgid)
@@@ -104,10 -103,10 +103,10 @@@ voi
  weight_cases_dialog (GObject *o, gpointer data)
  {
    gint response;
 -  struct data_editor *de = data;
 +  PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
    struct weight_cases_dialog wcd;
  
-   GladeXML *xml = XML_NEW ("psppire.glade");
+   GtkBuilder *xml = builder_new ("psppire.ui");
  
    GtkWidget *dialog = get_widget_assert (xml, "weight-cases-dialog");
    GtkWidget *source = get_widget_assert (xml, "weight-cases-treeview");
  
    g_object_get (de->data_editor, "var-store", &vs,  NULL);
  
 -  gtk_window_set_transient_for (GTK_WINDOW (dialog), de->parent.window);
 +  gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
  
    g_signal_connect (radiobutton1, "toggled", G_CALLBACK (on_toggle), entry);
    g_signal_connect (selector, "selected", G_CALLBACK (on_select),
      case PSPPIRE_RESPONSE_PASTE:
        {
        gchar *syntax = generate_syntax (&wcd);
 -
 -      struct syntax_editor *se =
 -        (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
 -
 -      gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
 -
 +        paste_syntax_in_new_window (syntax);
        g_free (syntax);
        }
        break;