Merge "master" into "output". fc11-i386-build29 fc11-x64-build26 lenny-x64-build50 sid-i386-build98
authorBen Pfaff <blp@gnu.org>
Sat, 24 Oct 2009 15:42:33 +0000 (08:42 -0700)
committerBen Pfaff <blp@gnu.org>
Sat, 24 Oct 2009 15:42:33 +0000 (08:42 -0700)
128 files changed:
.gitignore
AUTHORS
INSTALL
Makefile.am
NEWS
README.CVS [deleted file]
README.Git [new file with mode: 0644]
Smake
acinclude.m4
configure.ac
doc/automake.mk
doc/pspp.texinfo
doc/statistics.texi
lib/gtk-contrib/gtk-builder-convert
lib/linreg/sweep.c
perl-module/PSPP.bs [deleted file]
perl-module/PSPP.xs
perl-module/automake.mk
po/LINGUAS [deleted file]
po/Makevars
po/automake.mk [new file with mode: 0644]
po/en_GB.po
po/nl.po
po/pt_BR.po [new file with mode: 0644]
src/automake.mk
src/data/dictionary.c
src/data/file-name.c
src/data/make-file.c
src/data/sys-file-reader.c
src/data/sys-file-writer.c
src/language/command.c
src/language/command.def
src/language/data-io/combine-files.c
src/language/data-io/file-handle.q
src/language/data-io/print.c
src/language/dictionary/modify-variables.c
src/language/dictionary/sys-file-info.c
src/language/expressions/automake.mk
src/language/expressions/evaluate.h.pl [deleted file]
src/language/expressions/evaluate.hpl [new file with mode: 0644]
src/language/expressions/evaluate.inc.pl [deleted file]
src/language/expressions/evaluate.incpl [new file with mode: 0644]
src/language/expressions/operations.h.pl [deleted file]
src/language/expressions/operations.hpl [new file with mode: 0644]
src/language/expressions/optimize.inc.pl [deleted file]
src/language/expressions/optimize.incpl [new file with mode: 0644]
src/language/expressions/parse.inc.pl [deleted file]
src/language/expressions/parse.incpl [new file with mode: 0644]
src/language/stats/.gitignore
src/language/stats/automake.mk
src/language/stats/correlations.c [new file with mode: 0644]
src/language/stats/descriptives.c
src/language/stats/examine.q
src/language/stats/flip.c
src/language/stats/frequencies.q
src/language/stats/glm.q
src/language/stats/regression.q
src/language/stats/t-test.q
src/language/utilities/set.q
src/libpspp/argv-parser.h
src/libpspp/automake.mk
src/libpspp/compiler.h
src/libpspp/getl.c
src/libpspp/i18n.c
src/math/automake.mk
src/math/covariance.c [new file with mode: 0644]
src/math/covariance.h [new file with mode: 0644]
src/output/charts/plot-hist.c
src/ui/gui/.gitignore
src/ui/gui/automake.mk
src/ui/gui/crosstabs.glade [deleted file]
src/ui/gui/crosstabs.ui [new file with mode: 0644]
src/ui/gui/descriptives-dialog.c
src/ui/gui/descriptives-dialog.glade [deleted file]
src/ui/gui/descriptives.ui [new file with mode: 0644]
src/ui/gui/examine.glade [deleted file]
src/ui/gui/examine.ui [new file with mode: 0644]
src/ui/gui/find.glade [deleted file]
src/ui/gui/find.ui [new file with mode: 0644]
src/ui/gui/frequencies.glade [deleted file]
src/ui/gui/frequencies.ui [new file with mode: 0644]
src/ui/gui/message-dialog.glade [deleted file]
src/ui/gui/message-dialog.ui [new file with mode: 0644]
src/ui/gui/oneway.glade [deleted file]
src/ui/gui/oneway.ui [new file with mode: 0644]
src/ui/gui/psppire-data-window.c
src/ui/gui/psppire.c
src/ui/gui/psppire.glade [deleted file]
src/ui/gui/psppire.h
src/ui/gui/psppire.ui [new file with mode: 0644]
src/ui/gui/rank.glade [deleted file]
src/ui/gui/rank.ui [new file with mode: 0644]
src/ui/gui/recode.glade [deleted file]
src/ui/gui/recode.ui [new file with mode: 0644]
src/ui/gui/regression.glade [deleted file]
src/ui/gui/regression.ui [new file with mode: 0644]
src/ui/gui/reliability.glade [deleted file]
src/ui/gui/reliability.ui [new file with mode: 0644]
src/ui/gui/t-test.glade [deleted file]
src/ui/gui/t-test.ui [new file with mode: 0644]
src/ui/gui/text-data-import.glade [deleted file]
src/ui/gui/text-data-import.ui [new file with mode: 0644]
src/ui/gui/var-sheet-dialogs.glade [deleted file]
src/ui/gui/var-sheet-dialogs.ui [new file with mode: 0644]
src/ui/gui/variable-info-dialog.c
src/ui/gui/variable-info-dialog.glade [deleted file]
src/ui/gui/variable-info.ui [new file with mode: 0644]
src/ui/terminal/automake.mk
src/ui/terminal/main.c
tests/automake.mk
tests/bugs/t-test-alpha.sh
tests/bugs/t-test-alpha3.sh
tests/bugs/t-test-paired.sh
tests/bugs/temp-freq.sh
tests/command/correlation.sh [new file with mode: 0755]
tests/command/sysfile-info.sh
tests/command/t-test-1-indep-val.sh
tests/command/t-test-1s.sh
tests/command/t-test-pairs.sh
tests/command/weight.sh
tests/dissect-sysfile.c
tests/libpspp/hmap-test.c
tests/libpspp/sparse-xarray-test.c
tests/stats/descript-basic.sh
tests/stats/descript-missing.sh
tests/stats/percentiles-compatible.sh
tests/stats/percentiles-enhanced.sh
texinfo.tex [new file with mode: 0644]

index b50c6a377a2ab182f2ebaddd06e8abfc12ac5ca3..ad89bf36e4884d85df1c47754057f8b2e1635d28 100644 (file)
@@ -30,7 +30,6 @@ potfiles.tmp
 pref.h
 reloc-ldflags
 stamp-h1
-texinfo.tex
 gitlog-to-changelog
 *~
 *.o
diff --git a/AUTHORS b/AUTHORS
index db7a59105fbe6600eed2136d196ac4e691e710ff..38ed6fe0428e4c9e4967860054f06cee66eae708 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -14,6 +14,7 @@ revisions to other modules.
 including lib/gslextras and the linear regression features. Jason 
 is also an important contributor to GSL, which is used by PSPP. 
 
+* Harry Thijssen contributed and maintains the Dutch translation.
 
 We also thank past contributors:
 
diff --git a/INSTALL b/INSTALL
index 686109e48702d59413f1862e1e360acc50cbc64c..0f4f5c9687567dfaa9c322407387f889ed7d19be 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -24,7 +24,7 @@ The following packages are required to install PSPP:
       MinGW (http://www.mingw.org/) are known to work.
 
     * The GNU Scientific Library (http://www.gnu.org/software/gsl/),
-      version 1.6 or later, including libgslcblas included with GSL.
+      version 1.8 or later, including libgslcblas included with GSL.
 
     * Perl (http://www.perl.org/), version 5.005_03 or later.  Perl is
       required during build but not after installation.
@@ -51,16 +51,16 @@ use the GUI, you must run `configure' with --without-gui.
 
     * GTK+ (http://www.gtk.org/), version 2.12.0 or later.
 
-Installing the following packages will allow your PSPP binary to read
-Gnumeric files.
-
     * pkg-config (http://pkg-config.freedesktop.org/wiki/).  Versions
       0.18 and 0.19 have a bug that will prevent library detection,
       but other versions should be fine.
 
-      To cross-compile PSPP, you will likely need to set the
-      PKG_CONFIG_LIBDIR environment variable to point to an
-      appropriate pkg-config for the cross-compilation environment.
+To cross-compile PSPP, you will likely need to set the
+PKG_CONFIG_LIBDIR environment variable to point to an
+appropriate pkg-config for the cross-compilation environment.
+
+Installing the following packages will allow your PSPP binary to read
+Gnumeric files.
 
     * zlib (http://www.zlib.net/).
 
index f606cbf1123b5d8c8d8f468fd6fadb90dc1c2512..02ae7d5b2129e882d72e65559bf81c9d7d3ad5fd 100644 (file)
@@ -1,12 +1,16 @@
 ## Process this file with automake to produce Makefile.in  -*- makefile -*-
 
-AUTOMAKE_OPTIONS = gnits 1.10 subdir-objects
+AUTOMAKE_OPTIONS = gnits 1.10.1 subdir-objects
 
-SUBDIRS = gl po
+SUBDIRS = gl
 DISTCLEANFILES = ./po/stamp-po xconfigure 
 BUILT_SOURCES =
 
-AM_CPPFLAGS = -I$(top_srcdir)/gl -I$(top_builddir)/gl
+AM_CPPFLAGS = \
+       -I$(top_srcdir)/gl \
+       -I$(top_builddir)/gl \
+       -DINSTALLDIR=\"$(bindir)\" \
+       -DDOCDIR=\"$(docdir)\"
 
 AM_CFLAGS=
 
@@ -15,8 +19,6 @@ AM_CFLAGS+=-Wall -W -Wwrite-strings -Wstrict-prototypes \
 -Wpointer-arith -Wno-sign-compare -Wmissing-prototypes
 endif
 
-CC_FOR_BUILD = @CC_FOR_BUILD@
-EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@
 .q.c:
        @$(MKDIR_P) `dirname $@`
        ./src/language/lexer/q2c$(EXEEXT_FOR_BUILD) $< $@
@@ -24,12 +26,14 @@ EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@
 $(all_q_sources:.q=.c): src/language/lexer/q2c$(EXEEXT_FOR_BUILD)
 all_q_sources =
 
-pkgsysconfdir = $(sysconfdir)/@PACKAGE@
+pkgsysconfdir = $(sysconfdir)/$(PACKAGE)
 
 
 EXTRA_DIST = OChangeLog ONEWS config.rpath pspp-mode.el
 
 CLEANFILES = 
+CLEAN_LOCAL =
+ALL_LOCAL =
 ACLOCAL_AMFLAGS = -I m4 -I gl/m4
 noinst_LIBRARIES=
 noinst_LTLIBRARIES=
@@ -40,6 +44,7 @@ DIST_HOOKS =
 INSTALL_DATA_HOOKS = 
 UNINSTALL_DATA_HOOKS =
 PHONY =
+SUFFIXES = .q
 
 generate-changelog:
        if test -d $(top_srcdir)/.git; then                     \
@@ -52,6 +57,7 @@ generate-changelog:
 DIST_HOOKS += generate-changelog
 
 
+include $(top_srcdir)/po/automake.mk
 include $(top_srcdir)/lib/automake.mk
 include $(top_srcdir)/doc/automake.mk
 include $(top_srcdir)/config/automake.mk
@@ -78,5 +84,8 @@ install-data-hook: $(INSTALL_DATA_HOOKS)
 
 uninstall-hook: $(UNINSTALL_DATA_HOOKS)
 
+clean-local: $(CLEAN_LOCAL)
+all-local: $(ALL_LOCAL)
 
-
+# A convenience target to build all the binaries
+programs: $(PROGRAMS)
diff --git a/NEWS b/NEWS
index 7f6c2a0e3463f5678a4b544989eee10d78a03c16..5f952324f12229c7e3a110dfd688f7b0fa5e9c26 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,5 @@
 PSPP NEWS -- history of user-visible changes.
-Time-stamp: <2009-07-29 20:52:41 blp>
+Time-stamp: <2009-10-24 08:12:04 blp>
 Copyright (C) 1996-9, 2000, 2008, 2009 Free Software Foundation, Inc.
 See the end for copying conditions.
 
@@ -25,7 +25,7 @@ Changes from 0.7.0 to 0.7.1:
  *  Added a perl module to facilitate reading and writing of pspp system 
     files from perl programs.
 
-Changes from 0.6.1 to 0.7.0:
+Changes from 0.6.2-pre6 to 0.7.0:
 
   * Custom variable and data file attributes are now supported.
     Commands VARIABLE ATTRIBUTE and DATAFILE ATTRIBUTE have been added
@@ -33,6 +33,120 @@ Changes from 0.6.1 to 0.7.0:
     been added to commands that read and write system files, such as
     SAVE and GET, as well as to the DISPLAY command.
 
+  * Numererous improvements to the Graphical User Interface have
+    made.  Notable improvements include:
+
+    - Non-Ascii characters in strings, labels and variable names are
+      now supported.
+
+    - A "Split Window" function is available, which makes it easier to
+      see different parts of a large data file.
+
+    - Data files can now be opened by specifing their name as the first
+      argument.  This means that on a properly configured desktop, double
+      clicking on an icon will open the file.
+    
+
+  * New statistical procedures:
+    - CORRELATIONS
+    - ROC
+    - RELIABILITY
+
+    NPAR TESTS now supports the WILCOXON and SIGN subcommands.
+
+    The CROSSTABS command has been completely re-implemented to fix numerous bugs.
+
+  * Three new commands to combine data files have been added: MATCH FILES,
+   UPDATE and  ADD FILES.
+
+  * A tutorial chapter has been added to the user manual.
+
+
+Changes from 0.6.1 to 0.6.2-pre6:
+
+  * New translations:
+
+    - Dutch, thanks to Harry Thijssen.
+
+    - Brazilian Portuguese, thanks to Michel Boaventura.
+
+    Thanks for translations are also due to the coordinators at
+    translationproject.org.
+
+  * Statistical bug fixes:
+
+    - REGRESSION: Report correct standard error of the estimate (bug
+      #25677).
+
+    - T-TEST: Report correct significance of paired sample T-test in
+      the common case (bug #26936) and corner cases.  Thanks to Mike
+      Griffiths and Matej Cepl for reporting these bugs.
+
+  * Build fixes and changes:
+
+    - Make running "make" after running "configure" with different
+      settings reliably rebuild version.c.
+
+    - Cygwin and MinGW build fixes.
+
+    - Fixes for building with recent gnulib.
+
+    - The Makefile now honors two new variables, PSPP_LDFLAGS and
+      PSPPIRE_LDFLAGS, that affect linking of the PSPP and PSPPIRE
+      binaries, respectively.  This makes building easier for some
+      packagers.
+
+    - Fixes for "configure --enable-relocatable" (bug #25508).
+
+  * Data file bug fixes and changes:
+
+    - Fix reading text data files that contain a mix of white space
+      and commas.  Now "a ,b" is treated as two fields containing "a"
+      and "b"; previously it was treated as three, with an empty field
+      in the middle.
+
+    - Fix writing corrupted .sav files on Windows.
+
+    - Fix writing corrupted .por files (bug #26034).
+
+    - Fix reading .por files whose initial lines are not padded out
+      with spaces as expected.
+
+    - PSPP will no longer issue warnings about some .sav file records
+      or values that it does not understand.  These warnings were
+      harmless, but needlessly alarmed some users.
+
+    - Fix crash reading empty string fields from PostgreSQL databases.
+
+  * Bug fixes that affect PSPP and PSPPIRE:
+
+    - Users may now control precision of output statistics.  Instead
+      of hard coding the width and decimals of output numbers, respect
+      the default format in most instances.  Counts are now normally
+      displayed with the format of the weight variable, if any.
+
+    - Fix crash when an INSERT command specifies the name of a file
+      that does not exist (bug #24569).
+
+    - Fix crash when CROSSTABS specifies a long-string variable (bugs
+      #24557 and #26131).
+
+    - Fix crash drawing pie charts with many segments.
+
+    - Fix crash when NUMERIC specifies an invalid format.
+
+  * PSPPIRE bug fixes and changes:
+
+    - On Windows, write the output file to the user's home directory
+      instead of the current directory, to better match user
+      expectations.
+
+    - Some data editor fixes.
+
+  * Documentation:
+
+    - Fix typo in BINOMIAL section of user manual (bug #25892).
+
 Changes from 0.6.0 to 0.6.1:
 
   * Statistical bug fixes:
@@ -673,8 +787,6 @@ Changes for version 0.1.0:
 ----------------------------------------------------------------------
 Copyright information:
 
-Copyright (C) 1996-9, 2000 Free Software Foundation, Inc.
-
    Permission is granted to anyone to make or distribute verbatim
    copies of this document as received, in any medium, provided that
    the copyright notice and this permission notice are preserved, thus
diff --git a/README.CVS b/README.CVS
deleted file mode 100644 (file)
index 2e45fef..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-To build this project from the sources direct from the cvs archive,
-you must install the prerequisites listed in README, plus the
-following:
-
-       * Autoconf 2.60 (or later).
-
-       * Automake 1.10 (or later).
-
-       * Gettext 0.17 (or later).
-
-       * GNU M4 1.4.9 (or later).
-
-       * pkg-config 0.21 (or later).
-
-        * gperf 3.0.1 (or later).
-
-       * Gnulib, from Git at <git://git.savannah.gnu.org/gnulib.git>.
-         If you do not have Git installed, up-to-date snapshots are
-         at <http://git.savannah.gnu.org/gitweb/?p=gnulib.git>.
-         Note that Gnulib does not require any form of installation:
-         simply checking it out into a directory is sufficient.  We
-         recommend checking out gnulib into a directory named `gnulib'
-          at the same level as PSPP.
-
-       * libtool 1.5.22 (or later).
-
-       * Texinfo 4.7 or later, to build the documentation.
-
-Once you have these installed, execute
-       make -f Smake
-If you checked Gnulib out in a directory named `gnulib' at the same
-level as PSPP, then this is sufficient.  Otherwise, provide the
-location of GNULIB on the `make' command line:
-       make -f Smake GNULIB=/gnulib/base/directory/name
-
-After executing Smake, you may configure the source tree in the usual
-way with ./configure, e.g.
-       ./configure
-For a list of options:
-       ./configure --help
-
-To test:
-       make check
-
-For a very thorough test: 
-       make distcheck
diff --git a/README.Git b/README.Git
new file mode 100644 (file)
index 0000000..753423e
--- /dev/null
@@ -0,0 +1,76 @@
+Prerequisites for Building PSPP from Git
+----------------------------------------
+
+To build this project from the sources direct from the Git archive,
+you must install the prerequisites listed in README, plus the
+following:
+
+       * Autoconf 2.60 (or later).
+
+       * Automake 1.10 (or later).
+
+       * Gettext 0.17 (or later).
+
+       * GNU M4 1.4.9 (or later).
+
+       * pkg-config 0.21 (or later).
+
+        * gperf 3.0.1 (or later).
+
+       * Gnulib (see below for details).
+
+       * libtool 1.5.22 (or later).
+
+       * Texinfo 4.7 or later, to build the documentation.
+
+After you install PSPP's prerequisites, you must obtain a copy of
+Gnulib, then bootstrap the tree, as described in the sections below.
+After that, you may follow the procedure described in INSTALL.
+
+Obtaining Gnulib
+----------------
+
+This version of PSPP should work with the Gnulib commit shown below.
+Gnulib does not maintain a stable API or ABI, so it is possible that
+PSPP will not work with older or newer versions of Gnulib.
+
+    commit e21985ad14508137d75b0dccf064adfc4e5888c6
+    Author: Bruno Haible <bruno@clisp.org>
+    Date:   Mon Sep 28 23:25:49 2009 +0200
+
+       Avoid identifier clash with POSIX function 'remove' defined as a macro.
+
+To clone Gnulib into a directory named "gnulib" using Git, and then
+check out this particular commit, run these commands:
+       git clone git://git.savannah.gnu.org/gnulib.git gnulib
+       cd gnulib
+       git checkout $COMMIT
+where $COMMIT should be replaced by the commit number listed above
+(usually it is sufficient to just type the first 6 or so digits).
+
+If you do not have Git installed, then you may alternately download
+http://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=snapshot;h=$COMMIT;sf=tgz
+where $COMMIT is, again, at least the first few digits of the commit
+number listed above.  This download will yield a tar.gz file that you
+may extract with "gunzip" and "tar" to yield identical results.
+
+Bootstrapping
+-------------
+
+Once you have Gnulib installed, PSPP must be "bootstrapped" using the
+following command:
+       make -f Smake
+If you checked Gnulib out in a directory named `gnulib' at the same
+level as PSPP, then this is sufficient.  Otherwise, provide the
+location of GNULIB on the `make' command line:
+       make -f Smake GNULIB=/gnulib/base/directory/name
+
+After executing Smake, follow the procedure described in INSTALL to
+build and install PSPP.  On some systems this may be as simple as:
+       ./configure
+       make
+
+Once PSPP is built, you may run its self-tests with:
+       make check
+or for a more thorough test:
+       make distcheck
diff --git a/Smake b/Smake
index 79b573b54962d6edec256ea1ddce8fda5c932c02..e8ffdd5705b2802df79ef79b6ccf90b075a521c0 100644 (file)
--- a/Smake
+++ b/Smake
@@ -94,7 +94,7 @@ GNULIB_MODULES = \
        xstrndup \
        xvasprintf
 
-all: po/POTFILES.in
+all: 
        test -e ChangeLog || touch ChangeLog
        test -d m4 || mkdir m4
        echo '*' > m4/.cvsignore
@@ -105,7 +105,6 @@ all: po/POTFILES.in
        echo '*' > gl/.cvsignore
        echo '*' > gl/m4/.cvsignore
        libtoolize --force --automake
-       autopoint --force
        aclocal -I m4 -I gl/m4
        autoconf
        autoheader
@@ -116,16 +115,6 @@ gettextize:
        touch m4/Makefile.am
        gettextize --force --no-changelog
 
-po/POTFILES.in:
-       for f in `find src \( -name \*.[qc] -o -name \*.glade \) ! -name .\* -print` ; do \
-               if test $$f = src/libpspp/version.c; then continue; fi;   \
-               if test $$f = src/ui/gui/psppire-marshal.c; then continue; fi; \
-               if test -e `dirname $$f`/`basename $$f .c`.q ; then continue; fi; \
-               echo $$f ; \
-       done | sort | uniq > $@.tmp
-       if test ! -e $@ || ! cmp -s $@.tmp $@; then mv $@.tmp $@; fi
-       rm -f $@.tmp
-
 check: all
        rm -rf _check
        mkdir _check
@@ -141,8 +130,8 @@ _debug: all
        test -d _debug || mkdir _debug
        cd _debug && ../configure $(CONFIGUREFLAGS) --enable-debug
 
-PO_FILES = po/ChangeLog po/Makefile po/Makefile.in po/Makefile.in.in   \
-po/POTFILES po/POTFILES.in po/Rules-quot po/boldquot.sed               \
+PO_FILES = po/ChangeLog \
+po/Rules-quot po/boldquot.sed          \
 po/cat-id-tbl.c po/en@boldquot.header po/en@quot.header                        \
 po/insert-header.sin po/quot.sed po/remove-potcdate.sin po/stamp-po    \
 po/Makevars.template po/pspp.pot
@@ -168,4 +157,4 @@ clean:
        rm -f ltmain.sh
        rm -f reloc-ldflags install-reloc
 
-.PHONY: all gettextize potfiles clean
+.PHONY: all gettextize clean
index 6141edd26782b69aa759919489cce281b44e16d3..14d11dc70a26e44bc22f28bac8ca5418360c4843 100644 (file)
@@ -34,6 +34,13 @@ AC_DEFUN([PSPP_PERL],
   if test "$PERL" != no && $PERL -e 'require 5.005_03;'; then :; else
     PSPP_REQUIRED_PREREQ([Perl 5.005_03 (or later)])
   fi
+
+  # The PSPP autobuilder appends a build number to the PSPP version number,
+  # e.g. "0.7.2-build40".  But Perl won't parse version numbers that contain
+  # anything other than digits and periods, so "-build" causes an error.  So we
+  # define $(VERSION_FOR_PERL) that drops everything from the hyphen onward.
+  VERSION_FOR_PERL=`echo "$VERSION" | sed 's/-.*//'`
+  AC_SUBST([VERSION_FOR_PERL])
 ])
 
 dnl PSPP_CHECK_CC_OPTION([OPTION], [ACTION-IF-ACCEPTED], [ACTION-IF-REJECTED])
@@ -248,4 +255,26 @@ AC_DEFUN([PSPP_GSL_NEEDS_FGNU89_INLINE],
         CFLAGS="$CFLAGS -fgnu89-inline"
      fi])
 ])
-dnl acinclude.m4 ends here
+
+AC_DEFUN([PSPP_CHECK_CLICKSEQUENCE],
+  [AC_REQUIRE([AM_INIT_AUTOMAKE])  # Defines MAKEINFO
+   AC_CACHE_CHECK([whether makeinfo supports @clicksequence],
+     [pspp_cv_have_clicksequence],
+     [cat > conftest.texi  <<EOF
+@setfilename conftest.info
+@clicksequence{File @click{} Open}
+EOF
+      echo "configure:__oline__: running $MAKEINFO conftest.texi >&AS_MESSAGE_LOG_FD" >&AS_MESSAGE_LOG_FD
+      eval "$MAKEINFO conftest.texi >&AS_MESSAGE_LOG_FD 2>&1"
+      retval=$?
+      echo "configure:__oline__: \$? = $retval" >&AS_MESSAGE_LOG_FD
+      if test $retval = 0; then
+       pspp_cv_have_clicksequence=yes
+      else
+       pspp_cv_have_clicksequence=no
+      fi
+      rm -f conftest.texi conftest.info])
+   if test $pspp_cv_have_clicksequence = no; then
+       AM_MAKEINFOFLAGS="$AM_MAKEINFOFLAGS -DMISSING_CLICKSEQUENCE"
+       AC_SUBST([AM_MAKEINFOFLAGS])
+   fi])
index c94935391c9a43a593d6b229aeb9996eaa1560e9..499128b3c5e524aa46f2abb650cf5c43f4b642f4 100644 (file)
@@ -16,6 +16,7 @@ AC_LIBTOOL_DLOPEN
 AC_PROG_LIBTOOL
 PKG_PROG_PKG_CONFIG
 m4_pattern_forbid([PKG_CHECK_MODULES])
+PSPP_CHECK_CLICKSEQUENCE
 
 AC_ARG_ENABLE(
   anachronistic-dependencies, 
@@ -30,8 +31,11 @@ PSPP_CC_FOR_BUILD
 PSPP_PERL
 
 dnl Internationalization macros.
-AM_GNU_GETTEXT([external], [need-ngettext])
-AM_GNU_GETTEXT_VERSION([0.17])
+AC_ARG_ENABLE(nls, [AS_HELP_STRING([--disable-nls], [do not use Native Language Support])])
+if  test x"$enable_nls" != x"no"  ; then
+ AC_DEFINE(ENABLE_NLS, 1, [Define to 1 if translation of program messages to the user's native language is requested.])
+fi
+
 
 dnl Checks for libraries.
 AC_SYS_LARGEFILE
@@ -214,9 +218,14 @@ if test "$am_cv_func_iconv" != "yes"; then
    PSPP_REQUIRED_PREREQ([iconv (see http://www.gnu.org/software/libiconv/)])
 fi
 
+dnl Required by the gnulib 'relocatable-prog' module.
+dnl See doc/relocatable-maint.texi in the gnulib tree for details.
+RELOCATABLE_LIBRARY_PATH='$(libdir)'
+RELOCATABLE_STRIP=:
+
 PSPP_CHECK_PREREQS
 
-AC_CONFIG_FILES([Makefile gl/Makefile po/Makefile.in])
+AC_CONFIG_FILES([Makefile gl/Makefile])
 
 AC_OUTPUT
 echo "PSPP configured successfully."
index 9402d7af0aea98ab731007f7b905f251973c13f3..b24eb51e7e6c5458fc0ae726fc7a92e0f46a74eb 100644 (file)
@@ -46,7 +46,7 @@ EXTRA_DIST += doc/pspp.man \
 
 doc/ni.texi: $(top_srcdir)/src/language/command.def doc/get-commands.pl
        @$(MKDIR_P)  doc
-       @PERL@ $(top_srcdir)/doc/get-commands.pl $(top_srcdir)/src/language/command.def > $@
+       $(PERL) $(top_srcdir)/doc/get-commands.pl $(top_srcdir)/src/language/command.def > $@
 
 doc/tut.texi:
        @$(MKDIR_P) doc
@@ -55,8 +55,9 @@ doc/tut.texi:
 
 doc/pspp.xml: doc/pspp.texinfo $(doc_pspp_TEXINFOS)
        @$(MKDIR_P)  doc
-       $(MAKEINFO) --docbook -I $(top_srcdir) $< -o $@
-       $(SED) -i -e 's/Time-&-Date/Time-\&amp;-Date/g' $@
+       $(MAKEINFO) $(AM_MAKEINFOFLAGS) --docbook -I $(top_srcdir) \
+               $(top_srcdir)/doc/pspp.texinfo -o - \
+               | $(SED) 's/Time-&-Date/Time-\&amp;-Date/g' > $@
 
 docbookdir = $(docdir)
 docbook_DATA = doc/pspp.xml
index 9c50904e1b4c43a330202e8ee08869a44d145e20..562b328dbab3bb595574c9ee804d66703dc1d407 100644 (file)
 \CMDNAME\
 @end macro
 
+@ifset MISSING_CLICKSEQUENCE
+@alias clicksequence = asis
+@macro click {}
+->
+@end macro
+@end ifset
+
 @iftex
 @finalout
 @end iftex
index 76925d7e954d865d76217b97e79c86fa3a0ca272..63e8f35aef9ba37f540661aee7018c3b6a9fadb4 100644 (file)
@@ -8,6 +8,7 @@ far.
 * DESCRIPTIVES::                Descriptive statistics.
 * FREQUENCIES::                 Frequency tables.
 * EXAMINE::                     Testing data for normality.
+* CORRELATIONS::                Correlation tables.
 * CROSSTABS::                   Crosstabulation tables.
 * NPAR TESTS::                  Nonparametric tests.
 * T-TEST::                      Test hypotheses about means.
@@ -301,6 +302,69 @@ If many dependent variable are given, or factors are given for which
 there are many distinct values, then @cmd{EXAMINE} will produce a very
 large quantity of output.
 
+@node CORRELATIONS
+@section CORRELATIONS
+
+@vindex CORRELATIONS
+@display
+CORRELATIONS
+     /VARIABLES = varlist [ WITH varlist ]
+     [
+      .
+      .
+      .
+      /VARIABLES = varlist [ WITH varlist ]
+      /VARIABLES = varlist [ WITH varlist ]
+     ]
+
+     [ /PRINT=@{TWOTAIL, ONETAIL@} @{SIG, NOSIG@} ]
+     [ /STATISTICS=DESCRIPTIVES XPROD ALL]
+     [ /MISSING=@{PAIRWISE, LISTWISE@} @{INCLUDE, EXCLUDE@} ]
+@end display    
+
+@cindex correlation
+The @cmd{CORRELATIONS} procedure produces tables of the Pearson correlation coefficient
+for a set of variables.  The significance of the coefficients are also given.
+
+At least one VARIABLES subcommand is required. If the WITH keyword is used, then a non-square
+correlation table will be produced.
+The variables preceding WITH, will be used as the rows of the table, and the variables following
+will be the columns of the table.
+If no WITH subcommand is given, then a square, symmetrical table using all variables is produced.
+
+
+The @cmd{MISSING} subcommand determines the handling of missing variables.  
+If INCLUDE is set, then user-missing values are included in the
+calculations, but system-missing values are not.
+If EXCLUDE is set, which is the default, user-missing
+values are excluded as well as system-missing values. 
+This is the default.
+
+If LISTWISE is set, then the entire case is excluded from analysis
+whenever any variable  specified in the any @cmd{/VARIABLES} subcommand
+contains a missing value.   
+If PAIRWISE is set, then a case is considered missing only if either of the
+values  for the particular coefficient are missing.
+The default is PAIRWISE.
+
+The PRINT subcommand is used to control how the reported significance values are printed.
+If the TWOTAIL option is used, then a two-tailed test of significance is 
+printed.  If the ONETAIL option is given, then a one-tailed test is used.
+The default is TWOTAIL.
+
+If the NOSIG option is specified, then correlation coefficients with significance less than
+0.05 are highlighted.
+If SIG is specified, then no highlighting is performed.  This is the default.
+
+@cindex covariance
+The STATISTICS subcommand requests additional statistics to be displayed.  The keyword 
+DESCRIPTIVES requests that the mean, number of non-missing cases, and the non-biased
+estimator of the standard deviation are displayed.
+These statistics will be displayed in a separated table, for all the variables listed
+in any /VARIABLES subcommand.
+The XPROD keyword requests cross-product deviations and covariance estimators to 
+be displayed for each pair of variables.
+The keyword ALL is the union of DESCRIPTIVES and XPROD.
 
 @node CROSSTABS
 @section CROSSTABS
index bfcb03c9937f14828e92dc19477fe47a332fe491..35b49166db83dc3f17e7b45518a4488e5149fc99 100755 (executable)
@@ -1,8 +1,8 @@
 #!/usr/bin/env python
-#
 #    This file was downloaded from 
-#    http://svn.gnome.org/svn/gtk+/tags/GTK_2_14_7/gtk/gtk-builder-convert
-#    on 11 March 2009
+#    http://git.gnome.org/cgit/gtk+/plain/gtk/gtk-builder-convert
+#    on 4 Oct 2009
+#
 #
 # Copyright (C) 2006-2008 Async Open Source
 #                         Henrique Romano <henrique@async.com.br>
@@ -33,7 +33,7 @@ The [INPUT] file is
   -r, --root             Convert only widget named root and its children
   -h, --help             display this help and exit
 
-When OUTPUT is -, write to standard input.
+When OUTPUT is -, write to standard output.
 
 Examples:
   gtk-builder-convert preference.glade preferences.ui
@@ -46,10 +46,10 @@ import sys
 
 from xml.dom import minidom, Node
 
-WINDOWS = ['GtkWindow',
-           'GtkDialog',
+DIALOGS = ['GtkDialog',
            'GtkFileChooserDialog',
            'GtkMessageDialog']
+WINDOWS = ['GtkWindow'] + DIALOGS
 
 # The subprocess is only available in Python 2.4+
 try:
@@ -261,6 +261,8 @@ class GtkBuilderConverter(object):
 
         for node in objects:
             self._convert(node.getAttribute("class"), node)
+            if self._get_object(node.getAttribute('id')) is not None:
+               print "WARNING: duplicate id \"" + node.getAttribute('id') + "\""
             self.objects[node.getAttribute('id')] = node
 
         # Convert Gazpachos UI tag
@@ -273,9 +275,14 @@ class GtkBuilderConverter(object):
 
         # Output the newly created root objects and sort them
         # by attribute id
-        for obj in sorted(self.root_objects,
-                          key=lambda n: n.getAttribute('id'),
-                          reverse=True):
+        # FIXME: Use sorted(self.root_objects,
+        #                   key=lambda n: n.getAttribute('id'),
+        #                   reverse=True):
+        # when we can depend on python 2.4 or higher
+        root_objects = self.root_objects[:]
+        root_objects.sort(lambda a, b: cmp(b.getAttribute('id'),
+                                           a.getAttribute('id')))
+        for obj in root_objects:
             self._interface.childNodes.insert(0, obj)
 
     def _convert(self, klass, node):
@@ -496,7 +503,7 @@ class GtkBuilderConverter(object):
                 return
 
             if (node.tagName == 'object' and
-                node.getAttribute('class') == 'GtkDialog'):
+                node.getAttribute('class') in DIALOGS):
                 dialog = node
                 break
             node = node.parentNode
@@ -543,6 +550,14 @@ class GtkBuilderConverter(object):
         if not prop.childNodes:
             parent.removeChild(prop)
             return
+
+        translatable_attr = prop.attributes.get('translatable')
+        translatable = translatable_attr is not None and translatable_attr.value == 'yes'
+        has_context_attr = prop.attributes.get('context')
+        has_context = has_context_attr is not None and has_context_attr.value == 'yes'
+        comments_attr = prop.attributes.get('comments')
+        comments = comments_attr is not None and comments_attr.value or None
+
         value = prop.childNodes[0].data
         model = self._create_root_object("GtkListStore",
                                          template="model")
@@ -557,12 +572,23 @@ class GtkBuilderConverter(object):
         data = self._dom.createElement('data')
         model.appendChild(data)
 
+        if value.endswith('\n'):
+            value = value[:-1]
         for item in value.split('\n'):
             row = self._dom.createElement('row')
             data.appendChild(row)
 
             col = self._dom.createElement('col')
             col.setAttribute('id', '0')
+            if translatable:
+                col.setAttribute('translatable', 'yes')
+            if has_context:
+                splitting = item.split('|', 1)
+                if len(splitting) == 2:
+                    context, item = splitting
+                    col.setAttribute('context', context)
+            if comments is not None:
+                col.setAttribute('comments', comments)
             col.appendChild(self._dom.createTextNode(item))
             row.appendChild(col)
 
index bbab8e2aad4adcdf9f9cbe41ec5d863a5084837b..000a5e3e0f740ed6b26957ccb2ee5703649db1e6 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPP - a program for statistical analysis.
-   Copyright (C) 2005 Free Software Foundation, Inc.
+   Copyright (C) 2005, 2009 Free Software Foundation, Inc.
 
    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
@@ -40,6 +40,8 @@
   Springer. 1998. ISBN 0-387-98542-5.
  */
 
+#include <config.h>
+
 #include "sweep.h"
 
 /*
diff --git a/perl-module/PSPP.bs b/perl-module/PSPP.bs
deleted file mode 100644 (file)
index e69de29..0000000
index 36300cc806daa17d022c71d49473108f0834b5f2..77a720caabf69cc17a172ab2c0b1233b7baa9987 100644 (file)
    02110-1301, USA. */
 
 
+#include <config.h>
+
 #include "EXTERN.h"
 #include "perl.h"
 #include "XSUB.h"
 
-#include <config.h>
-
 #include "ppport.h"
 
 #include "minmax.h"
@@ -164,7 +164,11 @@ void
 onBoot (ver)
  const char *ver
 CODE:
- assert (0 == strcmp (ver, bare_version));
+ /* Check that the version is correct up to the length of 'ver'.
+    This allows PSPP autobuilders to add a "-build#" suffix to the
+    PSPP version without causing failures here. */
+ assert (0 == strncmp (ver, bare_version, strlen (ver)));
+
  i18n_init ();
  msg_init (NULL, message_handler);
  settings_init (0, 0);
index 9527dbbd528feffd755b908c6ff892e554a6cc94..ef9acc3790c8bc93e13b44dc89c3fcecc46cf3b3 100644 (file)
@@ -16,27 +16,25 @@ module_sources = \
  perl-module/t/Pspp.t
 
 perl-module/pspp-module-config: Makefile
-       target=`mktemp`;\
-       echo '%Locations = (' > $$target ;\
-       printf "  SourceDir => '" >> $$target ;\
-       (cd $(top_srcdir) && echo `pwd`\', ) >> $$target ;\
-       printf "  BuildDir => '" >> $$target ;\
-       (cd $(top_builddir) && echo `pwd`\' ) >> $$target ;\
-       echo ');' >> $$target ;\
-       cp $$target $(top_builddir)/perl-module/pspp-module-config
+       (echo '%Locations = (';\
+        printf "  SourceDir => '";\
+        (cd $(top_srcdir) && echo `pwd`\', ) ;\
+        printf "  BuildDir => '";\
+        (cd $(top_builddir) && echo `pwd`\' );\
+        echo ');') > $(top_builddir)/perl-module/pspp-module-config
 
 perl-module/Makefile: perl-module/Makefile.PL perl-module/pspp-module-config
        cd perl-module && $(PERL) Makefile.PL PREFIX=$(prefix)
 
-perl-module/PSPP-Perl-$(VERSION).tar.gz: $(module_sources)
-       $(RM) $@
+perl-module/PSPP-Perl-$(VERSION_FOR_PERL).tar.gz: $(module_sources)
+       rm -f $@
        cd perl-module && $(MAKE) $(AM_MAKEFLAGS) tardist
 
 PHONY += module-make
 module-make: perl-module/Makefile src/libpspp-core.la
        cd perl-module && $(MAKE) $(AM_MAKEFLAGS)
 
-all-local: 
+perl_module_tarball:
        if test x"$(top_builddir)" != x"$(top_srcdir)" ; then \
         for f in $(module_sources); do \
          destdir=`dirname $$f` ;\
@@ -47,22 +45,26 @@ all-local:
          fi ; \
         done \
        fi
-       $(MAKE) $(AM_MAKEFLAGS) module-make perl-module/PSPP-Perl-$(VERSION).tar.gz
+       $(MAKE) $(AM_MAKEFLAGS) module-make perl-module/PSPP-Perl-$(VERSION_FOR_PERL).tar.gz
+
+ALL_LOCAL += perl_module_tarball
 
 check-local:
        loc=`pwd` ; cd $(top_builddir)/src/.libs ; llp=`pwd` ; cd $$loc ;  \
        LANG=C LD_LIBRARY_PATH=$$llp sh -c "cd perl-module && $(MAKE) $(AM_MAKEFLAGS) test"
 
 
-clean-local:
+perl_module_CLEAN:
        cd perl-module && $(MAKE) $(AM_MAKEFLAGS) clean || true
        if test x"$(top_builddir)" != x"$(top_srcdir)" ; then \
-         $(RM) $(module_sources) ; \
+         rm -f $(module_sources) ; \
        fi
-       $(RM) perl-module/Makefile.old
+       rm -f perl-module/Makefile.old
+
+CLEAN_LOCAL += perl_module_CLEAN
 
 CLEANFILES += \
-        perl-module/PSPP-Perl-$(VERSION).tar.gz \
+        perl-module/PSPP-Perl-$(VERSION_FOR_PERL).tar.gz \
        perl-module/pspp-module-config \
        perl-module/const-c.inc \
        perl-module/const-xs.inc 
diff --git a/po/LINGUAS b/po/LINGUAS
deleted file mode 100644 (file)
index ce3dc8d..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-# Available languages
-en_GB nl
index b5c0a8003ec1a40f14baa21f67ca7339147ae405..4952d35daffae50f21a0858fed0e5e877ae89a67 100644 (file)
@@ -3,13 +3,6 @@
 # Usually the message domain is the same as the package name.
 DOMAIN = $(PACKAGE)
 
-# These two variables depend on the location of this directory.
-subdir = po
-top_builddir = ..
-
-# These options get passed to xgettext.
-XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ 
-
 # This is the copyright holder that gets inserted into the header of the
 # $(DOMAIN).pot file.  Set this to the copyright holder of the surrounding
 # package.  (Note that the msgstr strings, extracted from the package's
diff --git a/po/automake.mk b/po/automake.mk
new file mode 100644 (file)
index 0000000..0b18ef8
--- /dev/null
@@ -0,0 +1,64 @@
+include $(top_srcdir)/po/Makevars
+
+XGETTEXT=xgettext
+MSGMERGE=msgmerge
+MSGFMT=msgfmt
+
+POFILES=po/en_GB.po po/nl.po po/pt_BR.po
+
+POTFILE=po/$(DOMAIN).pot
+
+TRANSLATABLE_FILES = $(DIST_SOURCES) $(all_q_sources)
+
+XGETTEXT_OPTIONS = \
+       --copyright-holder="$(COPYRIGHT_HOLDER)" \
+       --package-name=$(PACKAGE) \
+       --package-version=$(VERSION) \
+       --msgid-bugs-address=$(MSGID_BUGS_ADDRESS) \
+       --add-comments='TRANSLATORS:'
+
+$(POTFILE): $(TRANSLATABLE_FILES) $(UI_FILES)
+       @$(MKDIR_P) po
+       $(XGETTEXT) --directory=$(top_srcdir) $(XGETTEXT_OPTIONS)    $(TRANSLATABLE_FILES) --language=C --keyword=_ --keyword=N_ -o $@
+       $(XGETTEXT) --directory=$(top_srcdir) $(XGETTEXT_OPTIONS) -j $(UI_FILES) --language=glade -o $@
+
+
+$(POFILES): $(POTFILE)
+       $(MSGMERGE) $(top_srcdir)/$@ $? -o $@
+
+
+SUFFIXES += .po .gmo
+.po.gmo:
+       @$(MKDIR_P) `dirname $@`
+       $(MSGFMT) $< -o $@
+
+
+GMOFILES = $(POFILES:.po=.gmo)
+
+ALL_LOCAL += $(GMOFILES)
+
+install-data-hook: $(GMOFILES)
+       for f in $(GMOFILES); do \
+         lang=`echo $$f | sed -e 's%po/\(.*\)\.gmo%\1%' ` ; \
+         $(INSTALL) -D $$f $(DESTDIR)$(prefix)/share/locale/$$lang/LC_MESSAGES/$(DOMAIN).mo ; \
+       done
+
+uninstall-hook:
+       for f in $(GMOFILES); do \
+         lang=`echo $$f | sed -e 's%po/\(.*\)\.gmo%\1%' ` ; \
+         rm -f $(DESTDIR)$(prefix)/share/locale/$$lang/LC_MESSAGES/$(DOMAIN).mo ; \
+       done
+
+
+EXTRA_DIST += $(POFILES) $(POTFILE)
+
+CLEANFILES += $(GMOFILES) $(POTFILE)
+
+# Clean $(POFILES) from build directory but not if that's the same as
+# the source directory.
+po_CLEAN:
+       @if test "$(srcdir)" != .; then \
+               echo rm -f $(POFILES); \
+               rm -f $(POFILES); \
+       fi
+CLEAN_LOCAL += po_CLEAN
index fa1dd9d91e430d963de0d4df8e013dc805aee220..9db312669c527f0e248e08a71b99e5d55ba84f3d 100644 (file)
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PSPP 0.7.0\n"
 "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n"
-"POT-Creation-Date: 2009-07-26 09:59+0200\n"
+"POT-Creation-Date: 2009-08-30 17:52+0200\n"
 "PO-Revision-Date: 2008-11-05 08:17+0900\n"
 "Last-Translator: John Darrington <john@darrington.wattle.id.au>\n"
 "Language-Team: John Darrington <john@darrington.wattle.id.au>\n"
@@ -14,6 +14,68 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
+#: src/ui/gui/psppire-buttonbox.c:143
+msgid "Buttons"
+msgstr ""
+
+#: src/ui/gui/psppire-buttonbox.c:144
+msgid "The mask that decides what buttons appear in the button box"
+msgstr ""
+
+#: src/ui/gui/psppire-buttonbox.c:273 src/ui/gui/psppire-buttonbox.c:435
+msgid "Continue"
+msgstr ""
+
+#: src/ui/gui/psppire-buttonbox.c:433
+msgid "OK"
+msgstr ""
+
+#: src/ui/gui/psppire-buttonbox.c:434
+msgid "Go To"
+msgstr ""
+
+#: src/ui/gui/psppire-buttonbox.c:436
+msgid "Cancel"
+msgstr ""
+
+#: src/ui/gui/psppire-buttonbox.c:437
+msgid "Help"
+msgstr ""
+
+#: src/ui/gui/psppire-buttonbox.c:438
+msgid "Reset"
+msgstr ""
+
+#: src/ui/gui/psppire-buttonbox.c:439
+msgid "Paste"
+msgstr ""
+
+#: src/ui/gui/psppire-dictview.c:207
+msgid "The dictionary to be displayed by this widget"
+msgstr ""
+
+#: src/ui/gui/psppire-dictview.c:214
+msgid "A predicate function"
+msgstr ""
+
+#: src/ui/gui/psppire-dictview.c:221
+msgid "How many things can be selected"
+msgstr ""
+
+#: src/ui/gui/psppire-dictview.c:491 src/language/dictionary/split-file.c:84
+#: src/language/dictionary/sys-file-info.c:169
+#: src/language/dictionary/sys-file-info.c:393
+#: src/language/dictionary/sys-file-info.c:725
+#: src/language/stats/descriptives.c:885
+#: src/language/data-io/data-parser.c:650
+#: src/language/data-io/data-parser.c:691 src/language/data-io/print.c:404
+msgid "Variable"
+msgstr ""
+
+#: src/ui/gui/psppire-dictview.c:528
+msgid "Prefer variable labels"
+msgstr ""
+
 #: src/data/any-reader.c:57
 #, c-format
 msgid "An error occurred while opening \"%s\": %s."
@@ -298,32 +360,32 @@ msgid "%s variables are not compatible with %s format %s."
 msgstr ""
 
 #: src/data/format.c:327 src/data/sys-file-reader.c:734
-#: src/ui/gui/psppire.glade:2009 src/ui/gui/psppire-var-store.c:628
+#: src/ui/gui/psppire-var-store.c:628 src/ui/gui/psppire.glade:2009
 #: src/ui/gui/var-sheet-dialogs.glade:139
 msgid "String"
 msgstr ""
 
 #: src/data/format.c:327 src/data/sys-file-reader.c:734
-#: src/ui/gui/psppire.glade:2084 src/ui/gui/psppire-var-store.c:621
+#: src/ui/gui/psppire-var-store.c:621 src/ui/gui/psppire.glade:2084
 #: src/ui/gui/var-sheet-dialogs.glade:28
 msgid "Numeric"
 msgstr ""
 
 #: src/data/format.c:328 src/data/sys-file-reader.c:1299
-#: src/data/sys-file-reader.c:1301
+#: src/data/sys-file-reader.c:1301 src/language/xforms/recode.c:493
+#: src/language/xforms/recode.c:494 src/language/xforms/recode.c:506
+#: src/language/xforms/recode.c:507
 #: src/language/dictionary/apply-dictionary.c:78
 #: src/language/dictionary/apply-dictionary.c:79
-#: src/language/xforms/recode.c:493 src/language/xforms/recode.c:494
-#: src/language/xforms/recode.c:506 src/language/xforms/recode.c:507
 msgid "numeric"
 msgstr ""
 
 #: src/data/format.c:328 src/data/sys-file-reader.c:1299
-#: src/data/sys-file-reader.c:1301
+#: src/data/sys-file-reader.c:1301 src/language/xforms/recode.c:493
+#: src/language/xforms/recode.c:494 src/language/xforms/recode.c:506
+#: src/language/xforms/recode.c:507
 #: src/language/dictionary/apply-dictionary.c:78
 #: src/language/dictionary/apply-dictionary.c:79
-#: src/language/xforms/recode.c:493 src/language/xforms/recode.c:494
-#: src/language/xforms/recode.c:506 src/language/xforms/recode.c:507
 msgid "string"
 msgstr ""
 
@@ -613,7 +675,7 @@ msgstr ""
 
 #. TRANSLATORS: this fragment will be interpolated into
 #. messages in fh_lock() that identify types of files.
-#: src/data/scratch-writer.c:66 src/language/data-io/file-handle.q:181
+#: src/data/scratch-writer.c:66
 msgid "scratch file"
 msgstr ""
 
@@ -644,11 +706,11 @@ msgstr ""
 msgid "Error opening \"%s\" for reading as a system file: %s."
 msgstr ""
 
-#: src/data/sys-file-reader.c:322
+#: src/data/sys-file-reader.c:322 tests/dissect-sysfile.c:136
 msgid "Misplaced type 4 record."
 msgstr ""
 
-#: src/data/sys-file-reader.c:333
+#: src/data/sys-file-reader.c:333 tests/dissect-sysfile.c:147
 #, c-format
 msgid "Unrecognized record type %d."
 msgstr "Unrecognised record type %d."
@@ -664,10 +726,11 @@ msgid "Error closing system file \"%s\": %s."
 msgstr ""
 
 #: src/data/sys-file-reader.c:479 src/data/sys-file-reader.c:489
+#: tests/dissect-sysfile.c:181 tests/dissect-sysfile.c:191
 msgid "This is not an SPSS system file."
 msgstr ""
 
-#: src/data/sys-file-reader.c:511
+#: src/data/sys-file-reader.c:511 tests/dissect-sysfile.c:204
 msgid ""
 "Compression bias is not the usual value of 100, or system file uses "
 "unrecognized floating-point format."
@@ -685,20 +748,20 @@ msgstr ""
 msgid "Duplicate variable name `%s' within system file."
 msgstr ""
 
-#: src/data/sys-file-reader.c:604
+#: src/data/sys-file-reader.c:604 tests/dissect-sysfile.c:328
 msgid "Variable label indicator field is not 0 or 1."
 msgstr ""
 
-#: src/data/sys-file-reader.c:612
+#: src/data/sys-file-reader.c:612 tests/dissect-sysfile.c:337
 #, c-format
 msgid "Variable %s has label of invalid length %zu."
 msgstr ""
 
-#: src/data/sys-file-reader.c:631
+#: src/data/sys-file-reader.c:631 tests/dissect-sysfile.c:355
 msgid "Numeric missing value indicator field is not -3, -2, 0, 1, 2, or 3."
 msgstr ""
 
-#: src/data/sys-file-reader.c:649
+#: src/data/sys-file-reader.c:649 tests/dissect-sysfile.c:370
 msgid "String missing value indicator field is not 0, 1, 2, or 3."
 msgstr ""
 
@@ -752,7 +815,7 @@ msgid ""
 "and the syntax which created it to %s"
 msgstr ""
 
-#: src/data/sys-file-reader.c:901
+#: src/data/sys-file-reader.c:901 tests/dissect-sysfile.c:550
 #, c-format
 msgid "Bad size (%zu) or count (%zu) field on record type 7, subtype 3."
 msgstr ""
@@ -778,23 +841,24 @@ msgid ""
 "Integer format indicated by system file (%s) differs from expected (%s)."
 msgstr ""
 
-#: src/data/sys-file-reader.c:992
+#: src/data/sys-file-reader.c:992 tests/dissect-sysfile.c:581
 #, c-format
 msgid "Bad size (%zu) or count (%zu) on extension 4."
 msgstr ""
 
 #: src/data/sys-file-reader.c:996 src/data/sys-file-reader.c:1000
-#: src/data/sys-file-reader.c:1004
+#: src/data/sys-file-reader.c:1004 tests/dissect-sysfile.c:586
+#: tests/dissect-sysfile.c:591 tests/dissect-sysfile.c:596
 #, c-format
 msgid "File specifies unexpected value %g as %s."
 msgstr ""
 
-#: src/data/sys-file-reader.c:1021
+#: src/data/sys-file-reader.c:1021 tests/dissect-sysfile.c:611
 #, c-format
 msgid "Bad size %zu on extension 11."
 msgstr ""
 
-#: src/data/sys-file-reader.c:1033
+#: src/data/sys-file-reader.c:1033 tests/dissect-sysfile.c:623
 #, c-format
 msgid "Extension 11 has bad count %zu (for %zu variables)."
 msgstr ""
@@ -844,7 +908,7 @@ msgstr ""
 msgid "Invalid number of labels: %d.  Ignoring labels."
 msgstr ""
 
-#: src/data/sys-file-reader.c:1268
+#: src/data/sys-file-reader.c:1268 tests/dissect-sysfile.c:426
 msgid ""
 "Variable index record (type 4) does not immediately follow value label "
 "record (type 3) as it should."
@@ -891,7 +955,7 @@ msgstr ""
 msgid "Attribute value %s[%d] is not quoted: %s"
 msgstr ""
 
-#: src/data/sys-file-reader.c:1447
+#: src/data/sys-file-reader.c:1447 tests/dissect-sysfile.c:762
 #, c-format
 msgid ""
 "Variable name length in long string value label record (%d) exceeds %d-byte "
@@ -955,12 +1019,12 @@ msgstr ""
 msgid "Variable map refers to unknown variable %s."
 msgstr ""
 
-#: src/data/sys-file-reader.c:2058
+#: src/data/sys-file-reader.c:2058 tests/dissect-sysfile.c:959
 #, c-format
 msgid "System error: %s."
 msgstr ""
 
-#: src/data/sys-file-reader.c:2060
+#: src/data/sys-file-reader.c:2060 tests/dissect-sysfile.c:961
 msgid "Unexpected end of file."
 msgstr ""
 
@@ -1005,6 +1069,26 @@ msgstr ""
 msgid "`%s' may not be used as a variable name because it is a reserved word."
 msgstr ""
 
+#: src/language/syntax-file.c:88
+#, c-format
+msgid "opening \"%s\" as syntax file"
+msgstr ""
+
+#: src/language/syntax-file.c:93
+#, c-format
+msgid "Opening `%s': %s."
+msgstr ""
+
+#: src/language/syntax-file.c:107
+#, c-format
+msgid "Reading `%s': %s."
+msgstr ""
+
+#: src/language/syntax-file.c:127
+#, c-format
+msgid "Closing `%s': %s."
+msgstr ""
+
 #: src/language/command.c:208 src/language/expressions/parse.c:1267
 #, c-format
 msgid "%s is not yet implemented."
@@ -1138,661 +1222,418 @@ msgstr ""
 msgid "Error executing command: %s."
 msgstr ""
 
-#: src/language/control/control-stack.c:27
+#: src/language/lexer/lexer.c:283
 #, c-format
-msgid "%s without %s."
+msgid "%s does not form a valid number."
 msgstr ""
 
-#: src/language/control/control-stack.c:55
+#: src/language/lexer/lexer.c:389
 #, c-format
-msgid "This command must appear inside %s...%s, without intermediate %s...%s."
+msgid "Bad character in input: `%s'."
 msgstr ""
 
-#: src/language/control/control-stack.c:72
+#: src/language/lexer/lexer.c:426
 #, c-format
-msgid "This command cannot appear outside %s...%s."
-msgstr ""
-
-#: src/language/control/do-if.c:177
-msgid "This command may not follow ELSE in DO IF...END IF."
-msgstr ""
-
-#: src/language/control/loop.c:214
-msgid "Only one index clause may be specified."
+msgid "Subcommand %s may only be specified once."
 msgstr ""
 
-#: src/language/control/repeat.c:171
+#: src/language/lexer/lexer.c:434
 #, c-format
-msgid "Dummy variable name \"%s\" hides dictionary variable \"%s\"."
+msgid "missing required subcommand %s"
 msgstr ""
 
-#: src/language/control/repeat.c:176
+#: src/language/lexer/lexer.c:463
 #, c-format
-msgid "Dummy variable name \"%s\" is given twice."
+msgid "Syntax error %s at %s."
 msgstr ""
 
-#: src/language/control/repeat.c:222
+#: src/language/lexer/lexer.c:466
 #, c-format
-msgid ""
-"Dummy variable \"%.*s\" had %d substitutions, so \"%.*s\" must also, but %d "
-"were specified."
-msgstr ""
-
-#: src/language/control/repeat.c:334
-msgid "DO REPEAT may not nest in compatibility mode."
+msgid "Syntax error at %s."
 msgstr ""
 
-#: src/language/control/repeat.c:436
-msgid "Ranges may only have integer bounds"
+#: src/language/lexer/lexer.c:478 src/language/xforms/select-if.c:60
+#: src/language/stats/autorecode.c:154 src/language/data-io/print-space.c:73
+msgid "expecting end of command"
 msgstr ""
 
-#: src/language/control/repeat.c:445
+#: src/language/lexer/lexer.c:600 src/language/lexer/lexer.c:617
 #, c-format
-msgid "%g TO %g is an invalid range."
+msgid "expecting `%s'"
 msgstr ""
 
-#: src/language/control/repeat.c:480
-msgid "String expected."
+#: src/language/lexer/lexer.c:631
+msgid "expecting string"
 msgstr ""
 
-#: src/language/control/repeat.c:499
-msgid "No matching DO REPEAT."
+#: src/language/lexer/lexer.c:645
+msgid "expecting integer"
 msgstr ""
 
-#: src/language/control/temporary.c:46
-msgid ""
-"This command may only appear once between procedures and procedure-like "
-"commands."
+#: src/language/lexer/lexer.c:658
+msgid "expecting number"
 msgstr ""
 
-#: src/language/data-io/combine-files.c:210
-msgid "Cannot specify the active file since no active file has been defined."
+#: src/language/lexer/lexer.c:670
+msgid "expecting identifier"
 msgstr ""
 
-#: src/language/data-io/combine-files.c:216
-msgid ""
-"This command may not be used after TEMPORARY when the active file is an "
-"input source.  Temporary transformations will be made permanent."
+#: src/language/lexer/lexer.c:1064
+msgid "binary"
 msgstr ""
 
-#: src/language/data-io/combine-files.c:250
-msgid "Multiple IN subcommands for a single FILE or TABLE."
+#: src/language/lexer/lexer.c:1069
+msgid "octal"
 msgstr ""
 
-#: src/language/data-io/combine-files.c:302
-#, c-format
-msgid "File %s lacks BY variable %s."
+#: src/language/lexer/lexer.c:1074
+msgid "hex"
 msgstr ""
 
-#: src/language/data-io/combine-files.c:305
+#: src/language/lexer/lexer.c:1084
 #, c-format
-msgid "Active file lacks BY variable %s."
-msgstr ""
-
-#: src/language/data-io/combine-files.c:376
-msgid "The BY subcommand is required."
+msgid "String of %s digits has %zu characters, which is not a multiple of %d."
 msgstr ""
 
-#: src/language/data-io/combine-files.c:381
-msgid "BY is required when TABLE is specified."
+#: src/language/lexer/lexer.c:1113
+#, c-format
+msgid "`%c' is not a valid %s digit."
 msgstr ""
 
-#: src/language/data-io/combine-files.c:386
-msgid "BY is required when SORT is specified."
+#: src/language/lexer/lexer.c:1147
+msgid "Unterminated string constant."
 msgstr ""
 
-#: src/language/data-io/combine-files.c:513
-msgid ""
-"Combining files with incompatible encodings. String data may not be "
-"represented correctly."
+#: src/language/lexer/lexer.c:1201
+msgid "Unexpected end of file in string concatenation."
 msgstr ""
 
-#: src/language/data-io/combine-files.c:545
-#, c-format
-msgid ""
-"Variable %s in file %s has different type or width from the same variable in "
-"earlier file."
+#: src/language/lexer/lexer.c:1209
+msgid "String expected following `+'."
 msgstr ""
 
-#: src/language/data-io/combine-files.c:551
+#: src/language/lexer/lexer.c:1222
 #, c-format
-msgid "In file %s, %s is numeric."
+msgid "String exceeds 255 characters in length (%zu characters)."
 msgstr ""
 
-#: src/language/data-io/combine-files.c:554
-#, c-format
-msgid "In file %s, %s is a string variable with width %d."
+#: src/language/lexer/format-parser.c:88
+msgid "expecting valid format specifier"
 msgstr ""
 
-#: src/language/data-io/combine-files.c:559
+#: src/language/lexer/format-parser.c:107
+#: src/language/lexer/format-parser.c:126
+#: src/language/data-io/placement-parser.c:226
 #, c-format
-msgid "In an earlier file, %s was numeric."
+msgid "Unknown format type \"%s\"."
 msgstr ""
 
-#: src/language/data-io/combine-files.c:562
-#, c-format
-msgid "In an earlier file, %s was a string variable with width %d."
+#: src/language/lexer/format-parser.c:121
+msgid "expecting format type"
 msgstr ""
 
-#: src/language/data-io/combine-files.c:601
+#: src/language/lexer/value-parser.c:60
 #, c-format
 msgid ""
-"Variable name %s specified on %s subcommand duplicates an existing variable "
-"name."
+"Low end of range (%g) is below high end (%g).  The range will be treated as "
+"reversed."
 msgstr ""
 
-#: src/language/data-io/combine-files.c:762
+#: src/language/lexer/value-parser.c:68
 #, c-format
-msgid "Encountered %zu sets of duplicate cases in the master file."
+msgid "Ends of range are equal (%g)."
 msgstr ""
 
-#: src/language/data-io/data-list.c:137
-msgid "The END subcommand may only be used within INPUT PROGRAM."
+#: src/language/lexer/value-parser.c:76
+msgid "LO or LOWEST must be part of a range."
 msgstr ""
 
-#: src/language/data-io/data-list.c:143
-msgid "The END subcommand may only be specified once."
+#: src/language/lexer/value-parser.c:109
+msgid "System-missing value is not valid here."
 msgstr ""
 
-#: src/language/data-io/data-list.c:181
-msgid "Only one of FIXED, FREE, or LIST may be specified."
+#: src/language/lexer/value-parser.c:117
+msgid "expecting number or data string"
 msgstr ""
 
-#: src/language/data-io/data-list.c:243
-msgid "Encoding should not be specified for inline data. It will be ignored."
+#: src/language/lexer/variable-parser.c:63
+msgid "expecting variable name"
 msgstr ""
 
-#: src/language/data-io/data-list.c:254
-msgid "The END subcommand may be used only with DATA LIST FIXED."
+#: src/language/lexer/variable-parser.c:73
+#, c-format
+msgid "%s is not a variable name."
 msgstr ""
 
-#: src/language/data-io/data-list.c:269
-msgid "At least one variable must be specified."
+#: src/language/lexer/variable-parser.c:176
+#, c-format
+msgid ""
+"%s is not a numeric variable.  It will not be included in the variable list."
 msgstr ""
 
-#: src/language/data-io/data-list.c:368 src/language/data-io/data-list.c:457
-#: src/language/data-io/get-data.c:530
+#: src/language/lexer/variable-parser.c:179
 #, c-format
-msgid "%s is a duplicate variable name."
+msgid ""
+"%s is not a string variable.  It will not be included in the variable list."
 msgstr ""
 
-#: src/language/data-io/data-list.c:375
+#: src/language/lexer/variable-parser.c:183
 #, c-format
-msgid "There is already a variable %s of a different type."
+msgid "Scratch variables (such as %s) are not allowed here."
 msgstr ""
 
-#: src/language/data-io/data-list.c:382
+#: src/language/lexer/variable-parser.c:187
 #, c-format
-msgid "There is already a string variable %s of a different width."
+msgid ""
+"%s and %s are not the same type.  All variables in this variable list must "
+"be of the same type.  %s will be omitted from the list."
 msgstr ""
 
-#: src/language/data-io/data-list.c:390
+#: src/language/lexer/variable-parser.c:193
 #, c-format
-msgid "Cannot place variable %s on record %d when RECORDS=%d is specified."
-msgstr ""
-
-#: src/language/data-io/data-parser.c:460
-#: src/language/data-io/data-parser.c:469
-msgid "Quoted string extends beyond end of line."
+msgid ""
+"%s and %s are string variables with different widths.  All variables in this "
+"variable list must have the same width.  %s will be omitted from the list."
 msgstr ""
 
-#: src/language/data-io/data-parser.c:525
+#: src/language/lexer/variable-parser.c:198
 #, c-format
-msgid "Partial case of %d of %d records discarded."
+msgid "Variable %s appears twice in variable list."
 msgstr ""
 
-#: src/language/data-io/data-parser.c:572
+#: src/language/lexer/variable-parser.c:311
 #, c-format
-msgid "Partial case discarded.  The first variable missing was %s."
+msgid "%s TO %s is not valid syntax since %s precedes %s in the dictionary."
 msgstr ""
 
-#: src/language/data-io/data-parser.c:610
+#: src/language/lexer/variable-parser.c:319
 #, c-format
 msgid ""
-"Missing value(s) for all variables from %s onward.  These will be filled "
-"with the system-missing value or blanks, as appropriate."
+"When using the TO keyword to specify several variables, both variables must "
+"be from the same variable dictionaries, of either ordinary, scratch, or "
+"system variables.  %s is a %s variable, whereas %s is %s."
 msgstr ""
 
-#: src/language/data-io/data-parser.c:630
-msgid "Record ends in data not part of any field."
+#: src/language/lexer/variable-parser.c:393
+msgid "incorrect use of TO convention"
 msgstr ""
 
-#: src/language/data-io/data-parser.c:650
-#: src/language/data-io/data-parser.c:691 src/language/data-io/print.c:404
-#: src/language/dictionary/split-file.c:84
-#: src/language/dictionary/sys-file-info.c:169
-#: src/language/dictionary/sys-file-info.c:393
-#: src/language/dictionary/sys-file-info.c:725
-#: src/language/stats/descriptives.c:885 src/ui/gui/psppire-dictview.c:491
-msgid "Variable"
+#: src/language/lexer/variable-parser.c:436
+msgid "Scratch variables not allowed here."
 msgstr ""
 
-#: src/language/data-io/data-parser.c:651 src/language/data-io/print.c:405
-msgid "Record"
+#: src/language/lexer/variable-parser.c:458
+msgid "Prefixes don't match in use of TO convention."
 msgstr ""
 
-#: src/language/data-io/data-parser.c:652 src/language/data-io/print.c:406
-#: src/ui/gui/crosstabs.glade:92 src/ui/gui/psppire-var-sheet.c:537
-#: src/ui/gui/psppire-var-store.c:839
-msgid "Columns"
+#: src/language/lexer/variable-parser.c:463
+msgid "Bad bounds in use of TO convention."
 msgstr ""
 
-#: src/language/data-io/data-parser.c:653
-#: src/language/data-io/data-parser.c:692 src/language/data-io/print.c:407
-msgid "Format"
+#: src/language/xforms/compute.c:149 src/language/xforms/compute.c:203
+#, c-format
+msgid ""
+"When executing COMPUTE: SYSMIS is not a valid value as an index into vector %"
+"s."
 msgstr ""
 
-#: src/language/data-io/data-parser.c:672
+#: src/language/xforms/compute.c:153 src/language/xforms/compute.c:210
 #, c-format
-msgid "Reading %d record from %s."
-msgid_plural "Reading %d records from %s."
-msgstr[0] ""
-msgstr[1] ""
+msgid ""
+"When executing COMPUTE: %g is not a valid value as an index into vector %s."
+msgstr ""
 
-#: src/language/data-io/data-parser.c:708
+#: src/language/xforms/compute.c:353
 #, c-format
-msgid "Reading free-form data from %s."
+msgid "There is no vector named %s."
 msgstr ""
 
-#. TRANSLATORS: this fragment will be interpolated into
-#. messages in fh_lock() that identify types of files.
-#: src/language/data-io/data-reader.c:122
-#: src/language/data-io/data-writer.c:58
-msgid "data file"
+#: src/language/xforms/count.c:123
+msgid "Destination cannot be a string variable."
 msgstr ""
 
-#: src/language/data-io/data-reader.c:149
+#: src/language/xforms/sample.c:76
+msgid "The sampling factor must be between 0 and 1 exclusive."
+msgstr ""
+
+#: src/language/xforms/sample.c:96
 #, c-format
-msgid "Could not open \"%s\" for reading as a data file: %s."
+msgid "Cannot sample %d observations from a population of %d."
 msgstr ""
 
-#: src/language/data-io/data-reader.c:191
+#: src/language/xforms/recode.c:248
 msgid ""
-"Unexpected end-of-file while reading data in BEGIN DATA.  This probably "
-"indicates a missing or misformatted END DATA command.  END DATA must appear "
-"by itself on a single line with exactly one space between words."
+"Inconsistent target variable types.  Target variables must be all numeric or "
+"all string."
 msgstr ""
 
-#: src/language/data-io/data-reader.c:216
-#, c-format
-msgid "Error reading file %s: %s."
+#: src/language/xforms/recode.c:269
+msgid "CONVERT requires string input values and numeric output values."
 msgstr ""
 
-#: src/language/data-io/data-reader.c:219
-#, c-format
-msgid "Unexpected end of file reading %s."
+#: src/language/xforms/recode.c:324
+msgid "THRU is not allowed with string variables."
 msgstr ""
 
-#: src/language/data-io/data-reader.c:228
-#, c-format
-msgid "Unexpected end of file in partial record reading %s."
+#: src/language/xforms/recode.c:403
+msgid "expecting output value"
 msgstr ""
 
-#: src/language/data-io/data-reader.c:288
+#: src/language/xforms/recode.c:460
 #, c-format
-msgid "Corrupt block descriptor word at offset 0x%lx in %s."
+msgid ""
+"%zu variable(s) cannot be recoded into %zu variable(s).  Specify the same "
+"number of variables as source and target variables."
 msgstr ""
 
-#: src/language/data-io/data-reader.c:289
+#: src/language/xforms/recode.c:475
 #, c-format
-msgid "Corrupt record descriptor word at offset 0x%lx in %s."
+msgid ""
+"There is no variable named %s.  (All string variables specified on INTO must "
+"already exist.  Use the STRING command to create a string variable.)"
 msgstr ""
 
-#: src/language/data-io/data-reader.c:302
+#: src/language/xforms/recode.c:491
 #, c-format
-msgid "Corrupt record size at offset 0x%lx in %s."
+msgid "INTO is required with %s input values and %s output values."
 msgstr ""
 
-#: src/language/data-io/data-reader.c:444
-msgid "Record exceeds remaining block length."
+#: src/language/xforms/recode.c:504
+#, c-format
+msgid "Type mismatch.  Cannot store %s data in %s variable %s."
 msgstr ""
 
-#: src/language/data-io/data-reader.c:518
-#, c-format
-msgid "Attempt to read beyond end-of-file on file %s."
+#: src/language/xforms/select-if.c:100
+msgid "Syntax error expecting OFF or BY.  Turning off case filtering."
 msgstr ""
 
-#: src/language/data-io/data-reader.c:521
-msgid "Attempt to read beyond END DATA."
+#: src/language/xforms/select-if.c:115
+msgid "The filter variable must be numeric."
 msgstr ""
 
-#: src/language/data-io/data-reader.c:707
-msgid ""
-"This command is not valid here since the current input program does not "
-"access the inline file."
+#: src/language/xforms/select-if.c:121
+msgid "The filter variable may not be scratch."
 msgstr ""
 
-#: src/language/data-io/data-writer.c:74
+#: src/language/control/control-stack.c:27
 #, c-format
-msgid "An error occurred while opening \"%s\" for writing as a data file: %s."
+msgid "%s without %s."
 msgstr ""
 
-#: src/language/data-io/data-writer.c:191
+#: src/language/control/control-stack.c:55
 #, c-format
-msgid "I/O error occurred writing data file \"%s\"."
+msgid "This command must appear inside %s...%s, without intermediate %s...%s."
 msgstr ""
 
-#: src/language/data-io/file-handle.q:65
+#: src/language/control/control-stack.c:72
 #, c-format
-msgid ""
-"File handle %s is already defined.  Use CLOSE FILE HANDLE before redefining "
-"a file handle."
+msgid "This command cannot appear outside %s...%s."
 msgstr ""
 
-#: src/language/data-io/file-handle.q:120
-msgid "RECFORM must be specified with MODE=360."
+#: src/language/control/do-if.c:177
+msgid "This command may not follow ELSE in DO IF...END IF."
 msgstr ""
 
-#: src/language/data-io/file-handle.q:131
-#, c-format
-msgid "The specified file mode requires LRECL.  Assuming %d-character records."
+#: src/language/control/loop.c:214
+msgid "Only one index clause may be specified."
 msgstr ""
 
-#: src/language/data-io/file-handle.q:135
-#, c-format
+#: src/language/control/temporary.c:46
 msgid ""
-"Record length (%ld) must be between 1 and %lu bytes.  Assuming %d-character "
-"records."
+"This command may only appear once between procedures and procedure-like "
+"commands."
 msgstr ""
 
-#: src/language/data-io/file-handle.q:177
-msgid "file"
+#: src/language/control/repeat.c:171
+#, c-format
+msgid "Dummy variable name \"%s\" hides dictionary variable \"%s\"."
 msgstr ""
 
-#: src/language/data-io/file-handle.q:179
-msgid "inline file"
+#: src/language/control/repeat.c:176
+#, c-format
+msgid "Dummy variable name \"%s\" is given twice."
 msgstr ""
 
-#: src/language/data-io/file-handle.q:205
-msgid "expecting a file name or handle name"
+#: src/language/control/repeat.c:222
+#, c-format
+msgid ""
+"Dummy variable \"%.*s\" had %d substitutions, so \"%.*s\" must also, but %d "
+"were specified."
 msgstr ""
 
-#: src/language/data-io/file-handle.q:225
-#, c-format
-msgid "Handle for %s not allowed here."
+#: src/language/control/repeat.c:334
+msgid "DO REPEAT may not nest in compatibility mode."
 msgstr ""
 
-#: src/language/data-io/get.c:99
-msgid "expecting COMM or TAPE"
+#: src/language/control/repeat.c:436
+msgid "Ranges may only have integer bounds"
 msgstr ""
 
-#: src/language/data-io/get-data.c:64
+#: src/language/control/repeat.c:445
 #, c-format
-msgid "Unsupported TYPE %s"
+msgid "%g TO %g is an invalid range."
 msgstr ""
 
-#: src/language/data-io/get-data.c:260
-#, c-format
-msgid ""
-"%s is allowed only with %s arrangement, but %s arrangement was stated or "
-"implied earlier in this command."
+#: src/language/control/repeat.c:480
+msgid "String expected."
 msgstr ""
 
-#: src/language/data-io/get-data.c:315
-msgid "expecting FIXED or DELIMITED"
+#: src/language/control/repeat.c:499
+msgid "No matching DO REPEAT."
 msgstr ""
 
-#: src/language/data-io/get-data.c:328
-msgid "Value of FIRSTCASE must be 1 or greater."
+#: src/language/dictionary/attributes.c:108
+msgid "Attribute array index must be between 1 and 65535."
 msgstr ""
 
-#: src/language/data-io/get-data.c:353
-msgid "expecting LINE or VARIABLES"
+#: src/language/dictionary/attributes.c:189
+msgid "expecting ATTRIBUTE= or DELETE="
 msgstr ""
 
-#: src/language/data-io/get-data.c:366
-msgid "Value of FIXCASE must be at least 1."
+#: src/language/dictionary/apply-dictionary.c:75
+#, c-format
+msgid "Variable %s is %s in target file, but %s in source file."
 msgstr ""
 
-#: src/language/data-io/get-data.c:386
-msgid "Value of FIRST must be at least 1."
+#: src/language/dictionary/apply-dictionary.c:115
+msgid "No matching variables found between the source and target files."
 msgstr ""
 
-#: src/language/data-io/get-data.c:398
-msgid "Value of PERCENT must be between 1 and 100."
+#: src/language/dictionary/delete-variables.c:40
+msgid ""
+"DELETE VARIABLES may not be used after TEMPORARY.  Temporary transformations "
+"will be made permanent."
 msgstr ""
 
-#: src/language/data-io/get-data.c:447
+#: src/language/dictionary/delete-variables.c:48
 msgid ""
-"In compatible syntax mode, the QUALIFIER string must contain exactly one "
-"character."
+"DELETE VARIABLES may not be used to delete all variables from the active "
+"file dictionary.  Use NEW FILE instead."
 msgstr ""
 
-#: src/language/data-io/get-data.c:462
-msgid "expecting VARIABLES"
+#: src/language/dictionary/formats.c:90
+msgid "`(' expected after variable list."
 msgstr ""
 
-#: src/language/data-io/get-data.c:484
-#: src/language/data-io/placement-parser.c:378
-#, c-format
-msgid ""
-"The record number specified, %ld, is at or before the previous record, %d.  "
-"Data fields must be listed in order of increasing record number."
+#: src/language/dictionary/formats.c:100 src/language/dictionary/numeric.c:74
+msgid "`)' expected after output format."
 msgstr ""
 
-#: src/language/data-io/get-data.c:493
+#: src/language/dictionary/missing-values.c:56
+#: src/language/stats/aggregate.c:458
+msgid "expecting `('"
+msgstr ""
+
+#: src/language/dictionary/missing-values.c:72
 #, c-format
 msgid ""
-"The record number specified, %ld, exceeds the number of records per case "
-"specified on FIXCASE, %d."
+"Cannot mix numeric variables (e.g. %s) and string variables (e.g. %s) within "
+"a single list."
 msgstr ""
 
-#: src/language/data-io/inpt-pgm.c:130
-msgid "Unexpected end-of-file within INPUT PROGRAM."
-msgstr ""
-
-#: src/language/data-io/inpt-pgm.c:143
-msgid "Input program did not create any variables."
-msgstr ""
-
-#: src/language/data-io/inpt-pgm.c:288
-msgid "COLUMN subcommand multiply specified."
-msgstr ""
-
-#: src/language/data-io/inpt-pgm.c:338
-msgid ""
-"REREAD: Column numbers must be positive finite numbers.  Column set to 1."
-msgstr ""
-
-#: src/language/data-io/list.q:157 src/language/stats/descriptives.c:362
-msgid "No variables specified."
-msgstr ""
-
-#: src/language/data-io/list.q:165
-#, c-format
-msgid ""
-"The first case (%ld) specified precedes the last case (%ld) specified.  The "
-"values will be swapped."
-msgstr ""
-
-#: src/language/data-io/list.q:173
-#, c-format
-msgid ""
-"The first case (%ld) to list is less than 1.  The value is being reset to 1."
-msgstr ""
-
-#: src/language/data-io/list.q:179
-#, c-format
-msgid ""
-"The last case (%ld) to list is less than 1.  The value is being reset to 1."
-msgstr ""
-
-#: src/language/data-io/list.q:185
-#, c-format
-msgid "The step value %ld is less than 1.  The value is being reset to 1."
-msgstr ""
-
-#: src/language/data-io/list.q:211
-msgid "`/FORMAT WEIGHT' specified, but weighting is not on."
-msgstr ""
-
-#: src/language/data-io/list.q:468
-msgid "Line"
-msgstr ""
-
-#: src/language/data-io/placement-parser.c:87
-#, c-format
-msgid ""
-"Number of variables specified (%zu) differs from number of variable formats "
-"(%zu)."
-msgstr ""
-
-#: src/language/data-io/placement-parser.c:97
-msgid ""
-"SPSS-like or Fortran-like format specification expected after variable names."
-msgstr ""
-
-#: src/language/data-io/placement-parser.c:119
-#, c-format
-msgid "The %d columns %d-%d can't be evenly divided into %zu fields."
-msgstr ""
-
-#: src/language/data-io/placement-parser.c:226
-#: src/language/lexer/format-parser.c:107
-#: src/language/lexer/format-parser.c:126
-#, c-format
-msgid "Unknown format type \"%s\"."
-msgstr ""
-
-#: src/language/data-io/placement-parser.c:305
-msgid "Column positions for fields must be positive."
-msgstr ""
-
-#: src/language/data-io/placement-parser.c:307
-msgid "Column positions for fields must not be negative."
-msgstr ""
-
-#: src/language/data-io/placement-parser.c:344
-msgid "The ending column for a field must be greater than the starting column."
-msgstr ""
-
-#: src/language/data-io/print.c:179 src/language/data-io/trim.c:54
-msgid "expecting a valid subcommand"
-msgstr ""
-
-#: src/language/data-io/print.c:267
-#, c-format
-msgid "Output calls for %d records but %zu specified on RECORDS subcommand."
-msgstr ""
-
-#: src/language/data-io/print.c:438
-#, c-format
-msgid "Writing %d record to %s."
-msgid_plural "Writing %d records to %s."
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/language/data-io/print.c:442
-#, c-format
-msgid "Writing %d record."
-msgid_plural "Writing %d records."
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/language/data-io/print-space.c:73 src/language/lexer/lexer.c:478
-#: src/language/stats/autorecode.c:154 src/language/xforms/select-if.c:60
-msgid "expecting end of command"
-msgstr ""
-
-#: src/language/data-io/print-space.c:116
-msgid "The expression on PRINT SPACE evaluated to the system-missing value."
-msgstr ""
-
-#: src/language/data-io/print-space.c:119
-#, c-format
-msgid "The expression on PRINT SPACE evaluated to %g."
-msgstr ""
-
-#: src/language/data-io/save.c:223 src/language/data-io/save.c:238
-#: src/language/data-io/save.c:266
-#, c-format
-msgid "expecting %s or %s"
-msgstr ""
-
-#: src/language/data-io/trim.c:88
-#, c-format
-msgid ""
-"Cannot rename %s as %s because there already exists a variable named %s.  To "
-"rename variables with overlapping names, use a single RENAME subcommand such "
-"as \"/RENAME (A=B)(B=C)(C=A)\", or equivalently, \"/RENAME (A B C=B C A)\"."
-msgstr ""
-
-#: src/language/data-io/trim.c:114
-msgid "`=' expected after variable list."
-msgstr ""
-
-#: src/language/data-io/trim.c:121
-#, c-format
-msgid ""
-"Number of variables on left side of `=' (%zu) does not match number of "
-"variables on right side (%zu), in parenthesized group %d of RENAME "
-"subcommand."
-msgstr ""
-"Number of variables on left side of `=' (%zu) does not match number of \n"
-"variables on right side (%zu), in parenthesised group %d of RENAME \n"
-"subcommand."
-
-#: src/language/data-io/trim.c:134
-#, c-format
-msgid "Requested renaming duplicates variable name %s."
-msgstr ""
-
-#: src/language/data-io/trim.c:165
-msgid "Cannot DROP all variables from dictionary."
-msgstr ""
-
-#: src/language/dictionary/apply-dictionary.c:75
-#, c-format
-msgid "Variable %s is %s in target file, but %s in source file."
-msgstr ""
-
-#: src/language/dictionary/apply-dictionary.c:115
-msgid "No matching variables found between the source and target files."
-msgstr ""
-
-#: src/language/dictionary/attributes.c:108
-msgid "Attribute array index must be between 1 and 65535."
-msgstr ""
-
-#: src/language/dictionary/attributes.c:189
-msgid "expecting ATTRIBUTE= or DELETE="
-msgstr ""
-
-#: src/language/dictionary/delete-variables.c:40
-msgid ""
-"DELETE VARIABLES may not be used after TEMPORARY.  Temporary transformations "
-"will be made permanent."
-msgstr ""
-
-#: src/language/dictionary/delete-variables.c:48
-msgid ""
-"DELETE VARIABLES may not be used to delete all variables from the active "
-"file dictionary.  Use NEW FILE instead."
-msgstr ""
-
-#: src/language/dictionary/formats.c:90
-msgid "`(' expected after variable list."
-msgstr ""
-
-#: src/language/dictionary/formats.c:100 src/language/dictionary/numeric.c:74
-msgid "`)' expected after output format."
-msgstr ""
-
-#: src/language/dictionary/missing-values.c:56
-#: src/language/stats/aggregate.c:458
-msgid "expecting `('"
-msgstr ""
-
-#: src/language/dictionary/missing-values.c:72
-#, c-format
-msgid ""
-"Cannot mix numeric variables (e.g. %s) and string variables (e.g. %s) within "
-"a single list."
-msgstr ""
-
-#: src/language/dictionary/missing-values.c:116
-#, c-format
-msgid "Truncating missing value to maximum acceptable length (%d bytes)."
+#: src/language/dictionary/missing-values.c:116
+#, c-format
+msgid "Truncating missing value to maximum acceptable length (%d bytes)."
 msgstr ""
 
 #: src/language/dictionary/missing-values.c:138
@@ -1914,19 +1755,14 @@ msgstr ""
 #: src/language/dictionary/split-file.c:85
 #: src/language/dictionary/sys-file-info.c:486
 #: src/language/dictionary/sys-file-info.c:641
-#: src/language/stats/crosstabs.q:1235 src/language/stats/crosstabs.q:1262
-#: src/language/stats/crosstabs.q:1286 src/language/stats/crosstabs.q:1311
-#: src/language/stats/examine.q:1959 src/language/stats/frequencies.q:1051
-#: src/language/stats/frequencies.q:1176 src/language/stats/reliability.q:582
-#: src/language/stats/reliability.q:593
 msgid "Value"
 msgstr ""
 
 #: src/language/dictionary/split-file.c:86
 #: src/language/dictionary/sys-file-info.c:397
-#: src/language/dictionary/sys-file-info.c:642 src/ui/gui/crosstabs.glade:275
-#: src/ui/gui/psppire.glade:1974 src/ui/gui/psppire-var-sheet.c:534
-#: src/ui/gui/psppire-var-store.c:836
+#: src/language/dictionary/sys-file-info.c:642
+#: src/ui/gui/psppire-var-sheet.c:537 src/ui/gui/psppire-var-store.c:836
+#: src/ui/gui/crosstabs.glade:275 src/ui/gui/psppire.glade:1974
 msgid "Label"
 msgstr ""
 
@@ -2158,10 +1994,6 @@ msgstr ""
 msgid "Truncating value label to 60 characters."
 msgstr ""
 
-#: src/language/dictionary/variable-display.c:120
-msgid "Variable display width must be a positive integer."
-msgstr ""
-
 #: src/language/dictionary/variable-label.c:51
 msgid "String expected for variable label."
 msgstr ""
@@ -2202,6 +2034,10 @@ msgstr ""
 msgid "%s is an existing variable name."
 msgstr ""
 
+#: src/language/dictionary/variable-display.c:120
+msgid "Variable display width must be a positive integer."
+msgstr ""
+
 #: src/language/dictionary/weight.c:49
 msgid "The weighting variable must be numeric."
 msgstr ""
@@ -2210,2615 +2046,2528 @@ msgstr ""
 msgid "The weighting variable may not be scratch."
 msgstr ""
 
-#: src/language/expressions/evaluate.c:155
-msgid "expecting number or string"
+#: src/language/tests/float-format.c:124
+#, c-format
+msgid "%zu-byte string needed but %zu-byte string supplied."
 msgstr ""
 
-#: src/language/expressions/evaluate.c:169
-#, c-format
-msgid "Duplicate variable name %s."
+#: src/language/tests/float-format.c:136
+msgid "Hexadecimal floating constant too long."
 msgstr ""
 
-#: src/language/expressions/helpers.c:51
+#: src/language/tests/float-format.c:201
+#, c-format
 msgid ""
-"One of the arguments to a DATE function is not an integer.  The result will "
-"be system-missing."
+"%s conversion of %s from %s to %s should have produced %s but actually "
+"produced %s."
 msgstr ""
 
-#: src/language/expressions/helpers.c:73
-msgid ""
-"The week argument to DATE.WKYR is not an integer.  The result will be system-"
-"missing."
+#: src/language/tests/float-format.c:247
+msgid "Too many values in single command."
 msgstr ""
 
-#: src/language/expressions/helpers.c:79
-msgid ""
-"The week argument to DATE.WKYR is outside the acceptable range of 1 to 53.  "
-"The result will be system-missing."
+#: src/language/tests/moments-test.c:47
+msgid "expecting weight value"
 msgstr ""
 
-#: src/language/expressions/helpers.c:101
-msgid ""
-"The day argument to DATE.YRDAY is not an integer.  The result will be system-"
-"missing."
+#: src/language/utilities/cd.c:41
+#, c-format
+msgid "Cannot change directory to %s:  %s "
 msgstr ""
 
-#: src/language/expressions/helpers.c:107
-msgid ""
-"The day argument to DATE.YRDAY is outside the acceptable range of 1 to 366.  "
-"The result will be system-missing."
+#: src/language/utilities/date.c:32
+msgid "Only USE ALL is currently implemented."
 msgstr ""
 
-#: src/language/expressions/helpers.c:129
-msgid ""
-"The year argument to YRMODA is greater than 47516.  The result will be "
-"system-missing."
+#: src/language/utilities/title.c:68
+#, c-format
+msgid "%s: `.' expected after string."
 msgstr ""
 
-#: src/language/expressions/helpers.c:182
+#: src/language/utilities/title.c:108
 #, c-format
-msgid ""
-"Unrecognized date unit \"%.*s\".  Valid date units are \"years\", \"quarters"
-"\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", and \"seconds\"."
+msgid "   (Entered %s)"
 msgstr ""
-"Unrecognised date unit \"%.*s\".  Valid date units are \"years\", \"quarters"
-"\"\n"
-"\"\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", and \"seconds"
-"\"."
 
-#: src/language/expressions/helpers.c:332
-msgid ""
-"Invalid DATESUM method.  Valid choices are \"closest\" and \"rollover\"."
+#: src/language/utilities/include.c:92
+msgid "Expecting BATCH or INTERACTIVE after SYNTAX."
 msgstr ""
 
-#: src/language/expressions/parse.c:259
-#, c-format
-msgid ""
-"Type mismatch: expression has %s type, but a numeric value is required here."
+#: src/language/utilities/include.c:109
+msgid "Expecting YES or NO after CD."
 msgstr ""
 
-#: src/language/expressions/parse.c:271
+#: src/language/utilities/include.c:126
+msgid "Expecting CONTINUE or STOP after ERROR."
+msgstr ""
+
+#: src/language/utilities/include.c:133
 #, c-format
-msgid ""
-"Type mismatch: expression has %s type, but a string value is required here."
+msgid "Unexpected token: `%s'."
 msgstr ""
 
-#: src/language/expressions/parse.c:427
+#: src/language/utilities/include.c:178
+msgid "expecting file name"
+msgstr ""
+
+#: src/language/utilities/include.c:190
 #, c-format
-msgid "Type mismatch while applying %s operator: cannot convert %s to %s."
+msgid "Can't find `%s' in include file search path."
 msgstr ""
 
-#: src/language/expressions/parse.c:643
-msgid ""
-"Chaining relational operators (e.g. \"a < b < c\") will not produce the "
-"mathematically expected result.  Use the AND logical operator to fix the "
-"problem (e.g. \"a < b AND b < c\").  If chaining is really intended, "
-"parentheses will disable this warning (e.g. \"(a < b) < c\".)"
+#: src/language/utilities/include.c:198
+#, c-format
+msgid "Unable to open `%s': %s."
 msgstr ""
 
-#: src/language/expressions/parse.c:744
-msgid ""
-"The exponentiation operator (\"**\") is left-associative, even though right-"
-"associative semantics are more useful.  That is, \"a**b**c\" equals \"(a**b)"
-"**c\", not as \"a**(b**c)\".  To disable this warning, insert parentheses."
+#: src/language/utilities/permissions.c:73
+#, c-format
+msgid "Expecting %s or %s."
 msgstr ""
 
-#: src/language/expressions/parse.c:809
+#: src/language/utilities/permissions.c:106
 #, c-format
-msgid "Unknown system variable %s."
+msgid "Cannot stat %s: %s"
 msgstr ""
 
-#: src/language/expressions/parse.c:857
+#: src/language/utilities/permissions.c:119
 #, c-format
-msgid "Unknown identifier %s."
+msgid "Cannot change mode of %s: %s"
 msgstr ""
 
-#: src/language/expressions/parse.c:885 src/language/stats/aggregate.c:516
-msgid "expecting `)'"
+#: src/language/stats/aggregate.c:219
+msgid "while expecting COLUMNWISE"
 msgstr ""
 
-#: src/language/expressions/parse.c:892
-msgid "in expression"
+#: src/language/stats/aggregate.c:247
+msgid "expecting BREAK"
 msgstr ""
 
-#: src/language/expressions/parse.c:1073
-#, c-format
-msgid "%s must have at least %d arguments in list."
+#: src/language/stats/aggregate.c:252
+msgid ""
+"When PRESORTED is specified, specifying sorting directions with (A) or (D) "
+"has no effect.  Output data will be sorted the same way as the input data."
 msgstr ""
 
-#: src/language/expressions/parse.c:1082
-#, c-format
-msgid "%s must have even number of arguments in list."
+#: src/language/stats/aggregate.c:423
+msgid "expecting aggregation function"
 msgstr ""
 
-#: src/language/expressions/parse.c:1085
+#: src/language/stats/aggregate.c:441
 #, c-format
-msgid "%s must have multiple of %d arguments in list."
+msgid "Unknown aggregation function %s."
 msgstr ""
 
-#: src/language/expressions/parse.c:1095
+#: src/language/stats/aggregate.c:497
 #, c-format
-msgid "%s function does not accept a minimum valid argument count."
+msgid "Missing argument %zu to %s."
 msgstr ""
 
-#: src/language/expressions/parse.c:1104
+#: src/language/stats/aggregate.c:506
 #, c-format
-msgid "%s requires at least %d valid arguments in list."
+msgid "Arguments to %s must be of same type as source variables."
 msgstr ""
 
-#: src/language/expressions/parse.c:1110
+#: src/language/stats/aggregate.c:516 src/language/expressions/parse.c:885
+msgid "expecting `)'"
+msgstr ""
+
+#: src/language/stats/aggregate.c:528
 #, c-format
 msgid ""
-"With %s, using minimum valid argument count of %d does not make sense when "
-"passing only %d arguments in list."
+"Number of source variables (%zu) does not match number of target variables (%"
+"zu)."
 msgstr ""
 
-#: src/language/expressions/parse.c:1164
+#: src/language/stats/aggregate.c:544
 #, c-format
-msgid "Type mismatch invoking %s as "
+msgid ""
+"The value arguments passed to the %s function are out-of-order.  They will "
+"be treated as if they had been specified in the correct order."
 msgstr ""
 
-#: src/language/expressions/parse.c:1169
-msgid "Function invocation "
+#: src/language/stats/aggregate.c:614
+#, c-format
+msgid ""
+"Variable name %s is not unique within the aggregate file dictionary, which "
+"contains the aggregate variables and the break variables."
 msgstr ""
 
-#: src/language/expressions/parse.c:1171
-msgid " does not match any known function.  Candidates are:"
+#: src/language/stats/autorecode.c:136
+#, c-format
+msgid "Source variable count (%zu) does not match target variable count (%zu)."
 msgstr ""
 
-#: src/language/expressions/parse.c:1201
+#: src/language/stats/autorecode.c:164
 #, c-format
-msgid "No function or vector named %s."
+msgid "Target variable %s duplicates existing variable %s."
 msgstr ""
 
-#: src/language/expressions/parse.c:1244
+#: src/language/stats/autorecode.c:171
 #, c-format
-msgid "expecting `,' or `)' invoking %s function"
+msgid "Duplicate variable name %s among target variables."
 msgstr ""
 
-#: src/language/expressions/parse.c:1264
+#: src/language/stats/binomial.c:141
 #, c-format
-msgid "%s is a PSPP extension."
+msgid "Variable %s is not dichotomous"
 msgstr ""
 
-#: src/language/expressions/parse.c:1273
-#, c-format
-msgid "%s may not appear after TEMPORARY."
+#: src/language/stats/binomial.c:194
+msgid "Binomial Test"
 msgstr ""
 
-#: src/language/lexer/format-parser.c:88
-msgid "expecting valid format specifier"
+#: src/language/stats/binomial.c:224
+msgid "Group1"
 msgstr ""
 
-#: src/language/lexer/format-parser.c:121
-msgid "expecting format type"
+#: src/language/stats/binomial.c:225
+msgid "Group2"
 msgstr ""
 
-#: src/language/lexer/lexer.c:283
-#, c-format
-msgid "%s does not form a valid number."
+#: src/language/stats/binomial.c:226 src/language/stats/chisquare.c:202
+#: src/language/stats/chisquare.c:262 src/language/stats/sign.c:94
+#: src/language/stats/wilcoxon.c:262 src/ui/gui/crosstabs-dialog.c:59
+msgid "Total"
 msgstr ""
 
-#: src/language/lexer/lexer.c:389
-#, c-format
-msgid "Bad character in input: `%s'."
+#: src/language/stats/binomial.c:259 src/language/stats/chisquare.c:225
+msgid "Category"
 msgstr ""
 
-#: src/language/lexer/lexer.c:426
-#, c-format
-msgid "Subcommand %s may only be specified once."
+#: src/language/stats/binomial.c:260 src/language/stats/npar-summary.c:123
+#: src/language/stats/sign.c:74 src/language/stats/wilcoxon.c:245
+msgid "N"
 msgstr ""
 
-#: src/language/lexer/lexer.c:434
-#, c-format
-msgid "missing required subcommand %s"
+#: src/language/stats/binomial.c:261
+msgid "Observed Prop."
 msgstr ""
 
-#: src/language/lexer/lexer.c:463
-#, c-format
-msgid "Syntax error %s at %s."
+#: src/language/stats/binomial.c:262
+msgid "Test Prop."
 msgstr ""
 
-#: src/language/lexer/lexer.c:466
+#: src/language/stats/binomial.c:265
 #, c-format
-msgid "Syntax error at %s."
+msgid "Exact Sig. (%d-tailed)"
 msgstr ""
 
-#: src/language/lexer/lexer.c:600 src/language/lexer/lexer.c:617
+#: src/language/stats/chisquare.c:172
 #, c-format
-msgid "expecting `%s'"
+msgid ""
+"CHISQUARE test specified %d expected values, but %d distinct values were "
+"encountered in variable %s."
 msgstr ""
 
-#: src/language/lexer/lexer.c:631
-msgid "expecting string"
+#: src/language/stats/chisquare.c:186 src/language/stats/chisquare.c:226
+msgid "Observed N"
 msgstr ""
 
-#: src/language/lexer/lexer.c:645
-msgid "expecting integer"
+#: src/language/stats/chisquare.c:187 src/language/stats/chisquare.c:227
+msgid "Expected N"
 msgstr ""
 
-#: src/language/lexer/lexer.c:658
-msgid "expecting number"
+#: src/language/stats/chisquare.c:188 src/language/stats/chisquare.c:228
+#: src/ui/gui/crosstabs-dialog.c:61
+msgid "Residual"
 msgstr ""
 
-#: src/language/lexer/lexer.c:670
-msgid "expecting identifier"
+#: src/language/stats/chisquare.c:221 src/language/stats/sign.c:62
+msgid "Frequencies"
 msgstr ""
 
-#: src/language/lexer/lexer.c:1064
-msgid "binary"
+#: src/language/stats/chisquare.c:276 src/language/stats/sign.c:115
+#: src/language/stats/wilcoxon.c:313
+msgid "Test Statistics"
 msgstr ""
 
-#: src/language/lexer/lexer.c:1069
-msgid "octal"
+#: src/language/stats/chisquare.c:290
+msgid "Chi-Square"
 msgstr ""
 
-#: src/language/lexer/lexer.c:1074
-msgid "hex"
+#: src/language/stats/chisquare.c:291
+msgid "df"
 msgstr ""
 
-#: src/language/lexer/lexer.c:1084
-#, c-format
-msgid "String of %s digits has %zu characters, which is not a multiple of %d."
+#: src/language/stats/chisquare.c:292
+msgid "Asymp. Sig."
 msgstr ""
 
-#: src/language/lexer/lexer.c:1113
-#, c-format
-msgid "`%c' is not a valid %s digit."
+#: src/language/stats/descriptives.c:102 src/language/stats/npar-summary.c:126
+#: src/ui/gui/descriptives-dialog.c:39 src/ui/gui/frequencies-dialog.c:40
+msgid "Mean"
 msgstr ""
 
-#: src/language/lexer/lexer.c:1147
-msgid "Unterminated string constant."
+#: src/language/stats/descriptives.c:103
+msgid "S E Mean"
 msgstr ""
 
-#: src/language/lexer/lexer.c:1201
-msgid "Unexpected end of file in string concatenation."
+#: src/language/stats/descriptives.c:104
+msgid "Std Dev"
 msgstr ""
 
-#: src/language/lexer/lexer.c:1209
-msgid "String expected following `+'."
+#: src/language/stats/descriptives.c:105 src/ui/gui/descriptives-dialog.c:46
+#: src/ui/gui/frequencies-dialog.c:45
+msgid "Variance"
 msgstr ""
 
-#: src/language/lexer/lexer.c:1222
-#, c-format
-msgid "String exceeds 255 characters in length (%zu characters)."
+#: src/language/stats/descriptives.c:106 src/ui/gui/descriptives-dialog.c:47
+#: src/ui/gui/frequencies-dialog.c:50
+msgid "Kurtosis"
 msgstr ""
 
-#: src/language/lexer/value-parser.c:60
-#, c-format
-msgid ""
-"Low end of range (%g) is below high end (%g).  The range will be treated as "
-"reversed."
+#: src/language/stats/descriptives.c:107
+msgid "S E Kurt"
 msgstr ""
 
-#: src/language/lexer/value-parser.c:68
-#, c-format
-msgid "Ends of range are equal (%g)."
+#: src/language/stats/descriptives.c:108 src/ui/gui/descriptives-dialog.c:48
+#: src/ui/gui/frequencies-dialog.c:46
+msgid "Skewness"
 msgstr ""
 
-#: src/language/lexer/value-parser.c:76
-msgid "LO or LOWEST must be part of a range."
+#: src/language/stats/descriptives.c:109
+msgid "S E Skew"
 msgstr ""
 
-#: src/language/lexer/value-parser.c:109
-msgid "System-missing value is not valid here."
+#: src/language/stats/descriptives.c:110 src/ui/gui/descriptives-dialog.c:43
+#: src/ui/gui/frequencies-dialog.c:48
+msgid "Range"
 msgstr ""
 
-#: src/language/lexer/value-parser.c:117
-msgid "expecting number or data string"
+#: src/language/stats/descriptives.c:111 src/language/stats/npar-summary.c:132
+#: src/ui/gui/descriptives-dialog.c:41 src/ui/gui/frequencies-dialog.c:42
+msgid "Minimum"
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:63
-msgid "expecting variable name"
+#: src/language/stats/descriptives.c:112 src/language/stats/npar-summary.c:135
+#: src/ui/gui/descriptives-dialog.c:42 src/ui/gui/frequencies-dialog.c:43
+msgid "Maximum"
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:73
-#, c-format
-msgid "%s is not a variable name."
+#: src/language/stats/descriptives.c:113 src/ui/gui/descriptives-dialog.c:44
+#: src/ui/gui/frequencies-dialog.c:53
+msgid "Sum"
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:176
+#: src/language/stats/descriptives.c:344
 #, c-format
-msgid ""
-"%s is not a numeric variable.  It will not be included in the variable list."
+msgid "Z-score variable name %s would be a duplicate variable name."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:179
-#, c-format
-msgid ""
-"%s is not a string variable.  It will not be included in the variable list."
+#: src/language/stats/descriptives.c:362
+msgid "No variables specified."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:183
-#, c-format
-msgid "Scratch variables (such as %s) are not allowed here."
+#: src/language/stats/descriptives.c:451
+msgid "expecting statistic name: reverting to default"
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:187
-#, c-format
+#: src/language/stats/descriptives.c:524
 msgid ""
-"%s and %s are not the same type.  All variables in this variable list must "
-"be of the same type.  %s will be omitted from the list."
+"Ran out of generic names for Z-score variables.  There are only 126 generic "
+"names: ZSC001-ZSC0999, STDZ01-STDZ09, ZZZZ01-ZZZZ09, ZQZQ01-ZQZQ09."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:193
-#, c-format
-msgid ""
-"%s and %s are string variables with different widths.  All variables in this "
-"variable list must have the same width.  %s will be omitted from the list."
+#: src/language/stats/descriptives.c:556
+msgid "Mapping of variables to corresponding Z-scores."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:198
-#, c-format
-msgid "Variable %s appears twice in variable list."
+#: src/language/stats/descriptives.c:561
+msgid "Source"
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:311
-#, c-format
-msgid "%s TO %s is not valid syntax since %s precedes %s in the dictionary."
+#: src/language/stats/descriptives.c:562
+msgid "Target"
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:319
+#: src/language/stats/descriptives.c:673
 #, c-format
-msgid ""
-"When using the TO keyword to specify several variables, both variables must "
-"be from the same variable dictionaries, of either ordinary, scratch, or "
-"system variables.  %s is a %s variable, whereas %s is %s."
+msgid "Z-score of %s"
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:393
-msgid "incorrect use of TO convention"
+#: src/language/stats/descriptives.c:888
+msgid "Valid N"
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:436
-msgid "Scratch variables not allowed here."
+#: src/language/stats/descriptives.c:889
+msgid "Missing N"
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:458
-msgid "Prefixes don't match in use of TO convention."
+#: src/language/stats/descriptives.c:917
+#, c-format
+msgid "Valid cases = %g; cases with missing value(s) = %g."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:463
-msgid "Bad bounds in use of TO convention."
+#: src/language/stats/sort-cases.c:64
+msgid "Buffer limit must be at least 2."
 msgstr ""
 
-#: src/language/stats/aggregate.c:219
-msgid "while expecting COLUMNWISE"
+#: src/language/stats/sort-criteria.c:74
+msgid "`A' or `D' expected inside parentheses."
 msgstr ""
 
-#: src/language/stats/aggregate.c:247
-msgid "expecting BREAK"
+#: src/language/stats/sort-criteria.c:79
+msgid "`)' expected."
 msgstr ""
 
-#: src/language/stats/aggregate.c:252
-msgid ""
-"When PRESORTED is specified, specifying sorting directions with (A) or (D) "
-"has no effect.  Output data will be sorted the same way as the input data."
+#: src/language/stats/sort-criteria.c:92
+#, c-format
+msgid "Variable %s specified twice in sort criteria."
 msgstr ""
 
-#: src/language/stats/aggregate.c:423
-msgid "expecting aggregation function"
+#: src/language/stats/flip.c:98
+msgid ""
+"FLIP ignores TEMPORARY.  Temporary transformations will be made permanent."
 msgstr ""
 
-#: src/language/stats/aggregate.c:441
-#, c-format
-msgid "Unknown aggregation function %s."
+#: src/language/stats/flip.c:150
+msgid "Could not create temporary file for FLIP."
 msgstr ""
 
-#: src/language/stats/aggregate.c:497
+#: src/language/stats/flip.c:327
 #, c-format
-msgid "Missing argument %zu to %s."
+msgid "Error rewinding FLIP file: %s."
 msgstr ""
 
-#: src/language/stats/aggregate.c:506
-#, c-format
-msgid "Arguments to %s must be of same type as source variables."
+#: src/language/stats/flip.c:334
+msgid "Error creating FLIP source file."
 msgstr ""
 
-#: src/language/stats/aggregate.c:528
+#: src/language/stats/flip.c:347
 #, c-format
-msgid ""
-"Number of source variables (%zu) does not match number of target variables (%"
-"zu)."
+msgid "Error reading FLIP file: %s."
 msgstr ""
 
-#: src/language/stats/aggregate.c:544
-#, c-format
-msgid ""
-"The value arguments passed to the %s function are out-of-order.  They will "
-"be treated as if they had been specified in the correct order."
+#: src/language/stats/flip.c:349
+msgid "Unexpected end of file reading FLIP file."
 msgstr ""
 
-#: src/language/stats/aggregate.c:614
+#: src/language/stats/flip.c:365
 #, c-format
-msgid ""
-"Variable name %s is not unique within the aggregate file dictionary, which "
-"contains the aggregate variables and the break variables."
+msgid "Error seeking FLIP source file: %s."
 msgstr ""
 
-#: src/language/stats/autorecode.c:136
+#: src/language/stats/flip.c:373
 #, c-format
-msgid "Source variable count (%zu) does not match target variable count (%zu)."
+msgid "Error writing FLIP source file: %s."
 msgstr ""
 
-#: src/language/stats/autorecode.c:164
+#: src/language/stats/flip.c:384
 #, c-format
-msgid "Target variable %s duplicates existing variable %s."
+msgid "Error closing FLIP source file: %s."
 msgstr ""
 
-#: src/language/stats/autorecode.c:171
+#: src/language/stats/flip.c:392
 #, c-format
-msgid "Duplicate variable name %s among target variables."
+msgid "Error rewinding FLIP source file: %s."
 msgstr ""
 
-#: src/language/stats/binomial.c:141
+#: src/language/stats/flip.c:426
 #, c-format
-msgid "Variable %s is not dichotomous"
+msgid "Error reading FLIP temporary file: %s."
 msgstr ""
 
-#: src/language/stats/binomial.c:194
-msgid "Binomial Test"
+#: src/language/stats/flip.c:429
+msgid "Unexpected end of file reading FLIP temporary file."
 msgstr ""
 
-#: src/language/stats/binomial.c:224
-msgid "Group1"
+#: src/language/stats/npar-summary.c:109
+msgid "Descriptive Statistics"
 msgstr ""
 
-#: src/language/stats/binomial.c:225
-msgid "Group2"
+#: src/language/stats/npar-summary.c:129
+msgid "Std. Deviation"
 msgstr ""
 
-#: src/language/stats/binomial.c:226 src/language/stats/chisquare.c:202
-#: src/language/stats/chisquare.c:262 src/language/stats/crosstabs.q:845
-#: src/language/stats/crosstabs.q:1172 src/language/stats/crosstabs.q:1596
-#: src/language/stats/examine.q:1216 src/language/stats/frequencies.q:1128
-#: src/language/stats/oneway.q:305 src/language/stats/oneway.q:476
-#: src/language/stats/regression.q:309 src/language/stats/reliability.q:718
-#: src/language/stats/sign.c:94 src/language/stats/wilcoxon.c:262
-#: src/ui/gui/crosstabs-dialog.c:59
-msgid "Total"
+#: src/language/stats/npar-summary.c:142 src/ui/gui/examine.glade:333
+msgid "Percentiles"
 msgstr ""
 
-#: src/language/stats/binomial.c:259 src/language/stats/chisquare.c:225
-#: src/language/stats/crosstabs.q:1260 src/language/stats/crosstabs.q:1308
-msgid "Category"
+#: src/language/stats/npar-summary.c:146
+msgid "25th"
 msgstr ""
 
-#: src/language/stats/binomial.c:260 src/language/stats/crosstabs.q:852
-#: src/language/stats/examine.q:1289 src/language/stats/frequencies.q:1399
-#: src/language/stats/npar-summary.c:123 src/language/stats/oneway.q:389
-#: src/language/stats/reliability.q:721 src/language/stats/sign.c:74
-#: src/language/stats/t-test.q:506 src/language/stats/t-test.q:526
-#: src/language/stats/t-test.q:626 src/language/stats/t-test.q:1105
-#: src/language/stats/wilcoxon.c:245
-msgid "N"
+#: src/language/stats/npar-summary.c:149
+msgid "50th (Median)"
 msgstr ""
 
-#: src/language/stats/binomial.c:261
-msgid "Observed Prop."
+#: src/language/stats/npar-summary.c:152
+msgid "75th"
 msgstr ""
 
-#: src/language/stats/binomial.c:262
-msgid "Test Prop."
+#: src/language/stats/roc.c:938
+msgid "Area Under the Curve"
 msgstr ""
 
-#: src/language/stats/binomial.c:265
+#: src/language/stats/roc.c:940
 #, c-format
-msgid "Exact Sig. (%d-tailed)"
+msgid "Area Under the Curve (%s)"
 msgstr ""
 
-#: src/language/stats/chisquare.c:172
-#, c-format
-msgid ""
-"CHISQUARE test specified %d expected values, but %d distinct values were "
-"encountered in variable %s."
+#: src/language/stats/roc.c:946
+msgid "Area"
 msgstr ""
 
-#: src/language/stats/chisquare.c:186 src/language/stats/chisquare.c:226
-msgid "Observed N"
+#: src/language/stats/roc.c:959
+msgid "Std. Error"
 msgstr ""
 
-#: src/language/stats/chisquare.c:187 src/language/stats/chisquare.c:227
-msgid "Expected N"
+#: src/language/stats/roc.c:960
+msgid "Asymptotic Sig."
 msgstr ""
 
-#: src/language/stats/chisquare.c:188 src/language/stats/chisquare.c:228
-#: src/language/stats/regression.q:308 src/ui/gui/crosstabs-dialog.c:61
-msgid "Residual"
+#: src/language/stats/roc.c:962
+msgid "Lower Bound"
 msgstr ""
 
-#: src/language/stats/chisquare.c:221 src/language/stats/sign.c:62
-msgid "Frequencies"
+#: src/language/stats/roc.c:963
+msgid "Upper Bound"
 msgstr ""
 
-#: src/language/stats/chisquare.c:276 src/language/stats/sign.c:115
-#: src/language/stats/wilcoxon.c:313
-msgid "Test Statistics"
+#: src/language/stats/roc.c:967
+#, c-format
+msgid "Asymp. %g%% Confidence Interval"
 msgstr ""
 
-#: src/language/stats/chisquare.c:290
-msgid "Chi-Square"
+#: src/language/stats/roc.c:973
+msgid "Variable under test"
 msgstr ""
 
-#: src/language/stats/chisquare.c:291 src/language/stats/crosstabs.q:1236
-#: src/language/stats/oneway.q:278 src/language/stats/oneway.q:691
-#: src/language/stats/regression.q:302 src/language/stats/t-test.q:753
-#: src/language/stats/t-test.q:924 src/language/stats/t-test.q:1011
-msgid "df"
+#: src/language/stats/roc.c:1032
+msgid "Case Summary"
 msgstr ""
 
-#: src/language/stats/chisquare.c:292
-msgid "Asymp. Sig."
+#: src/language/stats/roc.c:1054
+msgid "Unweighted"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:327
-msgid ""
-"Missing mode REPORT not allowed in general mode.  Assuming MISSING=TABLE."
+#: src/language/stats/roc.c:1055
+msgid "Weighted"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:416
-msgid "Too many cross-tabulation variables or dimensions."
+#: src/language/stats/roc.c:1059
+msgid "Valid N (listwise)"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:426
-msgid "expecting BY"
+#: src/language/stats/roc.c:1062
+msgid "Positive"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:486
-msgid "VARIABLES must be specified before TABLES."
+#: src/language/stats/roc.c:1063
+msgid "Negative"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:524
-#, c-format
-msgid "Maximum value (%ld) less than minimum value (%ld)."
+#: src/language/stats/roc.c:1091
+msgid "Coordinates of the Curve"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:840
-msgid "Summary."
+#: src/language/stats/roc.c:1093
+#, c-format
+msgid "Coordinates of the Curve (%s)"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:842 src/language/stats/examine.q:1277
-#: src/language/stats/reliability.q:709
-msgid "Cases"
+#: src/language/stats/roc.c:1103
+msgid "Test variable"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:843 src/language/stats/examine.q:1214
-#: src/language/stats/frequencies.q:1049 src/language/stats/frequencies.q:1400
-#: src/language/stats/reliability.q:712
-msgid "Valid"
+#: src/language/stats/roc.c:1105
+msgid "Positive if greater than or equal to"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:844 src/language/stats/examine.q:1215
-#: src/language/stats/frequencies.q:1119 src/language/stats/frequencies.q:1401
-#: src/ui/gui/psppire-var-sheet.c:536 src/ui/gui/psppire-var-store.c:838
-msgid "Missing"
+#: src/language/stats/roc.c:1106 src/language/stats/roc.c:1171
+msgid "Sensitivity"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:853 src/language/stats/examine.q:1292
-#: src/language/stats/frequencies.q:1053 src/language/stats/frequencies.q:1054
-#: src/language/stats/frequencies.q:1055
-msgid "Percent"
+#: src/language/stats/roc.c:1107 src/language/stats/roc.c:1170
+msgid "1 - Specificity"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1133
-msgid "count"
+#: src/language/stats/roc.c:1169
+msgid "ROC Curve"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1134
-msgid "row %"
+#: src/language/stats/sign.c:91
+msgid "Negative Differences"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1135
-msgid "column %"
+#: src/language/stats/sign.c:92
+msgid "Positive Differences"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1136
-msgid "total %"
+#: src/language/stats/sign.c:93 src/language/stats/wilcoxon.c:261
+msgid "Ties"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1137
-msgid "expected"
+#: src/language/stats/sign.c:134 src/language/stats/wilcoxon.c:331
+msgid "Exact Sig. (2-tailed)"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1138
-msgid "residual"
+#: src/language/stats/sign.c:137 src/language/stats/wilcoxon.c:332
+msgid "Exact Sig. (1-tailed)"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1139
-msgid "std. resid."
+#: src/language/stats/sign.c:140 src/language/stats/wilcoxon.c:335
+msgid "Point Probability"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1140
-msgid "adj. resid."
+#: src/language/stats/wilcoxon.c:232
+msgid "Ranks"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1231
-msgid "Chi-square tests."
+#: src/language/stats/wilcoxon.c:246
+msgid "Mean Rank"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1234 src/language/stats/crosstabs.q:1261
-#: src/language/stats/crosstabs.q:1285 src/language/stats/crosstabs.q:1309
-#: src/language/stats/examine.q:1753 src/ui/gui/checkbox-treeview.c:92
-msgid "Statistic"
+#: src/language/stats/wilcoxon.c:247
+msgid "Sum of Ranks"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1238
-msgid "Asymp. Sig. (2-sided)"
-msgstr ""
-
-#: src/language/stats/crosstabs.q:1240
-msgid "Exact Sig. (2-sided)"
+#: src/language/stats/wilcoxon.c:259
+msgid "Negative Ranks"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1242
-msgid "Exact Sig. (1-sided)"
+#: src/language/stats/wilcoxon.c:260
+msgid "Positive Ranks"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1257
-msgid "Symmetric measures."
+#: src/language/stats/wilcoxon.c:326
+msgid "Z"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1263 src/language/stats/crosstabs.q:1312
-msgid "Asymp. Std. Error"
+#: src/language/stats/wilcoxon.c:327
+msgid "Asymp. Sig. (2-tailed)"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1264 src/language/stats/crosstabs.q:1313
-msgid "Approx. T"
+#: src/language/data-io/combine-files.c:210
+msgid "Cannot specify the active file since no active file has been defined."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1265 src/language/stats/crosstabs.q:1314
-msgid "Approx. Sig."
+#: src/language/data-io/combine-files.c:216
+msgid ""
+"This command may not be used after TEMPORARY when the active file is an "
+"input source.  Temporary transformations will be made permanent."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1280
-msgid "Risk estimate."
+#: src/language/data-io/combine-files.c:250
+msgid "Multiple IN subcommands for a single FILE or TABLE."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1284
+#: src/language/data-io/combine-files.c:302
 #, c-format
-msgid "95%% Confidence Interval"
-msgstr ""
-
-#: src/language/stats/crosstabs.q:1287 src/language/stats/t-test.q:757
-#: src/language/stats/t-test.q:921 src/language/stats/t-test.q:1014
-msgid "Lower"
+msgid "File %s lacks BY variable %s."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1288 src/language/stats/t-test.q:758
-#: src/language/stats/t-test.q:922 src/language/stats/t-test.q:1015
-msgid "Upper"
+#: src/language/data-io/combine-files.c:305
+#, c-format
+msgid "Active file lacks BY variable %s."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1305
-msgid "Directional measures."
+#: src/language/data-io/combine-files.c:376
+msgid "The BY subcommand is required."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1310 src/ui/gui/psppire.glade:2099
-#: src/ui/gui/psppire-var-sheet.c:531 src/ui/gui/psppire-var-store.c:833
-msgid "Type"
+#: src/language/data-io/combine-files.c:381
+msgid "BY is required when TABLE is specified."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1776
-msgid "Pearson Chi-Square"
+#: src/language/data-io/combine-files.c:386
+msgid "BY is required when SORT is specified."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1777
-msgid "Likelihood Ratio"
+#: src/language/data-io/combine-files.c:513
+msgid ""
+"Combining files with incompatible encodings. String data may not be "
+"represented correctly."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1778
-msgid "Fisher's Exact Test"
+#: src/language/data-io/combine-files.c:545
+#, c-format
+msgid ""
+"Variable %s in file %s has different type or width from the same variable in "
+"earlier file."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1779
-msgid "Continuity Correction"
+#: src/language/data-io/combine-files.c:551
+#, c-format
+msgid "In file %s, %s is numeric."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1780
-msgid "Linear-by-Linear Association"
+#: src/language/data-io/combine-files.c:554
+#, c-format
+msgid "In file %s, %s is a string variable with width %d."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1815 src/language/stats/crosstabs.q:1890
-#: src/language/stats/crosstabs.q:1955
-msgid "N of Valid Cases"
+#: src/language/data-io/combine-files.c:559
+#, c-format
+msgid "In an earlier file, %s was numeric."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1834 src/language/stats/crosstabs.q:1973
-msgid "Nominal by Nominal"
+#: src/language/data-io/combine-files.c:562
+#, c-format
+msgid "In an earlier file, %s was a string variable with width %d."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1835 src/language/stats/crosstabs.q:1974
-msgid "Ordinal by Ordinal"
+#: src/language/data-io/combine-files.c:601
+#, c-format
+msgid ""
+"Variable name %s specified on %s subcommand duplicates an existing variable "
+"name."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1836
-msgid "Interval by Interval"
+#: src/language/data-io/combine-files.c:762
+#, c-format
+msgid "Encountered %zu sets of duplicate cases in the master file."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1837
-msgid "Measure of Agreement"
+#: src/language/data-io/data-list.c:137
+msgid "The END subcommand may only be used within INPUT PROGRAM."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1842 src/ui/gui/crosstabs-dialog.c:41
-msgid "Phi"
+#: src/language/data-io/data-list.c:143
+msgid "The END subcommand may only be specified once."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1843
-msgid "Cramer's V"
+#: src/language/data-io/data-list.c:181
+msgid "Only one of FIXED, FREE, or LIST may be specified."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1844
-msgid "Contingency Coefficient"
+#: src/language/data-io/data-list.c:243
+msgid "Encoding should not be specified for inline data. It will be ignored."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1845
-msgid "Kendall's tau-b"
+#: src/language/data-io/data-list.c:254
+msgid "The END subcommand may be used only with DATA LIST FIXED."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1846
-msgid "Kendall's tau-c"
+#: src/language/data-io/data-list.c:269
+msgid "At least one variable must be specified."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1847 src/ui/gui/crosstabs-dialog.c:48
-msgid "Gamma"
+#: src/language/data-io/data-list.c:368 src/language/data-io/data-list.c:457
+#: src/language/data-io/get-data.c:530
+#, c-format
+msgid "%s is a duplicate variable name."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1848
-msgid "Spearman Correlation"
+#: src/language/data-io/data-list.c:375
+#, c-format
+msgid "There is already a variable %s of a different type."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1849
-msgid "Pearson's R"
+#: src/language/data-io/data-list.c:382
+#, c-format
+msgid "There is already a string variable %s of a different width."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1850 src/ui/gui/crosstabs-dialog.c:50
-msgid "Kappa"
+#: src/language/data-io/data-list.c:390
+#, c-format
+msgid "Cannot place variable %s on record %d when RECORDS=%d is specified."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1928
-#, c-format
-msgid "Odds Ratio for %s (%g / %g)"
+#: src/language/data-io/data-parser.c:460
+#: src/language/data-io/data-parser.c:469
+msgid "Quoted string extends beyond end of line."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1931
+#: src/language/data-io/data-parser.c:525
 #, c-format
-msgid "Odds Ratio for %s (%.*s / %.*s)"
+msgid "Partial case of %d of %d records discarded."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1939
+#: src/language/data-io/data-parser.c:572
 #, c-format
-msgid "For cohort %s = %g"
+msgid "Partial case discarded.  The first variable missing was %s."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1942
+#: src/language/data-io/data-parser.c:610
 #, c-format
-msgid "For cohort %s = %.*s"
+msgid ""
+"Missing value(s) for all variables from %s onward.  These will be filled "
+"with the system-missing value or blanks, as appropriate."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1975
-msgid "Nominal by Interval"
+#: src/language/data-io/data-parser.c:630
+msgid "Record ends in data not part of any field."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1980 src/ui/gui/crosstabs-dialog.c:43
-msgid "Lambda"
+#: src/language/data-io/data-parser.c:651 src/language/data-io/print.c:405
+msgid "Record"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1981
-msgid "Goodman and Kruskal tau"
+#: src/language/data-io/data-parser.c:652 src/language/data-io/print.c:406
+#: src/ui/gui/psppire-var-sheet.c:540 src/ui/gui/psppire-var-store.c:839
+#: src/ui/gui/crosstabs.glade:92
+msgid "Columns"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1982
-msgid "Uncertainty Coefficient"
+#: src/language/data-io/data-parser.c:653
+#: src/language/data-io/data-parser.c:692 src/language/data-io/print.c:407
+msgid "Format"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1983
-msgid "Somers' d"
-msgstr ""
+#: src/language/data-io/data-parser.c:672
+#, c-format
+msgid "Reading %d record from %s."
+msgid_plural "Reading %d records from %s."
+msgstr[0] ""
+msgstr[1] ""
 
-#: src/language/stats/crosstabs.q:1984 src/ui/gui/crosstabs-dialog.c:51
-msgid "Eta"
+#: src/language/data-io/data-parser.c:708
+#, c-format
+msgid "Reading free-form data from %s."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1989
-msgid "Symmetric"
+#. TRANSLATORS: this fragment will be interpolated into
+#. messages in fh_lock() that identify types of files.
+#: src/language/data-io/data-reader.c:122
+#: src/language/data-io/data-writer.c:58
+msgid "data file"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1990 src/language/stats/crosstabs.q:1991
+#: src/language/data-io/data-reader.c:149
 #, c-format
-msgid "%s Dependent"
+msgid "Could not open \"%s\" for reading as a data file: %s."
 msgstr ""
 
-#: src/language/stats/descriptives.c:102 src/language/stats/examine.q:1559
-#: src/language/stats/frequencies.q:123 src/language/stats/npar-summary.c:126
-#: src/language/stats/oneway.q:390 src/language/stats/t-test.q:507
-#: src/language/stats/t-test.q:527 src/language/stats/t-test.q:625
-#: src/language/stats/t-test.q:918 src/ui/gui/descriptives-dialog.c:39
-#: src/ui/gui/frequencies-dialog.c:40
-msgid "Mean"
+#: src/language/data-io/data-reader.c:191
+msgid ""
+"Unexpected end-of-file while reading data in BEGIN DATA.  This probably "
+"indicates a missing or misformatted END DATA command.  END DATA must appear "
+"by itself on a single line with exactly one space between words."
 msgstr ""
 
-#: src/language/stats/descriptives.c:103
-msgid "S E Mean"
+#: src/language/data-io/data-reader.c:216
+#, c-format
+msgid "Error reading file %s: %s."
 msgstr ""
 
-#: src/language/stats/descriptives.c:104 src/language/stats/frequencies.q:127
-msgid "Std Dev"
+#: src/language/data-io/data-reader.c:219
+#, c-format
+msgid "Unexpected end of file reading %s."
 msgstr ""
 
-#: src/language/stats/descriptives.c:105 src/language/stats/examine.q:1589
-#: src/language/stats/frequencies.q:128 src/ui/gui/descriptives-dialog.c:46
-#: src/ui/gui/frequencies-dialog.c:45
-msgid "Variance"
+#: src/language/data-io/data-reader.c:228
+#, c-format
+msgid "Unexpected end of file in partial record reading %s."
 msgstr ""
 
-#: src/language/stats/descriptives.c:106 src/language/stats/examine.q:1625
-#: src/language/stats/frequencies.q:129 src/ui/gui/descriptives-dialog.c:47
-#: src/ui/gui/frequencies-dialog.c:50
-msgid "Kurtosis"
+#: src/language/data-io/data-reader.c:288
+#, c-format
+msgid "Corrupt block descriptor word at offset 0x%lx in %s."
 msgstr ""
 
-#: src/language/stats/descriptives.c:107
-msgid "S E Kurt"
+#: src/language/data-io/data-reader.c:289
+#, c-format
+msgid "Corrupt record descriptor word at offset 0x%lx in %s."
 msgstr ""
 
-#: src/language/stats/descriptives.c:108 src/language/stats/examine.q:1620
-#: src/language/stats/frequencies.q:131 src/ui/gui/descriptives-dialog.c:48
-#: src/ui/gui/frequencies-dialog.c:46
-msgid "Skewness"
+#: src/language/data-io/data-reader.c:302
+#, c-format
+msgid "Corrupt record size at offset 0x%lx in %s."
 msgstr ""
 
-#: src/language/stats/descriptives.c:109
-msgid "S E Skew"
+#: src/language/data-io/data-reader.c:444
+msgid "Record exceeds remaining block length."
 msgstr ""
 
-#: src/language/stats/descriptives.c:110 src/language/stats/examine.q:1609
-#: src/language/stats/frequencies.q:133 src/ui/gui/descriptives-dialog.c:43
-#: src/ui/gui/frequencies-dialog.c:48
-msgid "Range"
+#: src/language/data-io/data-reader.c:518
+#, c-format
+msgid "Attempt to read beyond end-of-file on file %s."
 msgstr ""
 
-#: src/language/stats/descriptives.c:111 src/language/stats/examine.q:1599
-#: src/language/stats/frequencies.q:134 src/language/stats/npar-summary.c:132
-#: src/language/stats/oneway.q:404 src/ui/gui/descriptives-dialog.c:41
-#: src/ui/gui/frequencies-dialog.c:42
-msgid "Minimum"
+#: src/language/data-io/data-reader.c:521
+msgid "Attempt to read beyond END DATA."
 msgstr ""
 
-#: src/language/stats/descriptives.c:112 src/language/stats/examine.q:1604
-#: src/language/stats/frequencies.q:135 src/language/stats/npar-summary.c:135
-#: src/language/stats/oneway.q:405 src/ui/gui/descriptives-dialog.c:42
-#: src/ui/gui/frequencies-dialog.c:43
-msgid "Maximum"
+#: src/language/data-io/data-reader.c:707
+msgid ""
+"This command is not valid here since the current input program does not "
+"access the inline file."
 msgstr ""
 
-#: src/language/stats/descriptives.c:113 src/language/stats/frequencies.q:136
-#: src/ui/gui/descriptives-dialog.c:44 src/ui/gui/frequencies-dialog.c:53
-msgid "Sum"
+#: src/language/data-io/data-writer.c:74
+#, c-format
+msgid "An error occurred while opening \"%s\" for writing as a data file: %s."
 msgstr ""
 
-#: src/language/stats/descriptives.c:344
+#: src/language/data-io/data-writer.c:191
 #, c-format
-msgid "Z-score variable name %s would be a duplicate variable name."
+msgid "I/O error occurred writing data file \"%s\"."
 msgstr ""
 
-#: src/language/stats/descriptives.c:451
-msgid "expecting statistic name: reverting to default"
+#: src/language/data-io/get-data.c:64
+#, c-format
+msgid "Unsupported TYPE %s"
 msgstr ""
 
-#: src/language/stats/descriptives.c:524
+#: src/language/data-io/get-data.c:260
+#, c-format
 msgid ""
-"Ran out of generic names for Z-score variables.  There are only 126 generic "
-"names: ZSC001-ZSC0999, STDZ01-STDZ09, ZZZZ01-ZZZZ09, ZQZQ01-ZQZQ09."
+"%s is allowed only with %s arrangement, but %s arrangement was stated or "
+"implied earlier in this command."
 msgstr ""
 
-#: src/language/stats/descriptives.c:556
-msgid "Mapping of variables to corresponding Z-scores."
+#: src/language/data-io/get-data.c:315
+msgid "expecting FIXED or DELIMITED"
 msgstr ""
 
-#: src/language/stats/descriptives.c:561
-msgid "Source"
+#: src/language/data-io/get-data.c:328
+msgid "Value of FIRSTCASE must be 1 or greater."
 msgstr ""
 
-#: src/language/stats/descriptives.c:562
-msgid "Target"
+#: src/language/data-io/get-data.c:353
+msgid "expecting LINE or VARIABLES"
 msgstr ""
 
-#: src/language/stats/descriptives.c:673
-#, c-format
-msgid "Z-score of %s"
+#: src/language/data-io/get-data.c:366
+msgid "Value of FIXCASE must be at least 1."
 msgstr ""
 
-#: src/language/stats/descriptives.c:888
-msgid "Valid N"
+#: src/language/data-io/get-data.c:386
+msgid "Value of FIRST must be at least 1."
 msgstr ""
 
-#: src/language/stats/descriptives.c:889
-msgid "Missing N"
+#: src/language/data-io/get-data.c:398
+msgid "Value of PERCENT must be between 1 and 100."
 msgstr ""
 
-#: src/language/stats/descriptives.c:917
-#, c-format
-msgid "Valid cases = %g; cases with missing value(s) = %g."
+#: src/language/data-io/get-data.c:447
+msgid ""
+"In compatible syntax mode, the QUALIFIER string must contain exactly one "
+"character."
 msgstr ""
 
-#: src/language/stats/examine.q:346 src/language/stats/examine.q:499
-#: src/language/stats/examine.q:1060
-msgid "Not creating plot because data set is empty."
+#: src/language/data-io/get-data.c:462
+msgid "expecting VARIABLES"
 msgstr ""
 
-#: src/language/stats/examine.q:356
+#: src/language/data-io/get-data.c:484
+#: src/language/data-io/placement-parser.c:378
 #, c-format
-msgid "Normal Q-Q Plot of %s"
+msgid ""
+"The record number specified, %ld, is at or before the previous record, %d.  "
+"Data fields must be listed in order of increasing record number."
 msgstr ""
 
-#: src/language/stats/examine.q:357 src/language/stats/examine.q:362
-msgid "Observed Value"
+#: src/language/data-io/get-data.c:493
+#, c-format
+msgid ""
+"The record number specified, %ld, exceeds the number of records per case "
+"specified on FIXCASE, %d."
 msgstr ""
 
-#: src/language/stats/examine.q:358
-msgid "Expected Normal"
+#: src/language/data-io/get.c:99
+msgid "expecting COMM or TAPE"
 msgstr ""
 
-#: src/language/stats/examine.q:360
-#, c-format
-msgid "Detrended Normal Q-Q Plot of %s"
+#: src/language/data-io/inpt-pgm.c:130
+msgid "Unexpected end-of-file within INPUT PROGRAM."
 msgstr ""
 
-#: src/language/stats/examine.q:363
-msgid "Dev from Normal"
+#: src/language/data-io/inpt-pgm.c:143
+msgid "Input program did not create any variables."
 msgstr ""
 
-#: src/language/stats/examine.q:516
-#, c-format
-msgid "Boxplot of %s vs. %s"
+#: src/language/data-io/inpt-pgm.c:288
+msgid "COLUMN subcommand multiply specified."
 msgstr ""
 
-#: src/language/stats/examine.q:520
-#, c-format
-msgid "Boxplot of %s"
-msgstr ""
+#: src/language/data-io/inpt-pgm.c:338
+msgid ""
+"REREAD: Column numbers must be positive finite numbers.  Column set to 1."
+msgstr ""
 
-#: src/language/stats/examine.q:756 src/language/stats/examine.q:769
+#: src/language/data-io/placement-parser.c:87
 #, c-format
-msgid "%s and %s are mutually exclusive"
+msgid ""
+"Number of variables specified (%zu) differs from number of variable formats "
+"(%zu)."
 msgstr ""
 
-#: src/language/stats/examine.q:1272 src/language/stats/reliability.q:686
-msgid "Case Processing Summary"
+#: src/language/data-io/placement-parser.c:97
+msgid ""
+"SPSS-like or Fortran-like format specification expected after variable names."
 msgstr ""
 
-#: src/language/stats/examine.q:1564 src/language/stats/oneway.q:398
+#: src/language/data-io/placement-parser.c:119
 #, c-format
-msgid "%g%% Confidence Interval for Mean"
+msgid "The %d columns %d-%d can't be evenly divided into %zu fields."
 msgstr ""
 
-#: src/language/stats/examine.q:1570 src/language/stats/oneway.q:401
-#: src/language/stats/roc.c:962
-msgid "Lower Bound"
+#: src/language/data-io/placement-parser.c:305
+msgid "Column positions for fields must be positive."
 msgstr ""
 
-#: src/language/stats/examine.q:1575 src/language/stats/oneway.q:402
-#: src/language/stats/roc.c:963
-msgid "Upper Bound"
+#: src/language/data-io/placement-parser.c:307
+msgid "Column positions for fields must not be negative."
 msgstr ""
 
-#: src/language/stats/examine.q:1579
-msgid "5% Trimmed Mean"
+#: src/language/data-io/placement-parser.c:344
+msgid "The ending column for a field must be greater than the starting column."
 msgstr ""
 
-#: src/language/stats/examine.q:1584 src/language/stats/frequencies.q:125
-#: src/ui/gui/frequencies-dialog.c:52
-msgid "Median"
+#: src/language/data-io/print-space.c:116
+msgid "The expression on PRINT SPACE evaluated to the system-missing value."
 msgstr ""
 
-#: src/language/stats/examine.q:1594 src/language/stats/npar-summary.c:129
-#: src/language/stats/oneway.q:391 src/language/stats/t-test.q:508
-#: src/language/stats/t-test.q:528 src/language/stats/t-test.q:627
-#: src/language/stats/t-test.q:919
-msgid "Std. Deviation"
+#: src/language/data-io/print-space.c:119
+#, c-format
+msgid "The expression on PRINT SPACE evaluated to %g."
 msgstr ""
 
-#: src/language/stats/examine.q:1614
-msgid "Interquartile Range"
+#: src/language/data-io/print.c:179 src/language/data-io/trim.c:54
+msgid "expecting a valid subcommand"
 msgstr ""
 
-#: src/language/stats/examine.q:1750 src/language/stats/oneway.q:408
-#: src/ui/gui/examine.glade:310
-msgid "Descriptives"
+#: src/language/data-io/print.c:267
+#, c-format
+msgid "Output calls for %d records but %zu specified on RECORDS subcommand."
 msgstr ""
 
-#: src/language/stats/examine.q:1756 src/language/stats/oneway.q:392
-#: src/language/stats/oneway.q:689 src/language/stats/regression.q:203
-#: src/language/stats/roc.c:959
-msgid "Std. Error"
+#: src/language/data-io/print.c:438
+#, c-format
+msgid "Writing %d record to %s."
+msgid_plural "Writing %d records to %s."
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/language/data-io/print.c:442
+#, c-format
+msgid "Writing %d record."
+msgid_plural "Writing %d records."
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/language/data-io/save.c:223 src/language/data-io/save.c:238
+#: src/language/data-io/save.c:266
+#, c-format
+msgid "expecting %s or %s"
 msgstr ""
 
-#: src/language/stats/examine.q:1939
-msgid "Highest"
+#: src/language/data-io/trim.c:88
+#, c-format
+msgid ""
+"Cannot rename %s as %s because there already exists a variable named %s.  To "
+"rename variables with overlapping names, use a single RENAME subcommand such "
+"as \"/RENAME (A=B)(B=C)(C=A)\", or equivalently, \"/RENAME (A B C=B C A)\"."
 msgstr ""
 
-#: src/language/stats/examine.q:1944
-msgid "Lowest"
+#: src/language/data-io/trim.c:114
+msgid "`=' expected after variable list."
 msgstr ""
 
-#: src/language/stats/examine.q:1951
-msgid "Extreme Values"
+#: src/language/data-io/trim.c:121
+#, c-format
+msgid ""
+"Number of variables on left side of `=' (%zu) does not match number of "
+"variables on right side (%zu), in parenthesized group %d of RENAME "
+"subcommand."
 msgstr ""
+"Number of variables on left side of `=' (%zu) does not match number of \n"
+"variables on right side (%zu), in parenthesised group %d of RENAME \n"
+"subcommand."
 
-#: src/language/stats/examine.q:1955
-msgid "Case Number"
+#: src/language/data-io/trim.c:134
+#, c-format
+msgid "Requested renaming duplicates variable name %s."
 msgstr ""
 
-#: src/language/stats/examine.q:2077
-msgid "Tukey's Hinges"
+#: src/language/data-io/trim.c:165
+msgid "Cannot DROP all variables from dictionary."
 msgstr ""
 
-#: src/language/stats/examine.q:2117 src/language/stats/examine.q:2134
-#: src/language/stats/frequencies.q:1410 src/language/stats/npar-summary.c:142
-#: src/ui/gui/examine.glade:333
-msgid "Percentiles"
+#: src/language/expressions/evaluate.c:155
+msgid "expecting number or string"
 msgstr ""
 
-#: src/language/stats/examine.q:2124
+#: src/language/expressions/evaluate.c:169
 #, c-format
-msgid "%g"
+msgid "Duplicate variable name %s."
 msgstr ""
 
-#: src/language/stats/flip.c:98
+#: src/language/expressions/helpers.c:51
 msgid ""
-"FLIP ignores TEMPORARY.  Temporary transformations will be made permanent."
+"One of the arguments to a DATE function is not an integer.  The result will "
+"be system-missing."
 msgstr ""
 
-#: src/language/stats/flip.c:150
-msgid "Could not create temporary file for FLIP."
+#: src/language/expressions/helpers.c:73
+msgid ""
+"The week argument to DATE.WKYR is not an integer.  The result will be system-"
+"missing."
 msgstr ""
 
-#: src/language/stats/flip.c:327
-#, c-format
-msgid "Error rewinding FLIP file: %s."
+#: src/language/expressions/helpers.c:79
+msgid ""
+"The week argument to DATE.WKYR is outside the acceptable range of 1 to 53.  "
+"The result will be system-missing."
 msgstr ""
 
-#: src/language/stats/flip.c:334
-msgid "Error creating FLIP source file."
+#: src/language/expressions/helpers.c:101
+msgid ""
+"The day argument to DATE.YRDAY is not an integer.  The result will be system-"
+"missing."
 msgstr ""
 
-#: src/language/stats/flip.c:347
-#, c-format
-msgid "Error reading FLIP file: %s."
+#: src/language/expressions/helpers.c:107
+msgid ""
+"The day argument to DATE.YRDAY is outside the acceptable range of 1 to 366.  "
+"The result will be system-missing."
 msgstr ""
 
-#: src/language/stats/flip.c:349
-msgid "Unexpected end of file reading FLIP file."
+#: src/language/expressions/helpers.c:129
+msgid ""
+"The year argument to YRMODA is greater than 47516.  The result will be "
+"system-missing."
 msgstr ""
 
-#: src/language/stats/flip.c:365
+#: src/language/expressions/helpers.c:182
 #, c-format
-msgid "Error seeking FLIP source file: %s."
+msgid ""
+"Unrecognized date unit \"%.*s\".  Valid date units are \"years\", \"quarters"
+"\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", and \"seconds\"."
 msgstr ""
+"Unrecognised date unit \"%.*s\".  Valid date units are \"years\", \"quarters"
+"\"\n"
+"\"\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", and \"seconds"
+"\"."
 
-#: src/language/stats/flip.c:373
-#, c-format
-msgid "Error writing FLIP source file: %s."
+#: src/language/expressions/helpers.c:332
+msgid ""
+"Invalid DATESUM method.  Valid choices are \"closest\" and \"rollover\"."
 msgstr ""
 
-#: src/language/stats/flip.c:384
+#: src/language/expressions/parse.c:259
 #, c-format
-msgid "Error closing FLIP source file: %s."
+msgid ""
+"Type mismatch: expression has %s type, but a numeric value is required here."
 msgstr ""
 
-#: src/language/stats/flip.c:392
+#: src/language/expressions/parse.c:271
 #, c-format
-msgid "Error rewinding FLIP source file: %s."
+msgid ""
+"Type mismatch: expression has %s type, but a string value is required here."
 msgstr ""
 
-#: src/language/stats/flip.c:426
+#: src/language/expressions/parse.c:427
 #, c-format
-msgid "Error reading FLIP temporary file: %s."
+msgid "Type mismatch while applying %s operator: cannot convert %s to %s."
 msgstr ""
 
-#: src/language/stats/flip.c:429
-msgid "Unexpected end of file reading FLIP temporary file."
+#: src/language/expressions/parse.c:643
+msgid ""
+"Chaining relational operators (e.g. \"a < b < c\") will not produce the "
+"mathematically expected result.  Use the AND logical operator to fix the "
+"problem (e.g. \"a < b AND b < c\").  If chaining is really intended, "
+"parentheses will disable this warning (e.g. \"(a < b) < c\".)"
 msgstr ""
 
-#: src/language/stats/frequencies.q:124
-msgid "S.E. Mean"
+#: src/language/expressions/parse.c:744
+msgid ""
+"The exponentiation operator (\"**\") is left-associative, even though right-"
+"associative semantics are more useful.  That is, \"a**b**c\" equals \"(a**b)"
+"**c\", not as \"a**(b**c)\".  To disable this warning, insert parentheses."
 msgstr ""
 
-#: src/language/stats/frequencies.q:126 src/ui/gui/frequencies-dialog.c:49
-msgid "Mode"
+#: src/language/expressions/parse.c:809
+#, c-format
+msgid "Unknown system variable %s."
 msgstr ""
 
-#: src/language/stats/frequencies.q:130
-msgid "S.E. Kurt"
+#: src/language/expressions/parse.c:857
+#, c-format
+msgid "Unknown identifier %s."
 msgstr ""
 
-#: src/language/stats/frequencies.q:132
-msgid "S.E. Skew"
+#: src/language/expressions/parse.c:892
+msgid "in expression"
 msgstr ""
 
-#: src/language/stats/frequencies.q:407
-msgid ""
-"At most one of BARCHART, HISTOGRAM, or HBAR should be given.  HBAR will be "
-"assumed.  Argument values will be given precedence increasing along the "
-"order given."
+#: src/language/expressions/parse.c:1073
+#, c-format
+msgid "%s must have at least %d arguments in list."
 msgstr ""
 
-#: src/language/stats/frequencies.q:490
+#: src/language/expressions/parse.c:1082
 #, c-format
-msgid ""
-"MAX must be greater than or equal to MIN, if both are specified.  However, "
-"MIN was specified as %g and MAX as %g.  MIN and MAX will be ignored."
+msgid "%s must have even number of arguments in list."
 msgstr ""
 
-#: src/language/stats/frequencies.q:754
+#: src/language/expressions/parse.c:1085
 #, c-format
-msgid "Variable %s specified multiple times on VARIABLES subcommand."
+msgid "%s must have multiple of %d arguments in list."
 msgstr ""
 
-#: src/language/stats/frequencies.q:812
-msgid "`)' expected after GROUPED interval list."
+#: src/language/expressions/parse.c:1095
+#, c-format
+msgid "%s function does not accept a minimum valid argument count."
 msgstr ""
 
-#: src/language/stats/frequencies.q:824
+#: src/language/expressions/parse.c:1104
 #, c-format
-msgid "Variables %s specified on GROUPED but not on VARIABLES."
+msgid "%s requires at least %d valid arguments in list."
 msgstr ""
 
-#: src/language/stats/frequencies.q:831
+#: src/language/expressions/parse.c:1110
 #, c-format
-msgid "Variables %s specified multiple times on GROUPED subcommand."
+msgid ""
+"With %s, using minimum valid argument count of %d does not make sense when "
+"passing only %d arguments in list."
 msgstr ""
 
-#: src/language/stats/frequencies.q:1050 src/language/stats/frequencies.q:1143
-#: src/language/stats/frequencies.q:1144 src/language/stats/frequencies.q:1179
-msgid "Cum"
+#: src/language/expressions/parse.c:1164
+#, c-format
+msgid "Type mismatch invoking %s as "
 msgstr ""
 
-#: src/language/stats/frequencies.q:1052 src/output/charts/plot-hist.c:140
-msgid "Frequency"
+#: src/language/expressions/parse.c:1169
+msgid "Function invocation "
 msgstr ""
 
-#: src/language/stats/frequencies.q:1073
-msgid "Value Label"
+#: src/language/expressions/parse.c:1171
+msgid " does not match any known function.  Candidates are:"
 msgstr ""
 
-#: src/language/stats/frequencies.q:1177
-msgid "Freq"
+#: src/language/expressions/parse.c:1201
+#, c-format
+msgid "No function or vector named %s."
 msgstr ""
 
-#: src/language/stats/frequencies.q:1178 src/language/stats/frequencies.q:1180
-msgid "Pct"
+#: src/language/expressions/parse.c:1244
+#, c-format
+msgid "expecting `,' or `)' invoking %s function"
 msgstr ""
 
-#: src/language/stats/frequencies.q:1373
+#: src/language/expressions/parse.c:1264
 #, c-format
-msgid "No valid data for variable %s; statistics not displayed."
+msgid "%s is a PSPP extension."
 msgstr ""
 
-#: src/language/stats/frequencies.q:1414
-msgid "50 (Median)"
+#: src/language/expressions/parse.c:1273
+#, c-format
+msgid "%s may not appear after TEMPORARY."
 msgstr ""
 
-#: src/language/stats/glm.q:143
-msgid "Multivariate GLM not yet supported"
+#: src/libpspp/hash.c:545
+#, c-format
+msgid "hash table:"
 msgstr ""
 
-#: src/language/stats/glm.q:262 src/language/stats/regression.q:1000
-msgid "No valid data found. This command was skipped."
+#: src/libpspp/tmpfile.c:55
+msgid "failed to create temporary file"
 msgstr ""
 
-#: src/language/stats/means.q:100
-msgid "Missing required subcommand TABLES."
+#: src/libpspp/tmpfile.c:96
+msgid "seeking in temporary file"
 msgstr ""
 
-#: src/language/stats/means.q:134
-msgid "TABLES subcommand may not appear more than once."
+#: src/libpspp/tmpfile.c:115
+msgid "reading temporary file"
 msgstr ""
 
-#: src/language/stats/npar.q:109
-msgid "NPAR subcommand not currently implemented."
+#: src/libpspp/tmpfile.c:117
+msgid "unexpected end of file reading temporary file"
 msgstr ""
 
-#: src/language/stats/npar.q:252
-#, c-format
-msgid ""
-"The specified value of HI (%d) is lower than the specified value of LO (%d)"
+#: src/libpspp/tmpfile.c:136
+msgid "writing to temporary file"
 msgstr ""
 
-#: src/language/stats/npar.q:307
-#, c-format
-msgid ""
-"%d expected values were given, but the specified range (%d-%d) requires "
-"exactly %d values."
+#: src/math/percentiles.c:35
+msgid "HAverage"
 msgstr ""
 
-#: src/language/stats/npar.q:441 src/language/stats/t-test.q:379
-#, c-format
-msgid ""
-"PAIRED was specified but the number of variables preceding WITH (%zu) did "
-"not match the number following (%zu)."
+#: src/math/percentiles.c:36
+msgid "Weighted Average"
 msgstr ""
 
-#: src/language/stats/npar-summary.c:109
-msgid "Descriptive Statistics"
+#: src/math/percentiles.c:37
+msgid "Rounded"
 msgstr ""
 
-#: src/language/stats/npar-summary.c:146
-msgid "25th"
+#: src/math/percentiles.c:38
+msgid "Empirical"
 msgstr ""
 
-#: src/language/stats/npar-summary.c:149
-msgid "50th (Median)"
+#: src/math/percentiles.c:39
+msgid "Empirical with averaging"
 msgstr ""
 
-#: src/language/stats/npar-summary.c:152
-msgid "75th"
+#: src/output/charts/plot-hist.c:138
+msgid "HISTOGRAM"
 msgstr ""
 
-#: src/language/stats/oneway.q:171
-msgid "Number of contrast coefficients must equal the number of groups"
+#: src/output/charts/plot-hist.c:140
+msgid "Frequency"
 msgstr ""
 
-#: src/language/stats/oneway.q:180
+#: src/output/afm.c:149
 #, c-format
-msgid "Coefficients for contrast %zu do not total zero"
+msgid "opening font metrics file \"%s\""
 msgstr ""
 
-#: src/language/stats/oneway.q:243
-#, c-format
-msgid "`%s' is not a variable name"
+#: src/output/afm.c:239
+msgid "first line must be StartFontMetrics"
 msgstr ""
 
-#: src/language/stats/oneway.q:277 src/language/stats/regression.q:301
-msgid "Sum of Squares"
+#: src/output/afm.c:266
+#, c-format
+msgid "unsupported MappingScheme %d"
 msgstr ""
 
-#: src/language/stats/oneway.q:279 src/language/stats/regression.q:303
-msgid "Mean Square"
+#: src/output/afm.c:287
+msgid "required FontName is missing"
 msgstr ""
 
-#: src/language/stats/oneway.q:280 src/language/stats/regression.q:304
-#: src/language/stats/t-test.q:750
-msgid "F"
+#: src/output/afm.c:394
+msgid "CharMetrics line must start with C or CH"
 msgstr ""
 
-#: src/language/stats/oneway.q:281 src/language/stats/oneway.q:539
-#: src/language/stats/regression.q:206 src/language/stats/regression.q:305
-msgid "Significance"
+#: src/output/afm.c:535
+#, c-format
+msgid "reference to unknown character \"%s\""
 msgstr ""
 
-#: src/language/stats/oneway.q:303
-msgid "Between Groups"
+#: src/output/afm.c:593
+msgid "expected end of file"
 msgstr ""
 
-#: src/language/stats/oneway.q:304
-msgid "Within Groups"
+#: src/output/afm.c:605
+msgid "syntax error expecting end of line"
 msgstr ""
 
-#: src/language/stats/oneway.q:348 src/language/stats/regression.q:330
-msgid "ANOVA"
+#: src/output/afm.c:623 src/output/afm.c:660
+msgid "number out of valid range"
 msgstr ""
 
-#: src/language/stats/oneway.q:536
-msgid "Levene Statistic"
+#: src/output/afm.c:625 src/output/afm.c:662
+msgid "invalid numeric syntax"
 msgstr ""
 
-#: src/language/stats/oneway.q:537
-msgid "df1"
+#: src/output/afm.c:641
+msgid "syntax error expecting integer"
 msgstr ""
 
-#: src/language/stats/oneway.q:538
-msgid "df2"
+#: src/output/afm.c:679
+msgid "syntax error expecting number"
 msgstr ""
 
-#: src/language/stats/oneway.q:541
-msgid "Test of Homogeneity of Variances"
+#: src/output/afm.c:692
+msgid "syntax error in hex constant"
 msgstr ""
 
-#: src/language/stats/oneway.q:608
-msgid "Contrast Coefficients"
+#: src/output/afm.c:707
+msgid "syntax error expecting hex constant"
 msgstr ""
 
-#: src/language/stats/oneway.q:610 src/language/stats/oneway.q:687
-msgid "Contrast"
+#: src/output/afm.c:745
+msgid "unexpected end of line"
 msgstr ""
 
-#: src/language/stats/oneway.q:685
-msgid "Contrast Tests"
+#: src/output/afm.c:795
+msgid "unexpected end of line expecting string"
 msgstr ""
 
-#: src/language/stats/oneway.q:688
-msgid "Value of Contrast"
+#: src/output/ascii.c:251
+#, c-format
+msgid ""
+"ascii: page excluding margins and headers must be at least 59 characters "
+"wide by 15 lines long, but as configured is only %d characters by %d lines"
 msgstr ""
 
-#: src/language/stats/oneway.q:690 src/language/stats/regression.q:205
-#: src/language/stats/t-test.q:752 src/language/stats/t-test.q:923
-#: src/language/stats/t-test.q:1010
-msgid "t"
+#: src/output/ascii.c:329
+#, c-format
+msgid ""
+"ascii: bad index value for `box' key: syntax is box[INDEX], 0 <= INDEX < %d "
+"decimal, with INDEX expressed in base 4"
 msgstr ""
 
-#: src/language/stats/oneway.q:692 src/language/stats/t-test.q:754
-#: src/language/stats/t-test.q:925 src/language/stats/t-test.q:1012
-msgid "Sig. (2-tailed)"
+#: src/output/ascii.c:336
+#, c-format
+msgid "ascii: multiple values for %s"
 msgstr ""
 
-#: src/language/stats/oneway.q:736
-msgid "Assume equal variances"
+#: src/output/ascii.c:344
+#, c-format
+msgid "ascii: unknown parameter `%s'"
 msgstr ""
 
-#: src/language/stats/oneway.q:740
-msgid "Does not assume equal"
+#: src/output/ascii.c:360
+msgid "ascii: only screen devices may have `auto' length or width"
 msgstr ""
 
-#: src/language/stats/rank.q:221
+#: src/output/ascii.c:374
 #, c-format
-msgid "%s of %s by %s"
+msgid "ascii: positive integer required as `%s' value"
 msgstr ""
 
-#: src/language/stats/rank.q:226
-#, c-format
-msgid "%s of %s"
+#: src/output/ascii.c:402
+msgid "ascii: `emphasis' value must be `bold', `underline', or `none'"
 msgstr ""
 
-#: src/language/stats/rank.q:601
-msgid "Cannot create new rank variable.  All candidates in use."
+#: src/output/ascii.c:415
+#, c-format
+msgid "ascii: zero or positive integer required as `%s' value"
 msgstr ""
 
-#: src/language/stats/rank.q:694
-msgid "Variables Created By RANK"
+#: src/output/ascii.c:446
+#, c-format
+msgid "ascii: boolean value expected for `%s'"
 msgstr ""
 
-#: src/language/stats/rank.q:718
-#, c-format
-msgid "%s into %s(%s of %s using %s BY %s)"
+#: src/output/ascii.c:478 src/output/html.c:187
+msgid "`chart-files' value must contain `#'"
 msgstr ""
 
-#: src/language/stats/rank.q:728
+#: src/output/ascii.c:524
 #, c-format
-msgid "%s into %s(%s of %s BY %s)"
+msgid "ascii: opening output file \"%s\""
 msgstr ""
 
-#: src/language/stats/rank.q:741
+#: src/output/ascii.c:587
 #, c-format
-msgid "%s into %s(%s of %s using %s)"
+msgid "ascii: bad line (%d,%d)-(%d,%d) out of (%d,%d)\n"
 msgstr ""
 
-#: src/language/stats/rank.q:750
+#: src/output/ascii.c:809 src/output/postscript.c:826
 #, c-format
-msgid "%s into %s(%s of %s)"
+msgid "%s - Page %d"
 msgstr ""
 
-#: src/language/stats/rank.q:762
-msgid ""
-"FRACTION has been specified, but NORMAL and PROPORTION rank functions have "
-"not been requested.  The FRACTION subcommand will be ignored."
+#: src/output/ascii.c:861
+#, c-format
+msgid "ascii: closing output file \"%s\""
 msgstr ""
 
-#: src/language/stats/rank.q:853
+#: src/output/html.c:71
 #, c-format
-msgid "Variable %s already exists."
+msgid "opening HTML output file: %s"
 msgstr ""
 
-#: src/language/stats/rank.q:858
-msgid "Too many variables in INTO clause."
+#: src/output/html.c:82
+msgid "PSPP Output"
 msgstr ""
 
-#: src/language/stats/regression.q:159 src/ui/gui/regression-dialog.c:42
-msgid "R"
+#: src/output/html.c:170
+#, c-format
+msgid "unknown configuration parameter `%s' for HTML device driver"
 msgstr ""
 
-#: src/language/stats/regression.q:160
-msgid "R Square"
+#: src/output/journal.c:69
+#, c-format
+msgid "error writing \"%s\""
 msgstr ""
 
-#: src/language/stats/regression.q:161
-msgid "Adjusted R Square"
+#: src/output/journal.c:94
+#, c-format
+msgid "error creating \"%s\""
 msgstr ""
 
-#: src/language/stats/regression.q:162
-msgid "Std. Error of the Estimate"
+#: src/output/output.c:168
+#, c-format
+msgid "unknown output driver `%s'"
 msgstr ""
 
-#: src/language/stats/regression.q:167
-msgid "Model Summary"
+#: src/output/output.c:170
+#, c-format
+msgid "output driver `%s' referenced but never defined"
 msgstr ""
 
-#: src/language/stats/regression.q:202
-msgid "B"
+#: src/output/output.c:261
+msgid "using default output driver configuration"
 msgstr ""
 
-#: src/language/stats/regression.q:204
-msgid "Beta"
+#: src/output/output.c:290
+msgid "cannot find output initialization file (use `-vv' to view search path)"
 msgstr ""
 
-#: src/language/stats/regression.q:207
-msgid "(Constant)"
+#: src/output/output.c:298
+#, c-format
+msgid "cannot open \"%s\""
 msgstr ""
 
-#: src/language/stats/regression.q:271
-msgid "Coefficients"
+#: src/output/output.c:310
+#, c-format
+msgid "reading \"%s\""
 msgstr ""
 
-#: src/language/stats/regression.q:307
-msgid "Regression"
+#: src/output/output.c:332 src/ui/gui/message-dialog.c:99
+msgid "syntax error"
 msgstr ""
 
-#: src/language/stats/regression.q:389
-msgid "Model"
+#: src/output/output.c:341
+#, c-format
+msgid "error closing \"%s\""
 msgstr ""
 
-#: src/language/stats/regression.q:390
-msgid "Covariances"
+#: src/output/output.c:349
+msgid "no active output drivers"
 msgstr ""
 
-#: src/language/stats/regression.q:405
-msgid "Coefficient Correlations"
+#: src/output/output.c:352
+msgid "error reading device definition file"
 msgstr ""
 
-#: src/language/stats/regression.q:812
+#: src/output/output.c:470
+#, c-format
 msgid ""
-"The dependent variable is equal to the independent variable.The least "
-"squares line is therefore Y=X.Standard errors and related statistics may be "
-"meaningless."
+"Driver classes:\n"
+"\t"
 msgstr ""
 
-#: src/language/stats/regression.q:904
-msgid "Dependent variable must be numeric."
+#: src/output/output.c:502
+#, c-format
+msgid "syntax error parsing options for \"%s\" driver"
 msgstr ""
 
-#: src/language/stats/reliability.q:433
-msgid "Reliability Statistics"
+#: src/output/output.c:518
+#, c-format
+msgid ""
+"reached end of options inside quoted string parsing options for \"%s\" driver"
 msgstr ""
 
-#: src/language/stats/reliability.q:476
-msgid "Item-Total Statistics"
+#: src/output/output.c:588
+#, c-format
+msgid "syntax error in string constant parsing options for \"%s\" driver"
 msgstr ""
 
-#: src/language/stats/reliability.q:498
-msgid "Scale Mean if Item Deleted"
+#: src/output/output.c:636
+#, c-format
+msgid "syntax error expecting `=' parsing options for driver \"%s\""
 msgstr ""
 
-#: src/language/stats/reliability.q:501
-msgid "Scale Variance if Item Deleted"
+#: src/output/output.c:687
+#, c-format
+msgid "unknown output driver class `%.*s'"
 msgstr ""
 
-#: src/language/stats/reliability.q:504
-msgid "Corrected Item-Total Correlation"
+#: src/output/output.c:702
+#, c-format
+msgid "unknown device type `%.*s'"
 msgstr ""
 
-#: src/language/stats/reliability.q:507
-msgid "Cronbach's Alpha if Item Deleted"
-msgstr ""
+#: src/output/output.c:719
+#, c-format
+msgid "cannot initialize output driver `%s' of class `%s'"
+msgstr "cannot initialise output driver `%s' of class `%s'"
 
-#: src/language/stats/reliability.q:557 src/language/stats/reliability.q:576
-msgid "Cronbach's Alpha"
+#: src/output/output.c:765
+msgid "driver definition line missing driver name or class name"
 msgstr ""
 
-#: src/language/stats/reliability.q:560
-msgid "N of items"
+#: src/output/output.c:868
+#, c-format
+msgid "`%s' is not a valid length."
 msgstr ""
 
-#: src/language/stats/reliability.q:579
-msgid "Part 1"
+#: src/output/output.c:960
+#, c-format
+msgid "unknown paper type `%.*s'"
 msgstr ""
 
-#: src/language/stats/reliability.q:585 src/language/stats/reliability.q:596
-msgid "N of Items"
+#: src/output/output.c:978
+#, c-format
+msgid "error opening \"%s\""
 msgstr ""
 
-#: src/language/stats/reliability.q:590
-msgid "Part 2"
+#: src/output/output.c:989
+#, c-format
+msgid "error reading \"%s\""
 msgstr ""
 
-#: src/language/stats/reliability.q:601
-msgid "Total N of Items"
+#: src/output/output.c:1006
+#, c-format
+msgid "paper size file \"%s\" does not state a paper size"
 msgstr ""
 
-#: src/language/stats/reliability.q:604
-msgid "Correlation Between Forms"
+#: src/output/output.c:1066
+#, c-format
+msgid "syntax error in paper size `%s'"
 msgstr ""
 
-#: src/language/stats/reliability.q:608
-msgid "Spearman-Brown Coefficient"
+#: src/output/postscript.c:158
+#, c-format
+msgid "opening PostScript output file \"%s\""
 msgstr ""
 
-#: src/language/stats/reliability.q:611
-msgid "Equal Length"
+#: src/output/postscript.c:196
+#, c-format
+msgid ""
+"The defined PostScript page is not long enough to hold margins and headers, "
+"plus least 15 lines of the default fonts.  In fact, there's only room for %d "
+"lines of each font at the default size of %d.%03d points."
 msgstr ""
 
-#: src/language/stats/reliability.q:614
-msgid "Unequal Length"
+#: src/output/postscript.c:246
+#, c-format
+msgid "closing PostScript output file \"%s\""
 msgstr ""
 
-#: src/language/stats/reliability.q:618
-msgid "Guttman Split-Half Coefficient"
+#: src/output/postscript.c:309
+#, c-format
+msgid "unknown configuration parameter `%s' for PostScript device driver"
 msgstr ""
 
-#: src/language/stats/reliability.q:715
-msgid "Excluded"
+#: src/output/postscript.c:325
+#, c-format
+msgid ""
+"unknown orientation `%s' (valid orientations are `portrait' and `landscape')"
 msgstr ""
 
-#: src/language/stats/reliability.q:723
-msgid "%"
+#: src/output/postscript.c:337
+#, c-format
+msgid "boolean value expected for %s"
 msgstr ""
 
-#: src/language/stats/roc.c:938
-msgid "Area Under the Curve"
+#: src/output/postscript.c:350
+#, c-format
+msgid "positive integer value required for `%s'"
 msgstr ""
 
-#: src/language/stats/roc.c:940
+#: src/output/postscript.c:355
 #, c-format
-msgid "Area Under the Curve (%s)"
+msgid "default font size must be at least 1 point (value of 1000 for key `%s')"
 msgstr ""
 
-#: src/language/stats/roc.c:946
-msgid "Area"
+#: src/output/postscript.c:1176
+#, c-format
+msgid "\"%s\": bad font specification"
 msgstr ""
 
-#: src/language/stats/roc.c:960
-msgid "Asymptotic Sig."
+#: src/output/postscript.c:1184
+#, c-format
+msgid "could not find AFM file \"%s\""
 msgstr ""
 
-#: src/language/stats/roc.c:967
+#: src/output/postscript.c:1198
 #, c-format
-msgid "Asymp. %g%% Confidence Interval"
+msgid "could not find font \"%s\""
 msgstr ""
 
-#: src/language/stats/roc.c:973
-msgid "Variable under test"
+#: src/output/postscript.c:1207
+#, c-format
+msgid "could not find encoding \"%s\""
 msgstr ""
 
-#: src/language/stats/roc.c:1032
-msgid "Case Summary"
+#: src/output/postscript.c:1307
+#, c-format
+msgid "cannot open font file \"%s\""
 msgstr ""
 
-#: src/language/stats/roc.c:1054
-msgid "Unweighted"
+#: src/output/postscript.c:1348
+#, c-format
+msgid "reading font file \"%s\""
 msgstr ""
 
-#: src/language/stats/roc.c:1055
-msgid "Weighted"
+#: src/output/postscript.c:1370
+#, c-format
+msgid "cannot open font encoding file \"%s\""
 msgstr ""
 
-#: src/language/stats/roc.c:1059
-msgid "Valid N (listwise)"
+#: src/output/postscript.c:1399
+msgid "invalid numeric format"
 msgstr ""
 
-#: src/language/stats/roc.c:1062
-msgid "Positive"
+#: src/output/postscript.c:1421
+#, c-format
+msgid "closing Postscript encoding \"%s\""
 msgstr ""
 
-#: src/language/stats/roc.c:1063
-msgid "Negative"
+#: src/output/table.c:237
+#, c-format
+msgid "bad vline: x=%d+%d=%d y=(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n"
 msgstr ""
 
-#: src/language/stats/roc.c:1091
-msgid "Coordinates of the Curve"
+#: src/output/table.c:308
+#, c-format
+msgid ""
+"bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n"
 msgstr ""
 
-#: src/language/stats/roc.c:1093
+#: src/output/chart.c:154
 #, c-format
-msgid "Coordinates of the Curve (%s)"
+msgid "creating \"%s\""
 msgstr ""
 
-#: src/language/stats/roc.c:1103
-msgid "Test variable"
+#: src/ui/source-init-opts.c:42
+msgid ""
+"set to `compatible' if you want output calculated from broken algorithms"
 msgstr ""
 
-#: src/language/stats/roc.c:1105
-msgid "Positive if greater than or equal to"
-msgstr ""
-
-#: src/language/stats/roc.c:1106 src/language/stats/roc.c:1171
-msgid "Sensitivity"
+#: src/ui/source-init-opts.c:43
+msgid "Append DIR to include path"
 msgstr ""
 
-#: src/language/stats/roc.c:1107 src/language/stats/roc.c:1170
-msgid "1 - Specificity"
+#: src/ui/source-init-opts.c:44
+msgid "Clear include path"
 msgstr ""
 
-#: src/language/stats/roc.c:1169
-msgid "ROC Curve"
+#: src/ui/source-init-opts.c:45
+msgid "Disable execution of .pspp/rc at startup"
 msgstr ""
 
-#: src/language/stats/sign.c:91
-msgid "Negative Differences"
+#: src/ui/source-init-opts.c:46
+msgid "Set configuration directory to DIR"
 msgstr ""
 
-#: src/language/stats/sign.c:92
-msgid "Positive Differences"
+#: src/ui/source-init-opts.c:47
+msgid "Don't allow some unsafe operations"
 msgstr ""
 
-#: src/language/stats/sign.c:93 src/language/stats/wilcoxon.c:261
-msgid "Ties"
+#: src/ui/source-init-opts.c:48
+msgid "Set to `compatible' if you want only to accept SPSS compatible syntax"
 msgstr ""
 
-#: src/language/stats/sign.c:134 src/language/stats/wilcoxon.c:331
-msgid "Exact Sig. (2-tailed)"
+#: src/ui/source-init-opts.c:83
+msgid "Algorithm must be either \"compatible\" or \"enhanced\"."
 msgstr ""
 
-#: src/language/stats/sign.c:137 src/language/stats/wilcoxon.c:332
-msgid "Exact Sig. (1-tailed)"
+#: src/ui/source-init-opts.c:124
+msgid "Syntax must be either \"compatible\" or \"enhanced\"."
 msgstr ""
 
-#: src/language/stats/sign.c:140 src/language/stats/wilcoxon.c:335
-msgid "Point Probability"
+#: src/ui/terminal/main.c:115
+msgid "PSPP --- A program for statistical analysis"
 msgstr ""
 
-#: src/language/stats/sort-cases.c:64
-msgid "Buffer limit must be at least 2."
+#: src/ui/terminal/main.c:116
+msgid "FILE1, FILE2 ... FILEn"
 msgstr ""
 
-#: src/language/stats/sort-criteria.c:74
-msgid "`A' or `D' expected inside parentheses."
+#: src/ui/terminal/main.c:119 src/ui/terminal/terminal-opts.c:177
+msgid "Options affecting input and output locations:"
 msgstr ""
 
-#: src/language/stats/sort-criteria.c:79
-msgid "`)' expected."
+#: src/ui/terminal/main.c:122 src/ui/terminal/terminal-opts.c:178
+msgid "Diagnostic options:"
 msgstr ""
 
-#: src/language/stats/sort-criteria.c:92
-#, c-format
-msgid "Variable %s specified twice in sort criteria."
-msgstr ""
+#: src/ui/terminal/main.c:125 src/ui/gui/main.c:177
+msgid "Options affecting syntax and behavior:"
+msgstr "Options affecting syntax and behaviour:"
 
-#: src/language/stats/t-test.q:189
-msgid "Exactly one of TESTVAL, GROUPS and PAIRS subcommands must be specified."
+#: src/ui/terminal/main.c:156
+msgid ""
+"Stopping syntax file processing here to avoid a cascade of dependent command "
+"failures."
 msgstr ""
 
-#: src/language/stats/t-test.q:210
-msgid "VARIABLES subcommand may not be used with PAIRS."
+#: src/ui/terminal/msg-ui.c:67
+#, c-format
+msgid "Cannot open %s (%s). Writing errors to stdout instead.\n"
 msgstr ""
 
-#: src/language/stats/t-test.q:229
-msgid "One or more VARIABLES must be specified."
+#: src/ui/terminal/msg-ui.c:94
+msgid "Terminating execution of syntax file due to error."
 msgstr ""
 
-#: src/language/stats/t-test.q:323
-msgid ""
-"When applying GROUPS to a string variable, two values must be specified."
+#: src/ui/terminal/msg-ui.c:96
+#, c-format
+msgid "Errors (%d) exceeds limit (%d)."
 msgstr ""
 
-#: src/language/stats/t-test.q:394
-msgid "At least two variables must be specified on PAIRS."
+#: src/ui/terminal/msg-ui.c:99
+#, c-format
+msgid "Warnings (%d) exceed limit (%d)."
 msgstr ""
 
-#: src/language/stats/t-test.q:504
-msgid "One-Sample Statistics"
+#: src/ui/terminal/msg-ui.c:150
+msgid "error"
 msgstr ""
 
-#: src/language/stats/t-test.q:509 src/language/stats/t-test.q:529
-#: src/language/stats/t-test.q:628
-msgid "SE. Mean"
+#: src/ui/terminal/msg-ui.c:151
+msgid "warning"
 msgstr ""
 
-#: src/language/stats/t-test.q:523
-msgid "Group Statistics"
+#: src/ui/terminal/terminal.c:72
+#, c-format
+msgid "could not access definition for terminal `%s'"
 msgstr ""
 
-#: src/language/stats/t-test.q:622
-msgid "Paired Sample Statistics"
+#: src/ui/terminal/terminal-opts.c:41
+msgid "Increase diagnostic verbosity level"
 msgstr ""
 
-#: src/language/stats/t-test.q:642 src/language/stats/t-test.q:945
-#: src/language/stats/t-test.q:1119
-#, c-format
-msgid "Pair %d"
+#: src/ui/terminal/terminal-opts.c:68
+msgid "Send error messages to FILE (appended)"
 msgstr ""
 
-#: src/language/stats/t-test.q:738
-msgid "Independent Samples Test"
+#: src/ui/terminal/terminal-opts.c:71
+msgid "Select output driver DEVICE and disable defaults"
 msgstr ""
 
-#: src/language/stats/t-test.q:746
-msgid "Levene's Test for Equality of Variances"
+#: src/ui/terminal/terminal-opts.c:74
+msgid "Print a list of known driver classes, then exit"
 msgstr ""
 
-#: src/language/stats/t-test.q:748
-msgid "t-test for Equality of Means"
+#: src/ui/terminal/terminal-opts.c:76
+msgid "Start an interactive session"
 msgstr ""
 
-#: src/language/stats/t-test.q:751 src/language/stats/t-test.q:1107
-msgid "Sig."
+#: src/ui/gui/about.c:64
+msgid "A program for the analysis of sampled data"
 msgstr ""
 
-#: src/language/stats/t-test.q:755 src/language/stats/t-test.q:1013
-msgid "Mean Difference"
-msgstr ""
+#. TRANSLATORS: Use this string to list the people who have helped with
+#. translation to your language.
+#: src/ui/gui/about.c:74
+msgid "translator-credits"
+msgstr "John Darrington"
 
-#: src/language/stats/t-test.q:756
-msgid "Std. Error Difference"
+#: src/ui/gui/checkbox-treeview.c:92
+msgid "Statistic"
 msgstr ""
 
-#: src/language/stats/t-test.q:761 src/language/stats/t-test.q:915
-#: src/language/stats/t-test.q:1005
+#: src/ui/gui/comments-dialog.c:58
 #, c-format
-msgid "%g%% Confidence Interval of the Difference"
+msgid "Column Number: %d"
 msgstr ""
 
-#: src/language/stats/t-test.q:815
-msgid "Equal variances assumed"
+#: src/ui/gui/crosstabs-dialog.c:40
+msgid "Chisq"
 msgstr ""
 
-#: src/language/stats/t-test.q:861
-msgid "Equal variances not assumed"
+#: src/ui/gui/crosstabs-dialog.c:41
+msgid "Phi"
 msgstr ""
 
-#: src/language/stats/t-test.q:905
-msgid "Paired Samples Test"
+#: src/ui/gui/crosstabs-dialog.c:42
+msgid "CC"
 msgstr ""
 
-#: src/language/stats/t-test.q:908
-msgid "Paired Differences"
+#: src/ui/gui/crosstabs-dialog.c:43
+msgid "Lambda"
 msgstr ""
 
-#: src/language/stats/t-test.q:920
-msgid "Std. Error Mean"
+#: src/ui/gui/crosstabs-dialog.c:44
+msgid "UC"
 msgstr ""
 
-#: src/language/stats/t-test.q:994
-msgid "One-Sample Test"
+#: src/ui/gui/crosstabs-dialog.c:45
+msgid "BTau"
 msgstr ""
 
-#: src/language/stats/t-test.q:999
-#, c-format
-msgid "Test Value = %f"
+#: src/ui/gui/crosstabs-dialog.c:46
+msgid "CTau"
 msgstr ""
 
-#: src/language/stats/t-test.q:1102
-msgid "Paired Samples Correlations"
+#: src/ui/gui/crosstabs-dialog.c:47
+msgid "Risk"
 msgstr ""
 
-#: src/language/stats/t-test.q:1106
-msgid "Correlation"
+#: src/ui/gui/crosstabs-dialog.c:48
+msgid "Gamma"
 msgstr ""
 
-#: src/language/stats/t-test.q:1121
-#, c-format
-msgid "%s & %s"
+#: src/ui/gui/crosstabs-dialog.c:49
+msgid "D"
 msgstr ""
 
-#: src/language/stats/wilcoxon.c:232
-msgid "Ranks"
+#: src/ui/gui/crosstabs-dialog.c:50
+msgid "Kappa"
 msgstr ""
 
-#: src/language/stats/wilcoxon.c:246
-msgid "Mean Rank"
+#: src/ui/gui/crosstabs-dialog.c:51
+msgid "Eta"
 msgstr ""
 
-#: src/language/stats/wilcoxon.c:247
-msgid "Sum of Ranks"
+#: src/ui/gui/crosstabs-dialog.c:52
+msgid "Corr"
 msgstr ""
 
-#: src/language/stats/wilcoxon.c:259
-msgid "Negative Ranks"
+#: src/ui/gui/crosstabs-dialog.c:53 src/ui/gui/crosstabs-dialog.c:64
+#: src/ui/gui/crosstabs-dialog.c:99 src/ui/gui/crosstabs-dialog.c:107
+#: src/ui/gui/psppire-var-store.c:612 src/ui/gui/var-display.c:16
+#: src/ui/gui/variable-info-dialog.c:40
+msgid "None"
 msgstr ""
 
-#: src/language/stats/wilcoxon.c:260
-msgid "Positive Ranks"
+#: src/ui/gui/crosstabs-dialog.c:56
+msgid "Count"
 msgstr ""
 
-#: src/language/stats/wilcoxon.c:326
-msgid "Z"
+#: src/ui/gui/crosstabs-dialog.c:57
+msgid "Row"
 msgstr ""
 
-#: src/language/stats/wilcoxon.c:327
-msgid "Asymp. Sig. (2-tailed)"
+#: src/ui/gui/crosstabs-dialog.c:58
+msgid "Column"
 msgstr ""
 
-#: src/language/syntax-file.c:88
-#, c-format
-msgid "opening \"%s\" as syntax file"
+#: src/ui/gui/crosstabs-dialog.c:60
+msgid "Expected"
 msgstr ""
 
-#: src/language/syntax-file.c:93
-#, c-format
-msgid "Opening `%s': %s."
+#: src/ui/gui/crosstabs-dialog.c:62
+msgid "Std. Residual"
 msgstr ""
 
-#: src/language/syntax-file.c:107
-#, c-format
-msgid "Reading `%s': %s."
+#: src/ui/gui/crosstabs-dialog.c:63
+msgid "Adjusted Std. Residual"
 msgstr ""
 
-#: src/language/syntax-file.c:127
-#, c-format
-msgid "Closing `%s': %s."
+#: src/ui/gui/customentry.c:334
+msgid "Style of bevel around the custom entry button"
 msgstr ""
 
-#: src/language/tests/float-format.c:124
-#, c-format
-msgid "%zu-byte string needed but %zu-byte string supplied."
+#: src/ui/gui/descriptives-dialog.c:40 src/ui/gui/frequencies-dialog.c:41
+msgid "Standard deviation"
 msgstr ""
 
-#: src/language/tests/float-format.c:136
-msgid "Hexadecimal floating constant too long."
+#: src/ui/gui/descriptives-dialog.c:45
+msgid "Standard error"
 msgstr ""
 
-#: src/language/tests/float-format.c:201
+#: src/ui/gui/find-dialog.c:652
 #, c-format
-msgid ""
-"%s conversion of %s from %s to %s should have produced %s but actually "
-"produced %s."
-msgstr ""
-
-#: src/language/tests/float-format.c:247
-msgid "Too many values in single command."
+msgid "Bad regular expression: %s"
 msgstr ""
 
-#: src/language/tests/moments-test.c:47
-msgid "expecting weight value"
+#: src/ui/gui/frequencies-dialog.c:44
+msgid "Standard error of the mean"
 msgstr ""
 
-#: src/language/utilities/cd.c:41
-#, c-format
-msgid "Cannot change directory to %s:  %s "
+#: src/ui/gui/frequencies-dialog.c:47
+msgid "Standard error of the skewness"
 msgstr ""
 
-#: src/language/utilities/date.c:32
-msgid "Only USE ALL is currently implemented."
+#: src/ui/gui/frequencies-dialog.c:49
+msgid "Mode"
 msgstr ""
 
-#: src/language/utilities/include.c:92
-msgid "Expecting BATCH or INTERACTIVE after SYNTAX."
+#: src/ui/gui/frequencies-dialog.c:51
+msgid "Standard error of the kurtosis"
 msgstr ""
 
-#: src/language/utilities/include.c:109
-msgid "Expecting YES or NO after CD."
+#: src/ui/gui/frequencies-dialog.c:52
+msgid "Median"
 msgstr ""
 
-#: src/language/utilities/include.c:126
-msgid "Expecting CONTINUE or STOP after ERROR."
+#: src/ui/gui/helper.c:197
+msgid "Sorry. The help system hasn't yet been implemented."
 msgstr ""
 
-#: src/language/utilities/include.c:133
+#: src/ui/gui/helper.c:242
 #, c-format
-msgid "Unexpected token: `%s'."
+msgid "Cannot open reference manual: %s"
 msgstr ""
 
-#: src/language/utilities/include.c:178
-msgid "expecting file name"
+#: src/ui/gui/main.c:43
+msgid "Don't show the splash screen"
 msgstr ""
 
-#: src/language/utilities/include.c:190
-#, c-format
-msgid "Can't find `%s' in include file search path."
+#: src/ui/gui/main.c:173
+msgid "PSPPIRE --- A user interface for PSPP"
 msgstr ""
 
-#: src/language/utilities/include.c:198
-#, c-format
-msgid "Unable to open `%s': %s."
+#: src/ui/gui/main.c:175
+msgid "Miscellaneous options:"
 msgstr ""
 
-#: src/language/utilities/permissions.c:73
-#, c-format
-msgid "Expecting %s or %s."
+#: src/ui/gui/message-dialog.c:103
+msgid "data file error"
 msgstr ""
 
-#: src/language/utilities/permissions.c:106
-#, c-format
-msgid "Cannot stat %s: %s"
+#: src/ui/gui/message-dialog.c:108
+msgid "PSPP error"
 msgstr ""
 
-#: src/language/utilities/permissions.c:119
-#, c-format
-msgid "Cannot change mode of %s: %s"
+#: src/ui/gui/message-dialog.c:116
+msgid "syntax warning"
 msgstr ""
 
-#: src/language/utilities/set.q:202
-msgid "WORKSPACE must be at least 1MB"
+#: src/ui/gui/message-dialog.c:120
+msgid "data file warning"
 msgstr ""
 
-#: src/language/utilities/set.q:208 src/language/utilities/set.q:210
-#: src/language/utilities/set.q:212 src/language/utilities/set.q:214
-#: src/language/utilities/set.q:216 src/language/utilities/set.q:218
-#: src/language/utilities/set.q:220 src/language/utilities/set.q:222
-#: src/language/utilities/set.q:224
-#, c-format
-msgid "%s is obsolete."
+#: src/ui/gui/message-dialog.c:125
+msgid "PSPP warning"
 msgstr ""
 
-#: src/language/utilities/set.q:227
-#, c-format
-msgid "%s is not implemented."
+#: src/ui/gui/message-dialog.c:134
+msgid "syntax information"
 msgstr ""
 
-#: src/language/utilities/set.q:230
-msgid "Active file compression is not implemented."
+#: src/ui/gui/message-dialog.c:138
+msgid "data file information"
 msgstr ""
 
-#: src/language/utilities/set.q:325
-msgid "EPOCH must be 1500 or later."
+#: src/ui/gui/message-dialog.c:143
+msgid "PSPP information"
 msgstr ""
 
-#: src/language/utilities/set.q:332
-msgid "expecting AUTOMATIC or year"
-msgstr ""
+#: src/ui/gui/message-dialog.c:222
+msgid "The PSPP processing engine reported the following message:"
+msgid_plural "The PSPP processing engine reported the following messages:"
+msgstr[0] ""
+msgstr[1] ""
 
-#: src/language/utilities/set.q:353
-msgid "LENGTH must be at least 1."
-msgstr ""
+#: src/ui/gui/message-dialog.c:229
+#, c-format
+msgid "The PSPP processing engine reported %d message."
+msgid_plural "The PSPP processing engine reported %d messages."
+msgstr[0] ""
+msgstr[1] ""
 
-#: src/language/utilities/set.q:389
+#: src/ui/gui/message-dialog.c:236
 #, c-format
-msgid "%s is not a recognised encoding or locale name"
-msgstr ""
+msgid "%d of these messages are displayed below."
+msgid_plural "%d of these messages are displayed below."
+msgstr[0] ""
+msgstr[1] ""
 
-#: src/language/utilities/set.q:432
-msgid "WIDTH must be at least 40."
+#: src/ui/gui/missing-val-dialog.c:113 src/ui/gui/missing-val-dialog.c:167
+msgid "Incorrect value for variable type"
 msgstr ""
 
-#: src/language/utilities/set.q:455
-#, c-format
-msgid ""
-"FORMAT requires numeric output format as an argument.  Specified format %s "
-"is of type string."
+#: src/ui/gui/missing-val-dialog.c:134 src/ui/gui/missing-val-dialog.c:143
+msgid "Incorrect range specification"
 msgstr ""
 
-#: src/language/utilities/set.q:668
-msgid "ISL (32-bit IEEE 754 single, little-endian)"
+#: src/ui/gui/oneway-anova-dialog.c:331
+#, c-format
+msgid "Contrast %d of %d"
 msgstr ""
 
-#: src/language/utilities/set.q:671
-msgid "ISB (32-bit IEEE 754 single, big-endian)"
+#: src/ui/gui/psppire.c:247
+msgid "_Reset"
 msgstr ""
 
-#: src/language/utilities/set.q:674
-msgid "IDL (64-bit IEEE 754 double, little-endian)"
+#: src/ui/gui/psppire.c:248
+msgid "_Select"
 msgstr ""
 
-#: src/language/utilities/set.q:677
-msgid "IDB (64-bit IEEE 754 double, big-endian)"
+#: src/ui/gui/psppire-data-editor.c:951
+msgid "Data View"
 msgstr ""
 
-#: src/language/utilities/set.q:681
-msgid "VF (32-bit VAX F, VAX-endian)"
+#: src/ui/gui/psppire-data-editor.c:954
+msgid "Variable View"
 msgstr ""
 
-#: src/language/utilities/set.q:684
-msgid "VD (64-bit VAX D, VAX-endian)"
+#: src/ui/gui/psppire-data-store.c:744
+msgid "var"
 msgstr ""
 
-#: src/language/utilities/set.q:687
-msgid "VG (64-bit VAX G, VAX-endian)"
+#: src/ui/gui/psppire-data-store.c:755 src/ui/gui/psppire-var-store.c:699
+#: src/ui/gui/psppire-var-store.c:709 src/ui/gui/psppire-var-store.c:719
+#: src/ui/gui/psppire-var-store.c:825
+#, c-format
+msgid "%d"
 msgstr ""
 
-#: src/language/utilities/set.q:691
-msgid "ZS (32-bit IBM Z hexadecimal short, big-endian)"
+#: src/ui/gui/psppire-data-window.c:213
+msgid "Transformations Pending"
 msgstr ""
 
-#: src/language/utilities/set.q:694
-msgid "ZL (64-bit IBM Z hexadecimal long, big-endian)"
+#: src/ui/gui/psppire-data-window.c:229
+msgid "Filter off"
 msgstr ""
 
-#: src/language/utilities/set.q:793
+#: src/ui/gui/psppire-data-window.c:243
 #, c-format
-msgid "%s is %s."
+msgid "Filter by %s"
 msgstr ""
 
-#: src/language/utilities/title.c:68
-#, c-format
-msgid "%s: `.' expected after string."
+#: src/ui/gui/psppire-data-window.c:264
+msgid "No Split"
 msgstr ""
 
-#: src/language/utilities/title.c:108
-#, c-format
-msgid "   (Entered %s)"
+#: src/ui/gui/psppire-data-window.c:273
+msgid "Split by "
 msgstr ""
 
-#: src/language/xforms/compute.c:149 src/language/xforms/compute.c:203
-#, c-format
-msgid ""
-"When executing COMPUTE: SYSMIS is not a valid value as an index into vector %"
-"s."
+#: src/ui/gui/psppire-data-window.c:301
+msgid "Weights off"
 msgstr ""
 
-#: src/language/xforms/compute.c:153 src/language/xforms/compute.c:210
+#: src/ui/gui/psppire-data-window.c:315
 #, c-format
-msgid ""
-"When executing COMPUTE: %g is not a valid value as an index into vector %s."
+msgid "Weight by %s"
 msgstr ""
 
-#: src/language/xforms/compute.c:353
-#, c-format
-msgid "There is no vector named %s."
+#: src/ui/gui/psppire-data-window.c:383 src/ui/gui/data-editor.glade:702
+msgid "Open"
 msgstr ""
 
-#: src/language/xforms/count.c:123
-msgid "Destination cannot be a string variable."
+#: src/ui/gui/psppire-data-window.c:391 src/ui/gui/psppire-data-window.c:593
+msgid "System Files (*.sav)"
 msgstr ""
 
-#: src/language/xforms/recode.c:248
-msgid ""
-"Inconsistent target variable types.  Target variables must be all numeric or "
-"all string."
+#: src/ui/gui/psppire-data-window.c:397 src/ui/gui/psppire-data-window.c:599
+msgid "Portable Files (*.por) "
 msgstr ""
 
-#: src/language/xforms/recode.c:269
-msgid "CONVERT requires string input values and numeric output values."
+#: src/ui/gui/psppire-data-window.c:403 src/ui/gui/psppire-data-window.c:605
+#: src/ui/gui/psppire-syntax-window.c:298
+#: src/ui/gui/psppire-syntax-window.c:385
+msgid "All Files"
 msgstr ""
 
-#: src/language/xforms/recode.c:324
-msgid "THRU is not allowed with string variables."
+#: src/ui/gui/psppire-data-window.c:585 src/ui/gui/data-editor.glade:712
+msgid "Save"
 msgstr ""
 
-#: src/language/xforms/recode.c:403
-msgid "expecting output value"
+#: src/ui/gui/psppire-data-window.c:613
+msgid "System File"
 msgstr ""
 
-#: src/language/xforms/recode.c:460
-#, c-format
-msgid ""
-"%zu variable(s) cannot be recoded into %zu variable(s).  Specify the same "
-"number of variables as source and target variables."
+#: src/ui/gui/psppire-data-window.c:618
+msgid "Portable File"
 msgstr ""
 
-#: src/language/xforms/recode.c:475
-#, c-format
-msgid ""
-"There is no variable named %s.  (All string variables specified on INTO must "
-"already exist.  Use the STRING command to create a string variable.)"
+#: src/ui/gui/psppire-data-window.c:768
+msgid "Font Selection"
 msgstr ""
 
-#: src/language/xforms/recode.c:491
-#, c-format
-msgid "INTO is required with %s input values and %s output values."
+#: src/ui/gui/psppire-data-window.c:836
+msgid "Sort Ascending"
 msgstr ""
 
-#: src/language/xforms/recode.c:504
-#, c-format
-msgid "Type mismatch.  Cannot store %s data in %s variable %s."
+#: src/ui/gui/psppire-data-window.c:842
+msgid "Sort Descending"
 msgstr ""
 
-#: src/language/xforms/sample.c:76
-msgid "The sampling factor must be between 0 and 1 exclusive."
+#: src/ui/gui/psppire-data-window.c:847 src/ui/gui/psppire-data-window.c:937
+#: src/ui/gui/data-editor.glade:174 src/ui/gui/data-editor.glade:843
+msgid "Insert Variable"
 msgstr ""
 
-#: src/language/xforms/sample.c:96
-#, c-format
-msgid "Cannot sample %d observations from a population of %d."
+#: src/ui/gui/psppire-data-window.c:850 src/ui/gui/psppire-data-window.c:904
+#: src/ui/gui/psppire-data-window.c:940 src/ui/gui/psppire-data-window.c:1307
+#: src/ui/gui/psppire-data-window.c:1325
+msgid "Clear"
 msgstr ""
 
-#: src/language/xforms/select-if.c:100
-msgid "Syntax error expecting OFF or BY.  Turning off case filtering."
+#: src/ui/gui/psppire-data-window.c:901 src/ui/gui/data-editor.glade:831
+msgid "Insert Case"
 msgstr ""
 
-#: src/language/xforms/select-if.c:115
-msgid "The filter variable must be numeric."
+#: src/ui/gui/psppire-data-window.c:1185
+msgid "Open a data file"
 msgstr ""
 
-#: src/language/xforms/select-if.c:121
-msgid "The filter variable may not be scratch."
+#: src/ui/gui/psppire-data-window.c:1203
+msgid "New data file"
 msgstr ""
 
-#: src/libpspp/hash.c:545
-#, c-format
-msgid "hash table:"
+#: src/ui/gui/psppire-data-window.c:1218
+msgid "Import text data file"
 msgstr ""
 
-#: src/libpspp/tmpfile.c:55
-#, c-format
-msgid "failed to create temporary file"
+#: src/ui/gui/psppire-data-window.c:1234 src/ui/gui/psppire-data-window.c:1250
+msgid "Save data to file"
 msgstr ""
 
-#: src/libpspp/tmpfile.c:96
-#, c-format
-msgid "seeking in temporary file"
+#: src/ui/gui/psppire-data-window.c:1288
+msgid "Show/hide value labels"
 msgstr ""
 
-#: src/libpspp/tmpfile.c:115
-#, c-format
-msgid "reading temporary file"
+#: src/ui/gui/psppire-data-window.c:1308
+msgid "Delete the cases at the selected position(s)"
 msgstr ""
 
-#: src/libpspp/tmpfile.c:117
-#, c-format
-msgid "unexpected end of file reading temporary file"
+#: src/ui/gui/psppire-data-window.c:1326
+msgid "Delete the variables at the selected position(s)"
 msgstr ""
 
-#: src/libpspp/tmpfile.c:136
-#, c-format
-msgid "writing to temporary file"
+#: src/ui/gui/psppire-data-window.c:1344
+msgid "Create a new variable at the current position"
 msgstr ""
 
-#: src/math/percentiles.c:35
-msgid "HAverage"
+#: src/ui/gui/psppire-data-window.c:1359
+msgid "Create a new case at the current position"
 msgstr ""
 
-#: src/math/percentiles.c:36
-msgid "Weighted Average"
+#: src/ui/gui/psppire-data-window.c:1375
+msgid "Jump to a Case in the Data Sheet"
 msgstr ""
 
-#: src/math/percentiles.c:37
-msgid "Rounded"
+#: src/ui/gui/psppire-data-window.c:1391
+msgid "Weight cases by variable"
 msgstr ""
 
-#: src/math/percentiles.c:38
-msgid "Empirical"
+#: src/ui/gui/psppire-data-window.c:1405
+msgid "Transpose the cases with the variables"
 msgstr ""
 
-#: src/math/percentiles.c:39
-msgid "Empirical with averaging"
+#: src/ui/gui/psppire-data-window.c:1419
+msgid "Split the active file"
 msgstr ""
 
-#: src/output/afm.c:149
-#, c-format
-msgid "opening font metrics file \"%s\""
+#: src/ui/gui/psppire-data-window.c:1434
+msgid "Sort cases in the active file"
 msgstr ""
 
-#: src/output/afm.c:239
-msgid "first line must be StartFontMetrics"
+#: src/ui/gui/psppire-data-window.c:1448
+msgid "Select cases from the active file"
 msgstr ""
 
-#: src/output/afm.c:266
-#, c-format
-msgid "unsupported MappingScheme %d"
+#: src/ui/gui/psppire-data-window.c:1462
+msgid "Compute new values for a variable"
 msgstr ""
 
-#: src/output/afm.c:287
-msgid "required FontName is missing"
+#: src/ui/gui/psppire-data-window.c:1476
+msgid "Perform one way analysis of variance"
 msgstr ""
 
-#: src/output/afm.c:394
-msgid "CharMetrics line must start with C or CH"
+#: src/ui/gui/psppire-data-window.c:1491
+msgid "Calculate T Test for samples from independent groups"
 msgstr ""
 
-#: src/output/afm.c:535
-#, c-format
-msgid "reference to unknown character \"%s\""
+#: src/ui/gui/psppire-data-window.c:1505
+msgid "Calculate T Test for paired samples"
 msgstr ""
 
-#: src/output/afm.c:593
-msgid "expected end of file"
+#: src/ui/gui/psppire-data-window.c:1519
+msgid "Calculate T Test for sample from a single distribution"
 msgstr ""
 
-#: src/output/afm.c:605
-msgid "syntax error expecting end of line"
+#: src/ui/gui/psppire-data-window.c:1534
+msgid "Commentary text for the data file"
 msgstr ""
 
-#: src/output/afm.c:623 src/output/afm.c:660
-msgid "number out of valid range"
+#: src/ui/gui/psppire-data-window.c:1560
+msgid "Rank Cases"
 msgstr ""
 
-#: src/output/afm.c:625 src/output/afm.c:662
-msgid "invalid numeric syntax"
+#: src/ui/gui/psppire-data-window.c:1574
+msgid "Recode values into the same variables"
 msgstr ""
 
-#: src/output/afm.c:641
-msgid "syntax error expecting integer"
+#: src/ui/gui/psppire-data-window.c:1588
+msgid "Recode values into different variables"
 msgstr ""
 
-#: src/output/afm.c:679
-msgid "syntax error expecting number"
+#: src/ui/gui/psppire-data-window.c:1602
+msgid "Jump to variable"
 msgstr ""
 
-#: src/output/afm.c:692
-msgid "syntax error in hex constant"
+#: src/ui/gui/psppire-data-window.c:1615
+msgid "Calculate descriptive statistics (mean, variance, ...)"
 msgstr ""
 
-#: src/output/afm.c:707
-msgid "syntax error expecting hex constant"
+#: src/ui/gui/psppire-data-window.c:1629
+msgid "Generate frequency statistics"
 msgstr ""
 
-#: src/output/afm.c:745
-msgid "unexpected end of line"
+#: src/ui/gui/psppire-data-window.c:1643
+msgid "Generate crosstabulations"
 msgstr ""
 
-#: src/output/afm.c:795
-msgid "unexpected end of line expecting string"
+#: src/ui/gui/psppire-data-window.c:1658
+msgid "Examine Data by Factors"
 msgstr ""
 
-#: src/output/ascii.c:251
-#, c-format
-msgid ""
-"ascii: page excluding margins and headers must be at least 59 characters "
-"wide by 15 lines long, but as configured is only %d characters by %d lines"
+#: src/ui/gui/psppire-data-window.c:1672
+msgid "Estimate parameters of the linear model"
 msgstr ""
 
-#: src/output/ascii.c:329
-#, c-format
-msgid ""
-"ascii: bad index value for `box' key: syntax is box[INDEX], 0 <= INDEX < %d "
-"decimal, with INDEX expressed in base 4"
+#: src/ui/gui/psppire-data-window.c:1686 src/ui/gui/reliability.glade:7
+msgid "Reliability Analysis"
 msgstr ""
 
-#: src/output/ascii.c:336
-#, c-format
-msgid "ascii: multiple values for %s"
+#: src/ui/gui/psppire-data-window.c:1849
+msgid "Split the window vertically and horizontally"
 msgstr ""
 
-#: src/output/ascii.c:344
-#, c-format
-msgid "ascii: unknown parameter `%s'"
+#: src/ui/gui/psppire-data-window.c:1891
+msgid "Data Editor"
 msgstr ""
 
-#: src/output/ascii.c:360
-#, c-format
-msgid "ascii: only screen devices may have `auto' length or width"
+#: src/ui/gui/psppire-output-window.c:269
+msgid "Output Viewer"
 msgstr ""
 
-#: src/output/ascii.c:374
+#: src/ui/gui/psppire-syntax-window.c:265
 #, c-format
-msgid "ascii: positive integer required as `%s' value"
+msgid "Saved file \"%s\""
 msgstr ""
 
-#: src/output/ascii.c:402
-#, c-format
-msgid "ascii: `emphasis' value must be `bold', `underline', or `none'"
+#: src/ui/gui/psppire-syntax-window.c:284
+msgid "Save Syntax"
 msgstr ""
 
-#: src/output/ascii.c:415
-#, c-format
-msgid "ascii: zero or positive integer required as `%s' value"
+#: src/ui/gui/psppire-syntax-window.c:292
+#: src/ui/gui/psppire-syntax-window.c:379
+msgid "Syntax Files (*.sps) "
 msgstr ""
 
-#: src/output/ascii.c:446
-#, c-format
-msgid "ascii: boolean value expected for `%s'"
+#: src/ui/gui/psppire-syntax-window.c:371
+msgid "Open Syntax"
 msgstr ""
 
-#: src/output/ascii.c:478 src/output/html.c:187
-#, c-format
-msgid "`chart-files' value must contain `#'"
+#: src/ui/gui/psppire-syntax-window.c:551
+msgid "Syntax Editor"
 msgstr ""
 
-#: src/output/ascii.c:524
+#: src/ui/gui/psppire-syntax-window.c:565
 #, c-format
-msgid "ascii: opening output file \"%s\""
+msgid "Cannot load syntax file '%s'"
 msgstr ""
 
-#: src/output/ascii.c:587
-#, c-format
-msgid "ascii: bad line (%d,%d)-(%d,%d) out of (%d,%d)\n"
+#: src/ui/gui/psppire-var-sheet.c:533 src/ui/gui/psppire-var-store.c:832
+msgid "Name"
 msgstr ""
 
-#: src/output/ascii.c:809 src/output/postscript.c:826
-#, c-format
-msgid "%s - Page %d"
+#: src/ui/gui/psppire-var-sheet.c:534 src/ui/gui/psppire-var-store.c:833
+#: src/ui/gui/psppire.glade:2099
+msgid "Type"
 msgstr ""
 
-#: src/output/ascii.c:861
-#, c-format
-msgid "ascii: closing output file \"%s\""
+#: src/ui/gui/psppire-var-sheet.c:535 src/ui/gui/psppire-var-store.c:834
+#: src/ui/gui/psppire.glade:2020
+msgid "Width"
 msgstr ""
 
-#: src/output/chart.c:154
-#, c-format
-msgid "creating \"%s\""
+#: src/ui/gui/psppire-var-sheet.c:536 src/ui/gui/psppire-var-store.c:835
+msgid "Decimals"
 msgstr ""
 
-#: src/output/charts/plot-hist.c:138
-msgid "HISTOGRAM"
+#: src/ui/gui/psppire-var-sheet.c:538 src/ui/gui/psppire-var-store.c:837
+msgid "Values"
 msgstr ""
 
-#: src/output/html.c:71
-#, c-format
-msgid "opening HTML output file: %s"
+#: src/ui/gui/psppire-var-sheet.c:539 src/ui/gui/psppire-var-store.c:838
+msgid "Missing"
 msgstr ""
 
-#: src/output/html.c:82
-msgid "PSPP Output"
+#: src/ui/gui/psppire-var-sheet.c:541 src/ui/gui/psppire-var-store.c:840
+msgid "Align"
 msgstr ""
 
-#: src/output/html.c:170
-#, c-format
-msgid "unknown configuration parameter `%s' for HTML device driver"
+#: src/ui/gui/psppire-var-sheet.c:542 src/ui/gui/psppire-var-store.c:841
+msgid "Measure"
 msgstr ""
 
-#: src/output/journal.c:69
-#, c-format
-msgid "error writing \"%s\""
+#: src/ui/gui/psppire-var-store.c:622 src/ui/gui/var-sheet-dialogs.glade:43
+msgid "Comma"
 msgstr ""
 
-#: src/output/journal.c:94
-#, c-format
-msgid "error creating \"%s\""
+#: src/ui/gui/psppire-var-store.c:623 src/ui/gui/var-sheet-dialogs.glade:59
+msgid "Dot"
 msgstr ""
 
-#: src/output/output.c:168
-#, c-format
-msgid "unknown output driver `%s'"
+#: src/ui/gui/psppire-var-store.c:624
+msgid "Scientific"
 msgstr ""
 
-#: src/output/output.c:170
-#, c-format
-msgid "output driver `%s' referenced but never defined"
+#: src/ui/gui/psppire-var-store.c:625 src/ui/gui/var-sheet-dialogs.glade:91
+msgid "Date"
 msgstr ""
 
-#: src/output/output.c:261
-#, c-format
-msgid "using default output driver configuration"
+#: src/ui/gui/psppire-var-store.c:626 src/ui/gui/var-sheet-dialogs.glade:107
+msgid "Dollar"
 msgstr ""
 
-#: src/output/output.c:290
-#, c-format
-msgid "cannot find output initialization file (use `-vv' to view search path)"
+#: src/ui/gui/psppire-var-store.c:627
+msgid "Custom"
 msgstr ""
 
-#: src/output/output.c:298
+#: src/ui/gui/psppire-window.c:97
 #, c-format
-msgid "cannot open \"%s\""
+msgid "%s %s PSPPIRE %s"
 msgstr ""
 
-#: src/output/output.c:310
+#: src/ui/gui/psppire-window.c:480
 #, c-format
-msgid "reading \"%s\""
+msgid "Save the changes to \"%s\" before closing?"
 msgstr ""
 
-#: src/output/output.c:332 src/ui/gui/message-dialog.c:99
+#: src/ui/gui/psppire-window.c:487
 #, c-format
-msgid "syntax error"
+msgid ""
+"If you don't save, changes from the last %ld seconds will be permanently "
+"lost."
 msgstr ""
 
-#: src/output/output.c:341
-#, c-format
-msgid "error closing \"%s\""
+#: src/ui/gui/psppire-window.c:491
+msgid "Close _without saving"
 msgstr ""
 
-#: src/output/output.c:349
-#, c-format
-msgid "no active output drivers"
+#: src/ui/gui/recode-dialog.c:881
+msgid "Recode into Different Variables"
 msgstr ""
 
-#: src/output/output.c:352
-#, c-format
-msgid "error reading device definition file"
+#: src/ui/gui/recode-dialog.c:884
+msgid "Recode into Same Variables"
 msgstr ""
 
-#: src/output/output.c:470
-#, c-format
-msgid ""
-"Driver classes:\n"
-"\t"
+#: src/ui/gui/recode-dialog.c:912 src/ui/gui/recode-dialog.c:1014
+msgid "Old"
 msgstr ""
 
-#: src/output/output.c:502
-#, c-format
-msgid "syntax error parsing options for \"%s\" driver"
+#: src/ui/gui/recode-dialog.c:927 src/ui/gui/recode-dialog.c:1022
+msgid "New"
 msgstr ""
 
-#: src/output/output.c:518
-#, c-format
-msgid ""
-"reached end of options inside quoted string parsing options for \"%s\" driver"
+#: src/ui/gui/recode-dialog.c:1270
+msgid "Recode into Different Variables: Old and New Values "
 msgstr ""
 
-#: src/output/output.c:588
-#, c-format
-msgid "syntax error in string constant parsing options for \"%s\" driver"
+#: src/ui/gui/recode-dialog.c:1271
+msgid "Recode into Same Variables: Old and New Values"
 msgstr ""
 
-#: src/output/output.c:636
-#, c-format
-msgid "syntax error expecting `=' parsing options for driver \"%s\""
+#: src/ui/gui/regression-dialog.c:41
+msgid "Coeff"
 msgstr ""
 
-#: src/output/output.c:687
-#, c-format
-msgid "unknown output driver class `%.*s'"
+#: src/ui/gui/regression-dialog.c:42
+msgid "R"
 msgstr ""
 
-#: src/output/output.c:702
-#, c-format
-msgid "unknown device type `%.*s'"
+#: src/ui/gui/regression-dialog.c:43
+msgid "Anova"
 msgstr ""
 
-#: src/output/output.c:719
-#, c-format
-msgid "cannot initialize output driver `%s' of class `%s'"
-msgstr "cannot initialise output driver `%s' of class `%s'"
+#: src/ui/gui/regression-dialog.c:44
+msgid "Bcov"
+msgstr ""
 
-#: src/output/output.c:765
+#: src/ui/gui/select-cases-dialog.c:82
 #, c-format
-msgid "driver definition line missing driver name or class name"
+msgid "Approximately %3d%% of all cases."
 msgstr ""
 
-#: src/output/output.c:868
+#: src/ui/gui/select-cases-dialog.c:83
 #, c-format
-msgid "`%s' is not a valid length."
+msgid "Exactly %3d cases from the first %3d cases."
 msgstr ""
 
-#: src/output/output.c:960
+#: src/ui/gui/select-cases-dialog.c:223
 #, c-format
-msgid "unknown paper type `%.*s'"
+msgid "%d thru %d"
 msgstr ""
 
-#: src/output/output.c:978
+#: src/ui/gui/text-data-import-dialog.c:461
 #, c-format
-msgid "error opening \"%s\""
+msgid "Could not open \"%s\": %s"
 msgstr ""
 
-#: src/output/output.c:989
+#: src/ui/gui/text-data-import-dialog.c:477
 #, c-format
-msgid "error reading \"%s\""
+msgid "Error reading \"%s\": %s"
 msgstr ""
 
-#: src/output/output.c:1006
+#: src/ui/gui/text-data-import-dialog.c:480
 #, c-format
-msgid "paper size file \"%s\" does not state a paper size"
+msgid ""
+"Failed to read \"%s\", because it contains a line over %d bytes long and "
+"therefore appears not to be a text file."
 msgstr ""
 
-#: src/output/output.c:1066
+#: src/ui/gui/text-data-import-dialog.c:494
 #, c-format
-msgid "syntax error in paper size `%s'"
+msgid "\"%s\" is empty."
 msgstr ""
 
-#: src/output/postscript.c:158
-#, c-format
-msgid "opening PostScript output file \"%s\""
+#: src/ui/gui/text-data-import-dialog.c:539
+msgid "Import Delimited Text Data"
 msgstr ""
 
-#: src/output/postscript.c:196
-#, c-format
+#: src/ui/gui/text-data-import-dialog.c:590
+msgid "Importing Delimited Text Data"
+msgstr ""
+
+#: src/ui/gui/text-data-import-dialog.c:749
 msgid ""
-"The defined PostScript page is not long enough to hold margins and headers, "
-"plus least 15 lines of the default fonts.  In fact, there's only room for %d "
-"lines of each font at the default size of %d.%03d points."
+"This assistant will guide you through the process of importing data into "
+"PSPP from a text file with one line per case,  in which fields are separated "
+"by tabs, commas, or other delimiters.\n"
+"\n"
 msgstr ""
 
-#: src/output/postscript.c:246
+#: src/ui/gui/text-data-import-dialog.c:755
 #, c-format
-msgid "closing PostScript output file \"%s\""
-msgstr ""
+msgid "The selected file contains %zu line of text.  "
+msgid_plural "The selected file contains %zu lines of text.  "
+msgstr[0] ""
+msgstr[1] ""
 
-#: src/output/postscript.c:309
+#: src/ui/gui/text-data-import-dialog.c:763
 #, c-format
-msgid "unknown configuration parameter `%s' for PostScript device driver"
-msgstr ""
+msgid "The selected file contains approximately %lu line of text.  "
+msgid_plural "The selected file contains approximately %lu lines of text.  "
+msgstr[0] ""
+msgstr[1] ""
 
-#: src/output/postscript.c:325
+#: src/ui/gui/text-data-import-dialog.c:769
 #, c-format
 msgid ""
-"unknown orientation `%s' (valid orientations are `portrait' and `landscape')"
+"Only the first %zu line of the file will be shown for preview purposes in "
+"the following screens.  "
+msgid_plural ""
+"Only the first %zu lines of the file will be shown for preview purposes in "
+"the following screens.  "
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/ui/gui/text-data-import-dialog.c:776
+msgid "You may choose below how much of the file should actually be imported."
 msgstr ""
 
-#: src/output/postscript.c:337
-#, c-format
-msgid "boolean value expected for %s"
+#: src/ui/gui/text-data-import-dialog.c:1523
+#: src/ui/gui/text-data-import-dialog.c:1768
+msgid "This input line has too few separators to fill in this field."
 msgstr ""
 
-#: src/output/postscript.c:350
+#: src/ui/gui/text-data-import-dialog.c:1759
 #, c-format
-msgid "positive integer value required for `%s'"
+msgid "Field content \"%.*s\" cannot be parsed in format %s."
 msgstr ""
 
-#: src/output/postscript.c:355
+#: src/ui/gui/t-test-options.c:60
 #, c-format
-msgid "default font size must be at least 1 point (value of 1000 for key `%s')"
-msgstr ""
-
-#: src/output/postscript.c:1176
-#, c-format
-msgid "\"%s\": bad font specification"
-msgstr ""
-
-#: src/output/postscript.c:1184
-#, c-format
-msgid "could not find AFM file \"%s\""
-msgstr ""
-
-#: src/output/postscript.c:1198
-#, c-format
-msgid "could not find font \"%s\""
+msgid "Confidence Interval: %2d %%"
 msgstr ""
 
-#: src/output/postscript.c:1207
-#, c-format
-msgid "could not find encoding \"%s\""
+#: src/ui/gui/t-test-paired-samples.c:226
+msgid "Var 1"
 msgstr ""
 
-#: src/output/postscript.c:1307
-#, c-format
-msgid "cannot open font file \"%s\""
+#: src/ui/gui/t-test-paired-samples.c:227
+msgid "Var 2"
 msgstr ""
 
-#: src/output/postscript.c:1348
+#: src/ui/gui/variable-info-dialog.c:76
 #, c-format
-msgid "reading font file \"%s\""
+msgid "Label: %s\n"
 msgstr ""
 
-#: src/output/postscript.c:1370
+#: src/ui/gui/variable-info-dialog.c:83
 #, c-format
-msgid "cannot open font encoding file \"%s\""
+msgid "Type: %s\n"
 msgstr ""
 
-#: src/output/postscript.c:1399
+#: src/ui/gui/variable-info-dialog.c:87
 #, c-format
-msgid "invalid numeric format"
+msgid "Missing Values: %s\n"
 msgstr ""
 
-#: src/output/postscript.c:1421
+#: src/ui/gui/variable-info-dialog.c:92
 #, c-format
-msgid "closing Postscript encoding \"%s\""
+msgid "Measurement Level: %s\n"
 msgstr ""
 
-#: src/output/table.c:237
-#, c-format
-msgid "bad vline: x=%d+%d=%d y=(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n"
+#: src/ui/gui/variable-info-dialog.c:107
+msgid "Value Labels:\n"
 msgstr ""
 
-#: src/output/table.c:308
+#: src/ui/gui/variable-info-dialog.c:117
 #, c-format
-msgid ""
-"bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n"
+msgid "%s %s\n"
 msgstr ""
 
-#: src/ui/gui/about.c:64
-msgid "A program for the analysis of sampled data"
+#: src/ui/gui/weight-cases-dialog.c:79 src/ui/gui/psppire.glade:47
+#: src/ui/gui/psppire.glade:130
+msgid "Do not weight cases"
 msgstr ""
 
-#. TRANSLATORS: Use this string to list the people who have helped with
-#. translation to your language.
-#: src/ui/gui/about.c:74
-msgid "translator-credits"
-msgstr "John Darrington"
-
-#: src/ui/gui/comments-dialog.c:58
+#: src/ui/gui/weight-cases-dialog.c:85
 #, c-format
-msgid "Column Number: %d"
-msgstr ""
-
-#: src/ui/gui/crosstabs-dialog.c:40
-msgid "Chisq"
-msgstr ""
-
-#: src/ui/gui/crosstabs-dialog.c:42
-msgid "CC"
-msgstr ""
-
-#: src/ui/gui/crosstabs-dialog.c:44
-msgid "UC"
-msgstr ""
-
-#: src/ui/gui/crosstabs-dialog.c:45
-msgid "BTau"
-msgstr ""
-
-#: src/ui/gui/crosstabs-dialog.c:46
-msgid "CTau"
-msgstr ""
-
-#: src/ui/gui/crosstabs-dialog.c:47
-msgid "Risk"
-msgstr ""
-
-#: src/ui/gui/crosstabs-dialog.c:49
-msgid "D"
-msgstr ""
-
-#: src/ui/gui/crosstabs-dialog.c:52
-msgid "Corr"
-msgstr ""
-
-#: src/ui/gui/crosstabs-dialog.c:53 src/ui/gui/crosstabs-dialog.c:64
-#: src/ui/gui/crosstabs-dialog.c:99 src/ui/gui/crosstabs-dialog.c:107
-#: src/ui/gui/psppire-var-store.c:612 src/ui/gui/var-display.c:16
-#: src/ui/gui/variable-info-dialog.c:40
-msgid "None"
-msgstr ""
-
-#: src/ui/gui/crosstabs-dialog.c:56
-msgid "Count"
-msgstr ""
-
-#: src/ui/gui/crosstabs-dialog.c:57
-msgid "Row"
-msgstr ""
-
-#: src/ui/gui/crosstabs-dialog.c:58
-msgid "Column"
-msgstr ""
-
-#: src/ui/gui/crosstabs-dialog.c:60
-msgid "Expected"
-msgstr ""
-
-#: src/ui/gui/crosstabs-dialog.c:62
-msgid "Std. Residual"
-msgstr ""
-
-#: src/ui/gui/crosstabs-dialog.c:63
-msgid "Adjusted Std. Residual"
+msgid "Weight cases by %s"
 msgstr ""
 
 #: src/ui/gui/crosstabs.glade:50
@@ -4871,8 +4620,24 @@ msgstr ""
 msgid "Statistics"
 msgstr ""
 
-#: src/ui/gui/customentry.c:334
-msgid "Style of bevel around the custom entry button"
+#: src/ui/gui/descriptives-dialog.glade:122 src/ui/gui/frequencies.glade:139
+msgid "Statistics:"
+msgstr ""
+
+#: src/ui/gui/descriptives-dialog.glade:184
+msgid "Exclude entire case if any selected variable is missing"
+msgstr ""
+
+#: src/ui/gui/descriptives-dialog.glade:194
+msgid "Include user-missing data in analysis"
+msgstr ""
+
+#: src/ui/gui/descriptives-dialog.glade:207
+msgid "Save Z-scores of selected variables as new variables"
+msgstr ""
+
+#: src/ui/gui/descriptives-dialog.glade:223
+msgid "Options:"
 msgstr ""
 
 #: src/ui/gui/data-editor.glade:10 src/ui/gui/output-viewer.glade:22
@@ -4920,11 +4685,6 @@ msgstr ""
 msgid "_Edit"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:174 src/ui/gui/data-editor.glade:843
-#: src/ui/gui/psppire-data-window.c:847 src/ui/gui/psppire-data-window.c:937
-msgid "Insert Variable"
-msgstr ""
-
 #: src/ui/gui/data-editor.glade:182
 msgid "Insert Cases"
 msgstr ""
@@ -5114,14 +4874,6 @@ msgstr ""
 msgid "_About"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:702 src/ui/gui/psppire-data-window.c:383
-msgid "Open"
-msgstr ""
-
-#: src/ui/gui/data-editor.glade:712 src/ui/gui/psppire-data-window.c:585
-msgid "Save"
-msgstr ""
-
 #: src/ui/gui/data-editor.glade:722
 msgid "Print"
 msgstr ""
@@ -5146,10 +4898,6 @@ msgstr ""
 msgid "Find"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:831 src/ui/gui/psppire-data-window.c:901
-msgid "Insert Case"
-msgstr ""
-
 #: src/ui/gui/data-editor.glade:863
 msgid "Split File"
 msgstr ""
@@ -5159,631 +4907,162 @@ msgid "Weight Cases"
 msgstr ""
 
 #: src/ui/gui/data-editor.glade:886
-msgid "Select Cases"
-msgstr ""
-
-#: src/ui/gui/data-editor.glade:906 src/ui/gui/var-sheet-dialogs.glade:401
-#: src/ui/gui/var-sheet-dialogs.glade:582
-msgid "Value Labels"
-msgstr ""
-
-#: src/ui/gui/data-editor.glade:917
-msgid "Use Sets"
-msgstr ""
-
-#: src/ui/gui/data-editor.glade:938
-msgid "Information Area"
-msgstr ""
-
-#: src/ui/gui/data-editor.glade:957
-msgid "Processor Area"
-msgstr ""
-
-#: src/ui/gui/data-editor.glade:982
-msgid "Case Counter Area"
-msgstr ""
-
-#: src/ui/gui/data-editor.glade:1007
-msgid "Filter Use Status Area"
-msgstr ""
-
-#: src/ui/gui/data-editor.glade:1033
-msgid "Weight Status Area"
-msgstr ""
-
-#: src/ui/gui/data-editor.glade:1059
-msgid "Split File Status Area"
-msgstr ""
-
-#: src/ui/gui/descriptives-dialog.c:40 src/ui/gui/frequencies-dialog.c:41
-msgid "Standard deviation"
-msgstr ""
-
-#: src/ui/gui/descriptives-dialog.c:45
-msgid "Standard error"
-msgstr ""
-
-#: src/ui/gui/descriptives-dialog.glade:122 src/ui/gui/frequencies.glade:139
-msgid "Statistics:"
-msgstr ""
-
-#: src/ui/gui/descriptives-dialog.glade:184
-msgid "Exclude entire case if any selected variable is missing"
-msgstr ""
-
-#: src/ui/gui/descriptives-dialog.glade:194
-msgid "Include user-missing data in analysis"
-msgstr ""
-
-#: src/ui/gui/descriptives-dialog.glade:207
-msgid "Save Z-scores of selected variables as new variables"
-msgstr ""
-
-#: src/ui/gui/descriptives-dialog.glade:223
-msgid "Options:"
-msgstr ""
-
-#: src/ui/gui/examine.glade:49
-msgid "Label Cases by:"
-msgstr ""
-
-#: src/ui/gui/examine.glade:100
-msgid "Factor List:"
-msgstr ""
-
-#: src/ui/gui/examine.glade:150
-msgid "Dependent List:"
-msgstr ""
-
-#: src/ui/gui/examine.glade:257 src/ui/gui/t-test.glade:69
-#: src/ui/gui/t-test.glade:629 src/ui/gui/t-test.glade:780
-msgid "Options..."
-msgstr ""
-
-#: src/ui/gui/examine.glade:320
-msgid "Extremes"
-msgstr ""
-
-#: src/ui/gui/examine.glade:388
-msgid "Exclude cases listwise"
-msgstr ""
-
-#: src/ui/gui/examine.glade:399
-msgid "Exclude cases pairwise"
-msgstr ""
-
-#: src/ui/gui/examine.glade:414
-msgid "Repeat values"
-msgstr ""
-
-#: src/ui/gui/examine.glade:432 src/ui/gui/t-test.glade:460
-#: src/ui/gui/var-sheet-dialogs.glade:649
-msgid "Missing Values"
-msgstr ""
-
-#: src/ui/gui/find-dialog.c:652
-#, c-format
-msgid "Bad regular expression: %s"
-msgstr ""
-
-#: src/ui/gui/find.glade:80
-msgid "Variable:"
-msgstr ""
-
-#: src/ui/gui/find.glade:111 src/ui/gui/recode.glade:185
-#: src/ui/gui/var-sheet-dialogs.glade:512
-msgid "Value:"
-msgstr ""
-
-#: src/ui/gui/find.glade:137
-msgid "Search value labels"
-msgstr ""
-
-#: src/ui/gui/find.glade:161
-msgid "Regular expression Match"
-msgstr ""
-
-#: src/ui/gui/find.glade:172
-msgid "Search substrings"
-msgstr ""
-
-#: src/ui/gui/find.glade:185
-msgid "Wrap around"
-msgstr ""
-
-#: src/ui/gui/find.glade:198
-msgid "Search backward"
-msgstr ""
-
-#: src/ui/gui/frequencies-dialog.c:44
-msgid "Standard error of the mean"
-msgstr ""
-
-#: src/ui/gui/frequencies-dialog.c:47
-msgid "Standard error of the skewness"
-msgstr ""
-
-#: src/ui/gui/frequencies-dialog.c:51
-msgid "Standard error of the kurtosis"
-msgstr ""
-
-#: src/ui/gui/frequencies.glade:98 src/ui/gui/psppire.glade:252
-#: src/ui/gui/rank.glade:103
-msgid "Variable(s):"
-msgstr ""
-
-#: src/ui/gui/frequencies.glade:168
-msgid "Display Frequency Table"
-msgstr ""
-
-#: src/ui/gui/frequencies.glade:264
-msgid "Ascending Order"
-msgstr ""
-
-#: src/ui/gui/frequencies.glade:275
-msgid "Descending Order"
-msgstr ""
-
-#: src/ui/gui/frequencies.glade:290
-msgid "Ascending Counts"
-msgstr ""
-
-#: src/ui/gui/frequencies.glade:305
-msgid "Descending Counts"
-msgstr ""
-
-#: src/ui/gui/frequencies.glade:323
-msgid "Order by"
-msgstr ""
-
-#: src/ui/gui/frequencies.glade:355
-msgid "Supress tables with more than N categories"
-msgstr ""
-
-#: src/ui/gui/frequencies.glade:371
-msgid "Maximum no of categories"
-msgstr ""
-
-#: src/ui/gui/helper.c:197
-msgid "Sorry. The help system hasn't yet been implemented."
-msgstr ""
-
-#: src/ui/gui/helper.c:242
-#, c-format
-msgid "Cannot open reference manual: %s"
-msgstr ""
-
-#: src/ui/gui/main.c:43
-msgid "Don't show the splash screen"
-msgstr ""
-
-#: src/ui/gui/main.c:173
-msgid "PSPPIRE --- A user interface for PSPP"
-msgstr ""
-
-#: src/ui/gui/main.c:175
-msgid "Miscellaneous options:"
-msgstr ""
-
-#: src/ui/gui/main.c:177 src/ui/terminal/main.c:125
-msgid "Options affecting syntax and behavior:"
-msgstr "Options affecting syntax and behaviour:"
-
-#: src/ui/gui/message-dialog.c:103
-msgid "data file error"
-msgstr ""
-
-#: src/ui/gui/message-dialog.c:108
-msgid "PSPP error"
-msgstr ""
-
-#: src/ui/gui/message-dialog.c:116
-msgid "syntax warning"
-msgstr ""
-
-#: src/ui/gui/message-dialog.c:120
-msgid "data file warning"
-msgstr ""
-
-#: src/ui/gui/message-dialog.c:125
-msgid "PSPP warning"
-msgstr ""
-
-#: src/ui/gui/message-dialog.c:134
-msgid "syntax information"
-msgstr ""
-
-#: src/ui/gui/message-dialog.c:138
-msgid "data file information"
-msgstr ""
-
-#: src/ui/gui/message-dialog.c:143
-msgid "PSPP information"
-msgstr ""
-
-#: src/ui/gui/message-dialog.c:222
-msgid "The PSPP processing engine reported the following message:"
-msgid_plural "The PSPP processing engine reported the following messages:"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/ui/gui/message-dialog.c:229
-#, c-format
-msgid "The PSPP processing engine reported %d message."
-msgid_plural "The PSPP processing engine reported %d messages."
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/ui/gui/message-dialog.c:236
-#, c-format
-msgid "%d of these messages are displayed below."
-msgid_plural "%d of these messages are displayed below."
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/ui/gui/message-dialog.glade:10
-msgid "Messages Reported"
-msgstr ""
-
-#: src/ui/gui/message-dialog.glade:47
-msgid ""
-"The PSPP processor reported # errors.  The first # and last # are shown "
-"below:"
-msgstr ""
-
-#: src/ui/gui/message-dialog.glade:101
-msgid "gtk-close"
-msgstr ""
-
-#: src/ui/gui/missing-val-dialog.c:113 src/ui/gui/missing-val-dialog.c:167
-msgid "Incorrect value for variable type"
-msgstr ""
-
-#: src/ui/gui/missing-val-dialog.c:134 src/ui/gui/missing-val-dialog.c:143
-msgid "Incorrect range specification"
-msgstr ""
-
-#: src/ui/gui/oneway-anova-dialog.c:331
-#, c-format
-msgid "Contrast %d of %d"
-msgstr ""
-
-#: src/ui/gui/oneway.glade:30
-msgid "_Factor:"
-msgstr ""
-
-#: src/ui/gui/oneway.glade:66
-msgid "Dependent _Variable(s):"
-msgstr ""
-
-#: src/ui/gui/oneway.glade:190
-msgid "_Homogeneity"
-msgstr ""
-
-#: src/ui/gui/oneway.glade:226
-msgid "_Contrasts..."
-msgstr ""
-
-#: src/ui/gui/oneway.glade:309
-msgid "gtk-go-back"
-msgstr ""
-
-#: src/ui/gui/oneway.glade:320
-msgid "gtk-go-forward"
-msgstr ""
-
-#: src/ui/gui/oneway.glade:343
-msgid "_Coefficients:"
-msgstr ""
-
-#: src/ui/gui/oneway.glade:389
-msgid "Coefficient Total: "
-msgstr ""
-
-#: src/ui/gui/oneway.glade:422
-msgid "Contrast 1 of 1"
-msgstr ""
-
-#: src/ui/gui/output-viewer.glade:32
-msgid "gtk-save"
-msgstr ""
-
-#: src/ui/gui/output-viewer.glade:41
-msgid "gtk-save-as"
-msgstr ""
-
-#: src/ui/gui/output-viewer.glade:65
-msgid "gtk-copy"
-msgstr ""
-
-#: src/ui/gui/psppire-buttonbox.c:143
-msgid "Buttons"
-msgstr ""
-
-#: src/ui/gui/psppire-buttonbox.c:144
-msgid "The mask that decides what buttons appear in the button box"
-msgstr ""
-
-#: src/ui/gui/psppire-buttonbox.c:273 src/ui/gui/psppire-buttonbox.c:435
-msgid "Continue"
-msgstr ""
-
-#: src/ui/gui/psppire-buttonbox.c:433
-msgid "OK"
-msgstr ""
-
-#: src/ui/gui/psppire-buttonbox.c:434
-msgid "Go To"
-msgstr ""
-
-#: src/ui/gui/psppire-buttonbox.c:436
-msgid "Cancel"
-msgstr ""
-
-#: src/ui/gui/psppire-buttonbox.c:437
-msgid "Help"
-msgstr ""
-
-#: src/ui/gui/psppire-buttonbox.c:438
-msgid "Reset"
-msgstr ""
-
-#: src/ui/gui/psppire-buttonbox.c:439
-msgid "Paste"
-msgstr ""
-
-#: src/ui/gui/psppire.c:247
-msgid "_Reset"
-msgstr ""
-
-#: src/ui/gui/psppire.c:248
-msgid "_Select"
-msgstr ""
-
-#: src/ui/gui/psppire-data-editor.c:951
-msgid "Data View"
-msgstr ""
-
-#: src/ui/gui/psppire-data-editor.c:954
-msgid "Variable View"
-msgstr ""
-
-#: src/ui/gui/psppire-data-store.c:744
-msgid "var"
-msgstr ""
-
-#: src/ui/gui/psppire-data-store.c:755 src/ui/gui/psppire-var-store.c:699
-#: src/ui/gui/psppire-var-store.c:709 src/ui/gui/psppire-var-store.c:719
-#: src/ui/gui/psppire-var-store.c:825
-#, c-format
-msgid "%d"
-msgstr ""
-
-#: src/ui/gui/psppire-data-window.c:213
-msgid "Transformations Pending"
-msgstr ""
-
-#: src/ui/gui/psppire-data-window.c:229
-msgid "Filter off"
-msgstr ""
-
-#: src/ui/gui/psppire-data-window.c:243
-#, c-format
-msgid "Filter by %s"
-msgstr ""
-
-#: src/ui/gui/psppire-data-window.c:264
-msgid "No Split"
-msgstr ""
-
-#: src/ui/gui/psppire-data-window.c:273
-msgid "Split by "
-msgstr ""
-
-#: src/ui/gui/psppire-data-window.c:301
-msgid "Weights off"
-msgstr ""
-
-#: src/ui/gui/psppire-data-window.c:315
-#, c-format
-msgid "Weight by %s"
-msgstr ""
-
-#: src/ui/gui/psppire-data-window.c:391 src/ui/gui/psppire-data-window.c:593
-msgid "System Files (*.sav)"
-msgstr ""
-
-#: src/ui/gui/psppire-data-window.c:397 src/ui/gui/psppire-data-window.c:599
-msgid "Portable Files (*.por) "
-msgstr ""
-
-#: src/ui/gui/psppire-data-window.c:403 src/ui/gui/psppire-data-window.c:605
-#: src/ui/gui/psppire-syntax-window.c:298
-#: src/ui/gui/psppire-syntax-window.c:385
-msgid "All Files"
-msgstr ""
-
-#: src/ui/gui/psppire-data-window.c:613
-msgid "System File"
-msgstr ""
-
-#: src/ui/gui/psppire-data-window.c:618
-msgid "Portable File"
-msgstr ""
-
-#: src/ui/gui/psppire-data-window.c:768
-msgid "Font Selection"
-msgstr ""
-
-#: src/ui/gui/psppire-data-window.c:836
-msgid "Sort Ascending"
-msgstr ""
-
-#: src/ui/gui/psppire-data-window.c:842
-msgid "Sort Descending"
-msgstr ""
-
-#: src/ui/gui/psppire-data-window.c:850 src/ui/gui/psppire-data-window.c:904
-#: src/ui/gui/psppire-data-window.c:940 src/ui/gui/psppire-data-window.c:1308
-#: src/ui/gui/psppire-data-window.c:1326
-msgid "Clear"
-msgstr ""
-
-#: src/ui/gui/psppire-data-window.c:1185
-msgid "Open a data file"
-msgstr ""
-
-#: src/ui/gui/psppire-data-window.c:1203
-msgid "New data file"
+msgid "Select Cases"
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1218
-msgid "Import text data file"
+#: src/ui/gui/data-editor.glade:906 src/ui/gui/var-sheet-dialogs.glade:401
+#: src/ui/gui/var-sheet-dialogs.glade:582
+msgid "Value Labels"
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1234 src/ui/gui/psppire-data-window.c:1251
-msgid "Save data to file"
+#: src/ui/gui/data-editor.glade:917
+msgid "Use Sets"
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1250
-msgid "Save As"
+#: src/ui/gui/data-editor.glade:938
+msgid "Information Area"
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1289
-msgid "Show/hide value labels"
+#: src/ui/gui/data-editor.glade:957
+msgid "Processor Area"
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1309
-msgid "Delete the cases at the selected position(s)"
+#: src/ui/gui/data-editor.glade:982
+msgid "Case Counter Area"
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1327
-msgid "Delete the variables at the selected position(s)"
+#: src/ui/gui/data-editor.glade:1007
+msgid "Filter Use Status Area"
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1345
-msgid "Create a new variable at the current position"
+#: src/ui/gui/data-editor.glade:1033
+msgid "Weight Status Area"
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1360
-msgid "Create a new case at the current position"
+#: src/ui/gui/data-editor.glade:1059
+msgid "Split File Status Area"
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1376
-msgid "Jump to a Case in the Data Sheet"
+#: src/ui/gui/examine.glade:49
+msgid "Label Cases by:"
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1392
-msgid "Weight cases by variable"
+#: src/ui/gui/examine.glade:100
+msgid "Factor List:"
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1406
-msgid "Transpose the cases with the variables"
+#: src/ui/gui/examine.glade:150
+msgid "Dependent List:"
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1420
-msgid "Split the active file"
+#: src/ui/gui/examine.glade:257 src/ui/gui/t-test.glade:69
+#: src/ui/gui/t-test.glade:629 src/ui/gui/t-test.glade:780
+msgid "Options..."
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1435
-msgid "Sort cases in the active file"
+#: src/ui/gui/examine.glade:310
+msgid "Descriptives"
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1449
-msgid "Select cases from the active file"
+#: src/ui/gui/examine.glade:320
+msgid "Extremes"
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1463
-msgid "Compute new values for a variable"
+#: src/ui/gui/examine.glade:388
+msgid "Exclude cases listwise"
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1477
-msgid "Perform one way analysis of variance"
+#: src/ui/gui/examine.glade:399
+msgid "Exclude cases pairwise"
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1492
-msgid "Calculate T Test for samples from independent groups"
+#: src/ui/gui/examine.glade:414
+msgid "Repeat values"
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1506
-msgid "Calculate T Test for paired samples"
+#: src/ui/gui/examine.glade:432 src/ui/gui/t-test.glade:460
+#: src/ui/gui/var-sheet-dialogs.glade:649
+msgid "Missing Values"
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1520
-msgid "Calculate T Test for sample from a single distribution"
+#: src/ui/gui/find.glade:80
+msgid "Variable:"
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1535
-msgid "Commentary text for the data file"
+#: src/ui/gui/find.glade:111 src/ui/gui/recode.glade:185
+#: src/ui/gui/var-sheet-dialogs.glade:512
+msgid "Value:"
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1561
-msgid "Rank Cases"
+#: src/ui/gui/find.glade:137
+msgid "Search value labels"
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1575
-msgid "Recode values into the same variables"
+#: src/ui/gui/find.glade:161
+msgid "Regular expression Match"
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1589
-msgid "Recode values into different variables"
+#: src/ui/gui/find.glade:172
+msgid "Search substrings"
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1603
-msgid "Jump to variable"
+#: src/ui/gui/find.glade:185
+msgid "Wrap around"
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1616
-msgid "Calculate descriptive statistics (mean, variance, ...)"
+#: src/ui/gui/find.glade:198
+msgid "Search backward"
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1630
-msgid "Generate frequency statistics"
+#: src/ui/gui/frequencies.glade:98 src/ui/gui/psppire.glade:252
+#: src/ui/gui/rank.glade:103
+msgid "Variable(s):"
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1644
-msgid "Generate crosstabulations"
+#: src/ui/gui/frequencies.glade:168
+msgid "Display Frequency Table"
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1659
-msgid "Examine Data by Factors"
+#: src/ui/gui/frequencies.glade:264
+msgid "Ascending Order"
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1673
-msgid "Estimate parameters of the linear model"
+#: src/ui/gui/frequencies.glade:275
+msgid "Descending Order"
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1687 src/ui/gui/reliability.glade:7
-msgid "Reliability Analysis"
+#: src/ui/gui/frequencies.glade:290
+msgid "Ascending Counts"
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1850
-msgid "Split the window vertically and horizontally"
+#: src/ui/gui/frequencies.glade:305
+msgid "Descending Counts"
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1892
-msgid "Data Editor"
+#: src/ui/gui/frequencies.glade:323
+msgid "Order by"
 msgstr ""
 
-#: src/ui/gui/psppire-dictview.c:207
-msgid "The dictionary to be displayed by this widget"
+#: src/ui/gui/frequencies.glade:355
+msgid "Supress tables with more than N categories"
 msgstr ""
 
-#: src/ui/gui/psppire-dictview.c:214
-msgid "A predicate function"
+#: src/ui/gui/frequencies.glade:371
+msgid "Maximum no of categories"
 msgstr ""
 
-#: src/ui/gui/psppire-dictview.c:221
-msgid "How many things can be selected"
+#: src/ui/gui/message-dialog.glade:10
+msgid "Messages Reported"
 msgstr ""
 
-#: src/ui/gui/psppire-dictview.c:528
-msgid "Prefer variable labels"
+#: src/ui/gui/message-dialog.glade:47
+msgid ""
+"The PSPP processor reported # errors.  The first # and last # are shown "
+"below:"
 msgstr ""
 
-#: src/ui/gui/psppire.glade:47 src/ui/gui/psppire.glade:130
-#: src/ui/gui/weight-cases-dialog.c:79
-msgid "Do not weight cases"
+#: src/ui/gui/message-dialog.glade:101
+msgid "gtk-close"
 msgstr ""
 
 #: src/ui/gui/psppire.glade:58
@@ -5943,11 +5222,6 @@ msgstr ""
 msgid "Use expression as label"
 msgstr ""
 
-#: src/ui/gui/psppire.glade:2020 src/ui/gui/psppire-var-sheet.c:532
-#: src/ui/gui/psppire-var-store.c:834
-msgid "Width"
-msgstr ""
-
 #: src/ui/gui/psppire.glade:2150
 msgid "Goto Case Number:"
 msgstr ""
@@ -5956,100 +5230,52 @@ msgstr ""
 msgid "Sample Size"
 msgstr ""
 
-#: src/ui/gui/psppire-output-window.c:269
-msgid "Output Viewer"
-msgstr ""
-
-#: src/ui/gui/psppire-syntax-window.c:265
-#, c-format
-msgid "Saved file \"%s\""
-msgstr ""
-
-#: src/ui/gui/psppire-syntax-window.c:284
-msgid "Save Syntax"
-msgstr ""
-
-#: src/ui/gui/psppire-syntax-window.c:292
-#: src/ui/gui/psppire-syntax-window.c:379
-msgid "Syntax Files (*.sps) "
-msgstr ""
-
-#: src/ui/gui/psppire-syntax-window.c:371
-msgid "Open Syntax"
-msgstr ""
-
-#: src/ui/gui/psppire-syntax-window.c:551
-msgid "Syntax Editor"
-msgstr ""
-
-#: src/ui/gui/psppire-syntax-window.c:565
-#, c-format
-msgid "Cannot load syntax file '%s'"
-msgstr ""
-
-#: src/ui/gui/psppire-var-sheet.c:530 src/ui/gui/psppire-var-store.c:832
-msgid "Name"
-msgstr ""
-
-#: src/ui/gui/psppire-var-sheet.c:533 src/ui/gui/psppire-var-store.c:835
-msgid "Decimals"
-msgstr ""
-
-#: src/ui/gui/psppire-var-sheet.c:535 src/ui/gui/psppire-var-store.c:837
-msgid "Values"
-msgstr ""
-
-#: src/ui/gui/psppire-var-sheet.c:538 src/ui/gui/psppire-var-store.c:840
-msgid "Align"
+#: src/ui/gui/oneway.glade:30
+msgid "_Factor:"
 msgstr ""
 
-#: src/ui/gui/psppire-var-sheet.c:539 src/ui/gui/psppire-var-store.c:841
-msgid "Measure"
+#: src/ui/gui/oneway.glade:66
+msgid "Dependent _Variable(s):"
 msgstr ""
 
-#: src/ui/gui/psppire-var-store.c:622 src/ui/gui/var-sheet-dialogs.glade:43
-msgid "Comma"
+#: src/ui/gui/oneway.glade:190
+msgid "_Homogeneity"
 msgstr ""
 
-#: src/ui/gui/psppire-var-store.c:623 src/ui/gui/var-sheet-dialogs.glade:59
-msgid "Dot"
+#: src/ui/gui/oneway.glade:226
+msgid "_Contrasts..."
 msgstr ""
 
-#: src/ui/gui/psppire-var-store.c:624
-msgid "Scientific"
+#: src/ui/gui/oneway.glade:309
+msgid "gtk-go-back"
 msgstr ""
 
-#: src/ui/gui/psppire-var-store.c:625 src/ui/gui/var-sheet-dialogs.glade:91
-msgid "Date"
+#: src/ui/gui/oneway.glade:320
+msgid "gtk-go-forward"
 msgstr ""
 
-#: src/ui/gui/psppire-var-store.c:626 src/ui/gui/var-sheet-dialogs.glade:107
-msgid "Dollar"
+#: src/ui/gui/oneway.glade:343
+msgid "_Coefficients:"
 msgstr ""
 
-#: src/ui/gui/psppire-var-store.c:627
-msgid "Custom"
+#: src/ui/gui/oneway.glade:389
+msgid "Coefficient Total: "
 msgstr ""
 
-#: src/ui/gui/psppire-window.c:97
-#, c-format
-msgid "%s %s PSPPIRE %s"
+#: src/ui/gui/oneway.glade:422
+msgid "Contrast 1 of 1"
 msgstr ""
 
-#: src/ui/gui/psppire-window.c:480
-#, c-format
-msgid "Save the changes to \"%s\" before closing?"
+#: src/ui/gui/output-viewer.glade:32
+msgid "gtk-save"
 msgstr ""
 
-#: src/ui/gui/psppire-window.c:487
-#, c-format
-msgid ""
-"If you don't save, changes from the last %ld seconds will be permanently "
-"lost."
+#: src/ui/gui/output-viewer.glade:41
+msgid "gtk-save-as"
 msgstr ""
 
-#: src/ui/gui/psppire-window.c:491
-msgid "Close _without saving"
+#: src/ui/gui/output-viewer.glade:65
+msgid "gtk-copy"
 msgstr ""
 
 #: src/ui/gui/rank.glade:57
@@ -6152,30 +5378,6 @@ msgstr ""
 msgid "Rank Assigned to Ties"
 msgstr ""
 
-#: src/ui/gui/recode-dialog.c:881
-msgid "Recode into Different Variables"
-msgstr ""
-
-#: src/ui/gui/recode-dialog.c:884
-msgid "Recode into Same Variables"
-msgstr ""
-
-#: src/ui/gui/recode-dialog.c:912 src/ui/gui/recode-dialog.c:1014
-msgid "Old"
-msgstr ""
-
-#: src/ui/gui/recode-dialog.c:927 src/ui/gui/recode-dialog.c:1022
-msgid "New"
-msgstr ""
-
-#: src/ui/gui/recode-dialog.c:1270
-msgid "Recode into Different Variables: Old and New Values "
-msgstr ""
-
-#: src/ui/gui/recode-dialog.c:1271
-msgid "Recode into Same Variables: Old and New Values"
-msgstr ""
-
 #: src/ui/gui/recode.glade:197
 msgid "System-Missing"
 msgstr ""
@@ -6247,25 +5449,13 @@ msgstr ""
 #: src/ui/gui/recode.glade:867
 msgid "Change"
 msgstr ""
-
-#: src/ui/gui/recode.glade:885
-msgid "Output Variable"
-msgstr ""
-
-#: src/ui/gui/recode.glade:965
-msgid "Old and New Values"
-msgstr ""
-
-#: src/ui/gui/regression-dialog.c:41
-msgid "Coeff"
-msgstr ""
-
-#: src/ui/gui/regression-dialog.c:43
-msgid "Anova"
+
+#: src/ui/gui/recode.glade:885
+msgid "Output Variable"
 msgstr ""
 
-#: src/ui/gui/regression-dialog.c:44
-msgid "Bcov"
+#: src/ui/gui/recode.glade:965
+msgid "Old and New Values"
 msgstr ""
 
 #: src/ui/gui/regression.glade:40
@@ -6306,21 +5496,6 @@ msgstr ""
 msgid "Variables in first split:"
 msgstr ""
 
-#: src/ui/gui/select-cases-dialog.c:82
-#, c-format
-msgid "Approximately %3d%% of all cases."
-msgstr ""
-
-#: src/ui/gui/select-cases-dialog.c:83
-#, c-format
-msgid "Exactly %3d cases from the first %3d cases."
-msgstr ""
-
-#: src/ui/gui/select-cases-dialog.c:223
-#, c-format
-msgid "%d thru %d"
-msgstr ""
-
 #: src/ui/gui/syntax-editor.glade:163
 msgid "_Run"
 msgstr ""
@@ -6341,83 +5516,6 @@ msgstr ""
 msgid "To End"
 msgstr ""
 
-#: src/ui/gui/text-data-import-dialog.c:461
-#, c-format
-msgid "Could not open \"%s\": %s"
-msgstr ""
-
-#: src/ui/gui/text-data-import-dialog.c:477
-#, c-format
-msgid "Error reading \"%s\": %s"
-msgstr ""
-
-#: src/ui/gui/text-data-import-dialog.c:480
-#, c-format
-msgid ""
-"Failed to read \"%s\", because it contains a line over %d bytes long and "
-"therefore appears not to be a text file."
-msgstr ""
-
-#: src/ui/gui/text-data-import-dialog.c:494
-#, c-format
-msgid "\"%s\" is empty."
-msgstr ""
-
-#: src/ui/gui/text-data-import-dialog.c:539
-msgid "Import Delimited Text Data"
-msgstr ""
-
-#: src/ui/gui/text-data-import-dialog.c:590
-msgid "Importing Delimited Text Data"
-msgstr ""
-
-#: src/ui/gui/text-data-import-dialog.c:749
-msgid ""
-"This assistant will guide you through the process of importing data into "
-"PSPP from a text file with one line per case,  in which fields are separated "
-"by tabs, commas, or other delimiters.\n"
-"\n"
-msgstr ""
-
-#: src/ui/gui/text-data-import-dialog.c:755
-#, c-format
-msgid "The selected file contains %zu line of text.  "
-msgid_plural "The selected file contains %zu lines of text.  "
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/ui/gui/text-data-import-dialog.c:763
-#, c-format
-msgid "The selected file contains approximately %lu line of text.  "
-msgid_plural "The selected file contains approximately %lu lines of text.  "
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/ui/gui/text-data-import-dialog.c:769
-#, c-format
-msgid ""
-"Only the first %zu line of the file will be shown for preview purposes in "
-"the following screens.  "
-msgid_plural ""
-"Only the first %zu lines of the file will be shown for preview purposes in "
-"the following screens.  "
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/ui/gui/text-data-import-dialog.c:776
-msgid "You may choose below how much of the file should actually be imported."
-msgstr ""
-
-#: src/ui/gui/text-data-import-dialog.c:1523
-#: src/ui/gui/text-data-import-dialog.c:1768
-msgid "This input line has too few separators to fill in this field."
-msgstr ""
-
-#: src/ui/gui/text-data-import-dialog.c:1759
-#, c-format
-msgid "Field content \"%.*s\" cannot be parsed in format %s."
-msgstr ""
-
 #: src/ui/gui/text-data-import.glade:8
 msgid "Importing Textual Data"
 msgstr ""
@@ -6584,52 +5682,6 @@ msgstr ""
 msgid "Test Value: "
 msgstr ""
 
-#: src/ui/gui/t-test-options.c:60
-#, c-format
-msgid "Confidence Interval: %2d %%"
-msgstr ""
-
-#: src/ui/gui/t-test-paired-samples.c:226
-msgid "Var 1"
-msgstr ""
-
-#: src/ui/gui/t-test-paired-samples.c:227
-msgid "Var 2"
-msgstr ""
-
-#: src/ui/gui/variable-info-dialog.c:76
-#, c-format
-msgid "Label: %s\n"
-msgstr ""
-
-#: src/ui/gui/variable-info-dialog.c:83
-#, c-format
-msgid "Type: %s\n"
-msgstr ""
-
-#: src/ui/gui/variable-info-dialog.c:87
-#, c-format
-msgid "Missing Values: %s\n"
-msgstr ""
-
-#: src/ui/gui/variable-info-dialog.c:92
-#, c-format
-msgid "Measurement Level: %s\n"
-msgstr ""
-
-#: src/ui/gui/variable-info-dialog.c:107
-msgid "Value Labels:\n"
-msgstr ""
-
-#: src/ui/gui/variable-info-dialog.c:117
-#, c-format
-msgid "%s %s\n"
-msgstr ""
-
-#: src/ui/gui/variable-info-dialog.glade:49
-msgid "Variable Information:"
-msgstr ""
-
 #: src/ui/gui/var-sheet-dialogs.glade:7
 msgid "Variable Type"
 msgstr ""
@@ -6690,127 +5742,25 @@ msgstr ""
 msgid "_Range plus one optional discrete missing value"
 msgstr ""
 
-#: src/ui/gui/weight-cases-dialog.c:85
-#, c-format
-msgid "Weight cases by %s"
-msgstr ""
-
-#: src/ui/source-init-opts.c:42
-msgid ""
-"set to `compatible' if you want output calculated from broken algorithms"
-msgstr ""
-
-#: src/ui/source-init-opts.c:43
-msgid "Append DIR to include path"
-msgstr ""
-
-#: src/ui/source-init-opts.c:44
-msgid "Clear include path"
-msgstr ""
-
-#: src/ui/source-init-opts.c:45
-msgid "Disable execution of .pspp/rc at startup"
-msgstr ""
-
-#: src/ui/source-init-opts.c:46
-msgid "Set configuration directory to DIR"
-msgstr ""
-
-#: src/ui/source-init-opts.c:47
-msgid "Don't allow some unsafe operations"
-msgstr ""
-
-#: src/ui/source-init-opts.c:48
-msgid "Set to `compatible' if you want only to accept SPSS compatible syntax"
-msgstr ""
-
-#: src/ui/source-init-opts.c:83
-#, c-format
-msgid "Algorithm must be either \"compatible\" or \"enhanced\"."
-msgstr ""
-
-#: src/ui/source-init-opts.c:124
-#, c-format
-msgid "Syntax must be either \"compatible\" or \"enhanced\"."
-msgstr ""
-
-#: src/ui/terminal/main.c:115
-msgid "PSPP --- A program for statistical analysis"
-msgstr ""
-
-#: src/ui/terminal/main.c:116
-msgid "FILE1, FILE2 ... FILEn"
-msgstr ""
-
-#: src/ui/terminal/main.c:119 src/ui/terminal/terminal-opts.c:177
-msgid "Options affecting input and output locations:"
-msgstr ""
-
-#: src/ui/terminal/main.c:122 src/ui/terminal/terminal-opts.c:178
-msgid "Diagnostic options:"
-msgstr ""
-
-#: src/ui/terminal/main.c:156
-msgid ""
-"Stopping syntax file processing here to avoid a cascade of dependent command "
-"failures."
-msgstr ""
-
-#: src/ui/terminal/msg-ui.c:67
-#, c-format
-msgid "Cannot open %s (%s). Writing errors to stdout instead.\n"
-msgstr ""
-
-#: src/ui/terminal/msg-ui.c:94
-msgid "Terminating execution of syntax file due to error."
+#: src/ui/gui/variable-info-dialog.glade:49
+msgid "Variable Information:"
 msgstr ""
 
-#: src/ui/terminal/msg-ui.c:96
+#: tests/dissect-sysfile.c:528
 #, c-format
-msgid "Errors (%d) exceeds limit (%d)."
-msgstr ""
+msgid "Unrecognized record type 7, subtype %d."
+msgstr "Unrecognised record type 7, subtype %d."
 
-#: src/ui/terminal/msg-ui.c:99
+#: tests/dissect-sysfile.c:701
 #, c-format
-msgid "Warnings (%d) exceed limit (%d)."
-msgstr ""
-
-#: src/ui/terminal/msg-ui.c:150
-msgid "error"
-msgstr ""
-
-#: src/ui/terminal/msg-ui.c:151
-msgid "warning"
+msgid "%s: Error parsing attribute value %s[%d]"
 msgstr ""
 
-#: src/ui/terminal/terminal.c:72
+#: tests/dissect-sysfile.c:707
 #, c-format
-msgid "could not access definition for terminal `%s'"
-msgstr ""
-
-#: src/ui/terminal/terminal-opts.c:41
-msgid "Increase diagnostic verbosity level"
-msgstr ""
-
-#: src/ui/terminal/terminal-opts.c:68
-msgid "Send error messages to FILE (appended)"
-msgstr ""
-
-#: src/ui/terminal/terminal-opts.c:71
-msgid "Select output driver DEVICE and disable defaults"
-msgstr ""
-
-#: src/ui/terminal/terminal-opts.c:74
-msgid "Print a list of known driver classes, then exit"
-msgstr ""
-
-#: src/ui/terminal/terminal-opts.c:76
-msgid "Start an interactive session"
+msgid "%s: Attribute value %s[%d] is not quoted: %s"
 msgstr ""
 
-#~ msgid "Unrecognized record type 7, subtype %d."
-#~ msgstr "Unrecognised record type 7, subtype %d."
-
 #~ msgid ""
 #~ "   This program is free software: you can redistribute it and/or modify\n"
 #~ "   it under the terms of the GNU General Public License as published by\n"
index 34eedc88a67c7965c92472d7facbc349aa27542d..bd1972812962668069cf39d9ee0554e0825ae8c6 100644 (file)
--- a/po/nl.po
+++ b/po/nl.po
@@ -1,5 +1,4 @@
 # translation of nl.po to Dutch
-# translation of nl.po to
 # Dutch translations for PSPP
 # Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
 # This file is distributed under the same licence as the PSPP package.
@@ -33,7 +32,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: nl\n"
 "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n"
-"POT-Creation-Date: 2009-07-26 09:59+0200\n"
+"POT-Creation-Date: 2009-08-30 17:52+0200\n"
 "PO-Revision-Date: 2009-05-15 18:24+0200\n"
 "Last-Translator:  <pspp@sjpaes.nl>\n"
 "Language-Team: Dutch\n"
@@ -43,6 +42,68 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
 "X-Generator: KBabel 1.11.4\n"
 
+#: src/ui/gui/psppire-buttonbox.c:143
+msgid "Buttons"
+msgstr "Knoppen"
+
+#: src/ui/gui/psppire-buttonbox.c:144
+msgid "The mask that decides what buttons appear in the button box"
+msgstr "Het masker dat beslist welke knoppen in de knop box zichtbaar zijn"
+
+#: src/ui/gui/psppire-buttonbox.c:273 src/ui/gui/psppire-buttonbox.c:435
+msgid "Continue"
+msgstr "Verder"
+
+#: src/ui/gui/psppire-buttonbox.c:433
+msgid "OK"
+msgstr ""
+
+#: src/ui/gui/psppire-buttonbox.c:434
+msgid "Go To"
+msgstr "Ga Naar"
+
+#: src/ui/gui/psppire-buttonbox.c:436
+msgid "Cancel"
+msgstr "Afbreken"
+
+#: src/ui/gui/psppire-buttonbox.c:437
+msgid "Help"
+msgstr ""
+
+#: src/ui/gui/psppire-buttonbox.c:438
+msgid "Reset"
+msgstr "Standaard"
+
+#: src/ui/gui/psppire-buttonbox.c:439
+msgid "Paste"
+msgstr "Plak"
+
+#: src/ui/gui/psppire-dictview.c:207
+msgid "The dictionary to be displayed by this widget"
+msgstr ""
+
+#: src/ui/gui/psppire-dictview.c:214
+msgid "A predicate function"
+msgstr ""
+
+#: src/ui/gui/psppire-dictview.c:221
+msgid "How many things can be selected"
+msgstr "Hoeveel dingen kunnen worden geselecteerd"
+
+#: src/ui/gui/psppire-dictview.c:491 src/language/dictionary/split-file.c:84
+#: src/language/dictionary/sys-file-info.c:169
+#: src/language/dictionary/sys-file-info.c:393
+#: src/language/dictionary/sys-file-info.c:725
+#: src/language/stats/descriptives.c:885
+#: src/language/data-io/data-parser.c:650
+#: src/language/data-io/data-parser.c:691 src/language/data-io/print.c:404
+msgid "Variable"
+msgstr "Variabele"
+
+#: src/ui/gui/psppire-dictview.c:528
+msgid "Prefer variable labels"
+msgstr "Prefereer variabele labels"
+
 #: src/data/any-reader.c:57
 #, c-format
 msgid "An error occurred while opening \"%s\": %s."
@@ -345,32 +406,32 @@ msgid "%s variables are not compatible with %s format %s."
 msgstr "%s variabelen zijn niet compatibel met %s formaat %s."
 
 #: src/data/format.c:327 src/data/sys-file-reader.c:734
-#: src/ui/gui/psppire.glade:2009 src/ui/gui/psppire-var-store.c:628
+#: src/ui/gui/psppire-var-store.c:628 src/ui/gui/psppire.glade:2009
 #: src/ui/gui/var-sheet-dialogs.glade:139
 msgid "String"
 msgstr ""
 
 #: src/data/format.c:327 src/data/sys-file-reader.c:734
-#: src/ui/gui/psppire.glade:2084 src/ui/gui/psppire-var-store.c:621
+#: src/ui/gui/psppire-var-store.c:621 src/ui/gui/psppire.glade:2084
 #: src/ui/gui/var-sheet-dialogs.glade:28
 msgid "Numeric"
 msgstr "Numeriek"
 
 #: src/data/format.c:328 src/data/sys-file-reader.c:1299
-#: src/data/sys-file-reader.c:1301
+#: src/data/sys-file-reader.c:1301 src/language/xforms/recode.c:493
+#: src/language/xforms/recode.c:494 src/language/xforms/recode.c:506
+#: src/language/xforms/recode.c:507
 #: src/language/dictionary/apply-dictionary.c:78
 #: src/language/dictionary/apply-dictionary.c:79
-#: src/language/xforms/recode.c:493 src/language/xforms/recode.c:494
-#: src/language/xforms/recode.c:506 src/language/xforms/recode.c:507
 msgid "numeric"
 msgstr "numeriek"
 
 #: src/data/format.c:328 src/data/sys-file-reader.c:1299
-#: src/data/sys-file-reader.c:1301
+#: src/data/sys-file-reader.c:1301 src/language/xforms/recode.c:493
+#: src/language/xforms/recode.c:494 src/language/xforms/recode.c:506
+#: src/language/xforms/recode.c:507
 #: src/language/dictionary/apply-dictionary.c:78
 #: src/language/dictionary/apply-dictionary.c:79
-#: src/language/xforms/recode.c:493 src/language/xforms/recode.c:494
-#: src/language/xforms/recode.c:506 src/language/xforms/recode.c:507
 msgid "string"
 msgstr ""
 
@@ -681,7 +742,7 @@ msgstr ""
 
 #. TRANSLATORS: this fragment will be interpolated into
 #. messages in fh_lock() that identify types of files.
-#: src/data/scratch-writer.c:66 src/language/data-io/file-handle.q:181
+#: src/data/scratch-writer.c:66
 msgid "scratch file"
 msgstr "scratch bestand"
 
@@ -715,11 +776,11 @@ msgid "Error opening \"%s\" for reading as a system file: %s."
 msgstr ""
 "Fout bij het openen van \"%s\" voor het lezen als een systeem file: %s."
 
-#: src/data/sys-file-reader.c:322
+#: src/data/sys-file-reader.c:322 tests/dissect-sysfile.c:136
 msgid "Misplaced type 4 record."
 msgstr "Verkeerd geplaatst type 4 record. "
 
-#: src/data/sys-file-reader.c:333
+#: src/data/sys-file-reader.c:333 tests/dissect-sysfile.c:147
 #, c-format
 msgid "Unrecognized record type %d."
 msgstr "Niet herkend record type %d."
@@ -737,10 +798,11 @@ msgid "Error closing system file \"%s\": %s."
 msgstr "Fout bij het sluiten van system file \"%s\": %s."
 
 #: src/data/sys-file-reader.c:479 src/data/sys-file-reader.c:489
+#: tests/dissect-sysfile.c:181 tests/dissect-sysfile.c:191
 msgid "This is not an SPSS system file."
 msgstr "Dit is geen SPSS systeem bestand."
 
-#: src/data/sys-file-reader.c:511
+#: src/data/sys-file-reader.c:511 tests/dissect-sysfile.c:204
 msgid ""
 "Compression bias is not the usual value of 100, or system file uses "
 "unrecognized floating-point format."
@@ -756,21 +818,21 @@ msgstr "Ongeldige variabele naam '%s'."
 msgid "Duplicate variable name `%s' within system file."
 msgstr "Dubbele variabele naam '%s' binnen system file."
 
-#: src/data/sys-file-reader.c:604
+#: src/data/sys-file-reader.c:604 tests/dissect-sysfile.c:328
 msgid "Variable label indicator field is not 0 or 1."
 msgstr "Variabel label indicator veld is niet 0 of 1."
 
-#: src/data/sys-file-reader.c:612
+#: src/data/sys-file-reader.c:612 tests/dissect-sysfile.c:337
 #, c-format
 msgid "Variable %s has label of invalid length %zu."
 msgstr "Variabele %s heeft label van ongeldige lengte %zu."
 
-#: src/data/sys-file-reader.c:631
+#: src/data/sys-file-reader.c:631 tests/dissect-sysfile.c:355
 msgid "Numeric missing value indicator field is not -3, -2, 0, 1, 2, or 3."
 msgstr ""
 "Numeriek ontbrekende waarde indicator veld is niet -3, -2, 0, 1, 2, of 3."
 
-#: src/data/sys-file-reader.c:649
+#: src/data/sys-file-reader.c:649 tests/dissect-sysfile.c:370
 msgid "String missing value indicator field is not 0, 1, 2, or 3."
 msgstr "String missing waarde indicator veld is niet 0, 1, 2, of 3."
 
@@ -826,7 +888,7 @@ msgstr ""
 "Niet herkend type 7, subtype %d.  Stuur s.v.p. een kopie van dit bestand en "
 "de syntax waarmee het is aangemaakt naar %s "
 
-#: src/data/sys-file-reader.c:901
+#: src/data/sys-file-reader.c:901 tests/dissect-sysfile.c:550
 #, c-format
 msgid "Bad size (%zu) or count (%zu) field on record type 7, subtype 3."
 msgstr ""
@@ -857,23 +919,24 @@ msgstr ""
 "Integer formaat aangegeven door systeem bestand (%s) verschilt van verwacht "
 "(%s). "
 
-#: src/data/sys-file-reader.c:992
+#: src/data/sys-file-reader.c:992 tests/dissect-sysfile.c:581
 #, c-format
 msgid "Bad size (%zu) or count (%zu) on extension 4."
 msgstr "Foutieve lengte (%zu) of aantal (%zu) bij extensie 4."
 
 #: src/data/sys-file-reader.c:996 src/data/sys-file-reader.c:1000
-#: src/data/sys-file-reader.c:1004
+#: src/data/sys-file-reader.c:1004 tests/dissect-sysfile.c:586
+#: tests/dissect-sysfile.c:591 tests/dissect-sysfile.c:596
 #, fuzzy, c-format
 msgid "File specifies unexpected value %g as %s."
 msgstr "Bestand specificeert onverwachte waarde %g als SYSMIS."
 
-#: src/data/sys-file-reader.c:1021
+#: src/data/sys-file-reader.c:1021 tests/dissect-sysfile.c:611
 #, c-format
 msgid "Bad size %zu on extension 11."
 msgstr "Foutieve lengte %zu voor extensie 11."
 
-#: src/data/sys-file-reader.c:1033
+#: src/data/sys-file-reader.c:1033 tests/dissect-sysfile.c:623
 #, c-format
 msgid "Extension 11 has bad count %zu (for %zu variables)."
 msgstr "Extensie 11 heeft een foutief aantal %zu (voor %zu variabelen)."
@@ -929,7 +992,7 @@ msgstr ""
 msgid "Invalid number of labels: %d.  Ignoring labels."
 msgstr "Ongeldig aantal labels: %d. Labels worden genegeerd."
 
-#: src/data/sys-file-reader.c:1268
+#: src/data/sys-file-reader.c:1268 tests/dissect-sysfile.c:426
 msgid ""
 "Variable index record (type 4) does not immediately follow value label "
 "record (type 3) as it should."
@@ -982,7 +1045,7 @@ msgstr "Fout bij het ontleden van attribuut waarde %s[%d]"
 msgid "Attribute value %s[%d] is not quoted: %s"
 msgstr "Attribuut waarde %s[%d] is niet geciteerd: %s"
 
-#: src/data/sys-file-reader.c:1447
+#: src/data/sys-file-reader.c:1447 tests/dissect-sysfile.c:762
 #, c-format
 msgid ""
 "Variable name length in long string value label record (%d) exceeds %d-byte "
@@ -1048,12 +1111,12 @@ msgstr "Onderdrukt %d extra gerelateerde waarschuwingen."
 msgid "Variable map refers to unknown variable %s."
 msgstr "Variabele afbeelding refereert aan onbekende variabele %s."
 
-#: src/data/sys-file-reader.c:2058
+#: src/data/sys-file-reader.c:2058 tests/dissect-sysfile.c:959
 #, c-format
 msgid "System error: %s."
 msgstr "Systeem fout: %s."
 
-#: src/data/sys-file-reader.c:2060
+#: src/data/sys-file-reader.c:2060 tests/dissect-sysfile.c:961
 msgid "Unexpected end of file."
 msgstr "Onverwacht bestand einde."
 
@@ -1105,6 +1168,26 @@ msgstr ""
 "'%s' mag niet gebruikt worden als variabele naam omdat het een gereserveerd "
 "woord is."
 
+#: src/language/syntax-file.c:88
+#, c-format
+msgid "opening \"%s\" as syntax file"
+msgstr "openen \"%s\" als syntax bestand"
+
+#: src/language/syntax-file.c:93
+#, c-format
+msgid "Opening `%s': %s."
+msgstr "Openen '%s': %s."
+
+#: src/language/syntax-file.c:107
+#, c-format
+msgid "Reading `%s': %s."
+msgstr "Lezen '%s': %s."
+
+#: src/language/syntax-file.c:127
+#, c-format
+msgid "Closing `%s': %s."
+msgstr "Sluiten '%s': %s."
+
 #: src/language/command.c:208 src/language/expressions/parse.c:1267
 #, c-format
 msgid "%s is not yet implemented."
@@ -1250,758 +1333,490 @@ msgstr "Opdracht shell niet ondersteunt op dit platform."
 msgid "Error executing command: %s."
 msgstr "Fout tijdens uitvoeren opdracht: %s."
 
-#: src/language/control/control-stack.c:27
+#: src/language/lexer/lexer.c:283
 #, c-format
-msgid "%s without %s."
-msgstr "%s zonder %s."
+msgid "%s does not form a valid number."
+msgstr "%s vormt geen geldig nummer."
 
-#: src/language/control/control-stack.c:55
-#, c-format
-msgid "This command must appear inside %s...%s, without intermediate %s...%s."
-msgstr ""
-"Deze opdracht moet binnen %s...%s voorkomen, zonder tussenliggende %s...%s."
+#: src/language/lexer/lexer.c:389
+#, fuzzy, c-format
+msgid "Bad character in input: `%s'."
+msgstr "Fout karakter in input: '%c'."
 
-#: src/language/control/control-stack.c:72
+#: src/language/lexer/lexer.c:426
 #, c-format
-msgid "This command cannot appear outside %s...%s."
-msgstr "Deze opdracht kan niet voorkomen buiten %s...%s."
-
-#: src/language/control/do-if.c:177
-msgid "This command may not follow ELSE in DO IF...END IF."
-msgstr "Deze opdracht mag niet volgen op ELSE in DO IF...END IF."
+msgid "Subcommand %s may only be specified once."
+msgstr "Subopdracht %s mag slechts een keer gespecificeerd worden."
 
-#: src/language/control/loop.c:214
-msgid "Only one index clause may be specified."
-msgstr "Slechts een index clausule mag gespecificeerd worden."
+#: src/language/lexer/lexer.c:434
+#, c-format
+msgid "missing required subcommand %s"
+msgstr "mis verplichte subopdracht %s"
 
-#: src/language/control/repeat.c:171
+#: src/language/lexer/lexer.c:463
 #, c-format
-msgid "Dummy variable name \"%s\" hides dictionary variable \"%s\"."
-msgstr "Dummy variabele naam \"%s\" verbergt woordenboek variabele \"%s\"."
+msgid "Syntax error %s at %s."
+msgstr "Syntax fout %s op %s."
 
-#: src/language/control/repeat.c:176
+#: src/language/lexer/lexer.c:466
 #, c-format
-msgid "Dummy variable name \"%s\" is given twice."
-msgstr "Dummy variabele naam \"%s\"is 2 keer opgegeven."
+msgid "Syntax error at %s."
+msgstr "Syntax fout op %s."
 
-#: src/language/control/repeat.c:222
+#: src/language/lexer/lexer.c:478 src/language/xforms/select-if.c:60
+#: src/language/stats/autorecode.c:154 src/language/data-io/print-space.c:73
+msgid "expecting end of command"
+msgstr "verwacht einde van opdracht "
+
+#: src/language/lexer/lexer.c:600 src/language/lexer/lexer.c:617
 #, c-format
-msgid ""
-"Dummy variable \"%.*s\" had %d substitutions, so \"%.*s\" must also, but %d "
-"were specified."
-msgstr ""
-"Dummy variabele \"%.*s\" heeft %d substituties, dus \"%.*s\" moet dat ook, "
-"maar %d zijn er gespecificeerd."
+msgid "expecting `%s'"
+msgstr "verwacht '%s'"
 
-#: src/language/control/repeat.c:334
-msgid "DO REPEAT may not nest in compatibility mode."
-msgstr "DO REPEAT mag niet nesten in compatibiliteit mode."
+#: src/language/lexer/lexer.c:631
+msgid "expecting string"
+msgstr "string verwacht"
 
-#: src/language/control/repeat.c:436
-msgid "Ranges may only have integer bounds"
-msgstr "Ranges mogen alleen integer grenzen hebben"
+#: src/language/lexer/lexer.c:645
+msgid "expecting integer"
+msgstr "verwacht integer"
 
-#: src/language/control/repeat.c:445
-#, c-format
-msgid "%g TO %g is an invalid range."
-msgstr "%g TO %g is een ongeldige range."
+#: src/language/lexer/lexer.c:658
+msgid "expecting number"
+msgstr "nummer verwacht"
 
-#: src/language/control/repeat.c:480
-msgid "String expected."
-msgstr "String verwacht."
+#: src/language/lexer/lexer.c:670
+msgid "expecting identifier"
+msgstr "verwacht herkenningsteken"
 
-#: src/language/control/repeat.c:499
-msgid "No matching DO REPEAT."
-msgstr "Geen overeenkomende DO REPEAT."
+#: src/language/lexer/lexer.c:1064
+msgid "binary"
+msgstr "binair"
 
-#: src/language/control/temporary.c:46
-msgid ""
-"This command may only appear once between procedures and procedure-like "
-"commands."
-msgstr ""
-"Deze opdracht mag slechts 1 keer voorkomen tussen procedures en procedure-"
-"achtige opdrachten."
+#: src/language/lexer/lexer.c:1069
+msgid "octal"
+msgstr "octaal"
 
-#: src/language/data-io/combine-files.c:210
-msgid "Cannot specify the active file since no active file has been defined."
+#: src/language/lexer/lexer.c:1074
+msgid "hex"
 msgstr ""
-"Kan het actieve bestand niet specificeren omdat er geen actief bestand is "
-"gedefinieerd."
 
-#: src/language/data-io/combine-files.c:216
-msgid ""
-"This command may not be used after TEMPORARY when the active file is an "
-"input source.  Temporary transformations will be made permanent."
+#: src/language/lexer/lexer.c:1084
+#, c-format
+msgid "String of %s digits has %zu characters, which is not a multiple of %d."
 msgstr ""
-"Deze opdracht mag niet gebruikt worden na TEMPORARY als het actieve bestand "
-"een invoer bron is. Tijdelijke transformaties zullen permanent worden."
-
-#: src/language/data-io/combine-files.c:250
-msgid "Multiple IN subcommands for a single FILE or TABLE."
-msgstr "Meerdere IN subopdrachten voor een enkele FILE of TABLE."
+"String van %s cijfers heeft %zu karakters, wat geen meervoud van %d is."
 
-#: src/language/data-io/combine-files.c:302
+#: src/language/lexer/lexer.c:1113
 #, c-format
-msgid "File %s lacks BY variable %s."
-msgstr "Bestand %s mist BY variabele %s."
+msgid "`%c' is not a valid %s digit."
+msgstr "'%c' is geen geldig %s cijfer."
 
-#: src/language/data-io/combine-files.c:305
+#: src/language/lexer/lexer.c:1147
+msgid "Unterminated string constant."
+msgstr "Geen einde aan string constante."
+
+#: src/language/lexer/lexer.c:1201
+msgid "Unexpected end of file in string concatenation."
+msgstr "Onverwacht bestandseinde in string samenvoeging."
+
+#: src/language/lexer/lexer.c:1209
+msgid "String expected following `+'."
+msgstr "String verwacht achter '+'."
+
+#: src/language/lexer/lexer.c:1222
 #, c-format
-msgid "Active file lacks BY variable %s."
-msgstr "Actief bestand mist BY variabele %s."
+msgid "String exceeds 255 characters in length (%zu characters)."
+msgstr "String overschrijdt de lengte van 255 karakters (%zu karakters)."
 
-#: src/language/data-io/combine-files.c:376
-msgid "The BY subcommand is required."
-msgstr "De BY subopdracht is nodig."
+#: src/language/lexer/format-parser.c:88
+msgid "expecting valid format specifier"
+msgstr "verwacht geldige formaat specificator"
 
-#: src/language/data-io/combine-files.c:381
-msgid "BY is required when TABLE is specified."
-msgstr "BY is noodzakelijk als TABLE is gespecificeerd."
+#: src/language/lexer/format-parser.c:107
+#: src/language/lexer/format-parser.c:126
+#: src/language/data-io/placement-parser.c:226
+#, c-format
+msgid "Unknown format type \"%s\"."
+msgstr "Onbekend formaat type \"%s\"."
 
-#: src/language/data-io/combine-files.c:386
-msgid "BY is required when SORT is specified."
-msgstr "BY is noodzakelijk als SORT is gespecificeerd."
+#: src/language/lexer/format-parser.c:121
+msgid "expecting format type"
+msgstr "verwacht formaat type"
 
-#: src/language/data-io/combine-files.c:513
+#: src/language/lexer/value-parser.c:60
+#, c-format
 msgid ""
-"Combining files with incompatible encodings. String data may not be "
-"represented correctly."
+"Low end of range (%g) is below high end (%g).  The range will be treated as "
+"reversed."
 msgstr ""
-"Combineren bestanden met incompatibele codering. String data wordt misschien "
-"niet correct weergegeven."
+"Ondergrens van range (%g) is lager dan bovengrens (%g). De range wordt "
+"behandeld als omgekeerd."
 
-#: src/language/data-io/combine-files.c:545
+#: src/language/lexer/value-parser.c:68
 #, c-format
-msgid ""
-"Variable %s in file %s has different type or width from the same variable in "
-"earlier file."
-msgstr ""
-"Variabele %s in bestand %s heeft een ander type of de breedte dan dezelfde "
-"variabele in eerder bestand."
+msgid "Ends of range are equal (%g)."
+msgstr "Eindes van range zijn gelijk (%g)."
 
-#: src/language/data-io/combine-files.c:551
-#, c-format
-msgid "In file %s, %s is numeric."
-msgstr "In bestand %s, %s is numeriek."
+#: src/language/lexer/value-parser.c:76
+msgid "LO or LOWEST must be part of a range."
+msgstr "LO of LOWEST moet een onderdeel van een range zijn."
 
-#: src/language/data-io/combine-files.c:554
-#, c-format
-msgid "In file %s, %s is a string variable with width %d."
-msgstr "In bestand %s, %s is een string variabele met breedte %d."
+#: src/language/lexer/value-parser.c:109
+msgid "System-missing value is not valid here."
+msgstr "System-missing waarde is hier niet geldig."
 
-#: src/language/data-io/combine-files.c:559
-#, c-format
-msgid "In an earlier file, %s was numeric."
-msgstr "In eerder bestand, %s was numeriek."
+#: src/language/lexer/value-parser.c:117
+msgid "expecting number or data string"
+msgstr "nummer of data string verwacht"
 
-#: src/language/data-io/combine-files.c:562
+#: src/language/lexer/variable-parser.c:63
+msgid "expecting variable name"
+msgstr "variabele naam verwacht"
+
+#: src/language/lexer/variable-parser.c:73
 #, c-format
-msgid "In an earlier file, %s was a string variable with width %d."
-msgstr "In een eerder bestand, %s was een string variabele met breedte %d."
+msgid "%s is not a variable name."
+msgstr "%s is geen variabele naam."
 
-#: src/language/data-io/combine-files.c:601
+#: src/language/lexer/variable-parser.c:176
 #, c-format
 msgid ""
-"Variable name %s specified on %s subcommand duplicates an existing variable "
-"name."
+"%s is not a numeric variable.  It will not be included in the variable list."
 msgstr ""
-"Variabele naam %s gespecificeerd op %s subopdracht dupliceert een bestaande "
-"variabele naam."
+"%s is geen numerieke variabele. Het wordt niet opgenomen in de variabele "
+"lijst."
 
-#: src/language/data-io/combine-files.c:762
+#: src/language/lexer/variable-parser.c:179
 #, c-format
-msgid "Encountered %zu sets of duplicate cases in the master file."
-msgstr "Ontmoet %zu sets van dubbele cases in het master bestand. "
-
-#: src/language/data-io/data-list.c:137
-msgid "The END subcommand may only be used within INPUT PROGRAM."
-msgstr "De END subopdracht mag alleen binnen INPUT PROGRAM gebruikt worden."
-
-#: src/language/data-io/data-list.c:143
-msgid "The END subcommand may only be specified once."
-msgstr "De END subopdracht mag slechts 1 keer gespecificeerd worden."
-
-#: src/language/data-io/data-list.c:181
-msgid "Only one of FIXED, FREE, or LIST may be specified."
-msgstr "Slechts 1 van FIXED, FREE of LIST mag gespecificeerd worden."
-
-#: src/language/data-io/data-list.c:243
-msgid "Encoding should not be specified for inline data. It will be ignored."
+msgid ""
+"%s is not a string variable.  It will not be included in the variable list."
 msgstr ""
-"Coderen dient niet opgegeven te worden voor inline date. Het wordt genegeerd."
-
-#: src/language/data-io/data-list.c:254
-msgid "The END subcommand may be used only with DATA LIST FIXED."
-msgstr "De END subopdracht mag allen gebruikt worden met DATA LIST FIXED."
-
-#: src/language/data-io/data-list.c:269
-msgid "At least one variable must be specified."
-msgstr "Tenminste 1 variabele moet gespecificeerd worden."
-
-#: src/language/data-io/data-list.c:368 src/language/data-io/data-list.c:457
-#: src/language/data-io/get-data.c:530
-#, c-format
-msgid "%s is a duplicate variable name."
-msgstr "%s is een dubbele variabele naam."
+"%s is geen string variabele. Het wordt niet opgenomen in de variabele lijst."
 
-#: src/language/data-io/data-list.c:375
+#: src/language/lexer/variable-parser.c:183
 #, c-format
-msgid "There is already a variable %s of a different type."
-msgstr "Er is al een variabele %s van een ander type."
+msgid "Scratch variables (such as %s) are not allowed here."
+msgstr "Scratch variabelen (zoals %s) zijn hier niet toegestaan."
 
-#: src/language/data-io/data-list.c:382
+#: src/language/lexer/variable-parser.c:187
 #, c-format
-msgid "There is already a string variable %s of a different width."
-msgstr "Er is al een string variabele %s van een andere breedte."
+msgid ""
+"%s and %s are not the same type.  All variables in this variable list must "
+"be of the same type.  %s will be omitted from the list."
+msgstr ""
+"%s en %s zijn niet van hetzelfde type. Alle variabelen in deze variabele "
+"lijst dienen van hetzelfde type te zijn.  %s wordt overgeslagen voor de "
+"lijst."
 
-#: src/language/data-io/data-list.c:390
+#: src/language/lexer/variable-parser.c:193
 #, c-format
-msgid "Cannot place variable %s on record %d when RECORDS=%d is specified."
+msgid ""
+"%s and %s are string variables with different widths.  All variables in this "
+"variable list must have the same width.  %s will be omitted from the list."
 msgstr ""
-"Kan variabele %s niet plaatsen in record %d als RECORDS=%d is gespecificeerd."
-
-#: src/language/data-io/data-parser.c:460
-#: src/language/data-io/data-parser.c:469
-msgid "Quoted string extends beyond end of line."
-msgstr "Geciteerde string loopt door na regeleinde."
+"%s en %s hebben verschillende breedtes. Alle variabelen in deze variabele "
+"lijst dienen dezelfde breedte te hebben.  %s wordt overgeslagen voor de "
+"lijst."
 
-#: src/language/data-io/data-parser.c:525
+#: src/language/lexer/variable-parser.c:198
 #, c-format
-msgid "Partial case of %d of %d records discarded."
-msgstr "Gedeeltelijke case van %d van %d records genegeerd."
+msgid "Variable %s appears twice in variable list."
+msgstr "Variabele %s komt 2 keer in de variabele lijst voor."
 
-#: src/language/data-io/data-parser.c:572
+#: src/language/lexer/variable-parser.c:311
 #, c-format
-msgid "Partial case discarded.  The first variable missing was %s."
-msgstr "Gedeeltelijke case overgeslagen. De eerste gemiste variabele was %s."
+msgid "%s TO %s is not valid syntax since %s precedes %s in the dictionary."
+msgstr ""
+"%s TO %s is geen geldige syntax omdat %s voor %s in het woordenboek staat."
 
-#: src/language/data-io/data-parser.c:610
+#: src/language/lexer/variable-parser.c:319
 #, c-format
 msgid ""
-"Missing value(s) for all variables from %s onward.  These will be filled "
-"with the system-missing value or blanks, as appropriate."
+"When using the TO keyword to specify several variables, both variables must "
+"be from the same variable dictionaries, of either ordinary, scratch, or "
+"system variables.  %s is a %s variable, whereas %s is %s."
 msgstr ""
-"Missing value(s) voor alle variabelen vanaf %s. Deze worden gevuld met de "
-"geschikte system-missing waarde of spatie."
+"Wanneer het sleutelwoord TO wordt gebruikt om verscheidene variabelen te "
+"specificeren, moeten beide variabelen van het zelfde variabele "
+"woordenboeken, of gewone, scratch, of systeem variabelen zijn. %s is een %s "
+"variabele, terwijl %s %s. is. "
 
-#: src/language/data-io/data-parser.c:630
-msgid "Record ends in data not part of any field."
-msgstr "Record eindigd in data die geen onderdeel is van een veld."
+#: src/language/lexer/variable-parser.c:393
+msgid "incorrect use of TO convention"
+msgstr "foutief gebruik van TO conventie"
 
-#: src/language/data-io/data-parser.c:650
-#: src/language/data-io/data-parser.c:691 src/language/data-io/print.c:404
-#: src/language/dictionary/split-file.c:84
-#: src/language/dictionary/sys-file-info.c:169
-#: src/language/dictionary/sys-file-info.c:393
-#: src/language/dictionary/sys-file-info.c:725
-#: src/language/stats/descriptives.c:885 src/ui/gui/psppire-dictview.c:491
-msgid "Variable"
-msgstr "Variabele"
+#: src/language/lexer/variable-parser.c:436
+msgid "Scratch variables not allowed here."
+msgstr "Scratch variabelen niet toegestaan hier."
 
-#: src/language/data-io/data-parser.c:651 src/language/data-io/print.c:405
-msgid "Record"
-msgstr ""
+#: src/language/lexer/variable-parser.c:458
+msgid "Prefixes don't match in use of TO convention."
+msgstr "Prefixen komen niet overeen in het gebruik van TO conventie. "
 
-#: src/language/data-io/data-parser.c:652 src/language/data-io/print.c:406
-#: src/ui/gui/crosstabs.glade:92 src/ui/gui/psppire-var-sheet.c:537
-#: src/ui/gui/psppire-var-store.c:839
-msgid "Columns"
-msgstr "Kolommen"
+#: src/language/lexer/variable-parser.c:463
+msgid "Bad bounds in use of TO convention."
+msgstr "Slechte grenzen in het gebruik van TO conventie."
 
-#: src/language/data-io/data-parser.c:653
-#: src/language/data-io/data-parser.c:692 src/language/data-io/print.c:407
-msgid "Format"
-msgstr "Formaat"
+#: src/language/xforms/compute.c:149 src/language/xforms/compute.c:203
+#, c-format
+msgid ""
+"When executing COMPUTE: SYSMIS is not a valid value as an index into vector %"
+"s."
+msgstr ""
+"Tijdens uitvoeren van COMPUTE: SYSMIS is geen geldige waarde als een index "
+"in vector %s."
 
-#: src/language/data-io/data-parser.c:672
+#: src/language/xforms/compute.c:153 src/language/xforms/compute.c:210
 #, c-format
-msgid "Reading %d record from %s."
-msgid_plural "Reading %d records from %s."
-msgstr[0] "Lezen %d record van %s."
-msgstr[1] "Lezen %d records van %s."
+msgid ""
+"When executing COMPUTE: %g is not a valid value as an index into vector %s."
+msgstr ""
+"Tijdens uitvoeren van COMPUTE: %g is geen geldige waarde als een index in "
+"vector %s."
 
-#: src/language/data-io/data-parser.c:708
+#: src/language/xforms/compute.c:353
 #, c-format
-msgid "Reading free-form data from %s."
-msgstr "Lezen vrij-formaat data van %s."
+msgid "There is no vector named %s."
+msgstr "Er is geen vector genaamd %s."
 
-#. TRANSLATORS: this fragment will be interpolated into
-#. messages in fh_lock() that identify types of files.
-#: src/language/data-io/data-reader.c:122
-#: src/language/data-io/data-writer.c:58
-msgid "data file"
-msgstr "data bestand"
+#: src/language/xforms/count.c:123
+msgid "Destination cannot be a string variable."
+msgstr "Bestemming kan geen string variabele zijn."
 
-#: src/language/data-io/data-reader.c:149
+#: src/language/xforms/sample.c:76
+msgid "The sampling factor must be between 0 and 1 exclusive."
+msgstr "De steekproef factor moet exclusief tussen 0 en 1 liggen."
+
+#: src/language/xforms/sample.c:96
 #, c-format
-msgid "Could not open \"%s\" for reading as a data file: %s."
-msgstr "Kon \"%s\"niet openen voor het lezen als data bestand: %s."
+msgid "Cannot sample %d observations from a population of %d."
+msgstr "Kan niet %d observaties bemonsteren van een populatie van %d."
 
-#: src/language/data-io/data-reader.c:191
+#: src/language/xforms/recode.c:248
 msgid ""
-"Unexpected end-of-file while reading data in BEGIN DATA.  This probably "
-"indicates a missing or misformatted END DATA command.  END DATA must appear "
-"by itself on a single line with exactly one space between words."
+"Inconsistent target variable types.  Target variables must be all numeric or "
+"all string."
 msgstr ""
-"Onverwacht einde-bestand tijdens het lezen van data in BEGIN DATA. Dit geeft "
-"waarschijnlijk aan dat de END DATA opdracht ontbreekt of verkeerd geschreven "
-"is. END DATA dient alleen op 1 regel met precies 1 spatie tussen de woorden "
-"voor te komen."
+"Inconsistent doel variabele types.  Doel variabelen moeten allemaal numeriek "
+"of allemaal string zijn. "
 
-#: src/language/data-io/data-reader.c:216
-#, c-format
-msgid "Error reading file %s: %s."
-msgstr "Fout tijdens lezen bestand %s: %s."
+#: src/language/xforms/recode.c:269
+msgid "CONVERT requires string input values and numeric output values."
+msgstr "CONVERT vereist string invoer waardes en numerieke uitvoer waardes."
 
-#: src/language/data-io/data-reader.c:219
-#, c-format
-msgid "Unexpected end of file reading %s."
-msgstr "Onverwacht einde tijdens lezen van bestand %s."
+#: src/language/xforms/recode.c:324
+msgid "THRU is not allowed with string variables."
+msgstr "THRU is niet toegestaan met string variabelen."
 
-#: src/language/data-io/data-reader.c:228
-#, c-format
-msgid "Unexpected end of file in partial record reading %s."
-msgstr ""
+#: src/language/xforms/recode.c:403
+msgid "expecting output value"
+msgstr "verwacht uitvoer waarde"
 
-#: src/language/data-io/data-reader.c:288
+#: src/language/xforms/recode.c:460
 #, c-format
-msgid "Corrupt block descriptor word at offset 0x%lx in %s."
+msgid ""
+"%zu variable(s) cannot be recoded into %zu variable(s).  Specify the same "
+"number of variables as source and target variables."
 msgstr ""
+"%zu variabel(en) kunnen niet gehercodeerd worden in %zu variabel(en).  "
+"Specificeer hetzelfde aantal variabelen als bron en als doel variabelen."
 
-#: src/language/data-io/data-reader.c:289
+#: src/language/xforms/recode.c:475
 #, c-format
-msgid "Corrupt record descriptor word at offset 0x%lx in %s."
+msgid ""
+"There is no variable named %s.  (All string variables specified on INTO must "
+"already exist.  Use the STRING command to create a string variable.)"
 msgstr ""
+"Er is geen variabele genaamd %s.  (Alle string variabelen gespecificeerd bij "
+"INTO dienen al te bestaan.  Gebruik de STRING opdracht om een string "
+"variabele aan te maken.)"
 
-#: src/language/data-io/data-reader.c:302
+#: src/language/xforms/recode.c:491
 #, c-format
-msgid "Corrupt record size at offset 0x%lx in %s."
-msgstr ""
-
-#: src/language/data-io/data-reader.c:444
-msgid "Record exceeds remaining block length."
-msgstr "Record overschrijdt resterend blok lengte."
+msgid "INTO is required with %s input values and %s output values."
+msgstr "INTO is vereist met %s invoer waardes en %s uitvoer waardes."
 
-#: src/language/data-io/data-reader.c:518
+#: src/language/xforms/recode.c:504
 #, c-format
-msgid "Attempt to read beyond end-of-file on file %s."
-msgstr "Poging om te lezen na einde-bestand op bestand %s."
-
-#: src/language/data-io/data-reader.c:521
-msgid "Attempt to read beyond END DATA."
-msgstr "Poging om te lezen na END DATA."
+msgid "Type mismatch.  Cannot store %s data in %s variable %s."
+msgstr "Type fout. Kan %s data niet in %s variabele %s opslaan. "
 
-#: src/language/data-io/data-reader.c:707
-msgid ""
-"This command is not valid here since the current input program does not "
-"access the inline file."
-msgstr ""
-"Deze opdracht is hier niet geldig omdat het huidige invoer programma het "
-"inline bestand niet benaderd."
+#: src/language/xforms/select-if.c:100
+msgid "Syntax error expecting OFF or BY.  Turning off case filtering."
+msgstr "Syntax fout verwacht OFF of BY. Schakelt case filtering uit. "
 
-#: src/language/data-io/data-writer.c:74
-#, c-format
-msgid "An error occurred while opening \"%s\" for writing as a data file: %s."
-msgstr ""
-"Een fout is opgetreden tijdens het openen van \"%s\" voor schrijven als data "
-"bestand: %s."
+#: src/language/xforms/select-if.c:115
+msgid "The filter variable must be numeric."
+msgstr "De filter variabele moet numeriek zijn."
 
-#: src/language/data-io/data-writer.c:191
-#, c-format
-msgid "I/O error occurred writing data file \"%s\"."
-msgstr "I/O fout opgetreden tijdens schrijven data bestand \"%s\"."
+#: src/language/xforms/select-if.c:121
+msgid "The filter variable may not be scratch."
+msgstr "De filter variabele mag niet scratch zijn."
 
-#: src/language/data-io/file-handle.q:65
+#: src/language/control/control-stack.c:27
 #, c-format
-msgid ""
-"File handle %s is already defined.  Use CLOSE FILE HANDLE before redefining "
-"a file handle."
-msgstr ""
-"Bestand 'handle' %s is al gedefinieerd. Gebruik CLOSE FILE HANDLE voor het "
-"opnieuw definiëren van een bestand 'handle'."
-
-#: src/language/data-io/file-handle.q:120
-msgid "RECFORM must be specified with MODE=360."
-msgstr "RECFORM moet opgegeven worden met MODE=360."
+msgid "%s without %s."
+msgstr "%s zonder %s."
 
-#: src/language/data-io/file-handle.q:131
+#: src/language/control/control-stack.c:55
 #, c-format
-msgid "The specified file mode requires LRECL.  Assuming %d-character records."
+msgid "This command must appear inside %s...%s, without intermediate %s...%s."
 msgstr ""
-"De gespecificeerd bestandsmodus vereist LRECL. %d-karakter records "
-"veronderstelt."
+"Deze opdracht moet binnen %s...%s voorkomen, zonder tussenliggende %s...%s."
 
-#: src/language/data-io/file-handle.q:135
+#: src/language/control/control-stack.c:72
 #, c-format
-msgid ""
-"Record length (%ld) must be between 1 and %lu bytes.  Assuming %d-character "
-"records."
-msgstr ""
-"Record lengte (%ld) moet tussen 1 en %lu bytes zijn. Veronderstel %d-"
-"karakters records."
+msgid "This command cannot appear outside %s...%s."
+msgstr "Deze opdracht kan niet voorkomen buiten %s...%s."
 
-#: src/language/data-io/file-handle.q:177
-msgid "file"
-msgstr "bestand"
+#: src/language/control/do-if.c:177
+msgid "This command may not follow ELSE in DO IF...END IF."
+msgstr "Deze opdracht mag niet volgen op ELSE in DO IF...END IF."
 
-#: src/language/data-io/file-handle.q:179
-msgid "inline file"
-msgstr "inline bestand"
+#: src/language/control/loop.c:214
+msgid "Only one index clause may be specified."
+msgstr "Slechts een index clausule mag gespecificeerd worden."
 
-#: src/language/data-io/file-handle.q:205
-msgid "expecting a file name or handle name"
-msgstr "file naam of 'handle' naam verwacht"
+#: src/language/control/temporary.c:46
+msgid ""
+"This command may only appear once between procedures and procedure-like "
+"commands."
+msgstr ""
+"Deze opdracht mag slechts 1 keer voorkomen tussen procedures en procedure-"
+"achtige opdrachten."
 
-#: src/language/data-io/file-handle.q:225
+#: src/language/control/repeat.c:171
 #, c-format
-msgid "Handle for %s not allowed here."
-msgstr "'Handle' voor %s is hier niet toegestaan."
-
-#: src/language/data-io/get.c:99
-msgid "expecting COMM or TAPE"
-msgstr "COMM of TAPE verwacht"
+msgid "Dummy variable name \"%s\" hides dictionary variable \"%s\"."
+msgstr "Dummy variabele naam \"%s\" verbergt woordenboek variabele \"%s\"."
 
-#: src/language/data-io/get-data.c:64
+#: src/language/control/repeat.c:176
 #, c-format
-msgid "Unsupported TYPE %s"
-msgstr "Niet ondersteunt TYPE %s"
+msgid "Dummy variable name \"%s\" is given twice."
+msgstr "Dummy variabele naam \"%s\"is 2 keer opgegeven."
 
-#: src/language/data-io/get-data.c:260
+#: src/language/control/repeat.c:222
 #, c-format
 msgid ""
-"%s is allowed only with %s arrangement, but %s arrangement was stated or "
-"implied earlier in this command."
+"Dummy variable \"%.*s\" had %d substitutions, so \"%.*s\" must also, but %d "
+"were specified."
 msgstr ""
-"%s is alleen toegestaan met %s regeling, maar %s regeling was eerder "
-"opgegeven of geïmpliceerd in deze opdracht."
-
-#: src/language/data-io/get-data.c:315
-msgid "expecting FIXED or DELIMITED"
-msgstr "FIXED of DELIMITED verwacht"
+"Dummy variabele \"%.*s\" heeft %d substituties, dus \"%.*s\" moet dat ook, "
+"maar %d zijn er gespecificeerd."
 
-#: src/language/data-io/get-data.c:328
-msgid "Value of FIRSTCASE must be 1 or greater."
-msgstr "Waarde van FIRSTCASE moet 1 of groter zijn."
+#: src/language/control/repeat.c:334
+msgid "DO REPEAT may not nest in compatibility mode."
+msgstr "DO REPEAT mag niet nesten in compatibiliteit mode."
 
-#: src/language/data-io/get-data.c:353
-msgid "expecting LINE or VARIABLES"
-msgstr "LINE of VARIABLES verwacht"
+#: src/language/control/repeat.c:436
+msgid "Ranges may only have integer bounds"
+msgstr "Ranges mogen alleen integer grenzen hebben"
 
-#: src/language/data-io/get-data.c:366
-msgid "Value of FIXCASE must be at least 1."
-msgstr "Waarde van FIXCASE moet tenminste 1 zijn."
+#: src/language/control/repeat.c:445
+#, c-format
+msgid "%g TO %g is an invalid range."
+msgstr "%g TO %g is een ongeldige range."
 
-#: src/language/data-io/get-data.c:386
-msgid "Value of FIRST must be at least 1."
-msgstr "Waarde van FIRST moet tenminste 1 zijn."
+#: src/language/control/repeat.c:480
+msgid "String expected."
+msgstr "String verwacht."
 
-#: src/language/data-io/get-data.c:398
-msgid "Value of PERCENT must be between 1 and 100."
-msgstr "Waarde van PERCENT moet tussen 1 en 100 zijn."
+#: src/language/control/repeat.c:499
+msgid "No matching DO REPEAT."
+msgstr "Geen overeenkomende DO REPEAT."
 
-#: src/language/data-io/get-data.c:447
-msgid ""
-"In compatible syntax mode, the QUALIFIER string must contain exactly one "
-"character."
-msgstr ""
-"In compatibele syntax modus, the QUALIFIER string moet precies 1 karakter "
-"bevatten."
+#: src/language/dictionary/attributes.c:108
+msgid "Attribute array index must be between 1 and 65535."
+msgstr "Attribuut array index moet tussen 1 en 65535 liggen."
 
-#: src/language/data-io/get-data.c:462
-msgid "expecting VARIABLES"
-msgstr "VARIABLES verwacht"
+#: src/language/dictionary/attributes.c:189
+msgid "expecting ATTRIBUTE= or DELETE="
+msgstr "ATTRIBUTE= of DELETE= verwacht"
 
-#: src/language/data-io/get-data.c:484
-#: src/language/data-io/placement-parser.c:378
+#: src/language/dictionary/apply-dictionary.c:75
 #, c-format
+msgid "Variable %s is %s in target file, but %s in source file."
+msgstr "Variabele %s is %s in doel bestand, maar %s in bron bestand."
+
+#: src/language/dictionary/apply-dictionary.c:115
+msgid "No matching variables found between the source and target files."
+msgstr ""
+"Geen overeenkomende variabelen gevonden tussen het bron en het doel bestand."
+
+#: src/language/dictionary/delete-variables.c:40
 msgid ""
-"The record number specified, %ld, is at or before the previous record, %d.  "
-"Data fields must be listed in order of increasing record number."
+"DELETE VARIABLES may not be used after TEMPORARY.  Temporary transformations "
+"will be made permanent."
 msgstr ""
-"Het opgegeven record nummer, %ld, is op of voor het huidige record, %d. Data "
-"velden dienen opgegeven te worden in oplopende recordnummer volgorde."
+"DELETE VARIABLES mag niet gebruikt worden na TEMPORARY. Tijdelijke "
+"transformaties worden permanent gemaakt."
 
-#: src/language/data-io/get-data.c:493
-#, c-format
+#: src/language/dictionary/delete-variables.c:48
 msgid ""
-"The record number specified, %ld, exceeds the number of records per case "
-"specified on FIXCASE, %d."
+"DELETE VARIABLES may not be used to delete all variables from the active "
+"file dictionary.  Use NEW FILE instead."
 msgstr ""
-"Het gespecificeerde record nummer, %ld, overschrijdt het aantal records per "
-"case zoals gespecificeerd in FIXCASE, %d."
+"DELETE VARIABLES mag niet gebruikt om alle variabelen van het actieve "
+"bestand woordenboek te verwijderen. Gebruik NEW FILE in de plaats."
 
-#: src/language/data-io/inpt-pgm.c:130
-msgid "Unexpected end-of-file within INPUT PROGRAM."
-msgstr "Onverwacht einde-bestand binnen INPUT PROGRAM."
+#: src/language/dictionary/formats.c:90
+msgid "`(' expected after variable list."
+msgstr "'(' verwacht na variabele lijst."
 
-#: src/language/data-io/inpt-pgm.c:143
-msgid "Input program did not create any variables."
-msgstr "Input program heeft geen variabelen gecreëerd."
+#: src/language/dictionary/formats.c:100 src/language/dictionary/numeric.c:74
+msgid "`)' expected after output format."
+msgstr "')' verwacht na output formaat."
 
-#: src/language/data-io/inpt-pgm.c:288
-msgid "COLUMN subcommand multiply specified."
-msgstr "COLUMN subopdracht meerdere keren gespecificeerd."
+#: src/language/dictionary/missing-values.c:56
+#: src/language/stats/aggregate.c:458
+msgid "expecting `('"
+msgstr "'(' verwacht"
 
-#: src/language/data-io/inpt-pgm.c:338
+#: src/language/dictionary/missing-values.c:72
+#, c-format
 msgid ""
-"REREAD: Column numbers must be positive finite numbers.  Column set to 1."
+"Cannot mix numeric variables (e.g. %s) and string variables (e.g. %s) within "
+"a single list."
 msgstr ""
-"REREAD: Kolom nummers moeten positieve eindige nummers zijn. Kolom is op 1 "
-"gezet."
+"Kan numerieke variabelen (b.v. %s) en string variabelen (b.v. %s) niet mixen "
+"binnen een enkele lijst."
 
-#: src/language/data-io/list.q:157 src/language/stats/descriptives.c:362
-msgid "No variables specified."
-msgstr "Geen variabelen gespecificeerd."
+#: src/language/dictionary/missing-values.c:116
+#, fuzzy, c-format
+msgid "Truncating missing value to maximum acceptable length (%d bytes)."
+msgstr "Afkappen missing value naar short string lengte (%d karakters)."
 
-#: src/language/data-io/list.q:165
+#: src/language/dictionary/missing-values.c:138
 #, c-format
-msgid ""
-"The first case (%ld) specified precedes the last case (%ld) specified.  The "
-"values will be swapped."
+msgid "Missing values provided are too long to assign to variable of width %d."
 msgstr ""
-"De eerste gespecificeerde case (%ld) gaat vooraf aan de laatste "
-"gespecificeerde case (%ld). De waardes worden verwisseld."
+"De opgegeven missing values zijn te lang om toe te kennen aan een variabele "
+"van breedte %d."
 
-#: src/language/data-io/list.q:173
-#, c-format
+#: src/language/dictionary/modify-variables.c:92
 msgid ""
-"The first case (%ld) to list is less than 1.  The value is being reset to 1."
+"MODIFY VARS may not be used after TEMPORARY.  Temporary transformations will "
+"be made permanent."
 msgstr ""
-"De eerste case (%ld) om weer te geven is kleiner dan 1. De waarde is "
-"teruggezet op 1."
+"MODIFY VARS mag niet gebruikt worden na TEMPORARY. Tijdelijke transformaties "
+"zullen permanent gemaakt worden."
 
-#: src/language/data-io/list.q:179
-#, c-format
-msgid ""
-"The last case (%ld) to list is less than 1.  The value is being reset to 1."
-msgstr ""
-"De laatste case (%ld) om weer te geven is kleiner dan 1. De waarde is "
-"teruggezet op 1."
+#: src/language/dictionary/modify-variables.c:114
+msgid "REORDER subcommand may be given at most once."
+msgstr "REORDER subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/language/data-io/list.q:185
-#, c-format
-msgid "The step value %ld is less than 1.  The value is being reset to 1."
-msgstr "De stap waarde %ld is kleiner dan 1. De waarde is teruggezet op 1."
+#: src/language/dictionary/modify-variables.c:137
+msgid "Cannot specify ALL after specifying a set of variables."
+msgstr "Kan niet ALL opgeven na het specificeren van een set van variabelen."
 
-#: src/language/data-io/list.q:211
-msgid "`/FORMAT WEIGHT' specified, but weighting is not on."
-msgstr "'/FORMAT WEIGHT' gespecificeerd, maar weging is niet aan."
+#: src/language/dictionary/modify-variables.c:147
+msgid "`(' expected on REORDER subcommand."
+msgstr "'(' verwacht bij REORDER subopdracht."
 
-#: src/language/data-io/list.q:468
-msgid "Line"
-msgstr "Regel"
-
-#: src/language/data-io/placement-parser.c:87
-#, c-format
-msgid ""
-"Number of variables specified (%zu) differs from number of variable formats "
-"(%zu)."
-msgstr ""
-"Aantal gespecificeerde variabelen (%zu) verschilt van aantal variabele "
-"formaten (%zu)."
-
-#: src/language/data-io/placement-parser.c:97
-msgid ""
-"SPSS-like or Fortran-like format specification expected after variable names."
-msgstr ""
-"SPSS-achtig of Fortran-achtig formaat specificatie verwacht na variabele "
-"naam."
-
-#: src/language/data-io/placement-parser.c:119
-#, c-format
-msgid "The %d columns %d-%d can't be evenly divided into %zu fields."
-msgstr "De %d kolommen %d-%d kunnen niet gelijk verdeeld worden in %zu velden."
-
-#: src/language/data-io/placement-parser.c:226
-#: src/language/lexer/format-parser.c:107
-#: src/language/lexer/format-parser.c:126
-#, c-format
-msgid "Unknown format type \"%s\"."
-msgstr "Onbekend formaat type \"%s\"."
-
-#: src/language/data-io/placement-parser.c:305
-msgid "Column positions for fields must be positive."
-msgstr "Kolom posities voor velden moet positief zijn."
-
-#: src/language/data-io/placement-parser.c:307
-msgid "Column positions for fields must not be negative."
-msgstr "Kolom posities voor velden mogen niet negatief zijn."
-
-#: src/language/data-io/placement-parser.c:344
-msgid "The ending column for a field must be greater than the starting column."
-msgstr "De eind kolom van een veld moet groter zijn dan de start kolom."
-
-#: src/language/data-io/print.c:179 src/language/data-io/trim.c:54
-msgid "expecting a valid subcommand"
-msgstr "een geldig subopdracht verwacht"
-
-#: src/language/data-io/print.c:267
-#, c-format
-msgid "Output calls for %d records but %zu specified on RECORDS subcommand."
-msgstr ""
-"De output vraagt %d records maar %zu gespecificeerd bij RECORDS subopdracht. "
-
-#: src/language/data-io/print.c:438
-#, c-format
-msgid "Writing %d record to %s."
-msgid_plural "Writing %d records to %s."
-msgstr[0] "Schrijven van %d record naar %s."
-msgstr[1] "Schrijven van %d records naar %s."
-
-#: src/language/data-io/print.c:442
-#, c-format
-msgid "Writing %d record."
-msgid_plural "Writing %d records."
-msgstr[0] "Schrijven van %d record."
-msgstr[1] "Schrijven van %d records."
-
-#: src/language/data-io/print-space.c:73 src/language/lexer/lexer.c:478
-#: src/language/stats/autorecode.c:154 src/language/xforms/select-if.c:60
-msgid "expecting end of command"
-msgstr "verwacht einde van opdracht "
-
-#: src/language/data-io/print-space.c:116
-msgid "The expression on PRINT SPACE evaluated to the system-missing value."
-msgstr "De expressie bij PRINT SPACE evalueerde tot de system-missing waarde."
-
-#: src/language/data-io/print-space.c:119
-#, c-format
-msgid "The expression on PRINT SPACE evaluated to %g."
-msgstr "De expressie bij PRINT SPACE evalueerde tot %g."
-
-#: src/language/data-io/save.c:223 src/language/data-io/save.c:238
-#: src/language/data-io/save.c:266
-#, c-format
-msgid "expecting %s or %s"
-msgstr "%s of %s verwacht"
-
-#: src/language/data-io/trim.c:88
-#, c-format
-msgid ""
-"Cannot rename %s as %s because there already exists a variable named %s.  To "
-"rename variables with overlapping names, use a single RENAME subcommand such "
-"as \"/RENAME (A=B)(B=C)(C=A)\", or equivalently, \"/RENAME (A B C=B C A)\"."
-msgstr ""
-"Kan %s niet hernoemen naar  %s omdat er al een variabele met de naam %s "
-"bestaat.  Om variabelen met overlappende naam te hernoemen gebruik een enkel "
-"RENAME subopdracht zoals \"/RENAME (A=B)(B=C)(C=A)\", of equivalent achtig, "
-"\"/RENAME (A B C=B C A)\"."
-
-#: src/language/data-io/trim.c:114
-msgid "`=' expected after variable list."
-msgstr "'=' verwacht na variabele lijst."
-
-#: src/language/data-io/trim.c:121
-#, c-format
-msgid ""
-"Number of variables on left side of `=' (%zu) does not match number of "
-"variables on right side (%zu), in parenthesized group %d of RENAME "
-"subcommand."
-msgstr ""
-"Aantal variabelen aan linker zijde van `=' (%zu) komt niet overeen met het "
-"aantal variabelen aan rechter zijde (%zu), in tussengevoegde groep %d van "
-"RENAME subopdracht."
-
-#: src/language/data-io/trim.c:134
-#, c-format
-msgid "Requested renaming duplicates variable name %s."
-msgstr "Gevraagde hernoeming dupliceert variabele naam %s."
-
-#: src/language/data-io/trim.c:165
-msgid "Cannot DROP all variables from dictionary."
-msgstr "Kan niet alle variabelen DROP-en uit woordenboek."
-
-#: src/language/dictionary/apply-dictionary.c:75
-#, c-format
-msgid "Variable %s is %s in target file, but %s in source file."
-msgstr "Variabele %s is %s in doel bestand, maar %s in bron bestand."
-
-#: src/language/dictionary/apply-dictionary.c:115
-msgid "No matching variables found between the source and target files."
-msgstr ""
-"Geen overeenkomende variabelen gevonden tussen het bron en het doel bestand."
-
-#: src/language/dictionary/attributes.c:108
-msgid "Attribute array index must be between 1 and 65535."
-msgstr "Attribuut array index moet tussen 1 en 65535 liggen."
-
-#: src/language/dictionary/attributes.c:189
-msgid "expecting ATTRIBUTE= or DELETE="
-msgstr "ATTRIBUTE= of DELETE= verwacht"
-
-#: src/language/dictionary/delete-variables.c:40
-msgid ""
-"DELETE VARIABLES may not be used after TEMPORARY.  Temporary transformations "
-"will be made permanent."
-msgstr ""
-"DELETE VARIABLES mag niet gebruikt worden na TEMPORARY. Tijdelijke "
-"transformaties worden permanent gemaakt."
-
-#: src/language/dictionary/delete-variables.c:48
-msgid ""
-"DELETE VARIABLES may not be used to delete all variables from the active "
-"file dictionary.  Use NEW FILE instead."
-msgstr ""
-"DELETE VARIABLES mag niet gebruikt om alle variabelen van het actieve "
-"bestand woordenboek te verwijderen. Gebruik NEW FILE in de plaats."
-
-#: src/language/dictionary/formats.c:90
-msgid "`(' expected after variable list."
-msgstr "'(' verwacht na variabele lijst."
-
-#: src/language/dictionary/formats.c:100 src/language/dictionary/numeric.c:74
-msgid "`)' expected after output format."
-msgstr "')' verwacht na output formaat."
-
-#: src/language/dictionary/missing-values.c:56
-#: src/language/stats/aggregate.c:458
-msgid "expecting `('"
-msgstr "'(' verwacht"
-
-#: src/language/dictionary/missing-values.c:72
-#, c-format
-msgid ""
-"Cannot mix numeric variables (e.g. %s) and string variables (e.g. %s) within "
-"a single list."
-msgstr ""
-"Kan numerieke variabelen (b.v. %s) en string variabelen (b.v. %s) niet mixen "
-"binnen een enkele lijst."
-
-#: src/language/dictionary/missing-values.c:116
-#, fuzzy, c-format
-msgid "Truncating missing value to maximum acceptable length (%d bytes)."
-msgstr "Afkappen missing value naar short string lengte (%d karakters)."
-
-#: src/language/dictionary/missing-values.c:138
-#, c-format
-msgid "Missing values provided are too long to assign to variable of width %d."
-msgstr ""
-"De opgegeven missing values zijn te lang om toe te kennen aan een variabele "
-"van breedte %d."
-
-#: src/language/dictionary/modify-variables.c:92
-msgid ""
-"MODIFY VARS may not be used after TEMPORARY.  Temporary transformations will "
-"be made permanent."
-msgstr ""
-"MODIFY VARS mag niet gebruikt worden na TEMPORARY. Tijdelijke transformaties "
-"zullen permanent gemaakt worden."
-
-#: src/language/dictionary/modify-variables.c:114
-msgid "REORDER subcommand may be given at most once."
-msgstr "REORDER subopdracht mag maximaal 1 keer gegeven worden."
-
-#: src/language/dictionary/modify-variables.c:137
-msgid "Cannot specify ALL after specifying a set of variables."
-msgstr "Kan niet ALL opgeven na het specificeren van een set van variabelen."
-
-#: src/language/dictionary/modify-variables.c:147
-msgid "`(' expected on REORDER subcommand."
-msgstr "'(' verwacht bij REORDER subopdracht."
-
-#: src/language/dictionary/modify-variables.c:159
-msgid "`)' expected following variable names on REORDER subcommand."
-msgstr "')' verwacht achter variabele namen bij REORDER subopdracht."
+#: src/language/dictionary/modify-variables.c:159
+msgid "`)' expected following variable names on REORDER subcommand."
+msgstr "')' verwacht achter variabele namen bij REORDER subopdracht."
 
 #: src/language/dictionary/modify-variables.c:177
 msgid "RENAME subcommand may be given at most once."
@@ -2105,19 +1920,14 @@ msgstr "Hernoemen zou variabele naam %s dupliceren."
 #: src/language/dictionary/split-file.c:85
 #: src/language/dictionary/sys-file-info.c:486
 #: src/language/dictionary/sys-file-info.c:641
-#: src/language/stats/crosstabs.q:1235 src/language/stats/crosstabs.q:1262
-#: src/language/stats/crosstabs.q:1286 src/language/stats/crosstabs.q:1311
-#: src/language/stats/examine.q:1959 src/language/stats/frequencies.q:1051
-#: src/language/stats/frequencies.q:1176 src/language/stats/reliability.q:582
-#: src/language/stats/reliability.q:593
 msgid "Value"
 msgstr "Waarde"
 
 #: src/language/dictionary/split-file.c:86
 #: src/language/dictionary/sys-file-info.c:397
-#: src/language/dictionary/sys-file-info.c:642 src/ui/gui/crosstabs.glade:275
-#: src/ui/gui/psppire.glade:1974 src/ui/gui/psppire-var-sheet.c:534
-#: src/ui/gui/psppire-var-store.c:836
+#: src/language/dictionary/sys-file-info.c:642
+#: src/ui/gui/psppire-var-sheet.c:537 src/ui/gui/psppire-var-store.c:836
+#: src/ui/gui/crosstabs.glade:275 src/ui/gui/psppire.glade:1974
 msgid "Label"
 msgstr ""
 
@@ -2349,10 +2159,6 @@ msgstr "Print Formaat"
 msgid "Truncating value label to 60 characters."
 msgstr "Afkappen waarde label tot 60 karakters."
 
-#: src/language/dictionary/variable-display.c:120
-msgid "Variable display width must be a positive integer."
-msgstr "Variabele toonbreedte moet een positieve integer zijn."
-
 #: src/language/dictionary/variable-label.c:51
 msgid "String expected for variable label."
 msgstr "String verwacht voor variabele label."
@@ -2393,6 +2199,10 @@ msgstr "%s is te lang voor een variabele naam."
 msgid "%s is an existing variable name."
 msgstr "%s is een bestaande variabele naam."
 
+#: src/language/dictionary/variable-display.c:120
+msgid "Variable display width must be a positive integer."
+msgstr "Variabele toonbreedte moet een positieve integer zijn."
+
 #: src/language/dictionary/weight.c:49
 msgid "The weighting variable must be numeric."
 msgstr "De weging variabele moet numeriek zijn."
@@ -2401,2724 +2211,2649 @@ msgstr "De weging variabele moet numeriek zijn."
 msgid "The weighting variable may not be scratch."
 msgstr "De weging variabele mag geen scratch zijn."
 
-#: src/language/expressions/evaluate.c:155
-msgid "expecting number or string"
-msgstr "verwacht nummer of string"
-
-#: src/language/expressions/evaluate.c:169
+#: src/language/tests/float-format.c:124
 #, c-format
-msgid "Duplicate variable name %s."
-msgstr "Dubbele variabele naam %s."
+msgid "%zu-byte string needed but %zu-byte string supplied."
+msgstr "%zu-byte string nodig maar %zu-byte string gegeven."
 
-#: src/language/expressions/helpers.c:51
-msgid ""
-"One of the arguments to a DATE function is not an integer.  The result will "
-"be system-missing."
+#: src/language/tests/float-format.c:136
+msgid "Hexadecimal floating constant too long."
 msgstr ""
-"Een van de variabelen voor een DATE functie is geen integer. Het resultaat "
-"zal system-missing zijn."
 
-#: src/language/expressions/helpers.c:73
+#: src/language/tests/float-format.c:201
+#, c-format
 msgid ""
-"The week argument to DATE.WKYR is not an integer.  The result will be system-"
-"missing."
+"%s conversion of %s from %s to %s should have produced %s but actually "
+"produced %s."
 msgstr ""
-"Het week argument voor DATE.WKYR is geen integer.  Het resultaat zal system-"
-"missing zijn."
+"%s conversie van %s van %s naar %s zou %s moeten produceren maar produceerde "
+"in werkelijkheid %s."
 
-#: src/language/expressions/helpers.c:79
-msgid ""
-"The week argument to DATE.WKYR is outside the acceptable range of 1 to 53.  "
-"The result will be system-missing."
-msgstr ""
-"Het week argument voor DATE.WKYR is buiten de acceptabele range van 1 tot "
-"53.  Het resultaat zal system-missing zijn."
+#: src/language/tests/float-format.c:247
+msgid "Too many values in single command."
+msgstr "Te veel waardes in enkele opdracht."
 
-#: src/language/expressions/helpers.c:101
-msgid ""
-"The day argument to DATE.YRDAY is not an integer.  The result will be system-"
-"missing."
-msgstr ""
-"Het dag argument voor DATE.WKYR is geen integer.  Het resultaat zal system-"
-"missing zijn."
+#: src/language/tests/moments-test.c:47
+msgid "expecting weight value"
+msgstr "verwacht weging waarde"
 
-#: src/language/expressions/helpers.c:107
-msgid ""
-"The day argument to DATE.YRDAY is outside the acceptable range of 1 to 366.  "
-"The result will be system-missing."
-msgstr ""
-"Het dag argument voor DATE.WKYR is buiten de acceptabele range van 1 tot "
-"366.  Het resultaat zal system-missing zijn."
+#: src/language/utilities/cd.c:41
+#, c-format
+msgid "Cannot change directory to %s:  %s "
+msgstr "Kan map niet veranderen in %s: %s "
 
-#: src/language/expressions/helpers.c:129
-msgid ""
-"The year argument to YRMODA is greater than 47516.  The result will be "
-"system-missing."
-msgstr ""
-"Het jaar argument voor YRMODA is groter dan 47516.  Het resultaat zal system-"
-"missing zijn."
+#: src/language/utilities/date.c:32
+msgid "Only USE ALL is currently implemented."
+msgstr "Alleen USE ALL is op dit moment geïmplementeerd."
 
-#: src/language/expressions/helpers.c:182
+#: src/language/utilities/title.c:68
 #, c-format
-msgid ""
-"Unrecognized date unit \"%.*s\".  Valid date units are \"years\", \"quarters"
-"\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", and \"seconds\"."
-msgstr ""
-"Niet herkende datum eenheid \"%.*s\".  Geldige datum eenheden zijn \"years"
-"\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", "
-"en \"seconds\"."
+msgid "%s: `.' expected after string."
+msgstr "%s: `.' verwacht na string."
 
-#: src/language/expressions/helpers.c:332
-msgid ""
-"Invalid DATESUM method.  Valid choices are \"closest\" and \"rollover\"."
-msgstr ""
-"Ongeldige DATESUM methode. Geldige keuzes zijn \"closest\" en \"rollover\"."
+#: src/language/utilities/title.c:108
+#, c-format
+msgid "   (Entered %s)"
+msgstr "   (Ingevoerd %s)"
 
-#: src/language/expressions/parse.c:259
+#: src/language/utilities/include.c:92
+msgid "Expecting BATCH or INTERACTIVE after SYNTAX."
+msgstr "BATCH of INTERACTIVE verwacht na SYNTAX."
+
+#: src/language/utilities/include.c:109
+msgid "Expecting YES or NO after CD."
+msgstr "YES of NO verwacht na CD."
+
+#: src/language/utilities/include.c:126
+msgid "Expecting CONTINUE or STOP after ERROR."
+msgstr "CONTINUE of STOP verwacht na ERROR."
+
+#: src/language/utilities/include.c:133
 #, c-format
-msgid ""
-"Type mismatch: expression has %s type, but a numeric value is required here."
-msgstr ""
-"Type ongelijk: expressie heeft type %s, maar een numerieke waarde is hier "
-"noodzakelijk."
+msgid "Unexpected token: `%s'."
+msgstr "Onverwacht symbool: '%s'."
 
-#: src/language/expressions/parse.c:271
+#: src/language/utilities/include.c:178
+msgid "expecting file name"
+msgstr "bestandsnaam verwacht"
+
+#: src/language/utilities/include.c:190
 #, c-format
-msgid ""
-"Type mismatch: expression has %s type, but a string value is required here."
-msgstr ""
-"Type ongelijk: expressie heeft type %s, maar een string waarde is hier "
-"noodzakelijk."
+msgid "Can't find `%s' in include file search path."
+msgstr "Kan '%s' niet vinden in include bestand zoek pad."
 
-#: src/language/expressions/parse.c:427
+#: src/language/utilities/include.c:198
 #, c-format
-msgid "Type mismatch while applying %s operator: cannot convert %s to %s."
-msgstr ""
-"Type ongelijk tijdens het uitvoeren van %s operator: kan %s niet naar %s "
-"converteren."
+msgid "Unable to open `%s': %s."
+msgstr "Onmogelijk om te openen '%s': %s."
 
-#: src/language/expressions/parse.c:643
-msgid ""
-"Chaining relational operators (e.g. \"a < b < c\") will not produce the "
-"mathematically expected result.  Use the AND logical operator to fix the "
-"problem (e.g. \"a < b AND b < c\").  If chaining is really intended, "
-"parentheses will disable this warning (e.g. \"(a < b) < c\".)"
-msgstr ""
+#: src/language/utilities/permissions.c:73
+#, c-format
+msgid "Expecting %s or %s."
+msgstr "Verwacht %s of %s."
 
-#: src/language/expressions/parse.c:744
-msgid ""
-"The exponentiation operator (\"**\") is left-associative, even though right-"
-"associative semantics are more useful.  That is, \"a**b**c\" equals \"(a**b)"
-"**c\", not as \"a**(b**c)\".  To disable this warning, insert parentheses."
+#: src/language/utilities/permissions.c:106
+#, c-format
+msgid "Cannot stat %s: %s"
 msgstr ""
 
-#: src/language/expressions/parse.c:809
+#: src/language/utilities/permissions.c:119
 #, c-format
-msgid "Unknown system variable %s."
-msgstr "Onbekende systeem variabele %s."
+msgid "Cannot change mode of %s: %s"
+msgstr "Kan mode van %s niet veranderen: %s"
 
-#: src/language/expressions/parse.c:857
-#, c-format
-msgid "Unknown identifier %s."
-msgstr "Onbekende herkenningsteken %s."
+#: src/language/stats/aggregate.c:219
+msgid "while expecting COLUMNWISE"
+msgstr "terwijl COLUMNWISE verwacht werd"
 
-#: src/language/expressions/parse.c:885 src/language/stats/aggregate.c:516
-msgid "expecting `)'"
-msgstr "')' verwacht"
+#: src/language/stats/aggregate.c:247
+msgid "expecting BREAK"
+msgstr "BREAK verwacht"
 
-#: src/language/expressions/parse.c:892
-msgid "in expression"
-msgstr "in expressie"
+#: src/language/stats/aggregate.c:252
+msgid ""
+"When PRESORTED is specified, specifying sorting directions with (A) or (D) "
+"has no effect.  Output data will be sorted the same way as the input data."
+msgstr ""
+"Als PRESORTED is gespecificeerd, heeft specificeren van sorteer volgorde met "
+"(A) of (D) geen effect. Uitvoer data is hetzelfde gesorteerd als de invoer "
+"data."
 
-#: src/language/expressions/parse.c:1073
-#, c-format
-msgid "%s must have at least %d arguments in list."
-msgstr "%s heeft tenminste %d argumenten nodig in lijst."
+#: src/language/stats/aggregate.c:423
+msgid "expecting aggregation function"
+msgstr "aggregatie functie verwacht"
 
-#: src/language/expressions/parse.c:1082
+#: src/language/stats/aggregate.c:441
 #, c-format
-msgid "%s must have even number of arguments in list."
-msgstr "%s heeft een even aantal argumenten in lijst nodig."
+msgid "Unknown aggregation function %s."
+msgstr "Onbekende aggregatie functie %s."
 
-#: src/language/expressions/parse.c:1085
+#: src/language/stats/aggregate.c:497
 #, c-format
-msgid "%s must have multiple of %d arguments in list."
-msgstr "%s heeft meerdere %d argumenten in lijst nodig."
+msgid "Missing argument %zu to %s."
+msgstr "Missend argument %zu naar %s."
 
-#: src/language/expressions/parse.c:1095
+#: src/language/stats/aggregate.c:506
 #, c-format
-msgid "%s function does not accept a minimum valid argument count."
-msgstr "%s functie accepteert geen minimaal geldige argumenten teller."
+msgid "Arguments to %s must be of same type as source variables."
+msgstr "Argumenten naar %s moeten van hetzelfde type zijn als bron variabelen."
 
-#: src/language/expressions/parse.c:1104
-#, c-format
-msgid "%s requires at least %d valid arguments in list."
-msgstr "%s vereist tenminste %d geldige argumenten in lijst."
+#: src/language/stats/aggregate.c:516 src/language/expressions/parse.c:885
+msgid "expecting `)'"
+msgstr "')' verwacht"
 
-#: src/language/expressions/parse.c:1110
+#: src/language/stats/aggregate.c:528
 #, c-format
 msgid ""
-"With %s, using minimum valid argument count of %d does not make sense when "
-"passing only %d arguments in list."
+"Number of source variables (%zu) does not match number of target variables (%"
+"zu)."
 msgstr ""
-"Met %s, heeft het gebruik van de minimum geldige argumenttelling van %d geen "
-"zin wanneer een lijst van slechts %d wordt doorgegeven. "
+"Aantal bron variabelen (%zu) komt niet overeen met aantal doel variabelen (%"
+"zu)."
 
-#: src/language/expressions/parse.c:1164
+#: src/language/stats/aggregate.c:544
 #, c-format
-msgid "Type mismatch invoking %s as "
-msgstr "Type ongelijk bij aanroep %s als "
-
-#: src/language/expressions/parse.c:1169
-msgid "Function invocation "
-msgstr "Functie aanroep "
-
-#: src/language/expressions/parse.c:1171
-msgid " does not match any known function.  Candidates are:"
-msgstr " komt niet overeen met een geldige functie. Kandidaten zijn:"
+msgid ""
+"The value arguments passed to the %s function are out-of-order.  They will "
+"be treated as if they had been specified in the correct order."
+msgstr ""
+"De volgorde van de geldige argumenten doorgegeven aan de %s functie klopt "
+"niet. Ze worden behandeld alsof ze in de correcte volgorde waren opgegeven."
 
-#: src/language/expressions/parse.c:1201
+#: src/language/stats/aggregate.c:614
 #, c-format
-msgid "No function or vector named %s."
-msgstr "Geen functie of vector genaamd %s."
+msgid ""
+"Variable name %s is not unique within the aggregate file dictionary, which "
+"contains the aggregate variables and the break variables."
+msgstr ""
+"Variabele naam %s is niet uniek binnen het aggregate bestand woordenboek, "
+"dat de aggregate variabelen en de break variabelen bevat."
 
-#: src/language/expressions/parse.c:1244
+#: src/language/stats/autorecode.c:136
 #, c-format
-msgid "expecting `,' or `)' invoking %s function"
-msgstr "verwacht ',' of ')' bij aanroep %s functie"
+msgid "Source variable count (%zu) does not match target variable count (%zu)."
+msgstr ""
+"Bron variabele teller (%zu) komt niet overeen met doel variabele teller (%"
+"zu)."
 
-#: src/language/expressions/parse.c:1264
+#: src/language/stats/autorecode.c:164
 #, c-format
-msgid "%s is a PSPP extension."
-msgstr "%s is een PSPP extensie."
+msgid "Target variable %s duplicates existing variable %s."
+msgstr "Doel variabele %s dupliceert bestaande variabele %s."
 
-#: src/language/expressions/parse.c:1273
+#: src/language/stats/autorecode.c:171
 #, c-format
-msgid "%s may not appear after TEMPORARY."
-msgstr "%s mag niet voorkomen na TEMPORARY."
+msgid "Duplicate variable name %s among target variables."
+msgstr "Dubbele variabele naam %s tussen doel variabelen."
 
-#: src/language/lexer/format-parser.c:88
-msgid "expecting valid format specifier"
-msgstr "verwacht geldige formaat specificator"
+#: src/language/stats/binomial.c:141
+#, c-format
+msgid "Variable %s is not dichotomous"
+msgstr "Variabele %s is niet dichotomisch "
 
-#: src/language/lexer/format-parser.c:121
-msgid "expecting format type"
-msgstr "verwacht formaat type"
+#: src/language/stats/binomial.c:194
+msgid "Binomial Test"
+msgstr ""
 
-#: src/language/lexer/lexer.c:283
-#, c-format
-msgid "%s does not form a valid number."
-msgstr "%s vormt geen geldig nummer."
+#: src/language/stats/binomial.c:224
+msgid "Group1"
+msgstr "Groep1 "
 
-#: src/language/lexer/lexer.c:389
-#, fuzzy, c-format
-msgid "Bad character in input: `%s'."
-msgstr "Fout karakter in input: '%c'."
+#: src/language/stats/binomial.c:225
+msgid "Group2"
+msgstr "Groep2"
 
-#: src/language/lexer/lexer.c:426
-#, c-format
-msgid "Subcommand %s may only be specified once."
-msgstr "Subopdracht %s mag slechts een keer gespecificeerd worden."
+#: src/language/stats/binomial.c:226 src/language/stats/chisquare.c:202
+#: src/language/stats/chisquare.c:262 src/language/stats/sign.c:94
+#: src/language/stats/wilcoxon.c:262 src/ui/gui/crosstabs-dialog.c:59
+msgid "Total"
+msgstr "Totaal"
 
-#: src/language/lexer/lexer.c:434
-#, c-format
-msgid "missing required subcommand %s"
-msgstr "mis verplichte subopdracht %s"
+#: src/language/stats/binomial.c:259 src/language/stats/chisquare.c:225
+msgid "Category"
+msgstr "Categorie"
 
-#: src/language/lexer/lexer.c:463
-#, c-format
-msgid "Syntax error %s at %s."
-msgstr "Syntax fout %s op %s."
+#: src/language/stats/binomial.c:260 src/language/stats/npar-summary.c:123
+#: src/language/stats/sign.c:74 src/language/stats/wilcoxon.c:245
+msgid "N"
+msgstr ""
 
-#: src/language/lexer/lexer.c:466
+#: src/language/stats/binomial.c:261
+msgid "Observed Prop."
+msgstr ""
+
+#: src/language/stats/binomial.c:262
+msgid "Test Prop."
+msgstr ""
+
+#: src/language/stats/binomial.c:265
 #, c-format
-msgid "Syntax error at %s."
-msgstr "Syntax fout op %s."
+msgid "Exact Sig. (%d-tailed)"
+msgstr ""
 
-#: src/language/lexer/lexer.c:600 src/language/lexer/lexer.c:617
+#: src/language/stats/chisquare.c:172
 #, c-format
-msgid "expecting `%s'"
-msgstr "verwacht '%s'"
+msgid ""
+"CHISQUARE test specified %d expected values, but %d distinct values were "
+"encountered in variable %s."
+msgstr ""
+"CHISQUARE test specificeert %d verwachte waardes, maar %d verschillende "
+"waardes werden gevonden in variabele %s."
 
-#: src/language/lexer/lexer.c:631
-msgid "expecting string"
-msgstr "string verwacht"
+#: src/language/stats/chisquare.c:186 src/language/stats/chisquare.c:226
+msgid "Observed N"
+msgstr "Waargenomen N"
 
-#: src/language/lexer/lexer.c:645
-msgid "expecting integer"
-msgstr "verwacht integer"
+#: src/language/stats/chisquare.c:187 src/language/stats/chisquare.c:227
+msgid "Expected N"
+msgstr "Verwacht N"
 
-#: src/language/lexer/lexer.c:658
-msgid "expecting number"
-msgstr "nummer verwacht"
+#: src/language/stats/chisquare.c:188 src/language/stats/chisquare.c:228
+#: src/ui/gui/crosstabs-dialog.c:61
+msgid "Residual"
+msgstr "Overblijvend"
 
-#: src/language/lexer/lexer.c:670
-msgid "expecting identifier"
-msgstr "verwacht herkenningsteken"
+#: src/language/stats/chisquare.c:221 src/language/stats/sign.c:62
+msgid "Frequencies"
+msgstr "Frequenties"
 
-#: src/language/lexer/lexer.c:1064
-msgid "binary"
-msgstr "binair"
+#: src/language/stats/chisquare.c:276 src/language/stats/sign.c:115
+#: src/language/stats/wilcoxon.c:313
+msgid "Test Statistics"
+msgstr ""
 
-#: src/language/lexer/lexer.c:1069
-msgid "octal"
-msgstr "octaal"
+#: src/language/stats/chisquare.c:290
+msgid "Chi-Square"
+msgstr ""
 
-#: src/language/lexer/lexer.c:1074
-msgid "hex"
+#: src/language/stats/chisquare.c:291
+msgid "df"
 msgstr ""
 
-#: src/language/lexer/lexer.c:1084
-#, c-format
-msgid "String of %s digits has %zu characters, which is not a multiple of %d."
+#: src/language/stats/chisquare.c:292
+msgid "Asymp. Sig."
 msgstr ""
-"String van %s cijfers heeft %zu karakters, wat geen meervoud van %d is."
 
-#: src/language/lexer/lexer.c:1113
-#, c-format
-msgid "`%c' is not a valid %s digit."
-msgstr "'%c' is geen geldig %s cijfer."
+#: src/language/stats/descriptives.c:102 src/language/stats/npar-summary.c:126
+#: src/ui/gui/descriptives-dialog.c:39 src/ui/gui/frequencies-dialog.c:40
+msgid "Mean"
+msgstr "Gemiddeld"
 
-#: src/language/lexer/lexer.c:1147
-msgid "Unterminated string constant."
-msgstr "Geen einde aan string constante."
+#: src/language/stats/descriptives.c:103
+msgid "S E Mean"
+msgstr ""
 
-#: src/language/lexer/lexer.c:1201
-msgid "Unexpected end of file in string concatenation."
-msgstr "Onverwacht bestandseinde in string samenvoeging."
+#: src/language/stats/descriptives.c:104
+msgid "Std Dev"
+msgstr ""
 
-#: src/language/lexer/lexer.c:1209
-msgid "String expected following `+'."
-msgstr "String verwacht achter '+'."
+#: src/language/stats/descriptives.c:105 src/ui/gui/descriptives-dialog.c:46
+#: src/ui/gui/frequencies-dialog.c:45
+msgid "Variance"
+msgstr ""
 
-#: src/language/lexer/lexer.c:1222
-#, c-format
-msgid "String exceeds 255 characters in length (%zu characters)."
-msgstr "String overschrijdt de lengte van 255 karakters (%zu karakters)."
+#: src/language/stats/descriptives.c:106 src/ui/gui/descriptives-dialog.c:47
+#: src/ui/gui/frequencies-dialog.c:50
+msgid "Kurtosis"
+msgstr ""
 
-#: src/language/lexer/value-parser.c:60
-#, c-format
-msgid ""
-"Low end of range (%g) is below high end (%g).  The range will be treated as "
-"reversed."
+#: src/language/stats/descriptives.c:107
+msgid "S E Kurt"
 msgstr ""
-"Ondergrens van range (%g) is lager dan bovengrens (%g). De range wordt "
-"behandeld als omgekeerd."
 
-#: src/language/lexer/value-parser.c:68
-#, c-format
-msgid "Ends of range are equal (%g)."
-msgstr "Eindes van range zijn gelijk (%g)."
+#: src/language/stats/descriptives.c:108 src/ui/gui/descriptives-dialog.c:48
+#: src/ui/gui/frequencies-dialog.c:46
+msgid "Skewness"
+msgstr ""
 
-#: src/language/lexer/value-parser.c:76
-msgid "LO or LOWEST must be part of a range."
-msgstr "LO of LOWEST moet een onderdeel van een range zijn."
+#: src/language/stats/descriptives.c:109
+msgid "S E Skew"
+msgstr ""
 
-#: src/language/lexer/value-parser.c:109
-msgid "System-missing value is not valid here."
-msgstr "System-missing waarde is hier niet geldig."
+#: src/language/stats/descriptives.c:110 src/ui/gui/descriptives-dialog.c:43
+#: src/ui/gui/frequencies-dialog.c:48
+msgid "Range"
+msgstr ""
 
-#: src/language/lexer/value-parser.c:117
-msgid "expecting number or data string"
-msgstr "nummer of data string verwacht"
+#: src/language/stats/descriptives.c:111 src/language/stats/npar-summary.c:132
+#: src/ui/gui/descriptives-dialog.c:41 src/ui/gui/frequencies-dialog.c:42
+msgid "Minimum"
+msgstr ""
 
-#: src/language/lexer/variable-parser.c:63
-msgid "expecting variable name"
-msgstr "variabele naam verwacht"
+#: src/language/stats/descriptives.c:112 src/language/stats/npar-summary.c:135
+#: src/ui/gui/descriptives-dialog.c:42 src/ui/gui/frequencies-dialog.c:43
+msgid "Maximum"
+msgstr ""
 
-#: src/language/lexer/variable-parser.c:73
-#, c-format
-msgid "%s is not a variable name."
-msgstr "%s is geen variabele naam."
+#: src/language/stats/descriptives.c:113 src/ui/gui/descriptives-dialog.c:44
+#: src/ui/gui/frequencies-dialog.c:53
+msgid "Sum"
+msgstr "Som"
 
-#: src/language/lexer/variable-parser.c:176
+#: src/language/stats/descriptives.c:344
 #, c-format
-msgid ""
-"%s is not a numeric variable.  It will not be included in the variable list."
-msgstr ""
-"%s is geen numerieke variabele. Het wordt niet opgenomen in de variabele "
-"lijst."
+msgid "Z-score variable name %s would be a duplicate variable name."
+msgstr "Z-score variabele naam %s zou een dubbele variabele naam zijn."
 
-#: src/language/lexer/variable-parser.c:179
-#, c-format
+#: src/language/stats/descriptives.c:362
+msgid "No variables specified."
+msgstr "Geen variabelen gespecificeerd."
+
+#: src/language/stats/descriptives.c:451
+msgid "expecting statistic name: reverting to default"
+msgstr "statistische naam verwacht: teruggezet op default"
+
+#: src/language/stats/descriptives.c:524
 msgid ""
-"%s is not a string variable.  It will not be included in the variable list."
+"Ran out of generic names for Z-score variables.  There are only 126 generic "
+"names: ZSC001-ZSC0999, STDZ01-STDZ09, ZZZZ01-ZZZZ09, ZQZQ01-ZQZQ09."
 msgstr ""
-"%s is geen string variabele. Het wordt niet opgenomen in de variabele lijst."
+"Generieke namen voor Z-score variabelen zijn uitgeput.  Er zijn slechts 126 "
+"generieke namen: ZSC001-ZSC0999, STDZ01-STDZ09, ZZZZ01-ZZZZ09, ZQZQ01-ZQZQ09."
 
-#: src/language/lexer/variable-parser.c:183
-#, c-format
-msgid "Scratch variables (such as %s) are not allowed here."
-msgstr "Scratch variabelen (zoals %s) zijn hier niet toegestaan."
+#: src/language/stats/descriptives.c:556
+msgid "Mapping of variables to corresponding Z-scores."
+msgstr "Mappen van variabelen naar corresponderen Z-scores."
 
-#: src/language/lexer/variable-parser.c:187
+#: src/language/stats/descriptives.c:561
+msgid "Source"
+msgstr "Bron"
+
+#: src/language/stats/descriptives.c:562
+msgid "Target"
+msgstr "Doel"
+
+#: src/language/stats/descriptives.c:673
 #, c-format
-msgid ""
-"%s and %s are not the same type.  All variables in this variable list must "
-"be of the same type.  %s will be omitted from the list."
+msgid "Z-score of %s"
+msgstr "Z-score van %s"
+
+#: src/language/stats/descriptives.c:888
+msgid "Valid N"
 msgstr ""
-"%s en %s zijn niet van hetzelfde type. Alle variabelen in deze variabele "
-"lijst dienen van hetzelfde type te zijn.  %s wordt overgeslagen voor de "
-"lijst."
 
-#: src/language/lexer/variable-parser.c:193
-#, c-format
-msgid ""
-"%s and %s are string variables with different widths.  All variables in this "
-"variable list must have the same width.  %s will be omitted from the list."
+#: src/language/stats/descriptives.c:889
+msgid "Missing N"
 msgstr ""
-"%s en %s hebben verschillende breedtes. Alle variabelen in deze variabele "
-"lijst dienen dezelfde breedte te hebben.  %s wordt overgeslagen voor de "
-"lijst."
 
-#: src/language/lexer/variable-parser.c:198
+#: src/language/stats/descriptives.c:917
 #, c-format
-msgid "Variable %s appears twice in variable list."
-msgstr "Variabele %s komt 2 keer in de variabele lijst voor."
+msgid "Valid cases = %g; cases with missing value(s) = %g."
+msgstr "Geldige cases = %g; cases met missing value(s) = %g."
 
-#: src/language/lexer/variable-parser.c:311
-#, c-format
-msgid "%s TO %s is not valid syntax since %s precedes %s in the dictionary."
-msgstr ""
-"%s TO %s is geen geldige syntax omdat %s voor %s in het woordenboek staat."
+#: src/language/stats/sort-cases.c:64
+msgid "Buffer limit must be at least 2."
+msgstr "Buffer limiet moet tenminste 2 zijn."
 
-#: src/language/lexer/variable-parser.c:319
+#: src/language/stats/sort-criteria.c:74
+msgid "`A' or `D' expected inside parentheses."
+msgstr "'A' of 'D' verwacht binnen haakjes."
+
+#: src/language/stats/sort-criteria.c:79
+msgid "`)' expected."
+msgstr "')' verwacht."
+
+#: src/language/stats/sort-criteria.c:92
 #, c-format
+msgid "Variable %s specified twice in sort criteria."
+msgstr "Variabele %s 2 keer opgegeven in sort criteria."
+
+#: src/language/stats/flip.c:98
 msgid ""
-"When using the TO keyword to specify several variables, both variables must "
-"be from the same variable dictionaries, of either ordinary, scratch, or "
-"system variables.  %s is a %s variable, whereas %s is %s."
-msgstr ""
-"Wanneer het sleutelwoord TO wordt gebruikt om verscheidene variabelen te "
-"specificeren, moeten beide variabelen van het zelfde variabele "
-"woordenboeken, of gewone, scratch, of systeem variabelen zijn. %s is een %s "
-"variabele, terwijl %s %s. is. "
-
-#: src/language/lexer/variable-parser.c:393
-msgid "incorrect use of TO convention"
-msgstr "foutief gebruik van TO conventie"
-
-#: src/language/lexer/variable-parser.c:436
-msgid "Scratch variables not allowed here."
-msgstr "Scratch variabelen niet toegestaan hier."
-
-#: src/language/lexer/variable-parser.c:458
-msgid "Prefixes don't match in use of TO convention."
-msgstr "Prefixen komen niet overeen in het gebruik van TO conventie. "
-
-#: src/language/lexer/variable-parser.c:463
-msgid "Bad bounds in use of TO convention."
-msgstr "Slechte grenzen in het gebruik van TO conventie."
-
-#: src/language/stats/aggregate.c:219
-msgid "while expecting COLUMNWISE"
-msgstr "terwijl COLUMNWISE verwacht werd"
-
-#: src/language/stats/aggregate.c:247
-msgid "expecting BREAK"
-msgstr "BREAK verwacht"
-
-#: src/language/stats/aggregate.c:252
-msgid ""
-"When PRESORTED is specified, specifying sorting directions with (A) or (D) "
-"has no effect.  Output data will be sorted the same way as the input data."
+"FLIP ignores TEMPORARY.  Temporary transformations will be made permanent."
 msgstr ""
-"Als PRESORTED is gespecificeerd, heeft specificeren van sorteer volgorde met "
-"(A) of (D) geen effect. Uitvoer data is hetzelfde gesorteerd als de invoer "
-"data."
-
-#: src/language/stats/aggregate.c:423
-msgid "expecting aggregation function"
-msgstr "aggregatie functie verwacht"
+"FLIP negeert TEMPORARY. Tijdelijke transformaties worden permanent gemaakt."
 
-#: src/language/stats/aggregate.c:441
-#, c-format
-msgid "Unknown aggregation function %s."
-msgstr "Onbekende aggregatie functie %s."
+#: src/language/stats/flip.c:150
+msgid "Could not create temporary file for FLIP."
+msgstr "Kon geen tijdelijk bestand voor FLIP aanmaken."
 
-#: src/language/stats/aggregate.c:497
+#: src/language/stats/flip.c:327
 #, c-format
-msgid "Missing argument %zu to %s."
-msgstr "Missend argument %zu naar %s."
+msgid "Error rewinding FLIP file: %s."
+msgstr "Fout tijdens terugdraaien FLIP bestand: %s."
 
-#: src/language/stats/aggregate.c:506
-#, c-format
-msgid "Arguments to %s must be of same type as source variables."
-msgstr "Argumenten naar %s moeten van hetzelfde type zijn als bron variabelen."
+#: src/language/stats/flip.c:334
+msgid "Error creating FLIP source file."
+msgstr "Fout tijdens het creëren van FLIP bron bestand."
 
-#: src/language/stats/aggregate.c:528
+#: src/language/stats/flip.c:347
 #, c-format
-msgid ""
-"Number of source variables (%zu) does not match number of target variables (%"
-"zu)."
-msgstr ""
-"Aantal bron variabelen (%zu) komt niet overeen met aantal doel variabelen (%"
-"zu)."
+msgid "Error reading FLIP file: %s."
+msgstr "Fout tijdens lezen FLIP bestand: %s."
 
-#: src/language/stats/aggregate.c:544
-#, c-format
-msgid ""
-"The value arguments passed to the %s function are out-of-order.  They will "
-"be treated as if they had been specified in the correct order."
-msgstr ""
-"De volgorde van de geldige argumenten doorgegeven aan de %s functie klopt "
-"niet. Ze worden behandeld alsof ze in de correcte volgorde waren opgegeven."
+#: src/language/stats/flip.c:349
+msgid "Unexpected end of file reading FLIP file."
+msgstr "Onverwacht einde bestand tijdens lezen FLIP bestand."
 
-#: src/language/stats/aggregate.c:614
+#: src/language/stats/flip.c:365
 #, c-format
-msgid ""
-"Variable name %s is not unique within the aggregate file dictionary, which "
-"contains the aggregate variables and the break variables."
-msgstr ""
-"Variabele naam %s is niet uniek binnen het aggregate bestand woordenboek, "
-"dat de aggregate variabelen en de break variabelen bevat."
+msgid "Error seeking FLIP source file: %s."
+msgstr "Fout tijdens zoeken FLIP bron bestand: %s."
 
-#: src/language/stats/autorecode.c:136
+#: src/language/stats/flip.c:373
 #, c-format
-msgid "Source variable count (%zu) does not match target variable count (%zu)."
-msgstr ""
-"Bron variabele teller (%zu) komt niet overeen met doel variabele teller (%"
-"zu)."
+msgid "Error writing FLIP source file: %s."
+msgstr "Fout tijdens schrijven FLIP bron bestand: %s."
 
-#: src/language/stats/autorecode.c:164
+#: src/language/stats/flip.c:384
 #, c-format
-msgid "Target variable %s duplicates existing variable %s."
-msgstr "Doel variabele %s dupliceert bestaande variabele %s."
+msgid "Error closing FLIP source file: %s."
+msgstr "Fout tijdens sluiten FLIP bron bestand: %s."
 
-#: src/language/stats/autorecode.c:171
+#: src/language/stats/flip.c:392
 #, c-format
-msgid "Duplicate variable name %s among target variables."
-msgstr "Dubbele variabele naam %s tussen doel variabelen."
+msgid "Error rewinding FLIP source file: %s."
+msgstr "Fout tijdens terugdraaien FLIP bron bestand: %s."
 
-#: src/language/stats/binomial.c:141
+#: src/language/stats/flip.c:426
 #, c-format
-msgid "Variable %s is not dichotomous"
-msgstr "Variabele %s is niet dichotomisch "
-
-#: src/language/stats/binomial.c:194
-msgid "Binomial Test"
-msgstr ""
-
-#: src/language/stats/binomial.c:224
-msgid "Group1"
-msgstr "Groep1 "
-
-#: src/language/stats/binomial.c:225
-msgid "Group2"
-msgstr "Groep2"
+msgid "Error reading FLIP temporary file: %s."
+msgstr "Fout tijdens lezen FLIP tijdelijk bestand: %s."
 
-#: src/language/stats/binomial.c:226 src/language/stats/chisquare.c:202
-#: src/language/stats/chisquare.c:262 src/language/stats/crosstabs.q:845
-#: src/language/stats/crosstabs.q:1172 src/language/stats/crosstabs.q:1596
-#: src/language/stats/examine.q:1216 src/language/stats/frequencies.q:1128
-#: src/language/stats/oneway.q:305 src/language/stats/oneway.q:476
-#: src/language/stats/regression.q:309 src/language/stats/reliability.q:718
-#: src/language/stats/sign.c:94 src/language/stats/wilcoxon.c:262
-#: src/ui/gui/crosstabs-dialog.c:59
-msgid "Total"
-msgstr "Totaal"
+#: src/language/stats/flip.c:429
+msgid "Unexpected end of file reading FLIP temporary file."
+msgstr "Onverwacht einde bestand tijdens lezen FLIP tijdelijk bestand."
 
-#: src/language/stats/binomial.c:259 src/language/stats/chisquare.c:225
-#: src/language/stats/crosstabs.q:1260 src/language/stats/crosstabs.q:1308
-msgid "Category"
-msgstr "Categorie"
+#: src/language/stats/npar-summary.c:109
+msgid "Descriptive Statistics"
+msgstr "Descriptive Statistieken"
 
-#: src/language/stats/binomial.c:260 src/language/stats/crosstabs.q:852
-#: src/language/stats/examine.q:1289 src/language/stats/frequencies.q:1399
-#: src/language/stats/npar-summary.c:123 src/language/stats/oneway.q:389
-#: src/language/stats/reliability.q:721 src/language/stats/sign.c:74
-#: src/language/stats/t-test.q:506 src/language/stats/t-test.q:526
-#: src/language/stats/t-test.q:626 src/language/stats/t-test.q:1105
-#: src/language/stats/wilcoxon.c:245
-msgid "N"
+#: src/language/stats/npar-summary.c:129
+msgid "Std. Deviation"
 msgstr ""
 
-#: src/language/stats/binomial.c:261
-msgid "Observed Prop."
+#: src/language/stats/npar-summary.c:142 src/ui/gui/examine.glade:333
+msgid "Percentiles"
 msgstr ""
 
-#: src/language/stats/binomial.c:262
-msgid "Test Prop."
+#: src/language/stats/npar-summary.c:146
+msgid "25th"
 msgstr ""
 
-#: src/language/stats/binomial.c:265
-#, c-format
-msgid "Exact Sig. (%d-tailed)"
+#: src/language/stats/npar-summary.c:149
+msgid "50th (Median)"
 msgstr ""
 
-#: src/language/stats/chisquare.c:172
-#, c-format
-msgid ""
-"CHISQUARE test specified %d expected values, but %d distinct values were "
-"encountered in variable %s."
+#: src/language/stats/npar-summary.c:152
+msgid "75th"
 msgstr ""
-"CHISQUARE test specificeert %d verwachte waardes, maar %d verschillende "
-"waardes werden gevonden in variabele %s."
-
-#: src/language/stats/chisquare.c:186 src/language/stats/chisquare.c:226
-msgid "Observed N"
-msgstr "Waargenomen N"
-
-#: src/language/stats/chisquare.c:187 src/language/stats/chisquare.c:227
-msgid "Expected N"
-msgstr "Verwacht N"
-
-#: src/language/stats/chisquare.c:188 src/language/stats/chisquare.c:228
-#: src/language/stats/regression.q:308 src/ui/gui/crosstabs-dialog.c:61
-msgid "Residual"
-msgstr "Overblijvend"
-
-#: src/language/stats/chisquare.c:221 src/language/stats/sign.c:62
-msgid "Frequencies"
-msgstr "Frequenties"
 
-#: src/language/stats/chisquare.c:276 src/language/stats/sign.c:115
-#: src/language/stats/wilcoxon.c:313
-msgid "Test Statistics"
+#: src/language/stats/roc.c:938
+msgid "Area Under the Curve"
 msgstr ""
 
-#: src/language/stats/chisquare.c:290
-msgid "Chi-Square"
+#: src/language/stats/roc.c:940
+#, c-format
+msgid "Area Under the Curve (%s)"
 msgstr ""
 
-#: src/language/stats/chisquare.c:291 src/language/stats/crosstabs.q:1236
-#: src/language/stats/oneway.q:278 src/language/stats/oneway.q:691
-#: src/language/stats/regression.q:302 src/language/stats/t-test.q:753
-#: src/language/stats/t-test.q:924 src/language/stats/t-test.q:1011
-msgid "df"
+#: src/language/stats/roc.c:946
+msgid "Area"
 msgstr ""
 
-#: src/language/stats/chisquare.c:292
-msgid "Asymp. Sig."
+#: src/language/stats/roc.c:959
+msgid "Std. Error"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:327
-msgid ""
-"Missing mode REPORT not allowed in general mode.  Assuming MISSING=TABLE."
+#: src/language/stats/roc.c:960
+msgid "Asymptotic Sig."
 msgstr ""
-"Missing modus REPORT niet toegestaan in algemene modus.  MISSING=TABLE "
-"aangenomen."
-
-#: src/language/stats/crosstabs.q:416
-msgid "Too many cross-tabulation variables or dimensions."
-msgstr "Te veel cross-tabulation variabelen of dimensies."
 
-#: src/language/stats/crosstabs.q:426
-msgid "expecting BY"
-msgstr "BY verwacht"
+#: src/language/stats/roc.c:962
+msgid "Lower Bound"
+msgstr "Beneden Grens"
 
-#: src/language/stats/crosstabs.q:486
-msgid "VARIABLES must be specified before TABLES."
-msgstr "VARIABLES dient voor TABLES gespecificeerd te worden."
+#: src/language/stats/roc.c:963
+msgid "Upper Bound"
+msgstr "Boven Grens"
 
-#: src/language/stats/crosstabs.q:524
+#: src/language/stats/roc.c:967
 #, c-format
-msgid "Maximum value (%ld) less than minimum value (%ld)."
-msgstr "Maximum waarde (%ld) is kleiner dan minimum waarde (%ld)."
-
-#: src/language/stats/crosstabs.q:840
-msgid "Summary."
-msgstr "Overzicht."
-
-#: src/language/stats/crosstabs.q:842 src/language/stats/examine.q:1277
-#: src/language/stats/reliability.q:709
-msgid "Cases"
+msgid "Asymp. %g%% Confidence Interval"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:843 src/language/stats/examine.q:1214
-#: src/language/stats/frequencies.q:1049 src/language/stats/frequencies.q:1400
-#: src/language/stats/reliability.q:712
-msgid "Valid"
-msgstr "Geldig"
-
-#: src/language/stats/crosstabs.q:844 src/language/stats/examine.q:1215
-#: src/language/stats/frequencies.q:1119 src/language/stats/frequencies.q:1401
-#: src/ui/gui/psppire-var-sheet.c:536 src/ui/gui/psppire-var-store.c:838
-msgid "Missing"
-msgstr "Ontbrekend"
-
-#: src/language/stats/crosstabs.q:853 src/language/stats/examine.q:1292
-#: src/language/stats/frequencies.q:1053 src/language/stats/frequencies.q:1054
-#: src/language/stats/frequencies.q:1055
-msgid "Percent"
-msgstr "Procent"
-
-#: src/language/stats/crosstabs.q:1133
-msgid "count"
-msgstr "aantal"
+#: src/language/stats/roc.c:973
+#, fuzzy
+msgid "Variable under test"
+msgstr "Variabelen"
 
-#: src/language/stats/crosstabs.q:1134
-msgid "row %"
-msgstr "rij %"
+#: src/language/stats/roc.c:1032
+#, fuzzy
+msgid "Case Summary"
+msgstr "Overzicht."
 
-#: src/language/stats/crosstabs.q:1135
-msgid "column %"
-msgstr "kolom %"
+#: src/language/stats/roc.c:1054
+#, fuzzy
+msgid "Unweighted"
+msgstr "Niet gewogen."
 
-#: src/language/stats/crosstabs.q:1136
-msgid "total %"
-msgstr "totaal %"
+#: src/language/stats/roc.c:1055
+#, fuzzy
+msgid "Weighted"
+msgstr "Gewicht:"
 
-#: src/language/stats/crosstabs.q:1137
-msgid "expected"
-msgstr "verwacht"
+#: src/language/stats/roc.c:1059
+msgid "Valid N (listwise)"
+msgstr ""
 
-#: src/language/stats/crosstabs.q:1138
-msgid "residual"
-msgstr "overblijvend"
+#: src/language/stats/roc.c:1062
+#, fuzzy
+msgid "Positive"
+msgstr "positief"
 
-#: src/language/stats/crosstabs.q:1139
-msgid "std. resid."
-msgstr ""
+#: src/language/stats/roc.c:1063
+#, fuzzy
+msgid "Negative"
+msgstr "negatief"
 
-#: src/language/stats/crosstabs.q:1140
-msgid "adj. resid."
+#: src/language/stats/roc.c:1091
+msgid "Coordinates of the Curve"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1231
-msgid "Chi-square tests."
+#: src/language/stats/roc.c:1093
+#, c-format
+msgid "Coordinates of the Curve (%s)"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1234 src/language/stats/crosstabs.q:1261
-#: src/language/stats/crosstabs.q:1285 src/language/stats/crosstabs.q:1309
-#: src/language/stats/examine.q:1753 src/ui/gui/checkbox-treeview.c:92
-msgid "Statistic"
-msgstr ""
-
-#: src/language/stats/crosstabs.q:1238
-msgid "Asymp. Sig. (2-sided)"
-msgstr ""
+#: src/language/stats/roc.c:1103
+#, fuzzy
+msgid "Test variable"
+msgstr "Test Variabel(en):"
 
-#: src/language/stats/crosstabs.q:1240
-msgid "Exact Sig. (2-sided)"
+#: src/language/stats/roc.c:1105
+msgid "Positive if greater than or equal to"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1242
-msgid "Exact Sig. (1-sided)"
+#: src/language/stats/roc.c:1106 src/language/stats/roc.c:1171
+msgid "Sensitivity"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1257
-msgid "Symmetric measures."
-msgstr "Symmetrische metingen."
-
-#: src/language/stats/crosstabs.q:1263 src/language/stats/crosstabs.q:1312
-msgid "Asymp. Std. Error"
+#: src/language/stats/roc.c:1107 src/language/stats/roc.c:1170
+msgid "1 - Specificity"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1264 src/language/stats/crosstabs.q:1313
-msgid "Approx. T"
+#: src/language/stats/roc.c:1169
+msgid "ROC Curve"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1265 src/language/stats/crosstabs.q:1314
-msgid "Approx. Sig."
-msgstr ""
+#: src/language/stats/sign.c:91
+msgid "Negative Differences"
+msgstr "Negatieve Verschillen"
 
-#: src/language/stats/crosstabs.q:1280
-msgid "Risk estimate."
-msgstr ""
+#: src/language/stats/sign.c:92
+msgid "Positive Differences"
+msgstr "Positieve Verschillen"
 
-#: src/language/stats/crosstabs.q:1284
-#, c-format
-msgid "95%% Confidence Interval"
+#: src/language/stats/sign.c:93 src/language/stats/wilcoxon.c:261
+msgid "Ties"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1287 src/language/stats/t-test.q:757
-#: src/language/stats/t-test.q:921 src/language/stats/t-test.q:1014
-msgid "Lower"
-msgstr "Lager"
-
-#: src/language/stats/crosstabs.q:1288 src/language/stats/t-test.q:758
-#: src/language/stats/t-test.q:922 src/language/stats/t-test.q:1015
-msgid "Upper"
-msgstr "Hoger"
-
-#: src/language/stats/crosstabs.q:1305
-msgid "Directional measures."
-msgstr "Directioneel metingen."
-
-#: src/language/stats/crosstabs.q:1310 src/ui/gui/psppire.glade:2099
-#: src/ui/gui/psppire-var-sheet.c:531 src/ui/gui/psppire-var-store.c:833
-msgid "Type"
+#: src/language/stats/sign.c:134 src/language/stats/wilcoxon.c:331
+msgid "Exact Sig. (2-tailed)"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1776
-msgid "Pearson Chi-Square"
+#: src/language/stats/sign.c:137 src/language/stats/wilcoxon.c:332
+msgid "Exact Sig. (1-tailed)"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1777
-msgid "Likelihood Ratio"
+#: src/language/stats/sign.c:140 src/language/stats/wilcoxon.c:335
+msgid "Point Probability"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1778
-msgid "Fisher's Exact Test"
-msgstr ""
+#: src/language/stats/wilcoxon.c:232
+msgid "Ranks"
+msgstr "Rangen"
 
-#: src/language/stats/crosstabs.q:1779
-msgid "Continuity Correction"
-msgstr ""
+#: src/language/stats/wilcoxon.c:246
+msgid "Mean Rank"
+msgstr "Gemiddelde Rang"
 
-#: src/language/stats/crosstabs.q:1780
-msgid "Linear-by-Linear Association"
-msgstr ""
+#: src/language/stats/wilcoxon.c:247
+msgid "Sum of Ranks"
+msgstr "Totaal van de Rangen"
 
-#: src/language/stats/crosstabs.q:1815 src/language/stats/crosstabs.q:1890
-#: src/language/stats/crosstabs.q:1955
-msgid "N of Valid Cases"
-msgstr ""
+#: src/language/stats/wilcoxon.c:259
+msgid "Negative Ranks"
+msgstr "Negatieve Rangen"
 
-#: src/language/stats/crosstabs.q:1834 src/language/stats/crosstabs.q:1973
-msgid "Nominal by Nominal"
-msgstr ""
+#: src/language/stats/wilcoxon.c:260
+msgid "Positive Ranks"
+msgstr "Positieve Rangen"
 
-#: src/language/stats/crosstabs.q:1835 src/language/stats/crosstabs.q:1974
-msgid "Ordinal by Ordinal"
+#: src/language/stats/wilcoxon.c:326
+msgid "Z"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1836
-msgid "Interval by Interval"
+#: src/language/stats/wilcoxon.c:327
+msgid "Asymp. Sig. (2-tailed)"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1837
-msgid "Measure of Agreement"
+#: src/language/data-io/combine-files.c:210
+msgid "Cannot specify the active file since no active file has been defined."
 msgstr ""
+"Kan het actieve bestand niet specificeren omdat er geen actief bestand is "
+"gedefinieerd."
 
-#: src/language/stats/crosstabs.q:1842 src/ui/gui/crosstabs-dialog.c:41
-msgid "Phi"
+#: src/language/data-io/combine-files.c:216
+msgid ""
+"This command may not be used after TEMPORARY when the active file is an "
+"input source.  Temporary transformations will be made permanent."
 msgstr ""
+"Deze opdracht mag niet gebruikt worden na TEMPORARY als het actieve bestand "
+"een invoer bron is. Tijdelijke transformaties zullen permanent worden."
 
-#: src/language/stats/crosstabs.q:1843
-msgid "Cramer's V"
-msgstr ""
+#: src/language/data-io/combine-files.c:250
+msgid "Multiple IN subcommands for a single FILE or TABLE."
+msgstr "Meerdere IN subopdrachten voor een enkele FILE of TABLE."
 
-#: src/language/stats/crosstabs.q:1844
-msgid "Contingency Coefficient"
-msgstr ""
+#: src/language/data-io/combine-files.c:302
+#, c-format
+msgid "File %s lacks BY variable %s."
+msgstr "Bestand %s mist BY variabele %s."
 
-#: src/language/stats/crosstabs.q:1845
-msgid "Kendall's tau-b"
-msgstr ""
+#: src/language/data-io/combine-files.c:305
+#, c-format
+msgid "Active file lacks BY variable %s."
+msgstr "Actief bestand mist BY variabele %s."
 
-#: src/language/stats/crosstabs.q:1846
-msgid "Kendall's tau-c"
-msgstr ""
+#: src/language/data-io/combine-files.c:376
+msgid "The BY subcommand is required."
+msgstr "De BY subopdracht is nodig."
 
-#: src/language/stats/crosstabs.q:1847 src/ui/gui/crosstabs-dialog.c:48
-msgid "Gamma"
-msgstr ""
+#: src/language/data-io/combine-files.c:381
+msgid "BY is required when TABLE is specified."
+msgstr "BY is noodzakelijk als TABLE is gespecificeerd."
 
-#: src/language/stats/crosstabs.q:1848
-msgid "Spearman Correlation"
-msgstr ""
+#: src/language/data-io/combine-files.c:386
+msgid "BY is required when SORT is specified."
+msgstr "BY is noodzakelijk als SORT is gespecificeerd."
 
-#: src/language/stats/crosstabs.q:1849
-msgid "Pearson's R"
+#: src/language/data-io/combine-files.c:513
+msgid ""
+"Combining files with incompatible encodings. String data may not be "
+"represented correctly."
 msgstr ""
+"Combineren bestanden met incompatibele codering. String data wordt misschien "
+"niet correct weergegeven."
 
-#: src/language/stats/crosstabs.q:1850 src/ui/gui/crosstabs-dialog.c:50
-msgid "Kappa"
+#: src/language/data-io/combine-files.c:545
+#, c-format
+msgid ""
+"Variable %s in file %s has different type or width from the same variable in "
+"earlier file."
 msgstr ""
+"Variabele %s in bestand %s heeft een ander type of de breedte dan dezelfde "
+"variabele in eerder bestand."
 
-#: src/language/stats/crosstabs.q:1928
+#: src/language/data-io/combine-files.c:551
 #, c-format
-msgid "Odds Ratio for %s (%g / %g)"
-msgstr ""
+msgid "In file %s, %s is numeric."
+msgstr "In bestand %s, %s is numeriek."
 
-#: src/language/stats/crosstabs.q:1931
+#: src/language/data-io/combine-files.c:554
 #, c-format
-msgid "Odds Ratio for %s (%.*s / %.*s)"
-msgstr ""
+msgid "In file %s, %s is a string variable with width %d."
+msgstr "In bestand %s, %s is een string variabele met breedte %d."
 
-#: src/language/stats/crosstabs.q:1939
+#: src/language/data-io/combine-files.c:559
 #, c-format
-msgid "For cohort %s = %g"
-msgstr "Voor cohort %s = %g"
+msgid "In an earlier file, %s was numeric."
+msgstr "In eerder bestand, %s was numeriek."
 
-#: src/language/stats/crosstabs.q:1942
+#: src/language/data-io/combine-files.c:562
 #, c-format
-msgid "For cohort %s = %.*s"
-msgstr "Voor cohort %s = %.*s"
+msgid "In an earlier file, %s was a string variable with width %d."
+msgstr "In een eerder bestand, %s was een string variabele met breedte %d."
 
-#: src/language/stats/crosstabs.q:1975
-msgid "Nominal by Interval"
+#: src/language/data-io/combine-files.c:601
+#, c-format
+msgid ""
+"Variable name %s specified on %s subcommand duplicates an existing variable "
+"name."
 msgstr ""
+"Variabele naam %s gespecificeerd op %s subopdracht dupliceert een bestaande "
+"variabele naam."
 
-#: src/language/stats/crosstabs.q:1980 src/ui/gui/crosstabs-dialog.c:43
-msgid "Lambda"
-msgstr ""
+#: src/language/data-io/combine-files.c:762
+#, c-format
+msgid "Encountered %zu sets of duplicate cases in the master file."
+msgstr "Ontmoet %zu sets van dubbele cases in het master bestand. "
 
-#: src/language/stats/crosstabs.q:1981
-msgid "Goodman and Kruskal tau"
-msgstr ""
+#: src/language/data-io/data-list.c:137
+msgid "The END subcommand may only be used within INPUT PROGRAM."
+msgstr "De END subopdracht mag alleen binnen INPUT PROGRAM gebruikt worden."
 
-#: src/language/stats/crosstabs.q:1982
-msgid "Uncertainty Coefficient"
-msgstr ""
+#: src/language/data-io/data-list.c:143
+msgid "The END subcommand may only be specified once."
+msgstr "De END subopdracht mag slechts 1 keer gespecificeerd worden."
 
-#: src/language/stats/crosstabs.q:1983
-msgid "Somers' d"
-msgstr ""
+#: src/language/data-io/data-list.c:181
+msgid "Only one of FIXED, FREE, or LIST may be specified."
+msgstr "Slechts 1 van FIXED, FREE of LIST mag gespecificeerd worden."
 
-#: src/language/stats/crosstabs.q:1984 src/ui/gui/crosstabs-dialog.c:51
-msgid "Eta"
+#: src/language/data-io/data-list.c:243
+msgid "Encoding should not be specified for inline data. It will be ignored."
 msgstr ""
+"Coderen dient niet opgegeven te worden voor inline date. Het wordt genegeerd."
 
-#: src/language/stats/crosstabs.q:1989
-msgid "Symmetric"
-msgstr ""
+#: src/language/data-io/data-list.c:254
+msgid "The END subcommand may be used only with DATA LIST FIXED."
+msgstr "De END subopdracht mag allen gebruikt worden met DATA LIST FIXED."
 
-#: src/language/stats/crosstabs.q:1990 src/language/stats/crosstabs.q:1991
-#, c-format
-msgid "%s Dependent"
-msgstr ""
+#: src/language/data-io/data-list.c:269
+msgid "At least one variable must be specified."
+msgstr "Tenminste 1 variabele moet gespecificeerd worden."
 
-#: src/language/stats/descriptives.c:102 src/language/stats/examine.q:1559
-#: src/language/stats/frequencies.q:123 src/language/stats/npar-summary.c:126
-#: src/language/stats/oneway.q:390 src/language/stats/t-test.q:507
-#: src/language/stats/t-test.q:527 src/language/stats/t-test.q:625
-#: src/language/stats/t-test.q:918 src/ui/gui/descriptives-dialog.c:39
-#: src/ui/gui/frequencies-dialog.c:40
-msgid "Mean"
-msgstr "Gemiddeld"
+#: src/language/data-io/data-list.c:368 src/language/data-io/data-list.c:457
+#: src/language/data-io/get-data.c:530
+#, c-format
+msgid "%s is a duplicate variable name."
+msgstr "%s is een dubbele variabele naam."
 
-#: src/language/stats/descriptives.c:103
-msgid "S E Mean"
-msgstr ""
+#: src/language/data-io/data-list.c:375
+#, c-format
+msgid "There is already a variable %s of a different type."
+msgstr "Er is al een variabele %s van een ander type."
 
-#: src/language/stats/descriptives.c:104 src/language/stats/frequencies.q:127
-msgid "Std Dev"
-msgstr ""
+#: src/language/data-io/data-list.c:382
+#, c-format
+msgid "There is already a string variable %s of a different width."
+msgstr "Er is al een string variabele %s van een andere breedte."
 
-#: src/language/stats/descriptives.c:105 src/language/stats/examine.q:1589
-#: src/language/stats/frequencies.q:128 src/ui/gui/descriptives-dialog.c:46
-#: src/ui/gui/frequencies-dialog.c:45
-msgid "Variance"
+#: src/language/data-io/data-list.c:390
+#, c-format
+msgid "Cannot place variable %s on record %d when RECORDS=%d is specified."
 msgstr ""
+"Kan variabele %s niet plaatsen in record %d als RECORDS=%d is gespecificeerd."
 
-#: src/language/stats/descriptives.c:106 src/language/stats/examine.q:1625
-#: src/language/stats/frequencies.q:129 src/ui/gui/descriptives-dialog.c:47
-#: src/ui/gui/frequencies-dialog.c:50
-msgid "Kurtosis"
-msgstr ""
+#: src/language/data-io/data-parser.c:460
+#: src/language/data-io/data-parser.c:469
+msgid "Quoted string extends beyond end of line."
+msgstr "Geciteerde string loopt door na regeleinde."
 
-#: src/language/stats/descriptives.c:107
-msgid "S E Kurt"
-msgstr ""
+#: src/language/data-io/data-parser.c:525
+#, c-format
+msgid "Partial case of %d of %d records discarded."
+msgstr "Gedeeltelijke case van %d van %d records genegeerd."
 
-#: src/language/stats/descriptives.c:108 src/language/stats/examine.q:1620
-#: src/language/stats/frequencies.q:131 src/ui/gui/descriptives-dialog.c:48
-#: src/ui/gui/frequencies-dialog.c:46
-msgid "Skewness"
-msgstr ""
+#: src/language/data-io/data-parser.c:572
+#, c-format
+msgid "Partial case discarded.  The first variable missing was %s."
+msgstr "Gedeeltelijke case overgeslagen. De eerste gemiste variabele was %s."
 
-#: src/language/stats/descriptives.c:109
-msgid "S E Skew"
+#: src/language/data-io/data-parser.c:610
+#, c-format
+msgid ""
+"Missing value(s) for all variables from %s onward.  These will be filled "
+"with the system-missing value or blanks, as appropriate."
 msgstr ""
+"Missing value(s) voor alle variabelen vanaf %s. Deze worden gevuld met de "
+"geschikte system-missing waarde of spatie."
 
-#: src/language/stats/descriptives.c:110 src/language/stats/examine.q:1609
-#: src/language/stats/frequencies.q:133 src/ui/gui/descriptives-dialog.c:43
-#: src/ui/gui/frequencies-dialog.c:48
-msgid "Range"
-msgstr ""
+#: src/language/data-io/data-parser.c:630
+msgid "Record ends in data not part of any field."
+msgstr "Record eindigd in data die geen onderdeel is van een veld."
 
-#: src/language/stats/descriptives.c:111 src/language/stats/examine.q:1599
-#: src/language/stats/frequencies.q:134 src/language/stats/npar-summary.c:132
-#: src/language/stats/oneway.q:404 src/ui/gui/descriptives-dialog.c:41
-#: src/ui/gui/frequencies-dialog.c:42
-msgid "Minimum"
+#: src/language/data-io/data-parser.c:651 src/language/data-io/print.c:405
+msgid "Record"
 msgstr ""
 
-#: src/language/stats/descriptives.c:112 src/language/stats/examine.q:1604
-#: src/language/stats/frequencies.q:135 src/language/stats/npar-summary.c:135
-#: src/language/stats/oneway.q:405 src/ui/gui/descriptives-dialog.c:42
-#: src/ui/gui/frequencies-dialog.c:43
-msgid "Maximum"
-msgstr ""
+#: src/language/data-io/data-parser.c:652 src/language/data-io/print.c:406
+#: src/ui/gui/psppire-var-sheet.c:540 src/ui/gui/psppire-var-store.c:839
+#: src/ui/gui/crosstabs.glade:92
+msgid "Columns"
+msgstr "Kolommen"
 
-#: src/language/stats/descriptives.c:113 src/language/stats/frequencies.q:136
-#: src/ui/gui/descriptives-dialog.c:44 src/ui/gui/frequencies-dialog.c:53
-msgid "Sum"
-msgstr "Som"
+#: src/language/data-io/data-parser.c:653
+#: src/language/data-io/data-parser.c:692 src/language/data-io/print.c:407
+msgid "Format"
+msgstr "Formaat"
 
-#: src/language/stats/descriptives.c:344
+#: src/language/data-io/data-parser.c:672
 #, c-format
-msgid "Z-score variable name %s would be a duplicate variable name."
-msgstr "Z-score variabele naam %s zou een dubbele variabele naam zijn."
+msgid "Reading %d record from %s."
+msgid_plural "Reading %d records from %s."
+msgstr[0] "Lezen %d record van %s."
+msgstr[1] "Lezen %d records van %s."
 
-#: src/language/stats/descriptives.c:451
-msgid "expecting statistic name: reverting to default"
-msgstr "statistische naam verwacht: teruggezet op default"
+#: src/language/data-io/data-parser.c:708
+#, c-format
+msgid "Reading free-form data from %s."
+msgstr "Lezen vrij-formaat data van %s."
 
-#: src/language/stats/descriptives.c:524
+#. TRANSLATORS: this fragment will be interpolated into
+#. messages in fh_lock() that identify types of files.
+#: src/language/data-io/data-reader.c:122
+#: src/language/data-io/data-writer.c:58
+msgid "data file"
+msgstr "data bestand"
+
+#: src/language/data-io/data-reader.c:149
+#, c-format
+msgid "Could not open \"%s\" for reading as a data file: %s."
+msgstr "Kon \"%s\"niet openen voor het lezen als data bestand: %s."
+
+#: src/language/data-io/data-reader.c:191
 msgid ""
-"Ran out of generic names for Z-score variables.  There are only 126 generic "
-"names: ZSC001-ZSC0999, STDZ01-STDZ09, ZZZZ01-ZZZZ09, ZQZQ01-ZQZQ09."
+"Unexpected end-of-file while reading data in BEGIN DATA.  This probably "
+"indicates a missing or misformatted END DATA command.  END DATA must appear "
+"by itself on a single line with exactly one space between words."
 msgstr ""
-"Generieke namen voor Z-score variabelen zijn uitgeput.  Er zijn slechts 126 "
-"generieke namen: ZSC001-ZSC0999, STDZ01-STDZ09, ZZZZ01-ZZZZ09, ZQZQ01-ZQZQ09."
-
-#: src/language/stats/descriptives.c:556
-msgid "Mapping of variables to corresponding Z-scores."
-msgstr "Mappen van variabelen naar corresponderen Z-scores."
+"Onverwacht einde-bestand tijdens het lezen van data in BEGIN DATA. Dit geeft "
+"waarschijnlijk aan dat de END DATA opdracht ontbreekt of verkeerd geschreven "
+"is. END DATA dient alleen op 1 regel met precies 1 spatie tussen de woorden "
+"voor te komen."
 
-#: src/language/stats/descriptives.c:561
-msgid "Source"
-msgstr "Bron"
+#: src/language/data-io/data-reader.c:216
+#, c-format
+msgid "Error reading file %s: %s."
+msgstr "Fout tijdens lezen bestand %s: %s."
 
-#: src/language/stats/descriptives.c:562
-msgid "Target"
-msgstr "Doel"
+#: src/language/data-io/data-reader.c:219
+#, c-format
+msgid "Unexpected end of file reading %s."
+msgstr "Onverwacht einde tijdens lezen van bestand %s."
 
-#: src/language/stats/descriptives.c:673
+#: src/language/data-io/data-reader.c:228
 #, c-format
-msgid "Z-score of %s"
-msgstr "Z-score van %s"
+msgid "Unexpected end of file in partial record reading %s."
+msgstr ""
 
-#: src/language/stats/descriptives.c:888
-msgid "Valid N"
+#: src/language/data-io/data-reader.c:288
+#, c-format
+msgid "Corrupt block descriptor word at offset 0x%lx in %s."
 msgstr ""
 
-#: src/language/stats/descriptives.c:889
-msgid "Missing N"
+#: src/language/data-io/data-reader.c:289
+#, c-format
+msgid "Corrupt record descriptor word at offset 0x%lx in %s."
 msgstr ""
 
-#: src/language/stats/descriptives.c:917
+#: src/language/data-io/data-reader.c:302
 #, c-format
-msgid "Valid cases = %g; cases with missing value(s) = %g."
-msgstr "Geldige cases = %g; cases met missing value(s) = %g."
+msgid "Corrupt record size at offset 0x%lx in %s."
+msgstr ""
 
-#: src/language/stats/examine.q:346 src/language/stats/examine.q:499
-#: src/language/stats/examine.q:1060
-msgid "Not creating plot because data set is empty."
-msgstr "Er wordt geen plot aangemaakt omdat de data set leeg is."
+#: src/language/data-io/data-reader.c:444
+msgid "Record exceeds remaining block length."
+msgstr "Record overschrijdt resterend blok lengte."
 
-#: src/language/stats/examine.q:356
+#: src/language/data-io/data-reader.c:518
 #, c-format
-msgid "Normal Q-Q Plot of %s"
-msgstr "Normal Q-Q Plot van %s"
+msgid "Attempt to read beyond end-of-file on file %s."
+msgstr "Poging om te lezen na einde-bestand op bestand %s."
 
-#: src/language/stats/examine.q:357 src/language/stats/examine.q:362
-msgid "Observed Value"
-msgstr "Waargenomen Waarde"
+#: src/language/data-io/data-reader.c:521
+msgid "Attempt to read beyond END DATA."
+msgstr "Poging om te lezen na END DATA."
 
-#: src/language/stats/examine.q:358
-msgid "Expected Normal"
+#: src/language/data-io/data-reader.c:707
+msgid ""
+"This command is not valid here since the current input program does not "
+"access the inline file."
 msgstr ""
+"Deze opdracht is hier niet geldig omdat het huidige invoer programma het "
+"inline bestand niet benaderd."
 
-#: src/language/stats/examine.q:360
+#: src/language/data-io/data-writer.c:74
 #, c-format
-msgid "Detrended Normal Q-Q Plot of %s"
-msgstr "Detrended Normal Q-Q Plot van %s"
-
-#: src/language/stats/examine.q:363
-msgid "Dev from Normal"
+msgid "An error occurred while opening \"%s\" for writing as a data file: %s."
 msgstr ""
+"Een fout is opgetreden tijdens het openen van \"%s\" voor schrijven als data "
+"bestand: %s."
 
-#: src/language/stats/examine.q:516
+#: src/language/data-io/data-writer.c:191
 #, c-format
-msgid "Boxplot of %s vs. %s"
-msgstr ""
+msgid "I/O error occurred writing data file \"%s\"."
+msgstr "I/O fout opgetreden tijdens schrijven data bestand \"%s\"."
 
-#: src/language/stats/examine.q:520
+#: src/language/data-io/get-data.c:64
 #, c-format
-msgid "Boxplot of %s"
-msgstr ""
+msgid "Unsupported TYPE %s"
+msgstr "Niet ondersteunt TYPE %s"
 
-#: src/language/stats/examine.q:756 src/language/stats/examine.q:769
+#: src/language/data-io/get-data.c:260
 #, c-format
-msgid "%s and %s are mutually exclusive"
-msgstr "%s en %s zijn wederzijds exclusief"
+msgid ""
+"%s is allowed only with %s arrangement, but %s arrangement was stated or "
+"implied earlier in this command."
+msgstr ""
+"%s is alleen toegestaan met %s regeling, maar %s regeling was eerder "
+"opgegeven of geïmpliceerd in deze opdracht."
 
-#: src/language/stats/examine.q:1272 src/language/stats/reliability.q:686
-msgid "Case Processing Summary"
-msgstr "Case Bewerkings Overzicht"
+#: src/language/data-io/get-data.c:315
+msgid "expecting FIXED or DELIMITED"
+msgstr "FIXED of DELIMITED verwacht"
 
-#: src/language/stats/examine.q:1564 src/language/stats/oneway.q:398
-#, c-format
-msgid "%g%% Confidence Interval for Mean"
-msgstr ""
+#: src/language/data-io/get-data.c:328
+msgid "Value of FIRSTCASE must be 1 or greater."
+msgstr "Waarde van FIRSTCASE moet 1 of groter zijn."
 
-#: src/language/stats/examine.q:1570 src/language/stats/oneway.q:401
-#: src/language/stats/roc.c:962
-msgid "Lower Bound"
-msgstr "Beneden Grens"
+#: src/language/data-io/get-data.c:353
+msgid "expecting LINE or VARIABLES"
+msgstr "LINE of VARIABLES verwacht"
 
-#: src/language/stats/examine.q:1575 src/language/stats/oneway.q:402
-#: src/language/stats/roc.c:963
-msgid "Upper Bound"
-msgstr "Boven Grens"
+#: src/language/data-io/get-data.c:366
+msgid "Value of FIXCASE must be at least 1."
+msgstr "Waarde van FIXCASE moet tenminste 1 zijn."
 
-#: src/language/stats/examine.q:1579
-msgid "5% Trimmed Mean"
-msgstr ""
+#: src/language/data-io/get-data.c:386
+msgid "Value of FIRST must be at least 1."
+msgstr "Waarde van FIRST moet tenminste 1 zijn."
 
-#: src/language/stats/examine.q:1584 src/language/stats/frequencies.q:125
-#: src/ui/gui/frequencies-dialog.c:52
-msgid "Median"
-msgstr ""
+#: src/language/data-io/get-data.c:398
+msgid "Value of PERCENT must be between 1 and 100."
+msgstr "Waarde van PERCENT moet tussen 1 en 100 zijn."
 
-#: src/language/stats/examine.q:1594 src/language/stats/npar-summary.c:129
-#: src/language/stats/oneway.q:391 src/language/stats/t-test.q:508
-#: src/language/stats/t-test.q:528 src/language/stats/t-test.q:627
-#: src/language/stats/t-test.q:919
-msgid "Std. Deviation"
+#: src/language/data-io/get-data.c:447
+msgid ""
+"In compatible syntax mode, the QUALIFIER string must contain exactly one "
+"character."
 msgstr ""
+"In compatibele syntax modus, the QUALIFIER string moet precies 1 karakter "
+"bevatten."
 
-#: src/language/stats/examine.q:1614
-msgid "Interquartile Range"
-msgstr ""
+#: src/language/data-io/get-data.c:462
+msgid "expecting VARIABLES"
+msgstr "VARIABLES verwacht"
 
-#: src/language/stats/examine.q:1750 src/language/stats/oneway.q:408
-#: src/ui/gui/examine.glade:310
-msgid "Descriptives"
+#: src/language/data-io/get-data.c:484
+#: src/language/data-io/placement-parser.c:378
+#, c-format
+msgid ""
+"The record number specified, %ld, is at or before the previous record, %d.  "
+"Data fields must be listed in order of increasing record number."
 msgstr ""
+"Het opgegeven record nummer, %ld, is op of voor het huidige record, %d. Data "
+"velden dienen opgegeven te worden in oplopende recordnummer volgorde."
 
-#: src/language/stats/examine.q:1756 src/language/stats/oneway.q:392
-#: src/language/stats/oneway.q:689 src/language/stats/regression.q:203
-#: src/language/stats/roc.c:959
-msgid "Std. Error"
+#: src/language/data-io/get-data.c:493
+#, c-format
+msgid ""
+"The record number specified, %ld, exceeds the number of records per case "
+"specified on FIXCASE, %d."
 msgstr ""
+"Het gespecificeerde record nummer, %ld, overschrijdt het aantal records per "
+"case zoals gespecificeerd in FIXCASE, %d."
 
-#: src/language/stats/examine.q:1939
-msgid "Highest"
-msgstr "Hoogste"
-
-#: src/language/stats/examine.q:1944
-msgid "Lowest"
-msgstr "Laagste"
+#: src/language/data-io/get.c:99
+msgid "expecting COMM or TAPE"
+msgstr "COMM of TAPE verwacht"
 
-#: src/language/stats/examine.q:1951
-msgid "Extreme Values"
-msgstr "Extreme Waardes"
+#: src/language/data-io/inpt-pgm.c:130
+msgid "Unexpected end-of-file within INPUT PROGRAM."
+msgstr "Onverwacht einde-bestand binnen INPUT PROGRAM."
 
-#: src/language/stats/examine.q:1955
-msgid "Case Number"
-msgstr "Case Nummer"
+#: src/language/data-io/inpt-pgm.c:143
+msgid "Input program did not create any variables."
+msgstr "Input program heeft geen variabelen gecreëerd."
 
-#: src/language/stats/examine.q:2077
-msgid "Tukey's Hinges"
-msgstr ""
+#: src/language/data-io/inpt-pgm.c:288
+msgid "COLUMN subcommand multiply specified."
+msgstr "COLUMN subopdracht meerdere keren gespecificeerd."
 
-#: src/language/stats/examine.q:2117 src/language/stats/examine.q:2134
-#: src/language/stats/frequencies.q:1410 src/language/stats/npar-summary.c:142
-#: src/ui/gui/examine.glade:333
-msgid "Percentiles"
+#: src/language/data-io/inpt-pgm.c:338
+msgid ""
+"REREAD: Column numbers must be positive finite numbers.  Column set to 1."
 msgstr ""
+"REREAD: Kolom nummers moeten positieve eindige nummers zijn. Kolom is op 1 "
+"gezet."
 
-#: src/language/stats/examine.q:2124
+#: src/language/data-io/placement-parser.c:87
 #, c-format
-msgid "%g"
+msgid ""
+"Number of variables specified (%zu) differs from number of variable formats "
+"(%zu)."
 msgstr ""
+"Aantal gespecificeerde variabelen (%zu) verschilt van aantal variabele "
+"formaten (%zu)."
 
-#: src/language/stats/flip.c:98
+#: src/language/data-io/placement-parser.c:97
 msgid ""
-"FLIP ignores TEMPORARY.  Temporary transformations will be made permanent."
+"SPSS-like or Fortran-like format specification expected after variable names."
 msgstr ""
-"FLIP negeert TEMPORARY. Tijdelijke transformaties worden permanent gemaakt."
-
-#: src/language/stats/flip.c:150
-msgid "Could not create temporary file for FLIP."
-msgstr "Kon geen tijdelijk bestand voor FLIP aanmaken."
+"SPSS-achtig of Fortran-achtig formaat specificatie verwacht na variabele "
+"naam."
 
-#: src/language/stats/flip.c:327
+#: src/language/data-io/placement-parser.c:119
 #, c-format
-msgid "Error rewinding FLIP file: %s."
-msgstr "Fout tijdens terugdraaien FLIP bestand: %s."
+msgid "The %d columns %d-%d can't be evenly divided into %zu fields."
+msgstr "De %d kolommen %d-%d kunnen niet gelijk verdeeld worden in %zu velden."
 
-#: src/language/stats/flip.c:334
-msgid "Error creating FLIP source file."
-msgstr "Fout tijdens het creëren van FLIP bron bestand."
+#: src/language/data-io/placement-parser.c:305
+msgid "Column positions for fields must be positive."
+msgstr "Kolom posities voor velden moet positief zijn."
 
-#: src/language/stats/flip.c:347
-#, c-format
-msgid "Error reading FLIP file: %s."
-msgstr "Fout tijdens lezen FLIP bestand: %s."
+#: src/language/data-io/placement-parser.c:307
+msgid "Column positions for fields must not be negative."
+msgstr "Kolom posities voor velden mogen niet negatief zijn."
 
-#: src/language/stats/flip.c:349
-msgid "Unexpected end of file reading FLIP file."
-msgstr "Onverwacht einde bestand tijdens lezen FLIP bestand."
+#: src/language/data-io/placement-parser.c:344
+msgid "The ending column for a field must be greater than the starting column."
+msgstr "De eind kolom van een veld moet groter zijn dan de start kolom."
 
-#: src/language/stats/flip.c:365
-#, c-format
-msgid "Error seeking FLIP source file: %s."
-msgstr "Fout tijdens zoeken FLIP bron bestand: %s."
+#: src/language/data-io/print-space.c:116
+msgid "The expression on PRINT SPACE evaluated to the system-missing value."
+msgstr "De expressie bij PRINT SPACE evalueerde tot de system-missing waarde."
 
-#: src/language/stats/flip.c:373
+#: src/language/data-io/print-space.c:119
 #, c-format
-msgid "Error writing FLIP source file: %s."
-msgstr "Fout tijdens schrijven FLIP bron bestand: %s."
+msgid "The expression on PRINT SPACE evaluated to %g."
+msgstr "De expressie bij PRINT SPACE evalueerde tot %g."
 
-#: src/language/stats/flip.c:384
+#: src/language/data-io/print.c:179 src/language/data-io/trim.c:54
+msgid "expecting a valid subcommand"
+msgstr "een geldig subopdracht verwacht"
+
+#: src/language/data-io/print.c:267
 #, c-format
-msgid "Error closing FLIP source file: %s."
-msgstr "Fout tijdens sluiten FLIP bron bestand: %s."
+msgid "Output calls for %d records but %zu specified on RECORDS subcommand."
+msgstr ""
+"De output vraagt %d records maar %zu gespecificeerd bij RECORDS subopdracht. "
 
-#: src/language/stats/flip.c:392
+#: src/language/data-io/print.c:438
 #, c-format
-msgid "Error rewinding FLIP source file: %s."
-msgstr "Fout tijdens terugdraaien FLIP bron bestand: %s."
+msgid "Writing %d record to %s."
+msgid_plural "Writing %d records to %s."
+msgstr[0] "Schrijven van %d record naar %s."
+msgstr[1] "Schrijven van %d records naar %s."
 
-#: src/language/stats/flip.c:426
+#: src/language/data-io/print.c:442
 #, c-format
-msgid "Error reading FLIP temporary file: %s."
-msgstr "Fout tijdens lezen FLIP tijdelijk bestand: %s."
-
-#: src/language/stats/flip.c:429
-msgid "Unexpected end of file reading FLIP temporary file."
-msgstr "Onverwacht einde bestand tijdens lezen FLIP tijdelijk bestand."
-
-#: src/language/stats/frequencies.q:124
-msgid "S.E. Mean"
-msgstr ""
-
-#: src/language/stats/frequencies.q:126 src/ui/gui/frequencies-dialog.c:49
-msgid "Mode"
-msgstr ""
-
-#: src/language/stats/frequencies.q:130
-msgid "S.E. Kurt"
-msgstr ""
+msgid "Writing %d record."
+msgid_plural "Writing %d records."
+msgstr[0] "Schrijven van %d record."
+msgstr[1] "Schrijven van %d records."
 
-#: src/language/stats/frequencies.q:132
-msgid "S.E. Skew"
-msgstr ""
+#: src/language/data-io/save.c:223 src/language/data-io/save.c:238
+#: src/language/data-io/save.c:266
+#, c-format
+msgid "expecting %s or %s"
+msgstr "%s of %s verwacht"
 
-#: src/language/stats/frequencies.q:407
+#: src/language/data-io/trim.c:88
+#, c-format
 msgid ""
-"At most one of BARCHART, HISTOGRAM, or HBAR should be given.  HBAR will be "
-"assumed.  Argument values will be given precedence increasing along the "
-"order given."
+"Cannot rename %s as %s because there already exists a variable named %s.  To "
+"rename variables with overlapping names, use a single RENAME subcommand such "
+"as \"/RENAME (A=B)(B=C)(C=A)\", or equivalently, \"/RENAME (A B C=B C A)\"."
 msgstr ""
-"Op zijn meest een van BARCHART, HISTOGRAM, of HBAR moet opgegeven worden.  "
-"HBAR wordt aangenomen.  Argument waardes zullen gebruikt worden in opgegeven "
-"volgorde."
+"Kan %s niet hernoemen naar  %s omdat er al een variabele met de naam %s "
+"bestaat.  Om variabelen met overlappende naam te hernoemen gebruik een enkel "
+"RENAME subopdracht zoals \"/RENAME (A=B)(B=C)(C=A)\", of equivalent achtig, "
+"\"/RENAME (A B C=B C A)\"."
 
-#: src/language/stats/frequencies.q:490
+#: src/language/data-io/trim.c:114
+msgid "`=' expected after variable list."
+msgstr "'=' verwacht na variabele lijst."
+
+#: src/language/data-io/trim.c:121
 #, c-format
 msgid ""
-"MAX must be greater than or equal to MIN, if both are specified.  However, "
-"MIN was specified as %g and MAX as %g.  MIN and MAX will be ignored."
+"Number of variables on left side of `=' (%zu) does not match number of "
+"variables on right side (%zu), in parenthesized group %d of RENAME "
+"subcommand."
 msgstr ""
-"MAX moet groter of gelijk zijn aan MIN, als beiden zijn opgegeven. Maar, MIN "
-"was opgegeven als %g en MAX als %g. MIN en MAX worden genegeerd."
+"Aantal variabelen aan linker zijde van `=' (%zu) komt niet overeen met het "
+"aantal variabelen aan rechter zijde (%zu), in tussengevoegde groep %d van "
+"RENAME subopdracht."
 
-#: src/language/stats/frequencies.q:754
+#: src/language/data-io/trim.c:134
 #, c-format
-msgid "Variable %s specified multiple times on VARIABLES subcommand."
-msgstr "Variabele %s is meerdere keren opgegeven bij VARIABLES subopdracht."
+msgid "Requested renaming duplicates variable name %s."
+msgstr "Gevraagde hernoeming dupliceert variabele naam %s."
 
-#: src/language/stats/frequencies.q:812
-msgid "`)' expected after GROUPED interval list."
-msgstr "')' verwacht na GROUPED interval lijst."
+#: src/language/data-io/trim.c:165
+msgid "Cannot DROP all variables from dictionary."
+msgstr "Kan niet alle variabelen DROP-en uit woordenboek."
 
-#: src/language/stats/frequencies.q:824
-#, c-format
-msgid "Variables %s specified on GROUPED but not on VARIABLES."
-msgstr "Variabele %s gespecificeerd bij GROUPED maar niet bij VARIABLES."
+#: src/language/expressions/evaluate.c:155
+msgid "expecting number or string"
+msgstr "verwacht nummer of string"
 
-#: src/language/stats/frequencies.q:831
+#: src/language/expressions/evaluate.c:169
 #, c-format
-msgid "Variables %s specified multiple times on GROUPED subcommand."
-msgstr "Variabele %s is meerdere keren gespecificeerd bij GROUPED subopdracht."
+msgid "Duplicate variable name %s."
+msgstr "Dubbele variabele naam %s."
 
-#: src/language/stats/frequencies.q:1050 src/language/stats/frequencies.q:1143
-#: src/language/stats/frequencies.q:1144 src/language/stats/frequencies.q:1179
-msgid "Cum"
+#: src/language/expressions/helpers.c:51
+msgid ""
+"One of the arguments to a DATE function is not an integer.  The result will "
+"be system-missing."
 msgstr ""
+"Een van de variabelen voor een DATE functie is geen integer. Het resultaat "
+"zal system-missing zijn."
 
-#: src/language/stats/frequencies.q:1052 src/output/charts/plot-hist.c:140
-msgid "Frequency"
-msgstr "Frequenties"
-
-#: src/language/stats/frequencies.q:1073
-msgid "Value Label"
-msgstr "Waarde Label"
-
-#: src/language/stats/frequencies.q:1177
-msgid "Freq"
+#: src/language/expressions/helpers.c:73
+msgid ""
+"The week argument to DATE.WKYR is not an integer.  The result will be system-"
+"missing."
 msgstr ""
+"Het week argument voor DATE.WKYR is geen integer.  Het resultaat zal system-"
+"missing zijn."
 
-#: src/language/stats/frequencies.q:1178 src/language/stats/frequencies.q:1180
-msgid "Pct"
+#: src/language/expressions/helpers.c:79
+msgid ""
+"The week argument to DATE.WKYR is outside the acceptable range of 1 to 53.  "
+"The result will be system-missing."
 msgstr ""
+"Het week argument voor DATE.WKYR is buiten de acceptabele range van 1 tot "
+"53.  Het resultaat zal system-missing zijn."
 
-#: src/language/stats/frequencies.q:1373
-#, c-format
-msgid "No valid data for variable %s; statistics not displayed."
-msgstr "Geen geldige data voor variabele %s; statistieken worden niet getoond."
-
-#: src/language/stats/frequencies.q:1414
-msgid "50 (Median)"
+#: src/language/expressions/helpers.c:101
+msgid ""
+"The day argument to DATE.YRDAY is not an integer.  The result will be system-"
+"missing."
 msgstr ""
+"Het dag argument voor DATE.WKYR is geen integer.  Het resultaat zal system-"
+"missing zijn."
 
-#: src/language/stats/glm.q:143
-msgid "Multivariate GLM not yet supported"
+#: src/language/expressions/helpers.c:107
+msgid ""
+"The day argument to DATE.YRDAY is outside the acceptable range of 1 to 366.  "
+"The result will be system-missing."
 msgstr ""
+"Het dag argument voor DATE.WKYR is buiten de acceptabele range van 1 tot "
+"366.  Het resultaat zal system-missing zijn."
 
-#: src/language/stats/glm.q:262 src/language/stats/regression.q:1000
-msgid "No valid data found. This command was skipped."
-msgstr "Geen geldige data gevonden. Deze opdracht is overgeslagen."
-
-#: src/language/stats/means.q:100
-msgid "Missing required subcommand TABLES."
-msgstr "Missing vereist subopdracht TABLES."
-
-#: src/language/stats/means.q:134
-msgid "TABLES subcommand may not appear more than once."
-msgstr "TABLES subopdracht mag niet meer dan 1 keer voorkomen."
-
-#: src/language/stats/npar.q:109
-msgid "NPAR subcommand not currently implemented."
+#: src/language/expressions/helpers.c:129
+msgid ""
+"The year argument to YRMODA is greater than 47516.  The result will be "
+"system-missing."
 msgstr ""
+"Het jaar argument voor YRMODA is groter dan 47516.  Het resultaat zal system-"
+"missing zijn."
 
-#: src/language/stats/npar.q:252
+#: src/language/expressions/helpers.c:182
 #, c-format
 msgid ""
-"The specified value of HI (%d) is lower than the specified value of LO (%d)"
+"Unrecognized date unit \"%.*s\".  Valid date units are \"years\", \"quarters"
+"\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", and \"seconds\"."
 msgstr ""
-"De opgegeven waarde van HI (%d) is lager dan de opgegeven waarde van LO (%d)"
+"Niet herkende datum eenheid \"%.*s\".  Geldige datum eenheden zijn \"years"
+"\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", "
+"en \"seconds\"."
 
-#: src/language/stats/npar.q:307
-#, c-format
+#: src/language/expressions/helpers.c:332
 msgid ""
-"%d expected values were given, but the specified range (%d-%d) requires "
-"exactly %d values."
+"Invalid DATESUM method.  Valid choices are \"closest\" and \"rollover\"."
 msgstr ""
-"%d verwachte waardes waren opgegeven, maar de opgegeven range (%d-%d) "
-"vereist precies %d waardes."
+"Ongeldige DATESUM methode. Geldige keuzes zijn \"closest\" en \"rollover\"."
 
-#: src/language/stats/npar.q:441 src/language/stats/t-test.q:379
+#: src/language/expressions/parse.c:259
 #, c-format
 msgid ""
-"PAIRED was specified but the number of variables preceding WITH (%zu) did "
-"not match the number following (%zu)."
-msgstr ""
-"PAIRED was opgegeven maar het aantal variabelen voor WITH (%zu) komt niet "
-"overeen met het aantal er achter (%zu)."
-
-#: src/language/stats/npar-summary.c:109
-msgid "Descriptive Statistics"
-msgstr "Descriptive Statistieken"
-
-#: src/language/stats/npar-summary.c:146
-msgid "25th"
-msgstr ""
-
-#: src/language/stats/npar-summary.c:149
-msgid "50th (Median)"
-msgstr ""
-
-#: src/language/stats/npar-summary.c:152
-msgid "75th"
-msgstr ""
-
-#: src/language/stats/oneway.q:171
-msgid "Number of contrast coefficients must equal the number of groups"
+"Type mismatch: expression has %s type, but a numeric value is required here."
 msgstr ""
+"Type ongelijk: expressie heeft type %s, maar een numerieke waarde is hier "
+"noodzakelijk."
 
-#: src/language/stats/oneway.q:180
+#: src/language/expressions/parse.c:271
 #, c-format
-msgid "Coefficients for contrast %zu do not total zero"
+msgid ""
+"Type mismatch: expression has %s type, but a string value is required here."
 msgstr ""
+"Type ongelijk: expressie heeft type %s, maar een string waarde is hier "
+"noodzakelijk."
 
-#: src/language/stats/oneway.q:243
+#: src/language/expressions/parse.c:427
 #, c-format
-msgid "`%s' is not a variable name"
-msgstr "'%s' is geen variabele naam"
-
-#: src/language/stats/oneway.q:277 src/language/stats/regression.q:301
-msgid "Sum of Squares"
-msgstr ""
-
-#: src/language/stats/oneway.q:279 src/language/stats/regression.q:303
-msgid "Mean Square"
+msgid "Type mismatch while applying %s operator: cannot convert %s to %s."
 msgstr ""
+"Type ongelijk tijdens het uitvoeren van %s operator: kan %s niet naar %s "
+"converteren."
 
-#: src/language/stats/oneway.q:280 src/language/stats/regression.q:304
-#: src/language/stats/t-test.q:750
-msgid "F"
+#: src/language/expressions/parse.c:643
+msgid ""
+"Chaining relational operators (e.g. \"a < b < c\") will not produce the "
+"mathematically expected result.  Use the AND logical operator to fix the "
+"problem (e.g. \"a < b AND b < c\").  If chaining is really intended, "
+"parentheses will disable this warning (e.g. \"(a < b) < c\".)"
 msgstr ""
 
-#: src/language/stats/oneway.q:281 src/language/stats/oneway.q:539
-#: src/language/stats/regression.q:206 src/language/stats/regression.q:305
-msgid "Significance"
-msgstr "Significantie "
-
-#: src/language/stats/oneway.q:303
-msgid "Between Groups"
-msgstr "Tussen Groepen"
-
-#: src/language/stats/oneway.q:304
-msgid "Within Groups"
-msgstr "Binnen Groepen"
-
-#: src/language/stats/oneway.q:348 src/language/stats/regression.q:330
-msgid "ANOVA"
+#: src/language/expressions/parse.c:744
+msgid ""
+"The exponentiation operator (\"**\") is left-associative, even though right-"
+"associative semantics are more useful.  That is, \"a**b**c\" equals \"(a**b)"
+"**c\", not as \"a**(b**c)\".  To disable this warning, insert parentheses."
 msgstr ""
 
-#: src/language/stats/oneway.q:536
-msgid "Levene Statistic"
-msgstr ""
+#: src/language/expressions/parse.c:809
+#, c-format
+msgid "Unknown system variable %s."
+msgstr "Onbekende systeem variabele %s."
 
-#: src/language/stats/oneway.q:537
-msgid "df1"
-msgstr ""
+#: src/language/expressions/parse.c:857
+#, c-format
+msgid "Unknown identifier %s."
+msgstr "Onbekende herkenningsteken %s."
 
-#: src/language/stats/oneway.q:538
-msgid "df2"
-msgstr ""
+#: src/language/expressions/parse.c:892
+msgid "in expression"
+msgstr "in expressie"
 
-#: src/language/stats/oneway.q:541
-msgid "Test of Homogeneity of Variances"
-msgstr ""
+#: src/language/expressions/parse.c:1073
+#, c-format
+msgid "%s must have at least %d arguments in list."
+msgstr "%s heeft tenminste %d argumenten nodig in lijst."
 
-#: src/language/stats/oneway.q:608
-msgid "Contrast Coefficients"
-msgstr ""
+#: src/language/expressions/parse.c:1082
+#, c-format
+msgid "%s must have even number of arguments in list."
+msgstr "%s heeft een even aantal argumenten in lijst nodig."
 
-#: src/language/stats/oneway.q:610 src/language/stats/oneway.q:687
-msgid "Contrast"
-msgstr ""
+#: src/language/expressions/parse.c:1085
+#, c-format
+msgid "%s must have multiple of %d arguments in list."
+msgstr "%s heeft meerdere %d argumenten in lijst nodig."
 
-#: src/language/stats/oneway.q:685
-msgid "Contrast Tests"
-msgstr ""
+#: src/language/expressions/parse.c:1095
+#, c-format
+msgid "%s function does not accept a minimum valid argument count."
+msgstr "%s functie accepteert geen minimaal geldige argumenten teller."
 
-#: src/language/stats/oneway.q:688
-msgid "Value of Contrast"
-msgstr ""
+#: src/language/expressions/parse.c:1104
+#, c-format
+msgid "%s requires at least %d valid arguments in list."
+msgstr "%s vereist tenminste %d geldige argumenten in lijst."
 
-#: src/language/stats/oneway.q:690 src/language/stats/regression.q:205
-#: src/language/stats/t-test.q:752 src/language/stats/t-test.q:923
-#: src/language/stats/t-test.q:1010
-msgid "t"
+#: src/language/expressions/parse.c:1110
+#, c-format
+msgid ""
+"With %s, using minimum valid argument count of %d does not make sense when "
+"passing only %d arguments in list."
 msgstr ""
+"Met %s, heeft het gebruik van de minimum geldige argumenttelling van %d geen "
+"zin wanneer een lijst van slechts %d wordt doorgegeven. "
 
-#: src/language/stats/oneway.q:692 src/language/stats/t-test.q:754
-#: src/language/stats/t-test.q:925 src/language/stats/t-test.q:1012
-msgid "Sig. (2-tailed)"
-msgstr ""
+#: src/language/expressions/parse.c:1164
+#, c-format
+msgid "Type mismatch invoking %s as "
+msgstr "Type ongelijk bij aanroep %s als "
 
-#: src/language/stats/oneway.q:736
-msgid "Assume equal variances"
-msgstr "Veronderstelt gelijke variantie"
+#: src/language/expressions/parse.c:1169
+msgid "Function invocation "
+msgstr "Functie aanroep "
 
-#: src/language/stats/oneway.q:740
-msgid "Does not assume equal"
-msgstr "Veronderstelt niet gelijk"
+#: src/language/expressions/parse.c:1171
+msgid " does not match any known function.  Candidates are:"
+msgstr " komt niet overeen met een geldige functie. Kandidaten zijn:"
 
-#: src/language/stats/rank.q:221
+#: src/language/expressions/parse.c:1201
 #, c-format
-msgid "%s of %s by %s"
-msgstr "%s van %s per %s"
+msgid "No function or vector named %s."
+msgstr "Geen functie of vector genaamd %s."
 
-#: src/language/stats/rank.q:226
+#: src/language/expressions/parse.c:1244
 #, c-format
-msgid "%s of %s"
-msgstr "%s van %s"
-
-#: src/language/stats/rank.q:601
-msgid "Cannot create new rank variable.  All candidates in use."
-msgstr "Kan geen rang variabele creëren. Alle kandidaten zijn in gebruik."
-
-#: src/language/stats/rank.q:694
-msgid "Variables Created By RANK"
-msgstr "Variabelen gecreëerd door RANK"
+msgid "expecting `,' or `)' invoking %s function"
+msgstr "verwacht ',' of ')' bij aanroep %s functie"
 
-#: src/language/stats/rank.q:718
+#: src/language/expressions/parse.c:1264
 #, c-format
-msgid "%s into %s(%s of %s using %s BY %s)"
-msgstr "%s in %s(%s van %s gebruikt %s PER %s)"
+msgid "%s is a PSPP extension."
+msgstr "%s is een PSPP extensie."
 
-#: src/language/stats/rank.q:728
+#: src/language/expressions/parse.c:1273
 #, c-format
-msgid "%s into %s(%s of %s BY %s)"
-msgstr "%s in %s(%s van %s PER %s)"
+msgid "%s may not appear after TEMPORARY."
+msgstr "%s mag niet voorkomen na TEMPORARY."
 
-#: src/language/stats/rank.q:741
+#: src/libpspp/hash.c:545
 #, c-format
-msgid "%s into %s(%s of %s using %s)"
-msgstr "%s in %s(%s van %s gebruikt %s"
+msgid "hash table:"
+msgstr "hash tabel:"
 
-#: src/language/stats/rank.q:750
-#, c-format
-msgid "%s into %s(%s of %s)"
-msgstr "%s in %s(%s van %s)"
+#: src/libpspp/tmpfile.c:55
+msgid "failed to create temporary file"
+msgstr "aanmaken van een tijdelijk bestand is mislukt"
 
-#: src/language/stats/rank.q:762
-msgid ""
-"FRACTION has been specified, but NORMAL and PROPORTION rank functions have "
-"not been requested.  The FRACTION subcommand will be ignored."
-msgstr ""
-"FRACTION is gespecificeerd maar NORMAL en PROPORTION rangschik functies ziin "
-"niet gevraagd. De FRACTION subopdracht wordt genegeerd."
+#: src/libpspp/tmpfile.c:96
+msgid "seeking in temporary file"
+msgstr "zoeken in tijdelijk bestand"
 
-#: src/language/stats/rank.q:853
-#, c-format
-msgid "Variable %s already exists."
-msgstr "Variabele %s bestaat al."
+#: src/libpspp/tmpfile.c:115
+msgid "reading temporary file"
+msgstr "lezen tijdelijk bestand"
 
-#: src/language/stats/rank.q:858
-msgid "Too many variables in INTO clause."
-msgstr "Te veel variabelen in INTO clause."
+#: src/libpspp/tmpfile.c:117
+msgid "unexpected end of file reading temporary file"
+msgstr "onverwacht einde bestand bij het lezen van tijdelijk bestand"
 
-#: src/language/stats/regression.q:159 src/ui/gui/regression-dialog.c:42
-msgid "R"
-msgstr ""
+#: src/libpspp/tmpfile.c:136
+msgid "writing to temporary file"
+msgstr "schrijven naar tijdelijk bestand"
 
-#: src/language/stats/regression.q:160
-msgid "R Square"
+#: src/math/percentiles.c:35
+msgid "HAverage"
 msgstr ""
 
-#: src/language/stats/regression.q:161
-msgid "Adjusted R Square"
-msgstr ""
-
-#: src/language/stats/regression.q:162
-msgid "Std. Error of the Estimate"
-msgstr ""
-
-#: src/language/stats/regression.q:167
-msgid "Model Summary"
-msgstr ""
-
-#: src/language/stats/regression.q:202
-msgid "B"
-msgstr ""
+#: src/math/percentiles.c:36
+msgid "Weighted Average"
+msgstr "Gewogen Gemiddelde"
 
-#: src/language/stats/regression.q:204
-msgid "Beta"
-msgstr ""
+#: src/math/percentiles.c:37
+msgid "Rounded"
+msgstr "Afgerond"
 
-#: src/language/stats/regression.q:207
-msgid "(Constant)"
+#: src/math/percentiles.c:38
+msgid "Empirical"
 msgstr ""
 
-#: src/language/stats/regression.q:271
-msgid "Coefficients"
+#: src/math/percentiles.c:39
+msgid "Empirical with averaging"
 msgstr ""
 
-#: src/language/stats/regression.q:307
-msgid "Regression"
+#: src/output/charts/plot-hist.c:138
+msgid "HISTOGRAM"
 msgstr ""
 
-#: src/language/stats/regression.q:389
-msgid "Model"
-msgstr ""
+#: src/output/charts/plot-hist.c:140
+msgid "Frequency"
+msgstr "Frequenties"
 
-#: src/language/stats/regression.q:390
-msgid "Covariances"
+#: src/output/afm.c:149
+#, c-format
+msgid "opening font metrics file \"%s\""
 msgstr ""
 
-#: src/language/stats/regression.q:405
-msgid "Coefficient Correlations"
-msgstr ""
+#: src/output/afm.c:239
+msgid "first line must be StartFontMetrics"
+msgstr "eerste regel moet zijn StartFontMetrics"
 
-#: src/language/stats/regression.q:812
-msgid ""
-"The dependent variable is equal to the independent variable.The least "
-"squares line is therefore Y=X.Standard errors and related statistics may be "
-"meaningless."
-msgstr ""
+#: src/output/afm.c:266
+#, c-format
+msgid "unsupported MappingScheme %d"
+msgstr "niet ondersteunt MappingSchema %d"
 
-#: src/language/stats/regression.q:904
-msgid "Dependent variable must be numeric."
-msgstr "Afhankelijke variabele moet numeriek zijn."
+#: src/output/afm.c:287
+msgid "required FontName is missing"
+msgstr "vereiste FontNaam ontbreekt"
 
-#: src/language/stats/reliability.q:433
-msgid "Reliability Statistics"
-msgstr ""
+#: src/output/afm.c:394
+msgid "CharMetrics line must start with C or CH"
+msgstr "CharMetrics regel moet beginnen met C of CH"
 
-#: src/language/stats/reliability.q:476
-msgid "Item-Total Statistics"
-msgstr ""
+#: src/output/afm.c:535
+#, c-format
+msgid "reference to unknown character \"%s\""
+msgstr "referentie naar onbekend karakter \"%s\""
 
-#: src/language/stats/reliability.q:498
-msgid "Scale Mean if Item Deleted"
-msgstr ""
+#: src/output/afm.c:593
+msgid "expected end of file"
+msgstr "einde bestand verwacht"
 
-#: src/language/stats/reliability.q:501
-msgid "Scale Variance if Item Deleted"
-msgstr ""
+#: src/output/afm.c:605
+msgid "syntax error expecting end of line"
+msgstr "syntax fout einde regel verwacht"
 
-#: src/language/stats/reliability.q:504
-msgid "Corrected Item-Total Correlation"
-msgstr ""
+#: src/output/afm.c:623 src/output/afm.c:660
+msgid "number out of valid range"
+msgstr "nummer buiten geldige range"
 
-#: src/language/stats/reliability.q:507
-msgid "Cronbach's Alpha if Item Deleted"
-msgstr ""
+#: src/output/afm.c:625 src/output/afm.c:662
+msgid "invalid numeric syntax"
+msgstr "ongeldige numerieke syntax"
 
-#: src/language/stats/reliability.q:557 src/language/stats/reliability.q:576
-msgid "Cronbach's Alpha"
-msgstr ""
+#: src/output/afm.c:641
+msgid "syntax error expecting integer"
+msgstr "syntax fout integer verwacht"
 
-#: src/language/stats/reliability.q:560
-msgid "N of items"
-msgstr ""
+#: src/output/afm.c:679
+msgid "syntax error expecting number"
+msgstr "syntax fout nummer verwacht"
 
-#: src/language/stats/reliability.q:579
-msgid "Part 1"
-msgstr "Deel 1"
+#: src/output/afm.c:692
+msgid "syntax error in hex constant"
+msgstr "syntax fout in hex constante"
 
-#: src/language/stats/reliability.q:585 src/language/stats/reliability.q:596
-msgid "N of Items"
-msgstr ""
+#: src/output/afm.c:707
+msgid "syntax error expecting hex constant"
+msgstr "syntax fout hex constante verwacht"
 
-#: src/language/stats/reliability.q:590
-msgid "Part 2"
-msgstr "Deel 2"
+#: src/output/afm.c:745
+msgid "unexpected end of line"
+msgstr "onverwacht regel einde"
 
-#: src/language/stats/reliability.q:601
-msgid "Total N of Items"
-msgstr ""
+#: src/output/afm.c:795
+msgid "unexpected end of line expecting string"
+msgstr "onverwacht regeleinde string verwacht"
 
-#: src/language/stats/reliability.q:604
-msgid "Correlation Between Forms"
+#: src/output/ascii.c:251
+#, c-format
+msgid ""
+"ascii: page excluding margins and headers must be at least 59 characters "
+"wide by 15 lines long, but as configured is only %d characters by %d lines"
 msgstr ""
+"ascii: pagina exclusief marges en koppen moet tenminste 59 karakters breed "
+"en 15 regels lang zijn, maar geconfigureerd is slechts %d karakters bij %d "
+"regels"
 
-#: src/language/stats/reliability.q:608
-msgid "Spearman-Brown Coefficient"
+#: src/output/ascii.c:329
+#, c-format
+msgid ""
+"ascii: bad index value for `box' key: syntax is box[INDEX], 0 <= INDEX < %d "
+"decimal, with INDEX expressed in base 4"
 msgstr ""
 
-#: src/language/stats/reliability.q:611
-msgid "Equal Length"
-msgstr "Gelijke Lengte"
+#: src/output/ascii.c:336
+#, c-format
+msgid "ascii: multiple values for %s"
+msgstr "ascii: meerdere waardes voor %s"
 
-#: src/language/stats/reliability.q:614
-msgid "Unequal Length"
-msgstr "Ongelijke Lengte"
+#: src/output/ascii.c:344
+#, c-format
+msgid "ascii: unknown parameter `%s'"
+msgstr "ascii: onbekende parameter `%s'"
 
-#: src/language/stats/reliability.q:618
-msgid "Guttman Split-Half Coefficient"
-msgstr ""
+#: src/output/ascii.c:360
+msgid "ascii: only screen devices may have `auto' length or width"
+msgstr "ascii: alleen scherm apparaten mogen 'auto' lengte of breedte hebben"
 
-#: src/language/stats/reliability.q:715
-msgid "Excluded"
-msgstr "Uitgesloten"
+#: src/output/ascii.c:374
+#, c-format
+msgid "ascii: positive integer required as `%s' value"
+msgstr "ascii: positieve integer vereist als `%s' waarde"
 
-#: src/language/stats/reliability.q:723
-msgid "%"
-msgstr ""
+#: src/output/ascii.c:402
+msgid "ascii: `emphasis' value must be `bold', `underline', or `none'"
+msgstr "ascii: `emphasis' waarde moet `bold', `underline', of `none' zijn"
 
-#: src/language/stats/roc.c:938
-msgid "Area Under the Curve"
-msgstr ""
+#: src/output/ascii.c:415
+#, c-format
+msgid "ascii: zero or positive integer required as `%s' value"
+msgstr "ascii: nul of positieve integer vereist als `%s' waarde"
 
-#: src/language/stats/roc.c:940
+#: src/output/ascii.c:446
 #, c-format
-msgid "Area Under the Curve (%s)"
-msgstr ""
+msgid "ascii: boolean value expected for `%s'"
+msgstr "ascii: boolean waarde verwacht voor `%s'"
 
-#: src/language/stats/roc.c:946
-msgid "Area"
-msgstr ""
+#: src/output/ascii.c:478 src/output/html.c:187
+msgid "`chart-files' value must contain `#'"
+msgstr "`chart-files' waarde moet `#' bevatten"
 
-#: src/language/stats/roc.c:960
-msgid "Asymptotic Sig."
-msgstr ""
+#: src/output/ascii.c:524
+#, c-format
+msgid "ascii: opening output file \"%s\""
+msgstr "ascii: openen uitvoer bestand \"%s\""
 
-#: src/language/stats/roc.c:967
+#: src/output/ascii.c:587
 #, c-format
-msgid "Asymp. %g%% Confidence Interval"
+msgid "ascii: bad line (%d,%d)-(%d,%d) out of (%d,%d)\n"
 msgstr ""
 
-#: src/language/stats/roc.c:973
-#, fuzzy
-msgid "Variable under test"
-msgstr "Variabelen"
+#: src/output/ascii.c:809 src/output/postscript.c:826
+#, c-format
+msgid "%s - Page %d"
+msgstr "%s - Pagina %d"
 
-#: src/language/stats/roc.c:1032
-#, fuzzy
-msgid "Case Summary"
-msgstr "Overzicht."
+#: src/output/ascii.c:861
+#, c-format
+msgid "ascii: closing output file \"%s\""
+msgstr "ascii: sluiten uitvoer bestand \"%s\""
 
-#: src/language/stats/roc.c:1054
-#, fuzzy
-msgid "Unweighted"
-msgstr "Niet gewogen."
+#: src/output/html.c:71
+#, c-format
+msgid "opening HTML output file: %s"
+msgstr "openen HTML uitvoer bestand: %s"
 
-#: src/language/stats/roc.c:1055
-#, fuzzy
-msgid "Weighted"
-msgstr "Gewicht:"
+#: src/output/html.c:82
+msgid "PSPP Output"
+msgstr "PSPP Uitvoer"
 
-#: src/language/stats/roc.c:1059
-msgid "Valid N (listwise)"
-msgstr ""
+#: src/output/html.c:170
+#, c-format
+msgid "unknown configuration parameter `%s' for HTML device driver"
+msgstr "onbekende configuratie parameter '%s' voor HTML device driver"
 
-#: src/language/stats/roc.c:1062
-#, fuzzy
-msgid "Positive"
-msgstr "positief"
+#: src/output/journal.c:69
+#, c-format
+msgid "error writing \"%s\""
+msgstr "fout bij schrijven \"%s\""
 
-#: src/language/stats/roc.c:1063
-#, fuzzy
-msgid "Negative"
-msgstr "negatief"
+#: src/output/journal.c:94
+#, c-format
+msgid "error creating \"%s\""
+msgstr "fout bij aanmaken \"%s\""
 
-#: src/language/stats/roc.c:1091
-msgid "Coordinates of the Curve"
-msgstr ""
+#: src/output/output.c:168
+#, c-format
+msgid "unknown output driver `%s'"
+msgstr "onbekende uitvoer driver %s"
 
-#: src/language/stats/roc.c:1093
+#: src/output/output.c:170
 #, c-format
-msgid "Coordinates of the Curve (%s)"
-msgstr ""
+msgid "output driver `%s' referenced but never defined"
+msgstr "uitvoer driver '%s' gerefereerd maar nooit gedefinieerd"
 
-#: src/language/stats/roc.c:1103
-#, fuzzy
-msgid "Test variable"
-msgstr "Test Variabel(en):"
+#: src/output/output.c:261
+msgid "using default output driver configuration"
+msgstr "gebruik default uitvoer driver configuratie"
 
-#: src/language/stats/roc.c:1105
-msgid "Positive if greater than or equal to"
+#: src/output/output.c:290
+msgid "cannot find output initialization file (use `-vv' to view search path)"
 msgstr ""
+"kan uitvoer initialisatie bestand niet vinden (gebruik -vv om zoekpad te "
+"zien)"
 
-#: src/language/stats/roc.c:1106 src/language/stats/roc.c:1171
-msgid "Sensitivity"
-msgstr ""
+#: src/output/output.c:298
+#, c-format
+msgid "cannot open \"%s\""
+msgstr "kan \"%s\" niet openen"
 
-#: src/language/stats/roc.c:1107 src/language/stats/roc.c:1170
-msgid "1 - Specificity"
-msgstr ""
+#: src/output/output.c:310
+#, c-format
+msgid "reading \"%s\""
+msgstr "lezen \"%s\""
 
-#: src/language/stats/roc.c:1169
-msgid "ROC Curve"
-msgstr ""
+#: src/output/output.c:332 src/ui/gui/message-dialog.c:99
+msgid "syntax error"
+msgstr "syntax fout"
 
-#: src/language/stats/sign.c:91
-msgid "Negative Differences"
-msgstr "Negatieve Verschillen"
+#: src/output/output.c:341
+#, c-format
+msgid "error closing \"%s\""
+msgstr "fout bij sluiten \"%s\""
 
-#: src/language/stats/sign.c:92
-msgid "Positive Differences"
-msgstr "Positieve Verschillen"
-
-#: src/language/stats/sign.c:93 src/language/stats/wilcoxon.c:261
-msgid "Ties"
-msgstr ""
-
-#: src/language/stats/sign.c:134 src/language/stats/wilcoxon.c:331
-msgid "Exact Sig. (2-tailed)"
-msgstr ""
-
-#: src/language/stats/sign.c:137 src/language/stats/wilcoxon.c:332
-msgid "Exact Sig. (1-tailed)"
-msgstr ""
-
-#: src/language/stats/sign.c:140 src/language/stats/wilcoxon.c:335
-msgid "Point Probability"
-msgstr ""
-
-#: src/language/stats/sort-cases.c:64
-msgid "Buffer limit must be at least 2."
-msgstr "Buffer limiet moet tenminste 2 zijn."
-
-#: src/language/stats/sort-criteria.c:74
-msgid "`A' or `D' expected inside parentheses."
-msgstr "'A' of 'D' verwacht binnen haakjes."
+#: src/output/output.c:349
+msgid "no active output drivers"
+msgstr "geen actieve uitvoer drivers"
 
-#: src/language/stats/sort-criteria.c:79
-msgid "`)' expected."
-msgstr "')' verwacht."
+#: src/output/output.c:352
+msgid "error reading device definition file"
+msgstr "fout tijdens lezen device definitie bestand"
 
-#: src/language/stats/sort-criteria.c:92
+#: src/output/output.c:470
 #, c-format
-msgid "Variable %s specified twice in sort criteria."
-msgstr "Variabele %s 2 keer opgegeven in sort criteria."
-
-#: src/language/stats/t-test.q:189
-#, fuzzy
-msgid "Exactly one of TESTVAL, GROUPS and PAIRS subcommands must be specified."
-msgstr "TESTVAL, GROUPS en PAIRS subopdracht zijn wederzijds uitsluitend."
-
-#: src/language/stats/t-test.q:210
-#, fuzzy
-msgid "VARIABLES subcommand may not be used with PAIRS."
-msgstr "VARIABLES subprogramma is niet het juiste met PAIRS"
-
-#: src/language/stats/t-test.q:229
-msgid "One or more VARIABLES must be specified."
-msgstr "Een of meer VARIABLES moeten gespecificeerd zijn."
-
-#: src/language/stats/t-test.q:323
 msgid ""
-"When applying GROUPS to a string variable, two values must be specified."
+"Driver classes:\n"
+"\t"
 msgstr ""
-"By het toepassen van GROUPS op een string variabele moeten twee waardes "
-"opgegeven zijn."
 
-#: src/language/stats/t-test.q:394
-msgid "At least two variables must be specified on PAIRS."
-msgstr "Ten minste 2 variabelen moeten opgegeven worden bij PAIRS."
-
-#: src/language/stats/t-test.q:504
-msgid "One-Sample Statistics"
-msgstr ""
+#: src/output/output.c:502
+#, c-format
+msgid "syntax error parsing options for \"%s\" driver"
+msgstr "syntax fout bij het ontleden van opties voor \"%s\" driver"
 
-#: src/language/stats/t-test.q:509 src/language/stats/t-test.q:529
-#: src/language/stats/t-test.q:628
-msgid "SE. Mean"
+#: src/output/output.c:518
+#, c-format
+msgid ""
+"reached end of options inside quoted string parsing options for \"%s\" driver"
 msgstr ""
+"einde opties bereikt binnen geciteerde string tijdens ontleden van opties "
+"voor \"%s\" driver"
 
-#: src/language/stats/t-test.q:523
-msgid "Group Statistics"
+#: src/output/output.c:588
+#, c-format
+msgid "syntax error in string constant parsing options for \"%s\" driver"
 msgstr ""
+"syntax fout in string constante tijdens ontleden opties voor \"%s\" driver"
 
-#: src/language/stats/t-test.q:622
-msgid "Paired Sample Statistics"
-msgstr ""
+#: src/output/output.c:636
+#, c-format
+msgid "syntax error expecting `=' parsing options for driver \"%s\""
+msgstr "syntax fout verwacht `=' tijdens ontleden opties voor driver \"%s\""
 
-#: src/language/stats/t-test.q:642 src/language/stats/t-test.q:945
-#: src/language/stats/t-test.q:1119
+#: src/output/output.c:687
 #, c-format
-msgid "Pair %d"
-msgstr ""
+msgid "unknown output driver class `%.*s'"
+msgstr "onbekende uitvoer driver class `%.*s'"
 
-#: src/language/stats/t-test.q:738
-msgid "Independent Samples Test"
-msgstr ""
+#: src/output/output.c:702
+#, c-format
+msgid "unknown device type `%.*s'"
+msgstr "onbekend apparaat type `%.*s'"
 
-#: src/language/stats/t-test.q:746
-msgid "Levene's Test for Equality of Variances"
+#: src/output/output.c:719
+#, c-format
+msgid "cannot initialize output driver `%s' of class `%s'"
 msgstr ""
 
-#: src/language/stats/t-test.q:748
-msgid "t-test for Equality of Means"
-msgstr ""
+#: src/output/output.c:765
+msgid "driver definition line missing driver name or class name"
+msgstr "driver definitie regel mist driver naam of class naam"
 
-#: src/language/stats/t-test.q:751 src/language/stats/t-test.q:1107
-msgid "Sig."
-msgstr ""
+#: src/output/output.c:868
+#, c-format
+msgid "`%s' is not a valid length."
+msgstr "`%s' is geen geldige lengte."
 
-#: src/language/stats/t-test.q:755 src/language/stats/t-test.q:1013
-msgid "Mean Difference"
-msgstr "Gemiddelde Verschil"
+#: src/output/output.c:960
+#, c-format
+msgid "unknown paper type `%.*s'"
+msgstr "onbekend papier type `%.*s'"
 
-#: src/language/stats/t-test.q:756
-msgid "Std. Error Difference"
-msgstr ""
+#: src/output/output.c:978
+#, c-format
+msgid "error opening \"%s\""
+msgstr "fout tijdens openen \"%s\""
 
-#: src/language/stats/t-test.q:761 src/language/stats/t-test.q:915
-#: src/language/stats/t-test.q:1005
+#: src/output/output.c:989
 #, c-format
-msgid "%g%% Confidence Interval of the Difference"
-msgstr ""
+msgid "error reading \"%s\""
+msgstr "fout tijdens lezen \"%s\""
 
-#: src/language/stats/t-test.q:815
-msgid "Equal variances assumed"
-msgstr ""
+#: src/output/output.c:1006
+#, c-format
+msgid "paper size file \"%s\" does not state a paper size"
+msgstr "papier grootte bestand \"%s\" geeft geen papier grootte aan"
 
-#: src/language/stats/t-test.q:861
-msgid "Equal variances not assumed"
-msgstr ""
+#: src/output/output.c:1066
+#, c-format
+msgid "syntax error in paper size `%s'"
+msgstr "syntax fout in papier grootte '%s' "
 
-#: src/language/stats/t-test.q:905
-msgid "Paired Samples Test"
-msgstr ""
+#: src/output/postscript.c:158
+#, c-format
+msgid "opening PostScript output file \"%s\""
+msgstr "Openen PostScript uitvoer bestand \"%s\""
 
-#: src/language/stats/t-test.q:908
-msgid "Paired Differences"
+#: src/output/postscript.c:196
+#, c-format
+msgid ""
+"The defined PostScript page is not long enough to hold margins and headers, "
+"plus least 15 lines of the default fonts.  In fact, there's only room for %d "
+"lines of each font at the default size of %d.%03d points."
 msgstr ""
+"De gedefinieerde PostScript pagina is niet lang genoeg om marges en koppen, "
+"plus tenminste 15 regels van het default font te bevatten.  In feite is er "
+"slechts plaats voor %d regels van elk font bij de default grootte van %d.%"
+"03d punten."
 
-#: src/language/stats/t-test.q:920
-msgid "Std. Error Mean"
-msgstr ""
+#: src/output/postscript.c:246
+#, c-format
+msgid "closing PostScript output file \"%s\""
+msgstr "sluiten PostScript uitvoer bestand \"%s\""
 
-#: src/language/stats/t-test.q:994
-msgid "One-Sample Test"
-msgstr ""
+#: src/output/postscript.c:309
+#, c-format
+msgid "unknown configuration parameter `%s' for PostScript device driver"
+msgstr "onbekende configuratie parameter `%s' voor PostScript device driver"
 
-#: src/language/stats/t-test.q:999
+#: src/output/postscript.c:325
 #, c-format
-msgid "Test Value = %f"
+msgid ""
+"unknown orientation `%s' (valid orientations are `portrait' and `landscape')"
 msgstr ""
+"onbekende oriëntatie '%s' (geldige oriëntaties zijn 'portrait'en 'landscape')"
 
-#: src/language/stats/t-test.q:1102
-msgid "Paired Samples Correlations"
-msgstr ""
+#: src/output/postscript.c:337
+#, c-format
+msgid "boolean value expected for %s"
+msgstr "boolean waarde verwacht voor %s"
 
-#: src/language/stats/t-test.q:1106
-msgid "Correlation"
-msgstr "Correlatie"
+#: src/output/postscript.c:350
+#, c-format
+msgid "positive integer value required for `%s'"
+msgstr "positieve integer waarde vereist voor '%s'"
 
-#: src/language/stats/t-test.q:1121
+#: src/output/postscript.c:355
 #, c-format
-msgid "%s & %s"
+msgid "default font size must be at least 1 point (value of 1000 for key `%s')"
 msgstr ""
+"default font grootte moet tenminste 1 punt zijn (waarde 1000 voor sleutel '%"
+"s')"
 
-#: src/language/stats/wilcoxon.c:232
-msgid "Ranks"
-msgstr "Rangen"
-
-#: src/language/stats/wilcoxon.c:246
-msgid "Mean Rank"
-msgstr "Gemiddelde Rang"
-
-#: src/language/stats/wilcoxon.c:247
-msgid "Sum of Ranks"
-msgstr "Totaal van de Rangen"
-
-#: src/language/stats/wilcoxon.c:259
-msgid "Negative Ranks"
-msgstr "Negatieve Rangen"
-
-#: src/language/stats/wilcoxon.c:260
-msgid "Positive Ranks"
-msgstr "Positieve Rangen"
+#: src/output/postscript.c:1176
+#, c-format
+msgid "\"%s\": bad font specification"
+msgstr "\"%s\": slechte font specificatie"
 
-#: src/language/stats/wilcoxon.c:326
-msgid "Z"
-msgstr ""
+#: src/output/postscript.c:1184
+#, c-format
+msgid "could not find AFM file \"%s\""
+msgstr "kon AFM bestand \"%s\" niet vinden"
 
-#: src/language/stats/wilcoxon.c:327
-msgid "Asymp. Sig. (2-tailed)"
-msgstr ""
+#: src/output/postscript.c:1198
+#, c-format
+msgid "could not find font \"%s\""
+msgstr "kon font \"%s\" niet vinden"
 
-#: src/language/syntax-file.c:88
+#: src/output/postscript.c:1207
 #, c-format
-msgid "opening \"%s\" as syntax file"
-msgstr "openen \"%s\" als syntax bestand"
+msgid "could not find encoding \"%s\""
+msgstr "kon codering \"%s\" niet vinden"
 
-#: src/language/syntax-file.c:93
+#: src/output/postscript.c:1307
 #, c-format
-msgid "Opening `%s': %s."
-msgstr "Openen '%s': %s."
+msgid "cannot open font file \"%s\""
+msgstr "kan font bestand \"%s\" niet openen"
 
-#: src/language/syntax-file.c:107
+#: src/output/postscript.c:1348
 #, c-format
-msgid "Reading `%s': %s."
-msgstr "Lezen '%s': %s."
+msgid "reading font file \"%s\""
+msgstr "lezen font bestand \"%s\""
 
-#: src/language/syntax-file.c:127
+#: src/output/postscript.c:1370
 #, c-format
-msgid "Closing `%s': %s."
-msgstr "Sluiten '%s': %s."
+msgid "cannot open font encoding file \"%s\""
+msgstr "kan font codering bestand \"%s\" niet openen"
 
-#: src/language/tests/float-format.c:124
+#: src/output/postscript.c:1399
+msgid "invalid numeric format"
+msgstr "ongeldig numeriek formaat"
+
+#: src/output/postscript.c:1421
 #, c-format
-msgid "%zu-byte string needed but %zu-byte string supplied."
-msgstr "%zu-byte string nodig maar %zu-byte string gegeven."
+msgid "closing Postscript encoding \"%s\""
+msgstr "sluiten Postscript codering \"%s\""
 
-#: src/language/tests/float-format.c:136
-msgid "Hexadecimal floating constant too long."
+#: src/output/table.c:237
+#, c-format
+msgid "bad vline: x=%d+%d=%d y=(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n"
 msgstr ""
 
-#: src/language/tests/float-format.c:201
+#: src/output/table.c:308
 #, c-format
 msgid ""
-"%s conversion of %s from %s to %s should have produced %s but actually "
-"produced %s."
+"bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n"
 msgstr ""
-"%s conversie van %s van %s naar %s zou %s moeten produceren maar produceerde "
-"in werkelijkheid %s."
-
-#: src/language/tests/float-format.c:247
-msgid "Too many values in single command."
-msgstr "Te veel waardes in enkele opdracht."
-
-#: src/language/tests/moments-test.c:47
-msgid "expecting weight value"
-msgstr "verwacht weging waarde"
 
-#: src/language/utilities/cd.c:41
+#: src/output/chart.c:154
 #, c-format
-msgid "Cannot change directory to %s:  %s "
-msgstr "Kan map niet veranderen in %s: %s "
-
-#: src/language/utilities/date.c:32
-msgid "Only USE ALL is currently implemented."
-msgstr "Alleen USE ALL is op dit moment geïmplementeerd."
+msgid "creating \"%s\""
+msgstr "aanmaken \"%s\""
 
-#: src/language/utilities/include.c:92
-msgid "Expecting BATCH or INTERACTIVE after SYNTAX."
-msgstr "BATCH of INTERACTIVE verwacht na SYNTAX."
+#: src/ui/source-init-opts.c:42
+msgid ""
+"set to `compatible' if you want output calculated from broken algorithms"
+msgstr ""
+"zet op 'compatible' als je uitvoer wilt die door 'broken algorithms' wordt "
+"berekend"
 
-#: src/language/utilities/include.c:109
-msgid "Expecting YES or NO after CD."
-msgstr "YES of NO verwacht na CD."
+#: src/ui/source-init-opts.c:43
+msgid "Append DIR to include path"
+msgstr "Voeg DIR toe aan include pad"
 
-#: src/language/utilities/include.c:126
-msgid "Expecting CONTINUE or STOP after ERROR."
-msgstr "CONTINUE of STOP verwacht na ERROR."
+#: src/ui/source-init-opts.c:44
+msgid "Clear include path"
+msgstr "Maak include pad leeg"
 
-#: src/language/utilities/include.c:133
-#, c-format
-msgid "Unexpected token: `%s'."
-msgstr "Onverwacht symbool: '%s'."
+#: src/ui/source-init-opts.c:45
+msgid "Disable execution of .pspp/rc at startup"
+msgstr "Schakel uitvoeren van .pspp/rc bij het opstarten uit"
 
-#: src/language/utilities/include.c:178
-msgid "expecting file name"
-msgstr "bestandsnaam verwacht"
+#: src/ui/source-init-opts.c:46
+msgid "Set configuration directory to DIR"
+msgstr "Zet configuratie directory op DIR"
 
-#: src/language/utilities/include.c:190
-#, c-format
-msgid "Can't find `%s' in include file search path."
-msgstr "Kan '%s' niet vinden in include bestand zoek pad."
+#: src/ui/source-init-opts.c:47
+msgid "Don't allow some unsafe operations"
+msgstr "Sta sommige onveilige operaties niet toe"
 
-#: src/language/utilities/include.c:198
-#, c-format
-msgid "Unable to open `%s': %s."
-msgstr "Onmogelijk om te openen '%s': %s."
+#: src/ui/source-init-opts.c:48
+msgid "Set to `compatible' if you want only to accept SPSS compatible syntax"
+msgstr ""
+"Zet op 'compatible' als je alleen SPSS compatible syntax wilt accepteren"
 
-#: src/language/utilities/permissions.c:73
-#, c-format
-msgid "Expecting %s or %s."
-msgstr "Verwacht %s of %s."
+#: src/ui/source-init-opts.c:83
+msgid "Algorithm must be either \"compatible\" or \"enhanced\"."
+msgstr "Algoritme moet zijn \"compatible\" of \"enhanced\"."
 
-#: src/language/utilities/permissions.c:106
-#, c-format
-msgid "Cannot stat %s: %s"
+#: src/ui/source-init-opts.c:124
+msgid "Syntax must be either \"compatible\" or \"enhanced\"."
+msgstr "Syntax moet zijn \"compatible\" of \"enhanced\"."
+
+#: src/ui/terminal/main.c:115
+msgid "PSPP --- A program for statistical analysis"
+msgstr "PSPP -- Een programma voor statistische analyse"
+
+#: src/ui/terminal/main.c:116
+msgid "FILE1, FILE2 ... FILEn"
 msgstr ""
 
-#: src/language/utilities/permissions.c:119
+#: src/ui/terminal/main.c:119 src/ui/terminal/terminal-opts.c:177
+msgid "Options affecting input and output locations:"
+msgstr "Opties die invoer en uitvoer locaties beinvloeden:"
+
+#: src/ui/terminal/main.c:122 src/ui/terminal/terminal-opts.c:178
+msgid "Diagnostic options:"
+msgstr "Diagnose opties:"
+
+#: src/ui/terminal/main.c:125 src/ui/gui/main.c:177
+msgid "Options affecting syntax and behavior:"
+msgstr "Opties die de syntax en het gedrag beinvloeden:"
+
+#: src/ui/terminal/main.c:156
+msgid ""
+"Stopping syntax file processing here to avoid a cascade of dependent command "
+"failures."
+msgstr ""
+"Stop syntax bestand uitvoering hier om een cascade van afhankelijke opdracht "
+"fouten te voorkomen."
+
+#: src/ui/terminal/msg-ui.c:67
 #, c-format
-msgid "Cannot change mode of %s: %s"
-msgstr "Kan mode van %s niet veranderen: %s"
+msgid "Cannot open %s (%s). Writing errors to stdout instead.\n"
+msgstr "Kan %s (%s) niet openen. Schrijf fouten naar stdout inplaats.\n"
 
-#: src/language/utilities/set.q:202
-msgid "WORKSPACE must be at least 1MB"
-msgstr "WORKSPACE moet minstens 1MB zijn"
+#: src/ui/terminal/msg-ui.c:94
+msgid "Terminating execution of syntax file due to error."
+msgstr "Breek uitvoering van syntax bestand af vanwege fout."
 
-#: src/language/utilities/set.q:208 src/language/utilities/set.q:210
-#: src/language/utilities/set.q:212 src/language/utilities/set.q:214
-#: src/language/utilities/set.q:216 src/language/utilities/set.q:218
-#: src/language/utilities/set.q:220 src/language/utilities/set.q:222
-#: src/language/utilities/set.q:224
+#: src/ui/terminal/msg-ui.c:96
 #, c-format
-msgid "%s is obsolete."
-msgstr "%s is verouderd."
+msgid "Errors (%d) exceeds limit (%d)."
+msgstr "Fouten (%d) overschrijdt limiet (%d)."
 
-#: src/language/utilities/set.q:227
+#: src/ui/terminal/msg-ui.c:99
 #, c-format
-msgid "%s is not implemented."
-msgstr "%s is niet geïmplementeerd."
+msgid "Warnings (%d) exceed limit (%d)."
+msgstr "Waarschuwings (%d) overschrijdt limiet (%d)."
 
-#: src/language/utilities/set.q:230
-msgid "Active file compression is not implemented."
-msgstr "Actief bestand compressie is niet geïmplementeerd."
+#: src/ui/terminal/msg-ui.c:150
+msgid "error"
+msgstr "fout"
 
-#: src/language/utilities/set.q:325
-msgid "EPOCH must be 1500 or later."
-msgstr "EPOCH moet 1500 of later zijn."
+#: src/ui/terminal/msg-ui.c:151
+msgid "warning"
+msgstr "waarschuwing"
 
-#: src/language/utilities/set.q:332
-msgid "expecting AUTOMATIC or year"
-msgstr "AUTOMATIC of jaar verwacht"
+#: src/ui/terminal/terminal.c:72
+#, c-format
+msgid "could not access definition for terminal `%s'"
+msgstr "kon definitie voor terminal '%s' niet benaderen"
 
-#: src/language/utilities/set.q:353
-msgid "LENGTH must be at least 1."
-msgstr "LENGTH moet tenminste 1 zijn."
+#: src/ui/terminal/terminal-opts.c:41
+msgid "Increase diagnostic verbosity level"
+msgstr "Verhoog diagnose zichtbaarheids niveau"
 
-#: src/language/utilities/set.q:389
-#, c-format
-msgid "%s is not a recognised encoding or locale name"
-msgstr "%s is geen herkende codering of lokale naam"
+#: src/ui/terminal/terminal-opts.c:68
+msgid "Send error messages to FILE (appended)"
+msgstr "Stuur fout meldingen naar FILE (aanvullend)"
 
-#: src/language/utilities/set.q:432
-msgid "WIDTH must be at least 40."
-msgstr "WIDTH moet tenminste 40 zijn."
+#: src/ui/terminal/terminal-opts.c:71
+msgid "Select output driver DEVICE and disable defaults"
+msgstr "Selecteer uitvoer driver DEVICE en schakel defaults uit"
 
-#: src/language/utilities/set.q:455
-#, c-format
-msgid ""
-"FORMAT requires numeric output format as an argument.  Specified format %s "
-"is of type string."
+#: src/ui/terminal/terminal-opts.c:74
+msgid "Print a list of known driver classes, then exit"
+msgstr "Print een lijst van bekende driver classes en eindig daarna"
+
+#: src/ui/terminal/terminal-opts.c:76
+msgid "Start an interactive session"
+msgstr "Start een interactieve sessie"
+
+#: src/ui/gui/about.c:64
+msgid "A program for the analysis of sampled data"
 msgstr ""
-"FORMAT vereist numeriek uitvoer formaat als een argument. Opgegeven formaat %"
-"s is van het type string."
 
-#: src/language/utilities/set.q:668
-msgid "ISL (32-bit IEEE 754 single, little-endian)"
+#. TRANSLATORS: Use this string to list the people who have helped with
+#. translation to your language.
+#: src/ui/gui/about.c:74
+msgid "translator-credits"
 msgstr ""
 
-#: src/language/utilities/set.q:671
-msgid "ISB (32-bit IEEE 754 single, big-endian)"
+#: src/ui/gui/checkbox-treeview.c:92
+msgid "Statistic"
 msgstr ""
 
-#: src/language/utilities/set.q:674
-msgid "IDL (64-bit IEEE 754 double, little-endian)"
+#: src/ui/gui/comments-dialog.c:58
+#, c-format
+msgid "Column Number: %d"
+msgstr "Kolom Nummer: %d"
+
+#: src/ui/gui/crosstabs-dialog.c:40
+msgid "Chisq"
 msgstr ""
 
-#: src/language/utilities/set.q:677
-msgid "IDB (64-bit IEEE 754 double, big-endian)"
+#: src/ui/gui/crosstabs-dialog.c:41
+msgid "Phi"
 msgstr ""
 
-#: src/language/utilities/set.q:681
-msgid "VF (32-bit VAX F, VAX-endian)"
+#: src/ui/gui/crosstabs-dialog.c:42
+msgid "CC"
 msgstr ""
 
-#: src/language/utilities/set.q:684
-msgid "VD (64-bit VAX D, VAX-endian)"
+#: src/ui/gui/crosstabs-dialog.c:43
+msgid "Lambda"
 msgstr ""
 
-#: src/language/utilities/set.q:687
-msgid "VG (64-bit VAX G, VAX-endian)"
+#: src/ui/gui/crosstabs-dialog.c:44
+msgid "UC"
 msgstr ""
 
-#: src/language/utilities/set.q:691
-msgid "ZS (32-bit IBM Z hexadecimal short, big-endian)"
+#: src/ui/gui/crosstabs-dialog.c:45
+msgid "BTau"
 msgstr ""
 
-#: src/language/utilities/set.q:694
-msgid "ZL (64-bit IBM Z hexadecimal long, big-endian)"
+#: src/ui/gui/crosstabs-dialog.c:46
+msgid "CTau"
 msgstr ""
 
-#: src/language/utilities/set.q:793
-#, fuzzy, c-format
-msgid "%s is %s."
-msgstr "%s van %s"
+#: src/ui/gui/crosstabs-dialog.c:47
+msgid "Risk"
+msgstr ""
 
-#: src/language/utilities/title.c:68
-#, c-format
-msgid "%s: `.' expected after string."
-msgstr "%s: `.' verwacht na string."
+#: src/ui/gui/crosstabs-dialog.c:48
+msgid "Gamma"
+msgstr ""
 
-#: src/language/utilities/title.c:108
-#, c-format
-msgid "   (Entered %s)"
-msgstr "   (Ingevoerd %s)"
+#: src/ui/gui/crosstabs-dialog.c:49
+msgid "D"
+msgstr ""
 
-#: src/language/xforms/compute.c:149 src/language/xforms/compute.c:203
-#, c-format
-msgid ""
-"When executing COMPUTE: SYSMIS is not a valid value as an index into vector %"
-"s."
+#: src/ui/gui/crosstabs-dialog.c:50
+msgid "Kappa"
 msgstr ""
-"Tijdens uitvoeren van COMPUTE: SYSMIS is geen geldige waarde als een index "
-"in vector %s."
 
-#: src/language/xforms/compute.c:153 src/language/xforms/compute.c:210
-#, c-format
-msgid ""
-"When executing COMPUTE: %g is not a valid value as an index into vector %s."
+#: src/ui/gui/crosstabs-dialog.c:51
+msgid "Eta"
 msgstr ""
-"Tijdens uitvoeren van COMPUTE: %g is geen geldige waarde als een index in "
-"vector %s."
 
-#: src/language/xforms/compute.c:353
-#, c-format
-msgid "There is no vector named %s."
-msgstr "Er is geen vector genaamd %s."
+#: src/ui/gui/crosstabs-dialog.c:52
+msgid "Corr"
+msgstr ""
 
-#: src/language/xforms/count.c:123
-msgid "Destination cannot be a string variable."
-msgstr "Bestemming kan geen string variabele zijn."
+#: src/ui/gui/crosstabs-dialog.c:53 src/ui/gui/crosstabs-dialog.c:64
+#: src/ui/gui/crosstabs-dialog.c:99 src/ui/gui/crosstabs-dialog.c:107
+#: src/ui/gui/psppire-var-store.c:612 src/ui/gui/var-display.c:16
+#: src/ui/gui/variable-info-dialog.c:40
+msgid "None"
+msgstr "Geen"
 
-#: src/language/xforms/recode.c:248
-msgid ""
-"Inconsistent target variable types.  Target variables must be all numeric or "
-"all string."
-msgstr ""
-"Inconsistent doel variabele types.  Doel variabelen moeten allemaal numeriek "
-"of allemaal string zijn. "
+#: src/ui/gui/crosstabs-dialog.c:56
+msgid "Count"
+msgstr "Aantal"
 
-#: src/language/xforms/recode.c:269
-msgid "CONVERT requires string input values and numeric output values."
-msgstr "CONVERT vereist string invoer waardes en numerieke uitvoer waardes."
+#: src/ui/gui/crosstabs-dialog.c:57
+msgid "Row"
+msgstr "Rij"
 
-#: src/language/xforms/recode.c:324
-msgid "THRU is not allowed with string variables."
-msgstr "THRU is niet toegestaan met string variabelen."
+#: src/ui/gui/crosstabs-dialog.c:58
+msgid "Column"
+msgstr "Kolom"
 
-#: src/language/xforms/recode.c:403
-msgid "expecting output value"
-msgstr "verwacht uitvoer waarde"
+#: src/ui/gui/crosstabs-dialog.c:60
+msgid "Expected"
+msgstr "Verwacht"
 
-#: src/language/xforms/recode.c:460
-#, c-format
-msgid ""
-"%zu variable(s) cannot be recoded into %zu variable(s).  Specify the same "
-"number of variables as source and target variables."
+#: src/ui/gui/crosstabs-dialog.c:62
+msgid "Std. Residual"
 msgstr ""
-"%zu variabel(en) kunnen niet gehercodeerd worden in %zu variabel(en).  "
-"Specificeer hetzelfde aantal variabelen als bron en als doel variabelen."
 
-#: src/language/xforms/recode.c:475
-#, c-format
-msgid ""
-"There is no variable named %s.  (All string variables specified on INTO must "
-"already exist.  Use the STRING command to create a string variable.)"
+#: src/ui/gui/crosstabs-dialog.c:63
+msgid "Adjusted Std. Residual"
 msgstr ""
-"Er is geen variabele genaamd %s.  (Alle string variabelen gespecificeerd bij "
-"INTO dienen al te bestaan.  Gebruik de STRING opdracht om een string "
-"variabele aan te maken.)"
 
-#: src/language/xforms/recode.c:491
-#, c-format
-msgid "INTO is required with %s input values and %s output values."
-msgstr "INTO is vereist met %s invoer waardes en %s uitvoer waardes."
+#: src/ui/gui/customentry.c:334
+msgid "Style of bevel around the custom entry button"
+msgstr ""
 
-#: src/language/xforms/recode.c:504
-#, c-format
-msgid "Type mismatch.  Cannot store %s data in %s variable %s."
-msgstr "Type fout. Kan %s data niet in %s variabele %s opslaan. "
+#: src/ui/gui/descriptives-dialog.c:40 src/ui/gui/frequencies-dialog.c:41
+msgid "Standard deviation"
+msgstr "Standaard deviatie"
 
-#: src/language/xforms/sample.c:76
-msgid "The sampling factor must be between 0 and 1 exclusive."
-msgstr "De steekproef factor moet exclusief tussen 0 en 1 liggen."
+#: src/ui/gui/descriptives-dialog.c:45
+msgid "Standard error"
+msgstr "Standaard fout"
 
-#: src/language/xforms/sample.c:96
+#: src/ui/gui/find-dialog.c:652
 #, c-format
-msgid "Cannot sample %d observations from a population of %d."
-msgstr "Kan niet %d observaties bemonsteren van een populatie van %d."
+msgid "Bad regular expression: %s"
+msgstr "Foutieve regulaire expressie: %s"
 
-#: src/language/xforms/select-if.c:100
-msgid "Syntax error expecting OFF or BY.  Turning off case filtering."
-msgstr "Syntax fout verwacht OFF of BY. Schakelt case filtering uit. "
+#: src/ui/gui/frequencies-dialog.c:44
+msgid "Standard error of the mean"
+msgstr ""
 
-#: src/language/xforms/select-if.c:115
-msgid "The filter variable must be numeric."
-msgstr "De filter variabele moet numeriek zijn."
+#: src/ui/gui/frequencies-dialog.c:47
+msgid "Standard error of the skewness"
+msgstr ""
 
-#: src/language/xforms/select-if.c:121
-msgid "The filter variable may not be scratch."
-msgstr "De filter variabele mag niet scratch zijn."
+#: src/ui/gui/frequencies-dialog.c:49
+msgid "Mode"
+msgstr ""
 
-#: src/libpspp/hash.c:545
-#, c-format
-msgid "hash table:"
-msgstr "hash tabel:"
+#: src/ui/gui/frequencies-dialog.c:51
+msgid "Standard error of the kurtosis"
+msgstr ""
 
-#: src/libpspp/tmpfile.c:55
-#, c-format
-msgid "failed to create temporary file"
-msgstr "aanmaken van een tijdelijk bestand is mislukt"
+#: src/ui/gui/frequencies-dialog.c:52
+msgid "Median"
+msgstr ""
 
-#: src/libpspp/tmpfile.c:96
-#, c-format
-msgid "seeking in temporary file"
-msgstr "zoeken in tijdelijk bestand"
+#: src/ui/gui/helper.c:197
+msgid "Sorry. The help system hasn't yet been implemented."
+msgstr "Sorry. Het help systeem is nog niet geïmplementeerd."
 
-#: src/libpspp/tmpfile.c:115
+#: src/ui/gui/helper.c:242
 #, c-format
-msgid "reading temporary file"
-msgstr "lezen tijdelijk bestand"
+msgid "Cannot open reference manual: %s"
+msgstr "Kan de handleiding niet openen: %s"
 
-#: src/libpspp/tmpfile.c:117
+#: src/ui/gui/main.c:43
+msgid "Don't show the splash screen"
+msgstr "Toon het splash scherm niet"
+
+#: src/ui/gui/main.c:173
+msgid "PSPPIRE --- A user interface for PSPP"
+msgstr "PSPPIRE --- Een gebruikers interface voor PSPP"
+
+#: src/ui/gui/main.c:175
+msgid "Miscellaneous options:"
+msgstr "Diverse opties:"
+
+#: src/ui/gui/message-dialog.c:103
+msgid "data file error"
+msgstr "data bestand fout"
+
+#: src/ui/gui/message-dialog.c:108
+msgid "PSPP error"
+msgstr "PSPP fout"
+
+#: src/ui/gui/message-dialog.c:116
+msgid "syntax warning"
+msgstr "syntax waarschuwing"
+
+#: src/ui/gui/message-dialog.c:120
+msgid "data file warning"
+msgstr "data bestand waarschuwing"
+
+#: src/ui/gui/message-dialog.c:125
+msgid "PSPP warning"
+msgstr "PSPP waarschuwing"
+
+#: src/ui/gui/message-dialog.c:134
+msgid "syntax information"
+msgstr "syntax informatie"
+
+#: src/ui/gui/message-dialog.c:138
+msgid "data file information"
+msgstr "data bestand informatie"
+
+#: src/ui/gui/message-dialog.c:143
+msgid "PSPP information"
+msgstr "PSPP informatie"
+
+#: src/ui/gui/message-dialog.c:222
+msgid "The PSPP processing engine reported the following message:"
+msgid_plural "The PSPP processing engine reported the following messages:"
+msgstr[0] "De PSPP processor rapporteert de volgende melding:"
+msgstr[1] "De PSPP processor rapporteert de volgende meldingen:"
+
+#: src/ui/gui/message-dialog.c:229
 #, c-format
-msgid "unexpected end of file reading temporary file"
-msgstr "onverwacht einde bestand bij het lezen van tijdelijk bestand"
+msgid "The PSPP processing engine reported %d message."
+msgid_plural "The PSPP processing engine reported %d messages."
+msgstr[0] "De PSPP processor rapporteert %d melding."
+msgstr[1] "De PSPP processor rapporteert %d meldingen."
 
-#: src/libpspp/tmpfile.c:136
+#: src/ui/gui/message-dialog.c:236
 #, c-format
-msgid "writing to temporary file"
-msgstr "schrijven naar tijdelijk bestand"
+msgid "%d of these messages are displayed below."
+msgid_plural "%d of these messages are displayed below."
+msgstr[0] "%d van deze meldingen worden hier onder getoond."
+msgstr[1] "%d van deze meldingen worden hier onder getoond."
 
-#: src/math/percentiles.c:35
-msgid "HAverage"
+#: src/ui/gui/missing-val-dialog.c:113 src/ui/gui/missing-val-dialog.c:167
+msgid "Incorrect value for variable type"
+msgstr "Foutieve waarde voor variabele type"
+
+#: src/ui/gui/missing-val-dialog.c:134 src/ui/gui/missing-val-dialog.c:143
+msgid "Incorrect range specification"
+msgstr "Foutieve range specificatie"
+
+#: src/ui/gui/oneway-anova-dialog.c:331
+#, c-format
+msgid "Contrast %d of %d"
 msgstr ""
 
-#: src/math/percentiles.c:36
-msgid "Weighted Average"
-msgstr "Gewogen Gemiddelde"
+#: src/ui/gui/psppire.c:247
+msgid "_Reset"
+msgstr "_Standaard"
 
-#: src/math/percentiles.c:37
-msgid "Rounded"
-msgstr "Afgerond"
+#: src/ui/gui/psppire.c:248
+msgid "_Select"
+msgstr "_Selecteer"
 
-#: src/math/percentiles.c:38
-msgid "Empirical"
-msgstr ""
+#: src/ui/gui/psppire-data-editor.c:951
+msgid "Data View"
+msgstr "Data Weergave"
 
-#: src/math/percentiles.c:39
-msgid "Empirical with averaging"
+#: src/ui/gui/psppire-data-editor.c:954
+msgid "Variable View"
+msgstr "Variabele Weergave"
+
+#: src/ui/gui/psppire-data-store.c:744
+msgid "var"
 msgstr ""
 
-#: src/output/afm.c:149
+#: src/ui/gui/psppire-data-store.c:755 src/ui/gui/psppire-var-store.c:699
+#: src/ui/gui/psppire-var-store.c:709 src/ui/gui/psppire-var-store.c:719
+#: src/ui/gui/psppire-var-store.c:825
 #, c-format
-msgid "opening font metrics file \"%s\""
+msgid "%d"
 msgstr ""
 
-#: src/output/afm.c:239
-msgid "first line must be StartFontMetrics"
-msgstr "eerste regel moet zijn StartFontMetrics"
+#: src/ui/gui/psppire-data-window.c:213
+msgid "Transformations Pending"
+msgstr "Transformaties Uitstaand"
 
-#: src/output/afm.c:266
+#: src/ui/gui/psppire-data-window.c:229
+msgid "Filter off"
+msgstr "Filter uit"
+
+#: src/ui/gui/psppire-data-window.c:243
 #, c-format
-msgid "unsupported MappingScheme %d"
-msgstr "niet ondersteunt MappingSchema %d"
+msgid "Filter by %s"
+msgstr "Filter op %s"
 
-#: src/output/afm.c:287
-msgid "required FontName is missing"
-msgstr "vereiste FontNaam ontbreekt"
+#: src/ui/gui/psppire-data-window.c:264
+msgid "No Split"
+msgstr "Geen Splits"
 
-#: src/output/afm.c:394
-msgid "CharMetrics line must start with C or CH"
-msgstr "CharMetrics regel moet beginnen met C of CH"
+#: src/ui/gui/psppire-data-window.c:273
+msgid "Split by "
+msgstr "Splits op "
 
-#: src/output/afm.c:535
+#: src/ui/gui/psppire-data-window.c:301
+msgid "Weights off"
+msgstr "Weging uit"
+
+#: src/ui/gui/psppire-data-window.c:315
 #, c-format
-msgid "reference to unknown character \"%s\""
-msgstr "referentie naar onbekend karakter \"%s\""
+msgid "Weight by %s"
+msgstr "Weeg op %s"
 
-#: src/output/afm.c:593
-msgid "expected end of file"
-msgstr "einde bestand verwacht"
+#: src/ui/gui/psppire-data-window.c:383 src/ui/gui/data-editor.glade:702
+msgid "Open"
+msgstr ""
 
-#: src/output/afm.c:605
-msgid "syntax error expecting end of line"
-msgstr "syntax fout einde regel verwacht"
+#: src/ui/gui/psppire-data-window.c:391 src/ui/gui/psppire-data-window.c:593
+msgid "System Files (*.sav)"
+msgstr "Systeem Bestand (*.sav)"
 
-#: src/output/afm.c:623 src/output/afm.c:660
-msgid "number out of valid range"
-msgstr "nummer buiten geldige range"
+#: src/ui/gui/psppire-data-window.c:397 src/ui/gui/psppire-data-window.c:599
+msgid "Portable Files (*.por) "
+msgstr "Overdraagbaar (Portable) Bestand (*.por)"
 
-#: src/output/afm.c:625 src/output/afm.c:662
-msgid "invalid numeric syntax"
-msgstr "ongeldige numerieke syntax"
+#: src/ui/gui/psppire-data-window.c:403 src/ui/gui/psppire-data-window.c:605
+#: src/ui/gui/psppire-syntax-window.c:298
+#: src/ui/gui/psppire-syntax-window.c:385
+msgid "All Files"
+msgstr "Alle bestanden"
 
-#: src/output/afm.c:641
-msgid "syntax error expecting integer"
-msgstr "syntax fout integer verwacht"
+#: src/ui/gui/psppire-data-window.c:585 src/ui/gui/data-editor.glade:712
+msgid "Save"
+msgstr "Opslaan"
 
-#: src/output/afm.c:679
-msgid "syntax error expecting number"
-msgstr "syntax fout nummer verwacht"
+#: src/ui/gui/psppire-data-window.c:613
+msgid "System File"
+msgstr "Systeem Bestand"
 
-#: src/output/afm.c:692
-msgid "syntax error in hex constant"
-msgstr "syntax fout in hex constante"
+#: src/ui/gui/psppire-data-window.c:618
+msgid "Portable File"
+msgstr "Overdraagbaar (Portable) Bestand"
 
-#: src/output/afm.c:707
-msgid "syntax error expecting hex constant"
-msgstr "syntax fout hex constante verwacht"
+#: src/ui/gui/psppire-data-window.c:768
+msgid "Font Selection"
+msgstr "Font Selectie"
 
-#: src/output/afm.c:745
-msgid "unexpected end of line"
-msgstr "onverwacht regel einde"
+#: src/ui/gui/psppire-data-window.c:836
+msgid "Sort Ascending"
+msgstr "Sorteer oplopend"
 
-#: src/output/afm.c:795
-msgid "unexpected end of line expecting string"
-msgstr "onverwacht regeleinde string verwacht"
+#: src/ui/gui/psppire-data-window.c:842
+msgid "Sort Descending"
+msgstr "Sorteer aflopend"
 
-#: src/output/ascii.c:251
-#, c-format
-msgid ""
-"ascii: page excluding margins and headers must be at least 59 characters "
-"wide by 15 lines long, but as configured is only %d characters by %d lines"
-msgstr ""
-"ascii: pagina exclusief marges en koppen moet tenminste 59 karakters breed "
-"en 15 regels lang zijn, maar geconfigureerd is slechts %d karakters bij %d "
-"regels"
+#: src/ui/gui/psppire-data-window.c:847 src/ui/gui/psppire-data-window.c:937
+#: src/ui/gui/data-editor.glade:174 src/ui/gui/data-editor.glade:843
+msgid "Insert Variable"
+msgstr "Invoegen Variabele"
 
-#: src/output/ascii.c:329
-#, c-format
-msgid ""
-"ascii: bad index value for `box' key: syntax is box[INDEX], 0 <= INDEX < %d "
-"decimal, with INDEX expressed in base 4"
-msgstr ""
+#: src/ui/gui/psppire-data-window.c:850 src/ui/gui/psppire-data-window.c:904
+#: src/ui/gui/psppire-data-window.c:940 src/ui/gui/psppire-data-window.c:1307
+#: src/ui/gui/psppire-data-window.c:1325
+msgid "Clear"
+msgstr "Ruimop"
 
-#: src/output/ascii.c:336
-#, c-format
-msgid "ascii: multiple values for %s"
-msgstr "ascii: meerdere waardes voor %s"
+#: src/ui/gui/psppire-data-window.c:901 src/ui/gui/data-editor.glade:831
+msgid "Insert Case"
+msgstr "Invoegen Case"
 
-#: src/output/ascii.c:344
-#, c-format
-msgid "ascii: unknown parameter `%s'"
-msgstr "ascii: onbekende parameter `%s'"
+#: src/ui/gui/psppire-data-window.c:1185
+msgid "Open a data file"
+msgstr "Open een data bestand"
 
-#: src/output/ascii.c:360
-#, c-format
-msgid "ascii: only screen devices may have `auto' length or width"
-msgstr "ascii: alleen scherm apparaten mogen 'auto' lengte of breedte hebben"
+#: src/ui/gui/psppire-data-window.c:1203
+msgid "New data file"
+msgstr "Nieuw data bestand"
 
-#: src/output/ascii.c:374
-#, c-format
-msgid "ascii: positive integer required as `%s' value"
-msgstr "ascii: positieve integer vereist als `%s' waarde"
+#: src/ui/gui/psppire-data-window.c:1218
+msgid "Import text data file"
+msgstr "Importeer text data bestand"
 
-#: src/output/ascii.c:402
-#, c-format
-msgid "ascii: `emphasis' value must be `bold', `underline', or `none'"
-msgstr "ascii: `emphasis' waarde moet `bold', `underline', of `none' zijn"
+#: src/ui/gui/psppire-data-window.c:1234 src/ui/gui/psppire-data-window.c:1250
+msgid "Save data to file"
+msgstr "Data opslaan als bestand"
 
-#: src/output/ascii.c:415
-#, c-format
-msgid "ascii: zero or positive integer required as `%s' value"
-msgstr "ascii: nul of positieve integer vereist als `%s' waarde"
+#: src/ui/gui/psppire-data-window.c:1288
+msgid "Show/hide value labels"
+msgstr "Show/verberg waarde labels"
 
-#: src/output/ascii.c:446
-#, c-format
-msgid "ascii: boolean value expected for `%s'"
-msgstr "ascii: boolean waarde verwacht voor `%s'"
+#: src/ui/gui/psppire-data-window.c:1308
+msgid "Delete the cases at the selected position(s)"
+msgstr "Verwijder de cases op de geselecteerde positie(s)"
 
-#: src/output/ascii.c:478 src/output/html.c:187
-#, c-format
-msgid "`chart-files' value must contain `#'"
-msgstr "`chart-files' waarde moet `#' bevatten"
+#: src/ui/gui/psppire-data-window.c:1326
+msgid "Delete the variables at the selected position(s)"
+msgstr "Verwijder de variabele op de geselecteerde positie(s)"
 
-#: src/output/ascii.c:524
-#, c-format
-msgid "ascii: opening output file \"%s\""
-msgstr "ascii: openen uitvoer bestand \"%s\""
+#: src/ui/gui/psppire-data-window.c:1344
+msgid "Create a new variable at the current position"
+msgstr "Creëer een nieuwe variabele op de huidige positie"
 
-#: src/output/ascii.c:587
-#, c-format
-msgid "ascii: bad line (%d,%d)-(%d,%d) out of (%d,%d)\n"
-msgstr ""
+#: src/ui/gui/psppire-data-window.c:1359
+msgid "Create a new case at the current position"
+msgstr "Creëer een nieuwe case op de huidige positie"
 
-#: src/output/ascii.c:809 src/output/postscript.c:826
-#, c-format
-msgid "%s - Page %d"
-msgstr "%s - Pagina %d"
+#: src/ui/gui/psppire-data-window.c:1375
+msgid "Jump to a Case in the Data Sheet"
+msgstr "Spring naar een Case in het Data Blad"
 
-#: src/output/ascii.c:861
-#, c-format
-msgid "ascii: closing output file \"%s\""
-msgstr "ascii: sluiten uitvoer bestand \"%s\""
+#: src/ui/gui/psppire-data-window.c:1391
+msgid "Weight cases by variable"
+msgstr "Weeg cases per variabele"
 
-#: src/output/chart.c:154
-#, c-format
-msgid "creating \"%s\""
-msgstr "aanmaken \"%s\""
+#: src/ui/gui/psppire-data-window.c:1405
+msgid "Transpose the cases with the variables"
+msgstr "Herschik de cases met de variabelen"
+
+#: src/ui/gui/psppire-data-window.c:1419
+msgid "Split the active file"
+msgstr "Splits het actieve bestand"
+
+#: src/ui/gui/psppire-data-window.c:1434
+msgid "Sort cases in the active file"
+msgstr "Sorteer cases in het actieve bestand"
+
+#: src/ui/gui/psppire-data-window.c:1448
+msgid "Select cases from the active file"
+msgstr "Selecteer cases van het actieve bestand"
+
+#: src/ui/gui/psppire-data-window.c:1462
+msgid "Compute new values for a variable"
+msgstr "Bereken nieuwe waardes voor een variabele"
+
+#: src/ui/gui/psppire-data-window.c:1476
+msgid "Perform one way analysis of variance"
+msgstr ""
+
+#: src/ui/gui/psppire-data-window.c:1491
+msgid "Calculate T Test for samples from independent groups"
+msgstr ""
+
+#: src/ui/gui/psppire-data-window.c:1505
+msgid "Calculate T Test for paired samples"
+msgstr ""
 
-#: src/output/charts/plot-hist.c:138
-msgid "HISTOGRAM"
+#: src/ui/gui/psppire-data-window.c:1519
+msgid "Calculate T Test for sample from a single distribution"
 msgstr ""
 
-#: src/output/html.c:71
-#, c-format
-msgid "opening HTML output file: %s"
-msgstr "openen HTML uitvoer bestand: %s"
+#: src/ui/gui/psppire-data-window.c:1534
+msgid "Commentary text for the data file"
+msgstr "Commentaar tekst voor het data bestand"
 
-#: src/output/html.c:82
-msgid "PSPP Output"
-msgstr "PSPP Uitvoer"
+#: src/ui/gui/psppire-data-window.c:1560
+msgid "Rank Cases"
+msgstr "Rangschik Cases"
 
-#: src/output/html.c:170
-#, c-format
-msgid "unknown configuration parameter `%s' for HTML device driver"
-msgstr "onbekende configuratie parameter '%s' voor HTML device driver"
+#: src/ui/gui/psppire-data-window.c:1574
+msgid "Recode values into the same variables"
+msgstr "Hercodeer waardes in dezelfde Variabelen"
 
-#: src/output/journal.c:69
-#, c-format
-msgid "error writing \"%s\""
-msgstr "fout bij schrijven \"%s\""
+#: src/ui/gui/psppire-data-window.c:1588
+msgid "Recode values into different variables"
+msgstr "Hercodeer waardes in andere Variabelen"
 
-#: src/output/journal.c:94
-#, c-format
-msgid "error creating \"%s\""
-msgstr "fout bij aanmaken \"%s\""
+#: src/ui/gui/psppire-data-window.c:1602
+msgid "Jump to variable"
+msgstr "Spring naar Variabele"
 
-#: src/output/output.c:168
-#, c-format
-msgid "unknown output driver `%s'"
-msgstr "onbekende uitvoer driver %s"
+#: src/ui/gui/psppire-data-window.c:1615
+msgid "Calculate descriptive statistics (mean, variance, ...)"
+msgstr "Bereken descriptive statistieken (mean, variance, ...)"
 
-#: src/output/output.c:170
-#, c-format
-msgid "output driver `%s' referenced but never defined"
-msgstr "uitvoer driver '%s' gerefereerd maar nooit gedefinieerd"
+#: src/ui/gui/psppire-data-window.c:1629
+msgid "Generate frequency statistics"
+msgstr "Genereer frequentie statistieken"
 
-#: src/output/output.c:261
-#, c-format
-msgid "using default output driver configuration"
-msgstr "gebruik default uitvoer driver configuratie"
+#: src/ui/gui/psppire-data-window.c:1643
+msgid "Generate crosstabulations"
+msgstr ""
 
-#: src/output/output.c:290
-#, c-format
-msgid "cannot find output initialization file (use `-vv' to view search path)"
+#: src/ui/gui/psppire-data-window.c:1658
+msgid "Examine Data by Factors"
 msgstr ""
-"kan uitvoer initialisatie bestand niet vinden (gebruik -vv om zoekpad te "
-"zien)"
 
-#: src/output/output.c:298
-#, c-format
-msgid "cannot open \"%s\""
-msgstr "kan \"%s\" niet openen"
+#: src/ui/gui/psppire-data-window.c:1672
+msgid "Estimate parameters of the linear model"
+msgstr ""
 
-#: src/output/output.c:310
-#, c-format
-msgid "reading \"%s\""
-msgstr "lezen \"%s\""
+#: src/ui/gui/psppire-data-window.c:1686 src/ui/gui/reliability.glade:7
+msgid "Reliability Analysis"
+msgstr ""
 
-#: src/output/output.c:332 src/ui/gui/message-dialog.c:99
-#, c-format
-msgid "syntax error"
-msgstr "syntax fout"
+#: src/ui/gui/psppire-data-window.c:1849
+msgid "Split the window vertically and horizontally"
+msgstr "Splits het venster verticaal en horizontaal"
 
-#: src/output/output.c:341
-#, c-format
-msgid "error closing \"%s\""
-msgstr "fout bij sluiten \"%s\""
+#: src/ui/gui/psppire-data-window.c:1891
+msgid "Data Editor"
+msgstr ""
 
-#: src/output/output.c:349
-#, c-format
-msgid "no active output drivers"
-msgstr "geen actieve uitvoer drivers"
+#: src/ui/gui/psppire-output-window.c:269
+msgid "Output Viewer"
+msgstr "Uitvoer Viewer"
 
-#: src/output/output.c:352
+#: src/ui/gui/psppire-syntax-window.c:265
 #, c-format
-msgid "error reading device definition file"
-msgstr "fout tijdens lezen device definitie bestand"
+msgid "Saved file \"%s\""
+msgstr "Opgeslagen bestand \"%s\""
 
-#: src/output/output.c:470
-#, c-format
-msgid ""
-"Driver classes:\n"
-"\t"
-msgstr ""
+#: src/ui/gui/psppire-syntax-window.c:284
+msgid "Save Syntax"
+msgstr "Sla Syntax op"
 
-#: src/output/output.c:502
-#, c-format
-msgid "syntax error parsing options for \"%s\" driver"
-msgstr "syntax fout bij het ontleden van opties voor \"%s\" driver"
+#: src/ui/gui/psppire-syntax-window.c:292
+#: src/ui/gui/psppire-syntax-window.c:379
+msgid "Syntax Files (*.sps) "
+msgstr "Syntax Bestand (*.sps)"
 
-#: src/output/output.c:518
-#, c-format
-msgid ""
-"reached end of options inside quoted string parsing options for \"%s\" driver"
+#: src/ui/gui/psppire-syntax-window.c:371
+msgid "Open Syntax"
 msgstr ""
-"einde opties bereikt binnen geciteerde string tijdens ontleden van opties "
-"voor \"%s\" driver"
 
-#: src/output/output.c:588
-#, c-format
-msgid "syntax error in string constant parsing options for \"%s\" driver"
+#: src/ui/gui/psppire-syntax-window.c:551
+msgid "Syntax Editor"
 msgstr ""
-"syntax fout in string constante tijdens ontleden opties voor \"%s\" driver"
-
-#: src/output/output.c:636
-#, c-format
-msgid "syntax error expecting `=' parsing options for driver \"%s\""
-msgstr "syntax fout verwacht `=' tijdens ontleden opties voor driver \"%s\""
 
-#: src/output/output.c:687
+#: src/ui/gui/psppire-syntax-window.c:565
 #, c-format
-msgid "unknown output driver class `%.*s'"
-msgstr "onbekende uitvoer driver class `%.*s'"
+msgid "Cannot load syntax file '%s'"
+msgstr "Kan syntax bestand \"%s\" niet laden"
 
-#: src/output/output.c:702
-#, c-format
-msgid "unknown device type `%.*s'"
-msgstr "onbekend apparaat type `%.*s'"
+#: src/ui/gui/psppire-var-sheet.c:533 src/ui/gui/psppire-var-store.c:832
+msgid "Name"
+msgstr "Naam"
 
-#: src/output/output.c:719
-#, c-format
-msgid "cannot initialize output driver `%s' of class `%s'"
+#: src/ui/gui/psppire-var-sheet.c:534 src/ui/gui/psppire-var-store.c:833
+#: src/ui/gui/psppire.glade:2099
+msgid "Type"
 msgstr ""
 
-#: src/output/output.c:765
-#, c-format
-msgid "driver definition line missing driver name or class name"
-msgstr "driver definitie regel mist driver naam of class naam"
+#: src/ui/gui/psppire-var-sheet.c:535 src/ui/gui/psppire-var-store.c:834
+#: src/ui/gui/psppire.glade:2020
+msgid "Width"
+msgstr "Breedte"
 
-#: src/output/output.c:868
-#, c-format
-msgid "`%s' is not a valid length."
-msgstr "`%s' is geen geldige lengte."
+#: src/ui/gui/psppire-var-sheet.c:536 src/ui/gui/psppire-var-store.c:835
+msgid "Decimals"
+msgstr "Decimalen"
 
-#: src/output/output.c:960
-#, c-format
-msgid "unknown paper type `%.*s'"
-msgstr "onbekend papier type `%.*s'"
+#: src/ui/gui/psppire-var-sheet.c:538 src/ui/gui/psppire-var-store.c:837
+msgid "Values"
+msgstr "Waardes"
 
-#: src/output/output.c:978
-#, c-format
-msgid "error opening \"%s\""
-msgstr "fout tijdens openen \"%s\""
+#: src/ui/gui/psppire-var-sheet.c:539 src/ui/gui/psppire-var-store.c:838
+msgid "Missing"
+msgstr "Ontbrekend"
 
-#: src/output/output.c:989
-#, c-format
-msgid "error reading \"%s\""
-msgstr "fout tijdens lezen \"%s\""
+#: src/ui/gui/psppire-var-sheet.c:541 src/ui/gui/psppire-var-store.c:840
+msgid "Align"
+msgstr "Uitlijnen"
 
-#: src/output/output.c:1006
-#, c-format
-msgid "paper size file \"%s\" does not state a paper size"
-msgstr "papier grootte bestand \"%s\" geeft geen papier grootte aan"
+#: src/ui/gui/psppire-var-sheet.c:542 src/ui/gui/psppire-var-store.c:841
+msgid "Measure"
+msgstr "Meting"
 
-#: src/output/output.c:1066
+#: src/ui/gui/psppire-var-store.c:622 src/ui/gui/var-sheet-dialogs.glade:43
+msgid "Comma"
+msgstr "Komma"
+
+#: src/ui/gui/psppire-var-store.c:623 src/ui/gui/var-sheet-dialogs.glade:59
+msgid "Dot"
+msgstr "Punt"
+
+#: src/ui/gui/psppire-var-store.c:624
+msgid "Scientific"
+msgstr "Wetenschappelijk"
+
+#: src/ui/gui/psppire-var-store.c:625 src/ui/gui/var-sheet-dialogs.glade:91
+msgid "Date"
+msgstr "Datum"
+
+#: src/ui/gui/psppire-var-store.c:626 src/ui/gui/var-sheet-dialogs.glade:107
+msgid "Dollar"
+msgstr "Euro"
+
+#: src/ui/gui/psppire-var-store.c:627
+msgid "Custom"
+msgstr "Aangepast"
+
+#: src/ui/gui/psppire-window.c:97
 #, c-format
-msgid "syntax error in paper size `%s'"
-msgstr "syntax fout in papier grootte '%s' "
+msgid "%s %s PSPPIRE %s"
+msgstr ""
 
-#: src/output/postscript.c:158
+#: src/ui/gui/psppire-window.c:480
 #, c-format
-msgid "opening PostScript output file \"%s\""
-msgstr "Openen PostScript uitvoer bestand \"%s\""
+msgid "Save the changes to \"%s\" before closing?"
+msgstr "De veranderingen van \"%s\" opslaan voor afsluiten?"
 
-#: src/output/postscript.c:196
+#: src/ui/gui/psppire-window.c:487
 #, c-format
 msgid ""
-"The defined PostScript page is not long enough to hold margins and headers, "
-"plus least 15 lines of the default fonts.  In fact, there's only room for %d "
-"lines of each font at the default size of %d.%03d points."
+"If you don't save, changes from the last %ld seconds will be permanently "
+"lost."
 msgstr ""
-"De gedefinieerde PostScript pagina is niet lang genoeg om marges en koppen, "
-"plus tenminste 15 regels van het default font te bevatten.  In feite is er "
-"slechts plaats voor %d regels van elk font bij de default grootte van %d.%"
-"03d punten."
+"Als je niet opslaat gaan de aanpassingen van de laatste %ld seconden "
+"definitief verloren."
 
-#: src/output/postscript.c:246
-#, c-format
-msgid "closing PostScript output file \"%s\""
-msgstr "sluiten PostScript uitvoer bestand \"%s\""
+#: src/ui/gui/psppire-window.c:491
+msgid "Close _without saving"
+msgstr "Sluit _zonder opslaan"
+
+#: src/ui/gui/recode-dialog.c:881
+msgid "Recode into Different Variables"
+msgstr "Hercodeer in Andere Variabelen"
+
+#: src/ui/gui/recode-dialog.c:884
+msgid "Recode into Same Variables"
+msgstr "Hercodeer in Zelfde Variabelen"
+
+#: src/ui/gui/recode-dialog.c:912 src/ui/gui/recode-dialog.c:1014
+msgid "Old"
+msgstr "Oud"
+
+#: src/ui/gui/recode-dialog.c:927 src/ui/gui/recode-dialog.c:1022
+msgid "New"
+msgstr "Nieuw"
+
+#: src/ui/gui/recode-dialog.c:1270
+msgid "Recode into Different Variables: Old and New Values "
+msgstr "Hercodeer in Andere Variabelen: Oude en Nieuwe Waardes "
 
-#: src/output/postscript.c:309
-#, c-format
-msgid "unknown configuration parameter `%s' for PostScript device driver"
-msgstr "onbekende configuratie parameter `%s' voor PostScript device driver"
+#: src/ui/gui/recode-dialog.c:1271
+msgid "Recode into Same Variables: Old and New Values"
+msgstr "Hercodeer in Zelfde Variabelen: Oude en Nieuwe Waardes "
 
-#: src/output/postscript.c:325
-#, c-format
-msgid ""
-"unknown orientation `%s' (valid orientations are `portrait' and `landscape')"
+#: src/ui/gui/regression-dialog.c:41
+msgid "Coeff"
 msgstr ""
-"onbekende oriëntatie '%s' (geldige oriëntaties zijn 'portrait'en 'landscape')"
-
-#: src/output/postscript.c:337
-#, c-format
-msgid "boolean value expected for %s"
-msgstr "boolean waarde verwacht voor %s"
 
-#: src/output/postscript.c:350
-#, c-format
-msgid "positive integer value required for `%s'"
-msgstr "positieve integer waarde vereist voor '%s'"
+#: src/ui/gui/regression-dialog.c:42
+msgid "R"
+msgstr ""
 
-#: src/output/postscript.c:355
-#, c-format
-msgid "default font size must be at least 1 point (value of 1000 for key `%s')"
+#: src/ui/gui/regression-dialog.c:43
+msgid "Anova"
 msgstr ""
-"default font grootte moet tenminste 1 punt zijn (waarde 1000 voor sleutel '%"
-"s')"
 
-#: src/output/postscript.c:1176
-#, c-format
-msgid "\"%s\": bad font specification"
-msgstr "\"%s\": slechte font specificatie"
+#: src/ui/gui/regression-dialog.c:44
+msgid "Bcov"
+msgstr ""
 
-#: src/output/postscript.c:1184
+#: src/ui/gui/select-cases-dialog.c:82
 #, c-format
-msgid "could not find AFM file \"%s\""
-msgstr "kon AFM bestand \"%s\" niet vinden"
+msgid "Approximately %3d%% of all cases."
+msgstr "Ongeveer %3d%% van alle cases."
 
-#: src/output/postscript.c:1198
+#: src/ui/gui/select-cases-dialog.c:83
 #, c-format
-msgid "could not find font \"%s\""
-msgstr "kon font \"%s\" niet vinden"
+msgid "Exactly %3d cases from the first %3d cases."
+msgstr "Precies %3d cases van de eerste %3d cases."
 
-#: src/output/postscript.c:1207
+#: src/ui/gui/select-cases-dialog.c:223
 #, c-format
-msgid "could not find encoding \"%s\""
-msgstr "kon codering \"%s\" niet vinden"
+msgid "%d thru %d"
+msgstr "%d tot %d"
 
-#: src/output/postscript.c:1307
+#: src/ui/gui/text-data-import-dialog.c:461
 #, c-format
-msgid "cannot open font file \"%s\""
-msgstr "kan font bestand \"%s\" niet openen"
+msgid "Could not open \"%s\": %s"
+msgstr "Kon \"%s\": %s niet openen"
 
-#: src/output/postscript.c:1348
+#: src/ui/gui/text-data-import-dialog.c:477
 #, c-format
-msgid "reading font file \"%s\""
-msgstr "lezen font bestand \"%s\""
+msgid "Error reading \"%s\": %s"
+msgstr "Fout bij lezen \"%s\": %s"
 
-#: src/output/postscript.c:1370
+#: src/ui/gui/text-data-import-dialog.c:480
 #, c-format
-msgid "cannot open font encoding file \"%s\""
-msgstr "kan font codering bestand \"%s\" niet openen"
+msgid ""
+"Failed to read \"%s\", because it contains a line over %d bytes long and "
+"therefore appears not to be a text file."
+msgstr ""
+"Lezen van \"%s\" mislukt omdat het een regel bevat die meer dan %d bytes "
+"lang is en daarom is het geen tekst bestand."
 
-#: src/output/postscript.c:1399
+#: src/ui/gui/text-data-import-dialog.c:494
 #, c-format
-msgid "invalid numeric format"
-msgstr "ongeldig numeriek formaat"
+msgid "\"%s\" is empty."
+msgstr "\"%s\" is leeg."
 
-#: src/output/postscript.c:1421
-#, c-format
-msgid "closing Postscript encoding \"%s\""
-msgstr "sluiten Postscript codering \"%s\""
+#: src/ui/gui/text-data-import-dialog.c:539
+msgid "Import Delimited Text Data"
+msgstr "Importeer Delimited Text Data"
 
-#: src/output/table.c:237
-#, c-format
-msgid "bad vline: x=%d+%d=%d y=(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n"
-msgstr ""
+#: src/ui/gui/text-data-import-dialog.c:590
+msgid "Importing Delimited Text Data"
+msgstr "Importeren Delimited Text Data"
 
-#: src/output/table.c:308
-#, c-format
+#: src/ui/gui/text-data-import-dialog.c:749
 msgid ""
-"bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n"
+"This assistant will guide you through the process of importing data into "
+"PSPP from a text file with one line per case,  in which fields are separated "
+"by tabs, commas, or other delimiters.\n"
+"\n"
 msgstr ""
+"De assistent zal je begeleiden door het proces van het importeren van data "
+"in PSPP van een tekst bestand met 1 regel per case, waarin velden zijn "
+"gescheiden door tabs, kommas of andere scheidingstekens.\n"
 
-#: src/ui/gui/about.c:64
-msgid "A program for the analysis of sampled data"
-msgstr ""
+#: src/ui/gui/text-data-import-dialog.c:755
+#, c-format
+msgid "The selected file contains %zu line of text.  "
+msgid_plural "The selected file contains %zu lines of text.  "
+msgstr[0] "Het geselecteerde bestand bevat %zu regel text.  "
+msgstr[1] "Het geselecteerde bestand bevat %zu regels text. "
 
-#. TRANSLATORS: Use this string to list the people who have helped with
-#. translation to your language.
-#: src/ui/gui/about.c:74
-msgid "translator-credits"
-msgstr ""
+#: src/ui/gui/text-data-import-dialog.c:763
+#, c-format
+msgid "The selected file contains approximately %lu line of text.  "
+msgid_plural "The selected file contains approximately %lu lines of text.  "
+msgstr[0] "Het geselecteerde bestand bevat ongeveer %lu regel text. "
+msgstr[1] "Het geselecteerde bestand bevat ongeveer %lu regels text. "
 
-#: src/ui/gui/comments-dialog.c:58
+#: src/ui/gui/text-data-import-dialog.c:769
 #, c-format
-msgid "Column Number: %d"
-msgstr "Kolom Nummer: %d"
+msgid ""
+"Only the first %zu line of the file will be shown for preview purposes in "
+"the following screens.  "
+msgid_plural ""
+"Only the first %zu lines of the file will be shown for preview purposes in "
+"the following screens.  "
+msgstr[0] ""
+"Alleen de eerste %zu regel van het bestand worden getoond voor preview "
+"doeleinden in de volgende schermen."
+msgstr[1] ""
+"Alleen de eerste %zu regels van het bestand worden getoond voor preview "
+"doeleinden in de volgende schermen."
 
-#: src/ui/gui/crosstabs-dialog.c:40
-msgid "Chisq"
+#: src/ui/gui/text-data-import-dialog.c:776
+msgid "You may choose below how much of the file should actually be imported."
 msgstr ""
+"Hieronder kunt u kiezen hoeveel van het bestand daadwerkelijk geïmporteerd "
+"moet worden."
 
-#: src/ui/gui/crosstabs-dialog.c:42
-msgid "CC"
+#: src/ui/gui/text-data-import-dialog.c:1523
+#: src/ui/gui/text-data-import-dialog.c:1768
+msgid "This input line has too few separators to fill in this field."
 msgstr ""
+"Deze invoer regel heeft te weinig scheidingstekens om dit veld te vullen."
 
-#: src/ui/gui/crosstabs-dialog.c:44
-msgid "UC"
-msgstr ""
+#: src/ui/gui/text-data-import-dialog.c:1759
+#, c-format
+msgid "Field content \"%.*s\" cannot be parsed in format %s."
+msgstr "Veld inhoud \"%.*s\" kan niet ontleed worden in formaat %s."
 
-#: src/ui/gui/crosstabs-dialog.c:45
-msgid "BTau"
+#: src/ui/gui/t-test-options.c:60
+#, c-format
+msgid "Confidence Interval: %2d %%"
 msgstr ""
 
-#: src/ui/gui/crosstabs-dialog.c:46
-msgid "CTau"
+#: src/ui/gui/t-test-paired-samples.c:226
+msgid "Var 1"
 msgstr ""
 
-#: src/ui/gui/crosstabs-dialog.c:47
-msgid "Risk"
+#: src/ui/gui/t-test-paired-samples.c:227
+msgid "Var 2"
 msgstr ""
 
-#: src/ui/gui/crosstabs-dialog.c:49
-msgid "D"
+#: src/ui/gui/variable-info-dialog.c:76
+#, c-format
+msgid "Label: %s\n"
 msgstr ""
 
-#: src/ui/gui/crosstabs-dialog.c:52
-msgid "Corr"
+#: src/ui/gui/variable-info-dialog.c:83
+#, c-format
+msgid "Type: %s\n"
 msgstr ""
 
-#: src/ui/gui/crosstabs-dialog.c:53 src/ui/gui/crosstabs-dialog.c:64
-#: src/ui/gui/crosstabs-dialog.c:99 src/ui/gui/crosstabs-dialog.c:107
-#: src/ui/gui/psppire-var-store.c:612 src/ui/gui/var-display.c:16
-#: src/ui/gui/variable-info-dialog.c:40
-msgid "None"
-msgstr "Geen"
-
-#: src/ui/gui/crosstabs-dialog.c:56
-msgid "Count"
-msgstr "Aantal"
-
-#: src/ui/gui/crosstabs-dialog.c:57
-msgid "Row"
-msgstr "Rij"
+#: src/ui/gui/variable-info-dialog.c:87
+#, c-format
+msgid "Missing Values: %s\n"
+msgstr "Ontbrekende Waardes: %s\n"
 
-#: src/ui/gui/crosstabs-dialog.c:58
-msgid "Column"
-msgstr "Kolom"
+#: src/ui/gui/variable-info-dialog.c:92
+#, c-format
+msgid "Measurement Level: %s\n"
+msgstr "Meetniveau: %s\n"
 
-#: src/ui/gui/crosstabs-dialog.c:60
-msgid "Expected"
-msgstr "Verwacht"
+#: src/ui/gui/variable-info-dialog.c:107
+msgid "Value Labels:\n"
+msgstr "Waarde Labels:\n"
 
-#: src/ui/gui/crosstabs-dialog.c:62
-msgid "Std. Residual"
+#: src/ui/gui/variable-info-dialog.c:117
+#, c-format
+msgid "%s %s\n"
 msgstr ""
 
-#: src/ui/gui/crosstabs-dialog.c:63
-msgid "Adjusted Std. Residual"
-msgstr ""
+#: src/ui/gui/weight-cases-dialog.c:79 src/ui/gui/psppire.glade:47
+#: src/ui/gui/psppire.glade:130
+msgid "Do not weight cases"
+msgstr "Weeg cases niet"
+
+#: src/ui/gui/weight-cases-dialog.c:85
+#, c-format
+msgid "Weight cases by %s"
+msgstr "Weeg cases by %s"
 
 #: src/ui/gui/crosstabs.glade:50
 msgid "Rows"
@@ -5170,9 +4905,25 @@ msgstr ""
 msgid "Statistics"
 msgstr "Statistieken"
 
-#: src/ui/gui/customentry.c:334
-msgid "Style of bevel around the custom entry button"
-msgstr ""
+#: src/ui/gui/descriptives-dialog.glade:122 src/ui/gui/frequencies.glade:139
+msgid "Statistics:"
+msgstr "Statistieken:"
+
+#: src/ui/gui/descriptives-dialog.glade:184
+msgid "Exclude entire case if any selected variable is missing"
+msgstr "Sluit gehele case uit indien een geselecteerde variabele ontbreekt"
+
+#: src/ui/gui/descriptives-dialog.glade:194
+msgid "Include user-missing data in analysis"
+msgstr "Inclusief user-missing data in analyse"
+
+#: src/ui/gui/descriptives-dialog.glade:207
+msgid "Save Z-scores of selected variables as new variables"
+msgstr "Sla Z_Scores van geselecteerde variabelen op als nieuwe variabelen"
+
+#: src/ui/gui/descriptives-dialog.glade:223
+msgid "Options:"
+msgstr "Opties:"
 
 #: src/ui/gui/data-editor.glade:10 src/ui/gui/output-viewer.glade:22
 #: src/ui/gui/syntax-editor.glade:14
@@ -5219,11 +4970,6 @@ msgstr "Recent Gebruikte _Bestanden"
 msgid "_Edit"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:174 src/ui/gui/data-editor.glade:843
-#: src/ui/gui/psppire-data-window.c:847 src/ui/gui/psppire-data-window.c:937
-msgid "Insert Variable"
-msgstr "Invoegen Variabele"
-
 #: src/ui/gui/data-editor.glade:182
 msgid "Insert Cases"
 msgstr "Invoegen Cases"
@@ -5413,14 +5159,6 @@ msgstr "_Handboek"
 msgid "_About"
 msgstr "_Over"
 
-#: src/ui/gui/data-editor.glade:702 src/ui/gui/psppire-data-window.c:383
-msgid "Open"
-msgstr ""
-
-#: src/ui/gui/data-editor.glade:712 src/ui/gui/psppire-data-window.c:585
-msgid "Save"
-msgstr "Opslaan"
-
 #: src/ui/gui/data-editor.glade:722
 msgid "Print"
 msgstr "Afdrukken"
@@ -5445,10 +5183,6 @@ msgstr "Variabelen"
 msgid "Find"
 msgstr "Vind"
 
-#: src/ui/gui/data-editor.glade:831 src/ui/gui/psppire-data-window.c:901
-msgid "Insert Case"
-msgstr "Invoegen Case"
-
 #: src/ui/gui/data-editor.glade:863
 msgid "Split File"
 msgstr "Splits Bestand"
@@ -5494,34 +5228,6 @@ msgstr "Weging Status Gebied"
 msgid "Split File Status Area"
 msgstr "Splits Bestand Status Gebied"
 
-#: src/ui/gui/descriptives-dialog.c:40 src/ui/gui/frequencies-dialog.c:41
-msgid "Standard deviation"
-msgstr "Standaard deviatie"
-
-#: src/ui/gui/descriptives-dialog.c:45
-msgid "Standard error"
-msgstr "Standaard fout"
-
-#: src/ui/gui/descriptives-dialog.glade:122 src/ui/gui/frequencies.glade:139
-msgid "Statistics:"
-msgstr "Statistieken:"
-
-#: src/ui/gui/descriptives-dialog.glade:184
-msgid "Exclude entire case if any selected variable is missing"
-msgstr "Sluit gehele case uit indien een geselecteerde variabele ontbreekt"
-
-#: src/ui/gui/descriptives-dialog.glade:194
-msgid "Include user-missing data in analysis"
-msgstr "Inclusief user-missing data in analyse"
-
-#: src/ui/gui/descriptives-dialog.glade:207
-msgid "Save Z-scores of selected variables as new variables"
-msgstr "Sla Z_Scores van geselecteerde variabelen op als nieuwe variabelen"
-
-#: src/ui/gui/descriptives-dialog.glade:223
-msgid "Options:"
-msgstr "Opties:"
-
 #: src/ui/gui/examine.glade:49
 msgid "Label Cases by:"
 msgstr ""
@@ -5539,6 +5245,10 @@ msgstr ""
 msgid "Options..."
 msgstr "Opties..."
 
+#: src/ui/gui/examine.glade:310
+msgid "Descriptives"
+msgstr ""
+
 #: src/ui/gui/examine.glade:320
 msgid "Extremes"
 msgstr ""
@@ -5560,11 +5270,6 @@ msgstr "Herhaal waardes"
 msgid "Missing Values"
 msgstr "Ontbrekende Waardes"
 
-#: src/ui/gui/find-dialog.c:652
-#, c-format
-msgid "Bad regular expression: %s"
-msgstr "Foutieve regulaire expressie: %s"
-
 #: src/ui/gui/find.glade:80
 msgid "Variable:"
 msgstr "Variabele:"
@@ -5594,18 +5299,6 @@ msgstr "Tekstterugloop"
 msgid "Search backward"
 msgstr "Zoek achterwaarts"
 
-#: src/ui/gui/frequencies-dialog.c:44
-msgid "Standard error of the mean"
-msgstr ""
-
-#: src/ui/gui/frequencies-dialog.c:47
-msgid "Standard error of the skewness"
-msgstr ""
-
-#: src/ui/gui/frequencies-dialog.c:51
-msgid "Standard error of the kurtosis"
-msgstr ""
-
 #: src/ui/gui/frequencies.glade:98 src/ui/gui/psppire.glade:252
 #: src/ui/gui/rank.glade:103
 msgid "Variable(s):"
@@ -5643,111 +5336,186 @@ msgstr "Onderdruk tabellen met meer dan N categorieën"
 msgid "Maximum no of categories"
 msgstr "Maximaal aantal categorieën"
 
-#: src/ui/gui/helper.c:197
-msgid "Sorry. The help system hasn't yet been implemented."
-msgstr "Sorry. Het help systeem is nog niet geïmplementeerd."
+#: src/ui/gui/message-dialog.glade:10
+msgid "Messages Reported"
+msgstr "Meldingen Gerapporteerd"
 
-#: src/ui/gui/helper.c:242
-#, c-format
-msgid "Cannot open reference manual: %s"
-msgstr "Kan de handleiding niet openen: %s"
+#: src/ui/gui/message-dialog.glade:47
+msgid ""
+"The PSPP processor reported # errors.  The first # and last # are shown "
+"below:"
+msgstr ""
+"De PSPP processor rapporteerde # fouten.  De eerste # en de laatste # worden "
+"hier onder getoond:"
 
-#: src/ui/gui/main.c:43
-msgid "Don't show the splash screen"
-msgstr "Toon het splash scherm niet"
+#: src/ui/gui/message-dialog.glade:101
+msgid "gtk-close"
+msgstr ""
 
-#: src/ui/gui/main.c:173
-msgid "PSPPIRE --- A user interface for PSPP"
-msgstr "PSPPIRE --- Een gebruikers interface voor PSPP"
+#: src/ui/gui/psppire.glade:58
+msgid "Weight cases by"
+msgstr "Weeg cases op"
 
-#: src/ui/gui/main.c:175
-msgid "Miscellaneous options:"
-msgstr "Diverse opties:"
+#: src/ui/gui/psppire.glade:83
+msgid "Frequency Variable"
+msgstr "Frequencie Variabele"
 
-#: src/ui/gui/main.c:177 src/ui/terminal/main.c:125
-msgid "Options affecting syntax and behavior:"
-msgstr "Opties die de syntax en het gedrag beinvloeden:"
+#: src/ui/gui/psppire.glade:123
+msgid "Current Status: "
+msgstr "Huidige Status:"
 
-#: src/ui/gui/message-dialog.c:103
-msgid "data file error"
-msgstr "data bestand fout"
+#: src/ui/gui/psppire.glade:219
+msgid "Name Variable:"
+msgstr "Naam Variabele:"
 
-#: src/ui/gui/message-dialog.c:108
-msgid "PSPP error"
-msgstr "PSPP fout"
+#: src/ui/gui/psppire.glade:404
+msgid "Analyze all cases.  Do not create groups."
+msgstr "Analyseer alle cases.  Creëer geen groepen."
 
-#: src/ui/gui/message-dialog.c:116
-msgid "syntax warning"
-msgstr "syntax waarschuwing"
+#: src/ui/gui/psppire.glade:415
+msgid "Compare groups."
+msgstr "Vergelijk groepen."
 
-#: src/ui/gui/message-dialog.c:120
-msgid "data file warning"
-msgstr "data bestand waarschuwing"
+#: src/ui/gui/psppire.glade:429
+msgid "Organize output by groups."
+msgstr "Organiseer uitvoer per groepen."
 
-#: src/ui/gui/message-dialog.c:125
-msgid "PSPP warning"
-msgstr "PSPP waarschuwing"
+#: src/ui/gui/psppire.glade:477
+msgid "Groups based on:"
+msgstr "Groepen gebaseerd op:"
 
-#: src/ui/gui/message-dialog.c:134
-msgid "syntax information"
-msgstr "syntax informatie"
+#: src/ui/gui/psppire.glade:540
+msgid "Sort the file by grouping variables."
+msgstr "Sorteer bestand op groepering variabelen."
 
-#: src/ui/gui/message-dialog.c:138
-msgid "data file information"
-msgstr "data bestand informatie"
+#: src/ui/gui/psppire.glade:552
+msgid "File is already sorted."
+msgstr "Bestand is al gesorteerd."
 
-#: src/ui/gui/message-dialog.c:143
-msgid "PSPP information"
-msgstr "PSPP informatie"
+#: src/ui/gui/psppire.glade:597
+msgid "Current Status : "
+msgstr "Huidige Status : "
 
-#: src/ui/gui/message-dialog.c:222
-msgid "The PSPP processing engine reported the following message:"
-msgid_plural "The PSPP processing engine reported the following messages:"
-msgstr[0] "De PSPP processor rapporteert de volgende melding:"
-msgstr[1] "De PSPP processor rapporteert de volgende meldingen:"
+#: src/ui/gui/psppire.glade:605
+msgid "Analysis by groups is off"
+msgstr "Analyseer per groep is uit"
 
-#: src/ui/gui/message-dialog.c:229
-#, c-format
-msgid "The PSPP processing engine reported %d message."
-msgid_plural "The PSPP processing engine reported %d messages."
-msgstr[0] "De PSPP processor rapporteert %d melding."
-msgstr[1] "De PSPP processor rapporteert %d meldingen."
+#: src/ui/gui/psppire.glade:704
+msgid "Sort by:"
+msgstr "Sorteer op:"
 
-#: src/ui/gui/message-dialog.c:236
-#, c-format
-msgid "%d of these messages are displayed below."
-msgid_plural "%d of these messages are displayed below."
-msgstr[0] "%d van deze meldingen worden hier onder getoond."
-msgstr[1] "%d van deze meldingen worden hier onder getoond."
+#: src/ui/gui/psppire.glade:767
+msgid "Descending"
+msgstr "Aflopend"
+
+#: src/ui/gui/psppire.glade:784
+msgid "Sort Order"
+msgstr "Sorteer Volgorde"
+
+#: src/ui/gui/psppire.glade:853
+msgid "Target Variable:"
+msgstr "Doel Variabele:"
+
+#: src/ui/gui/psppire.glade:884
+msgid "Type & Label"
+msgstr ""
+
+#: src/ui/gui/psppire.glade:924
+msgid "="
+msgstr ""
+
+#: src/ui/gui/psppire.glade:970
+msgid "Numeric Expressions:"
+msgstr "Numerieke Expressies:"
+
+#: src/ui/gui/psppire.glade:1024
+msgid "Functions:"
+msgstr "Functies:"
+
+#: src/ui/gui/psppire.glade:1087 src/ui/gui/psppire.glade:1491
+#: src/ui/gui/recode.glade:731
+msgid "If..."
+msgstr "Als..."
+
+#: src/ui/gui/psppire.glade:1320
+msgid "Use filter variable"
+msgstr "Gebruik filter variabele"
+
+#: src/ui/gui/psppire.glade:1373
+msgid "Based on time or case range"
+msgstr "Gebaseerd op tijd of case volgorde"
+
+#: src/ui/gui/psppire.glade:1386
+msgid "Range..."
+msgstr ""
+
+#: src/ui/gui/psppire.glade:1425
+msgid "Random sample of cases"
+msgstr "Random steekproef van cases"
+
+#: src/ui/gui/psppire.glade:1439
+msgid "Sample..."
+msgstr "Steekproef..."
+
+#: src/ui/gui/psppire.glade:1477
+msgid "If condition is satisfied"
+msgstr "Aan If conditie is voldaan"
+
+#: src/ui/gui/psppire.glade:1526
+msgid "All Cases"
+msgstr "Alle Cases"
+
+#: src/ui/gui/psppire.glade:1541
+msgid "Select"
+msgstr "Selecteer"
+
+#: src/ui/gui/psppire.glade:1570
+msgid "Filtered"
+msgstr "Gefilterd"
+
+#: src/ui/gui/psppire.glade:1581
+msgid "Deleted"
+msgstr "Verwijderd"
+
+#: src/ui/gui/psppire.glade:1599
+msgid "Unselected Cases Are"
+msgstr "Niet geselecteerde Cases zijn"
+
+#: src/ui/gui/psppire.glade:1664
+msgid "Comments:"
+msgstr "Commentaren:"
+
+#: src/ui/gui/psppire.glade:1706
+msgid "Display comments in output"
+msgstr "Toon commentaren in uitvoer"
 
-#: src/ui/gui/message-dialog.glade:10
-msgid "Messages Reported"
-msgstr "Meldingen Gerapporteerd"
+#: src/ui/gui/psppire.glade:1721
+msgid "Column Number: 0"
+msgstr "Kolom Nummer: 0"
 
-#: src/ui/gui/message-dialog.glade:47
-msgid ""
-"The PSPP processor reported # errors.  The first # and last # are shown "
-"below:"
-msgstr ""
-"De PSPP processor rapporteerde # fouten.  De eerste # en de laatste # worden "
-"hier onder getoond:"
+#: src/ui/gui/psppire.glade:1804
+msgid "First case"
+msgstr "Eerste case"
 
-#: src/ui/gui/message-dialog.glade:101
-msgid "gtk-close"
-msgstr ""
+#: src/ui/gui/psppire.glade:1817
+msgid "Last case"
+msgstr "Laatste case"
 
-#: src/ui/gui/missing-val-dialog.c:113 src/ui/gui/missing-val-dialog.c:167
-msgid "Incorrect value for variable type"
-msgstr "Foutieve waarde voor variabele type"
+#: src/ui/gui/psppire.glade:1830
+msgid "Observation"
+msgstr "Observatie"
 
-#: src/ui/gui/missing-val-dialog.c:134 src/ui/gui/missing-val-dialog.c:143
-msgid "Incorrect range specification"
-msgstr "Foutieve range specificatie"
+#: src/ui/gui/psppire.glade:1894
+msgid "Use expression as label"
+msgstr "Gebruik expressie als label"
 
-#: src/ui/gui/oneway-anova-dialog.c:331
-#, c-format
-msgid "Contrast %d of %d"
-msgstr ""
+#: src/ui/gui/psppire.glade:2150
+msgid "Goto Case Number:"
+msgstr "Ga naar Case Nummer:"
+
+#: src/ui/gui/psppire.glade:2287
+msgid "Sample Size"
+msgstr "Steekproef Grootte"
 
 #: src/ui/gui/oneway.glade:30
 msgid "_Factor:"
@@ -5797,1348 +5565,1270 @@ msgstr ""
 msgid "gtk-copy"
 msgstr ""
 
-#: src/ui/gui/psppire-buttonbox.c:143
-msgid "Buttons"
-msgstr "Knoppen"
+#: src/ui/gui/rank.glade:57
+msgid "By:"
+msgstr "Per:"
 
-#: src/ui/gui/psppire-buttonbox.c:144
-msgid "The mask that decides what buttons appear in the button box"
-msgstr "Het masker dat beslist welke knoppen in de knop box zichtbaar zijn"
+#: src/ui/gui/rank.glade:196
+msgid "_Smallest Value"
+msgstr "_Kleinste Waarde"
 
-#: src/ui/gui/psppire-buttonbox.c:273 src/ui/gui/psppire-buttonbox.c:435
-msgid "Continue"
-msgstr "Verder"
+#: src/ui/gui/rank.glade:208
+msgid "_Largest Value"
+msgstr "_Grootste Waarde"
 
-#: src/ui/gui/psppire-buttonbox.c:433
-msgid "OK"
-msgstr ""
+#: src/ui/gui/rank.glade:227
+msgid "Assign rank 1 to:"
+msgstr "Ken rang 1 toe aan:"
 
-#: src/ui/gui/psppire-buttonbox.c:434
-msgid "Go To"
-msgstr "Ga Naar"
+#: src/ui/gui/rank.glade:245
+msgid "_Display summary tables"
+msgstr "_Toon totalen tabellen"
 
-#: src/ui/gui/psppire-buttonbox.c:436
-msgid "Cancel"
-msgstr "Afbreken"
+#: src/ui/gui/rank.glade:261
+msgid "Rank T_ypes"
+msgstr "Rangschik T_ypes"
 
-#: src/ui/gui/psppire-buttonbox.c:437
-msgid "Help"
+#: src/ui/gui/rank.glade:272
+msgid "_Ties..."
 msgstr ""
 
-#: src/ui/gui/psppire-buttonbox.c:438
-msgid "Reset"
-msgstr "Standaard"
+#: src/ui/gui/rank.glade:339
+msgid "Sum of case weights"
+msgstr "Totaal van case gewichten"
 
-#: src/ui/gui/psppire-buttonbox.c:439
-msgid "Paste"
-msgstr "Plak"
+#: src/ui/gui/rank.glade:355
+msgid "Fractional rank as %"
+msgstr ""
 
-#: src/ui/gui/psppire.c:247
-msgid "_Reset"
-msgstr "_Standaard"
+#: src/ui/gui/rank.glade:369
+msgid "Fractional rank"
+msgstr ""
 
-#: src/ui/gui/psppire.c:248
-msgid "_Select"
-msgstr "_Selecteer"
+#: src/ui/gui/rank.glade:383
+msgid "Savage score"
+msgstr ""
 
-#: src/ui/gui/psppire-data-editor.c:951
-msgid "Data View"
-msgstr "Data Weergave"
+#: src/ui/gui/rank.glade:397
+msgid "Rank"
+msgstr ""
 
-#: src/ui/gui/psppire-data-editor.c:954
-msgid "Variable View"
-msgstr "Variabele Weergave"
+#: src/ui/gui/rank.glade:411
+msgid "Ntiles"
+msgstr ""
 
-#: src/ui/gui/psppire-data-store.c:744
-msgid "var"
+#: src/ui/gui/rank.glade:450
+msgid "Proportion Estimates"
 msgstr ""
 
-#: src/ui/gui/psppire-data-store.c:755 src/ui/gui/psppire-var-store.c:699
-#: src/ui/gui/psppire-var-store.c:709 src/ui/gui/psppire-var-store.c:719
-#: src/ui/gui/psppire-var-store.c:825
-#, c-format
-msgid "%d"
+#: src/ui/gui/rank.glade:460
+msgid "Normal Scores"
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:213
-msgid "Transformations Pending"
-msgstr "Transformaties Uitstaand"
+#: src/ui/gui/rank.glade:494
+msgid "Blom"
+msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:229
-msgid "Filter off"
-msgstr "Filter uit"
+#: src/ui/gui/rank.glade:505
+msgid "Tukey"
+msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:243
-#, c-format
-msgid "Filter by %s"
-msgstr "Filter op %s"
+#: src/ui/gui/rank.glade:519
+msgid "Rankit"
+msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:264
-msgid "No Split"
-msgstr "Geen Splits"
+#: src/ui/gui/rank.glade:533
+msgid "Van der Wärden"
+msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:273
-msgid "Split by "
-msgstr "Splits op "
+#: src/ui/gui/rank.glade:550
+msgid "Proportion Estimation Formula"
+msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:301
-msgid "Weights off"
-msgstr "Weging uit"
+#: src/ui/gui/rank.glade:612
+msgid "_Mean"
+msgstr "_Gemiddeld"
 
-#: src/ui/gui/psppire-data-window.c:315
-#, c-format
-msgid "Weight by %s"
-msgstr "Weeg op %s"
+#: src/ui/gui/rank.glade:624
+msgid "_Low"
+msgstr "_Laag"
 
-#: src/ui/gui/psppire-data-window.c:391 src/ui/gui/psppire-data-window.c:593
-msgid "System Files (*.sav)"
-msgstr "Systeem Bestand (*.sav)"
+#: src/ui/gui/rank.glade:640
+msgid "_High"
+msgstr "_Hoog"
 
-#: src/ui/gui/psppire-data-window.c:397 src/ui/gui/psppire-data-window.c:599
-msgid "Portable Files (*.por) "
-msgstr "Overdraagbaar (Portable) Bestand (*.por)"
+#: src/ui/gui/rank.glade:658
+msgid "_Sequential ranks to unique values"
+msgstr "_Sequentiele rangen naar unieke waardes"
 
-#: src/ui/gui/psppire-data-window.c:403 src/ui/gui/psppire-data-window.c:605
-#: src/ui/gui/psppire-syntax-window.c:298
-#: src/ui/gui/psppire-syntax-window.c:385
-msgid "All Files"
-msgstr "Alle bestanden"
+#: src/ui/gui/rank.glade:678
+msgid "Rank Assigned to Ties"
+msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:613
-msgid "System File"
-msgstr "Systeem Bestand"
+#: src/ui/gui/recode.glade:197
+msgid "System-Missing"
+msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:618
-msgid "Portable File"
-msgstr "Overdraagbaar (Portable) Bestand"
+#: src/ui/gui/recode.glade:211
+msgid "System-or user-missing"
+msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:768
-msgid "Font Selection"
-msgstr "Font Selectie"
+#: src/ui/gui/recode.glade:245
+msgid "through"
+msgstr "tot"
 
-#: src/ui/gui/psppire-data-window.c:836
-msgid "Sort Ascending"
-msgstr "Sorteer oplopend"
+#: src/ui/gui/recode.glade:283
+msgid "Range, LOWEST thru value"
+msgstr "Range, LAAGSTE tot waarde"
 
-#: src/ui/gui/psppire-data-window.c:842
-msgid "Sort Descending"
-msgstr "Sorteer aflopend"
+#: src/ui/gui/recode.glade:297
+msgid "Range, value thru HIGHEST"
+msgstr "Range, waarde tot HOOGSTE"
 
-#: src/ui/gui/psppire-data-window.c:850 src/ui/gui/psppire-data-window.c:904
-#: src/ui/gui/psppire-data-window.c:940 src/ui/gui/psppire-data-window.c:1308
-#: src/ui/gui/psppire-data-window.c:1326
-msgid "Clear"
-msgstr "Ruimop"
+#: src/ui/gui/recode.glade:327
+msgid "All other values"
+msgstr "Alle andere waardes"
 
-#: src/ui/gui/psppire-data-window.c:1185
-msgid "Open a data file"
-msgstr "Open een data bestand"
+#: src/ui/gui/recode.glade:363
+msgid "Range:"
+msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1203
-msgid "New data file"
-msgstr "Nieuw data bestand"
+#: src/ui/gui/recode.glade:380
+msgid "Old Value"
+msgstr "Oude Waarde"
+
+#: src/ui/gui/recode.glade:462
+msgid "System Missing"
+msgstr ""
+
+#: src/ui/gui/recode.glade:476
+msgid "Copy old values"
+msgstr "Kopieer oude waardes"
 
-#: src/ui/gui/psppire-data-window.c:1218
-msgid "Import text data file"
-msgstr "Importeer text data bestand"
+#: src/ui/gui/recode.glade:500
+msgid "Value: "
+msgstr "Waarde: "
 
-#: src/ui/gui/psppire-data-window.c:1234 src/ui/gui/psppire-data-window.c:1251
-msgid "Save data to file"
-msgstr "Data opslaan als bestand"
+#: src/ui/gui/recode.glade:530
+msgid "New Value"
+msgstr "Nieuwe Waarde"
 
-#: src/ui/gui/psppire-data-window.c:1250
-msgid "Save As"
-msgstr "Opslaan Als"
+#: src/ui/gui/recode.glade:590
+msgid "Convert numeric strings to numbers ('5' -> 5)"
+msgstr "Converteer numerieke strings naar nummers ('5' -> 5)"
 
-#: src/ui/gui/psppire-data-window.c:1289
-msgid "Show/hide value labels"
-msgstr "Show/verberg waarde labels"
+#: src/ui/gui/recode.glade:608
+msgid "Output variables are strings"
+msgstr "Uitvoer variabelen zijn strings"
 
-#: src/ui/gui/psppire-data-window.c:1309
-msgid "Delete the cases at the selected position(s)"
-msgstr "Verwijder de cases op de geselecteerde positie(s)"
+#: src/ui/gui/recode.glade:620
+msgid "Width: "
+msgstr "Breedte: "
 
-#: src/ui/gui/psppire-data-window.c:1327
-msgid "Delete the variables at the selected position(s)"
-msgstr "Verwijder de variabele op de geselecteerde positie(s)"
+#: src/ui/gui/recode.glade:743
+msgid "(optional case selection condition)"
+msgstr "(optionele case selectie conditie)"
 
-#: src/ui/gui/psppire-data-window.c:1345
-msgid "Create a new variable at the current position"
-msgstr "Creëer een nieuwe variabele op de huidige positie"
+#: src/ui/gui/recode.glade:823
+msgid "Name:"
+msgstr "Naam:"
 
-#: src/ui/gui/psppire-data-window.c:1360
-msgid "Create a new case at the current position"
-msgstr "Creëer een nieuwe case op de huidige positie"
+#: src/ui/gui/recode.glade:867
+msgid "Change"
+msgstr "Wijzig"
 
-#: src/ui/gui/psppire-data-window.c:1376
-msgid "Jump to a Case in the Data Sheet"
-msgstr "Spring naar een Case in het Data Blad"
+#: src/ui/gui/recode.glade:885
+msgid "Output Variable"
+msgstr "Uitvoer Variabele"
 
-#: src/ui/gui/psppire-data-window.c:1392
-msgid "Weight cases by variable"
-msgstr "Weeg cases per variabele"
+#: src/ui/gui/recode.glade:965
+msgid "Old and New Values"
+msgstr "Oude en Nieuwe Waardes"
 
-#: src/ui/gui/psppire-data-window.c:1406
-msgid "Transpose the cases with the variables"
-msgstr "Herschik de cases met de variabelen"
+#: src/ui/gui/regression.glade:40
+msgid "Save..."
+msgstr "Opslaan..."
 
-#: src/ui/gui/psppire-data-window.c:1420
-msgid "Split the active file"
-msgstr "Splits het actieve bestand"
+#: src/ui/gui/regression.glade:145
+msgid "Dependent"
+msgstr "Afhankelijk"
 
-#: src/ui/gui/psppire-data-window.c:1435
-msgid "Sort cases in the active file"
-msgstr "Sorteer cases in het actieve bestand"
+#: src/ui/gui/regression.glade:193
+msgid "Independent"
+msgstr "Onafhankelijk"
 
-#: src/ui/gui/psppire-data-window.c:1449
-msgid "Select cases from the active file"
-msgstr "Selecteer cases van het actieve bestand"
+#: src/ui/gui/regression.glade:243
+msgid "Predicted values"
+msgstr "Voorspelde waardes"
 
-#: src/ui/gui/psppire-data-window.c:1463
-msgid "Compute new values for a variable"
-msgstr "Bereken nieuwe waardes voor een variabele"
+#: src/ui/gui/regression.glade:252
+msgid "Residuals"
+msgstr "Restant"
 
-#: src/ui/gui/psppire-data-window.c:1477
-msgid "Perform one way analysis of variance"
+#: src/ui/gui/reliability.glade:89
+msgid "_Items:"
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1492
-msgid "Calculate T Test for samples from independent groups"
+#: src/ui/gui/reliability.glade:111
+msgid "Model:\t"
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1506
-msgid "Calculate T Test for paired samples"
+#: src/ui/gui/reliability.glade:122
+msgid ""
+"Alpha\n"
+"Split"
 msgstr ""
+"Alpha\n"
+"Splits"
 
-#: src/ui/gui/psppire-data-window.c:1520
-msgid "Calculate T Test for sample from a single distribution"
+#: src/ui/gui/reliability.glade:144
+msgid "Variables in first split:"
+msgstr "Variabelen in eerste splits:"
+
+#: src/ui/gui/syntax-editor.glade:163
+msgid "_Run"
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1535
-msgid "Commentary text for the data file"
-msgstr "Commentaar tekst voor het data bestand"
+#: src/ui/gui/syntax-editor.glade:172
+msgid "All"
+msgstr "Alles"
 
-#: src/ui/gui/psppire-data-window.c:1561
-msgid "Rank Cases"
-msgstr "Rangschik Cases"
+#: src/ui/gui/syntax-editor.glade:180
+msgid "Selection"
+msgstr "Selectie"
 
-#: src/ui/gui/psppire-data-window.c:1575
-msgid "Recode values into the same variables"
-msgstr "Hercodeer waardes in dezelfde Variabelen"
+#: src/ui/gui/syntax-editor.glade:188
+msgid "Current Line"
+msgstr "Huidige Regel"
 
-#: src/ui/gui/psppire-data-window.c:1589
-msgid "Recode values into different variables"
-msgstr "Hercodeer waardes in andere Variabelen"
+#: src/ui/gui/syntax-editor.glade:197
+msgid "To End"
+msgstr "Naar Einde"
 
-#: src/ui/gui/psppire-data-window.c:1603
-msgid "Jump to variable"
-msgstr "Spring naar Variabele"
+#: src/ui/gui/text-data-import.glade:8
+msgid "Importing Textual Data"
+msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1616
-msgid "Calculate descriptive statistics (mean, variance, ...)"
-msgstr "Bereken descriptive statistieken (mean, variance, ...)"
+#: src/ui/gui/text-data-import.glade:18
+msgid ""
+"This assistant will guide you through the process of importing data into "
+"PSPP from a text file with one line per case,  in which fields are separated "
+"by tabs, commas, or other delimiters.\n"
+"\n"
+"The selected file contains N lines of text.  Only the first M of these will "
+"be shown for preview purposes in the following screens.  You may choose "
+"below how much of the file should actually be imported."
+msgstr ""
+"Deze assistant zal je assisteren bij het proces van het importeren van data "
+"in PSPP vanuit een text bestand met een regel per case en velden gescheiden "
+"met tabs, kommas of andere scheiders.\n"
+" \n"
+"Het geselecteerde bestand bevat N regels text.  Alleen de eerste  M hiervan "
+"zullen getoond worden voor voorbeeld doeleinden in de volgende schermen.  Je "
+"kunt hieronder kiezen hoeveel van het bestand daadwerkelijk geïmporteerd "
+"moet worden."
 
-#: src/ui/gui/psppire-data-window.c:1630
-msgid "Generate frequency statistics"
-msgstr "Genereer frequentie statistieken"
+#: src/ui/gui/text-data-import.glade:50
+msgid "All cases"
+msgstr "Alle cases"
 
-#: src/ui/gui/psppire-data-window.c:1644
-msgid "Generate crosstabulations"
-msgstr ""
+#: src/ui/gui/text-data-import.glade:66 src/ui/gui/text-data-import.glade:122
+msgid "Only first "
+msgstr "Alleen eerste "
 
-#: src/ui/gui/psppire-data-window.c:1659
-msgid "Examine Data by Factors"
+#: src/ui/gui/text-data-import.glade:97
+msgid " cases"
 msgstr ""
 
-#: src/ui/gui/psppire-data-window.c:1673
-msgid "Estimate parameters of the linear model"
-msgstr ""
+#: src/ui/gui/text-data-import.glade:152
+msgid "% of file (approximately)"
+msgstr "% van bestand (ongeveer)"
 
-#: src/ui/gui/psppire-data-window.c:1687 src/ui/gui/reliability.glade:7
-msgid "Reliability Analysis"
-msgstr ""
+#: src/ui/gui/text-data-import.glade:173
+msgid "<b>Amount to Import</b>"
+msgstr "<b>Aantal te Importeren</b>"
 
-#: src/ui/gui/psppire-data-window.c:1850
-msgid "Split the window vertically and horizontally"
-msgstr "Splits het venster verticaal en horizontaal"
+#: src/ui/gui/text-data-import.glade:195
+msgid "Select Data to Import"
+msgstr "Selecteer Data om te Importeren"
 
-#: src/ui/gui/psppire-data-window.c:1892
-msgid "Data Editor"
+#: src/ui/gui/text-data-import.glade:205
+msgid "Select the first line of the data file that contains data."
+msgstr "Selecteer de eerste regel van het data bestand die data bevat."
+
+#: src/ui/gui/text-data-import.glade:236
+msgid "Line above selected line contains variable names"
+msgstr "De regel boven de geselecteerde data regel bevat de variabele namen"
+
+#: src/ui/gui/text-data-import.glade:251
+msgid "Choose Separators"
+msgstr "Kies scheidingstekens"
+
+#: src/ui/gui/text-data-import.glade:299
+msgid "C_ustom"
 msgstr ""
 
-#: src/ui/gui/psppire-dictview.c:207
-msgid "The dictionary to be displayed by this widget"
+#: src/ui/gui/text-data-import.glade:314
+msgid "Slas_h (/)"
 msgstr ""
 
-#: src/ui/gui/psppire-dictview.c:214
-msgid "A predicate function"
+#: src/ui/gui/text-data-import.glade:331
+msgid "Semicolo_n (;)"
+msgstr "Pu_ntkomma(;)"
+
+#: src/ui/gui/text-data-import.glade:348
+msgid "P_ipe (|)"
 msgstr ""
 
-#: src/ui/gui/psppire-dictview.c:221
-msgid "How many things can be selected"
-msgstr "Hoeveel dingen kunnen worden geselecteerd"
+#: src/ui/gui/text-data-import.glade:363
+msgid "H_yphen (-)"
+msgstr ""
 
-#: src/ui/gui/psppire-dictview.c:528
-msgid "Prefer variable labels"
-msgstr "Prefereer variabele labels"
+#: src/ui/gui/text-data-import.glade:380
+msgid "Co_mma (,)"
+msgstr "Ko_mma (,)"
 
-#: src/ui/gui/psppire.glade:47 src/ui/gui/psppire.glade:130
-#: src/ui/gui/weight-cases-dialog.c:79
-msgid "Do not weight cases"
-msgstr "Weeg cases niet"
+#: src/ui/gui/text-data-import.glade:397
+msgid "_Colon (:)"
+msgstr "_Dubbele punt (:)"
 
-#: src/ui/gui/psppire.glade:58
-msgid "Weight cases by"
-msgstr "Weeg cases op"
+#: src/ui/gui/text-data-import.glade:412
+msgid "Ban_g (!)"
+msgstr "Uitroepteken(!)"
 
-#: src/ui/gui/psppire.glade:83
-msgid "Frequency Variable"
-msgstr "Frequencie Variabele"
+#: src/ui/gui/text-data-import.glade:427
+msgid "Ta_b"
+msgstr ""
 
-#: src/ui/gui/psppire.glade:123
-msgid "Current Status: "
-msgstr "Huidige Status:"
+#: src/ui/gui/text-data-import.glade:442
+msgid "_Space"
+msgstr "_Spatie"
 
-#: src/ui/gui/psppire.glade:219
-msgid "Name Variable:"
-msgstr "Naam Variabele:"
+#: src/ui/gui/text-data-import.glade:456
+msgid "<b>Separators</b>"
+msgstr "<b>Scheiders</b>"
 
-#: src/ui/gui/psppire.glade:404
-msgid "Analyze all cases.  Do not create groups."
-msgstr "Analyseer alle cases.  Creëer geen groepen."
+#: src/ui/gui/text-data-import.glade:489
+msgid "Doubled quote mark treated as escape"
+msgstr ""
 
-#: src/ui/gui/psppire.glade:415
-msgid "Compare groups."
-msgstr "Vergelijk groepen."
+#: src/ui/gui/text-data-import.glade:526
+msgid "Quote separator characters with"
+msgstr "Citeer scheidingstekens met"
 
-#: src/ui/gui/psppire.glade:429
-msgid "Organize output by groups."
-msgstr "Organiseer uitvoer per groepen."
+#: src/ui/gui/text-data-import.glade:543
+msgid "<b>Quoting</b>"
+msgstr "<b>Citeren</b>"
+
+#: src/ui/gui/text-data-import.glade:594
+msgid "<b>Fields Preview</b>"
+msgstr "<b>Velden Voorbeeld</b>"
 
-#: src/ui/gui/psppire.glade:477
-msgid "Groups based on:"
-msgstr "Groepen gebaseerd op:"
+#: src/ui/gui/text-data-import.glade:612
+msgid "Adjust Variable Formats"
+msgstr "Pas Variabele Formaat aan"
 
-#: src/ui/gui/psppire.glade:540
-msgid "Sort the file by grouping variables."
-msgstr "Sorteer bestand op groepering variabelen."
+#: src/ui/gui/text-data-import.glade:622
+msgid ""
+"Check the data formats displayed below and fix any that are incorrect.  You "
+"may set other variable properties now or later."
+msgstr ""
+"Controleer de data formaten hieronder en verbeter degene die foutief zijn. "
+"Je mag andere variabele opties nu of later zetten."
 
-#: src/ui/gui/psppire.glade:552
-msgid "File is already sorted."
-msgstr "Bestand is al gesorteerd."
+#: src/ui/gui/text-data-import.glade:665
+msgid "<b>Variables</b>"
+msgstr "<b>Variabelen</b>"
 
-#: src/ui/gui/psppire.glade:597
-msgid "Current Status : "
-msgstr "Huidige Status : "
+#: src/ui/gui/text-data-import.glade:712
+msgid "<b>Data Preview</b>"
+msgstr "<b>Data Voorbeeld</b>"
 
-#: src/ui/gui/psppire.glade:605
-msgid "Analysis by groups is off"
-msgstr "Analyseer per groep is uit"
+#: src/ui/gui/t-test.glade:56 src/ui/gui/t-test.glade:165
+msgid "Define Groups"
+msgstr "Definieer Groepen"
 
-#: src/ui/gui/psppire.glade:704
-msgid "Sort by:"
-msgstr "Sorteer op:"
+#: src/ui/gui/t-test.glade:123 src/ui/gui/t-test.glade:549
+#: src/ui/gui/t-test.glade:761
+msgid "Test Variable(s):"
+msgstr "Test Variabel(en):"
 
-#: src/ui/gui/psppire.glade:767
-msgid "Descending"
-msgstr "Aflopend"
+#: src/ui/gui/t-test.glade:258
+msgid "Group_2 value:"
+msgstr "Groep_2 waarde:"
 
-#: src/ui/gui/psppire.glade:784
-msgid "Sort Order"
-msgstr "Sorteer Volgorde"
+#: src/ui/gui/t-test.glade:271
+msgid "Group_1 value:"
+msgstr "Groep_1 waarde:"
 
-#: src/ui/gui/psppire.glade:853
-msgid "Target Variable:"
-msgstr "Doel Variabele:"
+#: src/ui/gui/t-test.glade:320
+msgid "_Cut point:"
+msgstr "_Knip punt:"
 
-#: src/ui/gui/psppire.glade:884
-msgid "Type & Label"
-msgstr ""
+#: src/ui/gui/t-test.glade:349
+msgid "_Use specified values:"
+msgstr "_Gebruik gespecificeerde waardes:"
 
-#: src/ui/gui/psppire.glade:924
-msgid "="
-msgstr ""
+#: src/ui/gui/t-test.glade:431
+msgid "Exclude cases _analysis by analysis"
+msgstr "Sluit cases _analysis by analysis uit"
 
-#: src/ui/gui/psppire.glade:970
-msgid "Numeric Expressions:"
-msgstr "Numerieke Expressies:"
+#: src/ui/gui/t-test.glade:442
+msgid "Exclude cases _listwise"
+msgstr "Sluit cases _listwise uit"
 
-#: src/ui/gui/psppire.glade:1024
-msgid "Functions:"
-msgstr "Functies:"
+#: src/ui/gui/t-test.glade:594
+msgid "Test Value: "
+msgstr "Test Waarde:"
 
-#: src/ui/gui/psppire.glade:1087 src/ui/gui/psppire.glade:1491
-#: src/ui/gui/recode.glade:731
-msgid "If..."
-msgstr "Als..."
+#: src/ui/gui/var-sheet-dialogs.glade:7
+msgid "Variable Type"
+msgstr "Variabele Type"
 
-#: src/ui/gui/psppire.glade:1320
-msgid "Use filter variable"
-msgstr "Gebruik filter variabele"
+#: src/ui/gui/var-sheet-dialogs.glade:75
+msgid "Scientific notation"
+msgstr "Wetenschappelijke notatie"
 
-#: src/ui/gui/psppire.glade:1373
-msgid "Based on time or case range"
-msgstr "Gebaseerd op tijd of case volgorde"
+#: src/ui/gui/var-sheet-dialogs.glade:123
+msgid "Custom currency"
+msgstr "Aangepaste waarde"
 
-#: src/ui/gui/psppire.glade:1386
-msgid "Range..."
-msgstr ""
+#: src/ui/gui/var-sheet-dialogs.glade:217
+msgid "positive"
+msgstr "positief"
 
-#: src/ui/gui/psppire.glade:1425
-msgid "Random sample of cases"
-msgstr "Random steekproef van cases"
+#: src/ui/gui/var-sheet-dialogs.glade:223
+msgid "negative"
+msgstr "negatief"
 
-#: src/ui/gui/psppire.glade:1439
-msgid "Sample..."
-msgstr "Steekproef..."
+#: src/ui/gui/var-sheet-dialogs.glade:236
+msgid "Sample"
+msgstr "Steekproef"
 
-#: src/ui/gui/psppire.glade:1477
-msgid "If condition is satisfied"
-msgstr "Aan If conditie is voldaan"
+#: src/ui/gui/var-sheet-dialogs.glade:286
+msgid "Width:"
+msgstr "Breedte:"
 
-#: src/ui/gui/psppire.glade:1526
-msgid "All Cases"
-msgstr "Alle Cases"
+#: src/ui/gui/var-sheet-dialogs.glade:330
+msgid "Decimal Places:"
+msgstr "Decimalen:"
 
-#: src/ui/gui/psppire.glade:1541
-msgid "Select"
-msgstr "Selecteer"
+#: src/ui/gui/var-sheet-dialogs.glade:499
+msgid "Value Label:"
+msgstr "Waarde Label:"
 
-#: src/ui/gui/psppire.glade:1570
-msgid "Filtered"
-msgstr "Gefilterd"
+#: src/ui/gui/var-sheet-dialogs.glade:677
+msgid "_No missing values"
+msgstr ""
 
-#: src/ui/gui/psppire.glade:1581
-msgid "Deleted"
-msgstr "Verwijderd"
+#: src/ui/gui/var-sheet-dialogs.glade:747
+msgid "_Discrete missing values"
+msgstr ""
 
-#: src/ui/gui/psppire.glade:1599
-msgid "Unselected Cases Are"
-msgstr "Niet geselecteerde Cases zijn"
+#: src/ui/gui/var-sheet-dialogs.glade:782
+msgid "_Low:"
+msgstr "_Laag:"
 
-#: src/ui/gui/psppire.glade:1664
-msgid "Comments:"
-msgstr "Commentaren:"
+#: src/ui/gui/var-sheet-dialogs.glade:801
+msgid "_High:"
+msgstr "_Hoog:"
 
-#: src/ui/gui/psppire.glade:1706
-msgid "Display comments in output"
-msgstr "Toon commentaren in uitvoer"
+#: src/ui/gui/var-sheet-dialogs.glade:826
+msgid "Di_screte value:"
+msgstr ""
 
-#: src/ui/gui/psppire.glade:1721
-msgid "Column Number: 0"
-msgstr "Kolom Nummer: 0"
+#: src/ui/gui/var-sheet-dialogs.glade:856
+msgid "_Range plus one optional discrete missing value"
+msgstr ""
 
-#: src/ui/gui/psppire.glade:1804
-msgid "First case"
-msgstr "Eerste case"
+#: src/ui/gui/variable-info-dialog.glade:49
+msgid "Variable Information:"
+msgstr "Variabele Informatie:"
 
-#: src/ui/gui/psppire.glade:1817
-msgid "Last case"
-msgstr "Laatste case"
+#: tests/dissect-sysfile.c:528
+#, fuzzy, c-format
+msgid "Unrecognized record type 7, subtype %d."
+msgstr "Niet herkend record type %d."
 
-#: src/ui/gui/psppire.glade:1830
-msgid "Observation"
-msgstr "Observatie"
+#: tests/dissect-sysfile.c:701
+#, fuzzy, c-format
+msgid "%s: Error parsing attribute value %s[%d]"
+msgstr "Fout bij het ontleden van attribuut waarde %s[%d]"
 
-#: src/ui/gui/psppire.glade:1894
-msgid "Use expression as label"
-msgstr "Gebruik expressie als label"
+#: tests/dissect-sysfile.c:707
+#, fuzzy, c-format
+msgid "%s: Attribute value %s[%d] is not quoted: %s"
+msgstr "Attribuut waarde %s[%d] is niet geciteerd: %s"
 
-#: src/ui/gui/psppire.glade:2020 src/ui/gui/psppire-var-sheet.c:532
-#: src/ui/gui/psppire-var-store.c:834
-msgid "Width"
-msgstr "Breedte"
+#, fuzzy
+#~ msgid "NAME subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/psppire.glade:2150
-msgid "Goto Case Number:"
-msgstr "Ga naar Case Nummer:"
+#, fuzzy
+#~ msgid "LRECL subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/psppire.glade:2287
-msgid "Sample Size"
-msgstr "Steekproef Grootte"
+#, fuzzy
+#~ msgid "TABWIDTH subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/psppire-output-window.c:269
-msgid "Output Viewer"
-msgstr "Uitvoer Viewer"
+#, fuzzy
+#~ msgid "MODE subcommand may be given only once."
+#~ msgstr "REORDER subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/psppire-syntax-window.c:265
-#, c-format
-msgid "Saved file \"%s\""
-msgstr "Opgeslagen bestand \"%s\""
+#, fuzzy
+#~ msgid "RECFORM subcommand may be given only once."
+#~ msgstr "REORDER subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/psppire-syntax-window.c:284
-msgid "Save Syntax"
-msgstr "Sla Syntax op"
+#~ msgid ""
+#~ "File handle %s is already defined.  Use CLOSE FILE HANDLE before "
+#~ "redefining a file handle."
+#~ msgstr ""
+#~ "Bestand 'handle' %s is al gedefinieerd. Gebruik CLOSE FILE HANDLE voor "
+#~ "het opnieuw definiëren van een bestand 'handle'."
 
-#: src/ui/gui/psppire-syntax-window.c:292
-#: src/ui/gui/psppire-syntax-window.c:379
-msgid "Syntax Files (*.sps) "
-msgstr "Syntax Bestand (*.sps)"
+#~ msgid "RECFORM must be specified with MODE=360."
+#~ msgstr "RECFORM moet opgegeven worden met MODE=360."
 
-#: src/ui/gui/psppire-syntax-window.c:371
-msgid "Open Syntax"
-msgstr ""
+#~ msgid ""
+#~ "The specified file mode requires LRECL.  Assuming %d-character records."
+#~ msgstr ""
+#~ "De gespecificeerd bestandsmodus vereist LRECL. %d-karakter records "
+#~ "veronderstelt."
 
-#: src/ui/gui/psppire-syntax-window.c:551
-msgid "Syntax Editor"
-msgstr ""
+#~ msgid ""
+#~ "Record length (%ld) must be between 1 and %lu bytes.  Assuming %d-"
+#~ "character records."
+#~ msgstr ""
+#~ "Record lengte (%ld) moet tussen 1 en %lu bytes zijn. Veronderstel %d-"
+#~ "karakters records."
 
-#: src/ui/gui/psppire-syntax-window.c:565
-#, c-format
-msgid "Cannot load syntax file '%s'"
-msgstr "Kan syntax bestand \"%s\" niet laden"
+#~ msgid "file"
+#~ msgstr "bestand"
 
-#: src/ui/gui/psppire-var-sheet.c:530 src/ui/gui/psppire-var-store.c:832
-msgid "Name"
-msgstr "Naam"
+#~ msgid "inline file"
+#~ msgstr "inline bestand"
 
-#: src/ui/gui/psppire-var-sheet.c:533 src/ui/gui/psppire-var-store.c:835
-msgid "Decimals"
-msgstr "Decimalen"
+#~ msgid "expecting a file name or handle name"
+#~ msgstr "file naam of 'handle' naam verwacht"
 
-#: src/ui/gui/psppire-var-sheet.c:535 src/ui/gui/psppire-var-store.c:837
-msgid "Values"
-msgstr "Waardes"
+#~ msgid "Handle for %s not allowed here."
+#~ msgstr "'Handle' voor %s is hier niet toegestaan."
 
-#: src/ui/gui/psppire-var-sheet.c:538 src/ui/gui/psppire-var-store.c:840
-msgid "Align"
-msgstr "Uitlijnen"
+#, fuzzy
+#~ msgid "VARIABLES subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/psppire-var-sheet.c:539 src/ui/gui/psppire-var-store.c:841
-msgid "Measure"
-msgstr "Meting"
+#, fuzzy
+#~ msgid "CASES subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/psppire-var-store.c:622 src/ui/gui/var-sheet-dialogs.glade:43
-msgid "Comma"
-msgstr "Komma"
+#~ msgid ""
+#~ "The first case (%ld) specified precedes the last case (%ld) specified.  "
+#~ "The values will be swapped."
+#~ msgstr ""
+#~ "De eerste gespecificeerde case (%ld) gaat vooraf aan de laatste "
+#~ "gespecificeerde case (%ld). De waardes worden verwisseld."
 
-#: src/ui/gui/psppire-var-store.c:623 src/ui/gui/var-sheet-dialogs.glade:59
-msgid "Dot"
-msgstr "Punt"
+#~ msgid ""
+#~ "The first case (%ld) to list is less than 1.  The value is being reset to "
+#~ "1."
+#~ msgstr ""
+#~ "De eerste case (%ld) om weer te geven is kleiner dan 1. De waarde is "
+#~ "teruggezet op 1."
 
-#: src/ui/gui/psppire-var-store.c:624
-msgid "Scientific"
-msgstr "Wetenschappelijk"
+#~ msgid ""
+#~ "The last case (%ld) to list is less than 1.  The value is being reset to "
+#~ "1."
+#~ msgstr ""
+#~ "De laatste case (%ld) om weer te geven is kleiner dan 1. De waarde is "
+#~ "teruggezet op 1."
 
-#: src/ui/gui/psppire-var-store.c:625 src/ui/gui/var-sheet-dialogs.glade:91
-msgid "Date"
-msgstr "Datum"
+#~ msgid "The step value %ld is less than 1.  The value is being reset to 1."
+#~ msgstr "De stap waarde %ld is kleiner dan 1. De waarde is teruggezet op 1."
 
-#: src/ui/gui/psppire-var-store.c:626 src/ui/gui/var-sheet-dialogs.glade:107
-msgid "Dollar"
-msgstr "Euro"
+#~ msgid "`/FORMAT WEIGHT' specified, but weighting is not on."
+#~ msgstr "'/FORMAT WEIGHT' gespecificeerd, maar weging is niet aan."
 
-#: src/ui/gui/psppire-var-store.c:627
-msgid "Custom"
-msgstr "Aangepast"
+#~ msgid "Line"
+#~ msgstr "Regel"
 
-#: src/ui/gui/psppire-window.c:97
-#, c-format
-msgid "%s %s PSPPIRE %s"
-msgstr ""
+#, fuzzy
+#~ msgid "BLANKS subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/psppire-window.c:480
-#, c-format
-msgid "Save the changes to \"%s\" before closing?"
-msgstr "De veranderingen van \"%s\" opslaan voor afsluiten?"
+#, fuzzy
+#~ msgid "BLOCK subcommand may be given only once."
+#~ msgstr "REORDER subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/psppire-window.c:487
-#, c-format
-msgid ""
-"If you don't save, changes from the last %ld seconds will be permanently "
-"lost."
-msgstr ""
-"Als je niet opslaat gaan de aanpassingen van de laatste %ld seconden "
-"definitief verloren."
+#, fuzzy
+#~ msgid "BOXSTRING subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/psppire-window.c:491
-msgid "Close _without saving"
-msgstr "Sluit _zonder opslaan"
+#, fuzzy
+#~ msgid "CASE subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/rank.glade:57
-msgid "By:"
-msgstr "Per:"
+#, fuzzy
+#~ msgid "CCA subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/rank.glade:196
-msgid "_Smallest Value"
-msgstr "_Kleinste Waarde"
+#, fuzzy
+#~ msgid "CCB subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/rank.glade:208
-msgid "_Largest Value"
-msgstr "_Grootste Waarde"
+#, fuzzy
+#~ msgid "CCC subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/rank.glade:227
-msgid "Assign rank 1 to:"
-msgstr "Ken rang 1 toe aan:"
+#, fuzzy
+#~ msgid "CCD subcommand may be given only once."
+#~ msgstr "REORDER subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/rank.glade:245
-msgid "_Display summary tables"
-msgstr "_Toon totalen tabellen"
+#, fuzzy
+#~ msgid "CCE subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/rank.glade:261
-msgid "Rank T_ypes"
-msgstr "Rangschik T_ypes"
+#, fuzzy
+#~ msgid "COMPRESSION subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/rank.glade:272
-msgid "_Ties..."
-msgstr ""
+#, fuzzy
+#~ msgid "CPI subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/rank.glade:339
-msgid "Sum of case weights"
-msgstr "Totaal van case gewichten"
+#, fuzzy
+#~ msgid "CPROMPT subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/rank.glade:355
-msgid "Fractional rank as %"
-msgstr ""
+#, fuzzy
+#~ msgid "DECIMAL subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/rank.glade:369
-msgid "Fractional rank"
-msgstr ""
+#, fuzzy
+#~ msgid "DISK subcommand may be given only once."
+#~ msgstr "REORDER subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/rank.glade:383
-msgid "Savage score"
-msgstr ""
+#, fuzzy
+#~ msgid "DPROMPT subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/rank.glade:397
-msgid "Rank"
-msgstr ""
+#, fuzzy
+#~ msgid "ECHO subcommand may be given only once."
+#~ msgstr "REORDER subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/rank.glade:411
-msgid "Ntiles"
-msgstr ""
+#, fuzzy
+#~ msgid "ENDCMD subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/rank.glade:450
-msgid "Proportion Estimates"
-msgstr ""
+#, fuzzy
+#~ msgid "EPOCH subcommand may be given only once."
+#~ msgstr "REORDER subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/rank.glade:460
-msgid "Normal Scores"
-msgstr ""
+#, fuzzy
+#~ msgid "ERRORBREAK subcommand may be given only once."
+#~ msgstr "REORDER subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/rank.glade:494
-msgid "Blom"
-msgstr ""
+#, fuzzy
+#~ msgid "ERRORS subcommand may be given only once."
+#~ msgstr "REORDER subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/rank.glade:505
-msgid "Tukey"
-msgstr ""
+#, fuzzy
+#~ msgid "FORMAT subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/rank.glade:519
-msgid "Rankit"
-msgstr ""
+#, fuzzy
+#~ msgid "HEADERS subcommand may be given only once."
+#~ msgstr "REORDER subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/rank.glade:533
-msgid "Van der Wärden"
-msgstr ""
+#, fuzzy
+#~ msgid "HIGHRES subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/rank.glade:550
-msgid "Proportion Estimation Formula"
-msgstr ""
+#, fuzzy
+#~ msgid "HISTOGRAM subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/rank.glade:612
-msgid "_Mean"
-msgstr "_Gemiddeld"
+#, fuzzy
+#~ msgid "INCLUDE subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/rank.glade:624
-msgid "_Low"
-msgstr "_Laag"
+#, fuzzy
+#~ msgid "JOURNAL subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/rank.glade:640
-msgid "_High"
-msgstr "_Hoog"
+#, fuzzy
+#~ msgid "LOG subcommand may be given only once."
+#~ msgstr "REORDER subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/rank.glade:658
-msgid "_Sequential ranks to unique values"
-msgstr "_Sequentiele rangen naar unieke waardes"
+#, fuzzy
+#~ msgid "LENGTH subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/rank.glade:678
-msgid "Rank Assigned to Ties"
-msgstr ""
+#, fuzzy
+#~ msgid "LOCALE subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/recode-dialog.c:881
-msgid "Recode into Different Variables"
-msgstr "Hercodeer in Andere Variabelen"
+#, fuzzy
+#~ msgid "LISTING subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/recode-dialog.c:884
-msgid "Recode into Same Variables"
-msgstr "Hercodeer in Zelfde Variabelen"
+#, fuzzy
+#~ msgid "LOWRES subcommand may be given only once."
+#~ msgstr "REORDER subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/recode-dialog.c:912 src/ui/gui/recode-dialog.c:1014
-msgid "Old"
-msgstr "Oud"
+#, fuzzy
+#~ msgid "LPI subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/recode-dialog.c:927 src/ui/gui/recode-dialog.c:1022
-msgid "New"
-msgstr "Nieuw"
+#, fuzzy
+#~ msgid "MENUS subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/recode-dialog.c:1270
-msgid "Recode into Different Variables: Old and New Values "
-msgstr "Hercodeer in Andere Variabelen: Oude en Nieuwe Waardes "
+#, fuzzy
+#~ msgid "MESSAGES subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/recode-dialog.c:1271
-msgid "Recode into Same Variables: Old and New Values"
-msgstr "Hercodeer in Zelfde Variabelen: Oude en Nieuwe Waardes "
+#, fuzzy
+#~ msgid "MEXPAND subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/recode.glade:197
-msgid "System-Missing"
-msgstr ""
+#, fuzzy
+#~ msgid "MITERATE subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/recode.glade:211
-msgid "System-or user-missing"
-msgstr ""
+#, fuzzy
+#~ msgid "MNEST subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/recode.glade:245
-msgid "through"
-msgstr "tot"
+#, fuzzy
+#~ msgid "MPRINT subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/recode.glade:283
-msgid "Range, LOWEST thru value"
-msgstr "Range, LAAGSTE tot waarde"
+#, fuzzy
+#~ msgid "MXERRS subcommand may be given only once."
+#~ msgstr "REORDER subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/recode.glade:297
-msgid "Range, value thru HIGHEST"
-msgstr "Range, waarde tot HOOGSTE"
+#, fuzzy
+#~ msgid "MXLOOPS subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/recode.glade:327
-msgid "All other values"
-msgstr "Alle andere waardes"
+#, fuzzy
+#~ msgid "MXMEMORY subcommand may be given only once."
+#~ msgstr "REORDER subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/recode.glade:363
-msgid "Range:"
-msgstr ""
+#, fuzzy
+#~ msgid "MXWARNS subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/recode.glade:380
-msgid "Old Value"
-msgstr "Oude Waarde"
+#, fuzzy
+#~ msgid "NULLINE subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/recode.glade:462
-msgid "System Missing"
-msgstr ""
+#, fuzzy
+#~ msgid "PRINTBACK subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/recode.glade:476
-msgid "Copy old values"
-msgstr "Kopieer oude waardes"
+#, fuzzy
+#~ msgid "PROMPT subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/recode.glade:500
-msgid "Value: "
-msgstr "Waarde: "
+#, fuzzy
+#~ msgid "RESULTS subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/recode.glade:530
-msgid "New Value"
-msgstr "Nieuwe Waarde"
+#, fuzzy
+#~ msgid "RIB subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/recode.glade:590
-msgid "Convert numeric strings to numbers ('5' -> 5)"
-msgstr "Converteer numerieke strings naar nummers ('5' -> 5)"
+#, fuzzy
+#~ msgid "RRB subcommand may be given only once."
+#~ msgstr "REORDER subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/recode.glade:608
-msgid "Output variables are strings"
-msgstr "Uitvoer variabelen zijn strings"
+#, fuzzy
+#~ msgid "SAFER subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/recode.glade:620
-msgid "Width: "
-msgstr "Breedte: "
+#, fuzzy
+#~ msgid "SCOMPRESSION subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/recode.glade:743
-msgid "(optional case selection condition)"
-msgstr "(optionele case selectie conditie)"
+#, fuzzy
+#~ msgid "SCRIPTTAB subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/recode.glade:823
-msgid "Name:"
-msgstr "Naam:"
+#, fuzzy
+#~ msgid "SEED subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/recode.glade:867
-msgid "Change"
-msgstr "Wijzig"
+#, fuzzy
+#~ msgid "TB1 subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/recode.glade:885
-msgid "Output Variable"
-msgstr "Uitvoer Variabele"
+#, fuzzy
+#~ msgid "TBFONTS subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/recode.glade:965
-msgid "Old and New Values"
-msgstr "Oude en Nieuwe Waardes"
+#, fuzzy
+#~ msgid "UNDEFINED subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/regression-dialog.c:41
-msgid "Coeff"
-msgstr ""
+#, fuzzy
+#~ msgid "WIB subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/regression-dialog.c:43
-msgid "Anova"
-msgstr ""
+#, fuzzy
+#~ msgid "WRB subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
+
+#, fuzzy
+#~ msgid "WIDTH subcommand may be given only once."
+#~ msgstr "REORDER subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/regression-dialog.c:44
-msgid "Bcov"
-msgstr ""
+#, fuzzy
+#~ msgid "WORKSPACE subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/regression.glade:40
-msgid "Save..."
-msgstr "Opslaan..."
+#, fuzzy
+#~ msgid "XSORT subcommand may be given only once."
+#~ msgstr "REORDER subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/regression.glade:145
-msgid "Dependent"
-msgstr "Afhankelijk"
+#~ msgid "WORKSPACE must be at least 1MB"
+#~ msgstr "WORKSPACE moet minstens 1MB zijn"
 
-#: src/ui/gui/regression.glade:193
-msgid "Independent"
-msgstr "Onafhankelijk"
+#~ msgid "%s is obsolete."
+#~ msgstr "%s is verouderd."
 
-#: src/ui/gui/regression.glade:243
-msgid "Predicted values"
-msgstr "Voorspelde waardes"
+#~ msgid "%s is not implemented."
+#~ msgstr "%s is niet geïmplementeerd."
 
-#: src/ui/gui/regression.glade:252
-msgid "Residuals"
-msgstr "Restant"
+#~ msgid "Active file compression is not implemented."
+#~ msgstr "Actief bestand compressie is niet geïmplementeerd."
 
-#: src/ui/gui/reliability.glade:89
-msgid "_Items:"
-msgstr ""
+#~ msgid "EPOCH must be 1500 or later."
+#~ msgstr "EPOCH moet 1500 of later zijn."
 
-#: src/ui/gui/reliability.glade:111
-msgid "Model:\t"
-msgstr ""
+#~ msgid "expecting AUTOMATIC or year"
+#~ msgstr "AUTOMATIC of jaar verwacht"
 
-#: src/ui/gui/reliability.glade:122
-msgid ""
-"Alpha\n"
-"Split"
-msgstr ""
-"Alpha\n"
-"Splits"
+#~ msgid "LENGTH must be at least 1."
+#~ msgstr "LENGTH moet tenminste 1 zijn."
 
-#: src/ui/gui/reliability.glade:144
-msgid "Variables in first split:"
-msgstr "Variabelen in eerste splits:"
+#~ msgid "%s is not a recognised encoding or locale name"
+#~ msgstr "%s is geen herkende codering of lokale naam"
 
-#: src/ui/gui/select-cases-dialog.c:82
-#, c-format
-msgid "Approximately %3d%% of all cases."
-msgstr "Ongeveer %3d%% van alle cases."
+#~ msgid "WIDTH must be at least 40."
+#~ msgstr "WIDTH moet tenminste 40 zijn."
 
-#: src/ui/gui/select-cases-dialog.c:83
-#, c-format
-msgid "Exactly %3d cases from the first %3d cases."
-msgstr "Precies %3d cases van de eerste %3d cases."
+#~ msgid ""
+#~ "FORMAT requires numeric output format as an argument.  Specified format %"
+#~ "s is of type string."
+#~ msgstr ""
+#~ "FORMAT vereist numeriek uitvoer formaat als een argument. Opgegeven "
+#~ "formaat %s is van het type string."
 
-#: src/ui/gui/select-cases-dialog.c:223
-#, c-format
-msgid "%d thru %d"
-msgstr "%d tot %d"
+#, fuzzy
+#~ msgid "%s is %s."
+#~ msgstr "%s van %s"
 
-#: src/ui/gui/syntax-editor.glade:163
-msgid "_Run"
-msgstr ""
+#, fuzzy
+#~ msgid "TABLES subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/syntax-editor.glade:172
-msgid "All"
-msgstr "Alles"
+#, fuzzy
+#~ msgid "MISSING subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/syntax-editor.glade:180
-msgid "Selection"
-msgstr "Selectie"
+#, fuzzy
+#~ msgid "TABLES subcommand must be given."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/syntax-editor.glade:188
-msgid "Current Line"
-msgstr "Huidige Regel"
+#~ msgid ""
+#~ "Missing mode REPORT not allowed in general mode.  Assuming MISSING=TABLE."
+#~ msgstr ""
+#~ "Missing modus REPORT niet toegestaan in algemene modus.  MISSING=TABLE "
+#~ "aangenomen."
 
-#: src/ui/gui/syntax-editor.glade:197
-msgid "To End"
-msgstr "Naar Einde"
+#~ msgid "Too many cross-tabulation variables or dimensions."
+#~ msgstr "Te veel cross-tabulation variabelen of dimensies."
 
-#: src/ui/gui/text-data-import-dialog.c:461
-#, c-format
-msgid "Could not open \"%s\": %s"
-msgstr "Kon \"%s\": %s niet openen"
+#~ msgid "expecting BY"
+#~ msgstr "BY verwacht"
 
-#: src/ui/gui/text-data-import-dialog.c:477
-#, c-format
-msgid "Error reading \"%s\": %s"
-msgstr "Fout bij lezen \"%s\": %s"
+#~ msgid "VARIABLES must be specified before TABLES."
+#~ msgstr "VARIABLES dient voor TABLES gespecificeerd te worden."
 
-#: src/ui/gui/text-data-import-dialog.c:480
-#, c-format
-msgid ""
-"Failed to read \"%s\", because it contains a line over %d bytes long and "
-"therefore appears not to be a text file."
-msgstr ""
-"Lezen van \"%s\" mislukt omdat het een regel bevat die meer dan %d bytes "
-"lang is en daarom is het geen tekst bestand."
+#~ msgid "Maximum value (%ld) less than minimum value (%ld)."
+#~ msgstr "Maximum waarde (%ld) is kleiner dan minimum waarde (%ld)."
 
-#: src/ui/gui/text-data-import-dialog.c:494
-#, c-format
-msgid "\"%s\" is empty."
-msgstr "\"%s\" is leeg."
+#~ msgid "Summary."
+#~ msgstr "Overzicht."
 
-#: src/ui/gui/text-data-import-dialog.c:539
-msgid "Import Delimited Text Data"
-msgstr "Importeer Delimited Text Data"
+#~ msgid "Valid"
+#~ msgstr "Geldig"
 
-#: src/ui/gui/text-data-import-dialog.c:590
-msgid "Importing Delimited Text Data"
-msgstr "Importeren Delimited Text Data"
+#~ msgid "Percent"
+#~ msgstr "Procent"
 
-#: src/ui/gui/text-data-import-dialog.c:749
-msgid ""
-"This assistant will guide you through the process of importing data into "
-"PSPP from a text file with one line per case,  in which fields are separated "
-"by tabs, commas, or other delimiters.\n"
-"\n"
-msgstr ""
-"De assistent zal je begeleiden door het proces van het importeren van data "
-"in PSPP van een tekst bestand met 1 regel per case, waarin velden zijn "
-"gescheiden door tabs, kommas of andere scheidingstekens.\n"
+#~ msgid "count"
+#~ msgstr "aantal"
 
-#: src/ui/gui/text-data-import-dialog.c:755
-#, c-format
-msgid "The selected file contains %zu line of text.  "
-msgid_plural "The selected file contains %zu lines of text.  "
-msgstr[0] "Het geselecteerde bestand bevat %zu regel text.  "
-msgstr[1] "Het geselecteerde bestand bevat %zu regels text. "
+#~ msgid "row %"
+#~ msgstr "rij %"
 
-#: src/ui/gui/text-data-import-dialog.c:763
-#, c-format
-msgid "The selected file contains approximately %lu line of text.  "
-msgid_plural "The selected file contains approximately %lu lines of text.  "
-msgstr[0] "Het geselecteerde bestand bevat ongeveer %lu regel text. "
-msgstr[1] "Het geselecteerde bestand bevat ongeveer %lu regels text. "
+#~ msgid "column %"
+#~ msgstr "kolom %"
 
-#: src/ui/gui/text-data-import-dialog.c:769
-#, c-format
-msgid ""
-"Only the first %zu line of the file will be shown for preview purposes in "
-"the following screens.  "
-msgid_plural ""
-"Only the first %zu lines of the file will be shown for preview purposes in "
-"the following screens.  "
-msgstr[0] ""
-"Alleen de eerste %zu regel van het bestand worden getoond voor preview "
-"doeleinden in de volgende schermen."
-msgstr[1] ""
-"Alleen de eerste %zu regels van het bestand worden getoond voor preview "
-"doeleinden in de volgende schermen."
+#~ msgid "total %"
+#~ msgstr "totaal %"
 
-#: src/ui/gui/text-data-import-dialog.c:776
-msgid "You may choose below how much of the file should actually be imported."
-msgstr ""
-"Hieronder kunt u kiezen hoeveel van het bestand daadwerkelijk geïmporteerd "
-"moet worden."
+#~ msgid "expected"
+#~ msgstr "verwacht"
 
-#: src/ui/gui/text-data-import-dialog.c:1523
-#: src/ui/gui/text-data-import-dialog.c:1768
-msgid "This input line has too few separators to fill in this field."
-msgstr ""
-"Deze invoer regel heeft te weinig scheidingstekens om dit veld te vullen."
+#~ msgid "residual"
+#~ msgstr "overblijvend"
 
-#: src/ui/gui/text-data-import-dialog.c:1759
-#, c-format
-msgid "Field content \"%.*s\" cannot be parsed in format %s."
-msgstr "Veld inhoud \"%.*s\" kan niet ontleed worden in formaat %s."
+#~ msgid "Symmetric measures."
+#~ msgstr "Symmetrische metingen."
 
-#: src/ui/gui/text-data-import.glade:8
-msgid "Importing Textual Data"
-msgstr ""
+#~ msgid "Lower"
+#~ msgstr "Lager"
 
-#: src/ui/gui/text-data-import.glade:18
-msgid ""
-"This assistant will guide you through the process of importing data into "
-"PSPP from a text file with one line per case,  in which fields are separated "
-"by tabs, commas, or other delimiters.\n"
-"\n"
-"The selected file contains N lines of text.  Only the first M of these will "
-"be shown for preview purposes in the following screens.  You may choose "
-"below how much of the file should actually be imported."
-msgstr ""
-"Deze assistant zal je assisteren bij het proces van het importeren van data "
-"in PSPP vanuit een text bestand met een regel per case en velden gescheiden "
-"met tabs, kommas of andere scheiders.\n"
-" \n"
-"Het geselecteerde bestand bevat N regels text.  Alleen de eerste  M hiervan "
-"zullen getoond worden voor voorbeeld doeleinden in de volgende schermen.  Je "
-"kunt hieronder kiezen hoeveel van het bestand daadwerkelijk geïmporteerd "
-"moet worden."
+#~ msgid "Upper"
+#~ msgstr "Hoger"
 
-#: src/ui/gui/text-data-import.glade:50
-msgid "All cases"
-msgstr "Alle cases"
+#~ msgid "Directional measures."
+#~ msgstr "Directioneel metingen."
 
-#: src/ui/gui/text-data-import.glade:66 src/ui/gui/text-data-import.glade:122
-msgid "Only first "
-msgstr "Alleen eerste "
+#~ msgid "For cohort %s = %g"
+#~ msgstr "Voor cohort %s = %g"
 
-#: src/ui/gui/text-data-import.glade:97
-msgid " cases"
-msgstr ""
+#~ msgid "For cohort %s = %.*s"
+#~ msgstr "Voor cohort %s = %.*s"
 
-#: src/ui/gui/text-data-import.glade:152
-msgid "% of file (approximately)"
-msgstr "% van bestand (ongeveer)"
+#, fuzzy
+#~ msgid "VARIABLES subcommand must be given."
+#~ msgstr "VARIABLES subprogramma is niet het juiste met PAIRS"
 
-#: src/ui/gui/text-data-import.glade:173
-msgid "<b>Amount to Import</b>"
-msgstr "<b>Aantal te Importeren</b>"
+#~ msgid "Not creating plot because data set is empty."
+#~ msgstr "Er wordt geen plot aangemaakt omdat de data set leeg is."
 
-#: src/ui/gui/text-data-import.glade:195
-msgid "Select Data to Import"
-msgstr "Selecteer Data om te Importeren"
+#~ msgid "Normal Q-Q Plot of %s"
+#~ msgstr "Normal Q-Q Plot van %s"
 
-#: src/ui/gui/text-data-import.glade:205
-msgid "Select the first line of the data file that contains data."
-msgstr "Selecteer de eerste regel van het data bestand die data bevat."
+#~ msgid "Observed Value"
+#~ msgstr "Waargenomen Waarde"
 
-#: src/ui/gui/text-data-import.glade:236
-msgid "Line above selected line contains variable names"
-msgstr "De regel boven de geselecteerde data regel bevat de variabele namen"
+#~ msgid "Detrended Normal Q-Q Plot of %s"
+#~ msgstr "Detrended Normal Q-Q Plot van %s"
 
-#: src/ui/gui/text-data-import.glade:251
-msgid "Choose Separators"
-msgstr "Kies scheidingstekens"
+#~ msgid "%s and %s are mutually exclusive"
+#~ msgstr "%s en %s zijn wederzijds exclusief"
 
-#: src/ui/gui/text-data-import.glade:299
-msgid "C_ustom"
-msgstr ""
+#~ msgid "Case Processing Summary"
+#~ msgstr "Case Bewerkings Overzicht"
 
-#: src/ui/gui/text-data-import.glade:314
-msgid "Slas_h (/)"
-msgstr ""
+#~ msgid "Highest"
+#~ msgstr "Hoogste"
 
-#: src/ui/gui/text-data-import.glade:331
-msgid "Semicolo_n (;)"
-msgstr "Pu_ntkomma(;)"
+#~ msgid "Lowest"
+#~ msgstr "Laagste"
 
-#: src/ui/gui/text-data-import.glade:348
-msgid "P_ipe (|)"
-msgstr ""
+#~ msgid "Extreme Values"
+#~ msgstr "Extreme Waardes"
 
-#: src/ui/gui/text-data-import.glade:363
-msgid "H_yphen (-)"
-msgstr ""
+#~ msgid "Case Number"
+#~ msgstr "Case Nummer"
 
-#: src/ui/gui/text-data-import.glade:380
-msgid "Co_mma (,)"
-msgstr "Ko_mma (,)"
+#, fuzzy
+#~ msgid "`(' expected after LIMIT specifier of FORMAT subcommand."
+#~ msgstr "')' verwacht na variabele lijst bij RENAME subopdracht."
 
-#: src/ui/gui/text-data-import.glade:397
-msgid "_Colon (:)"
-msgstr "_Dubbele punt (:)"
+#, fuzzy
+#~ msgid "BARCHART subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/text-data-import.glade:412
-msgid "Ban_g (!)"
-msgstr "Uitroepteken(!)"
+#, fuzzy
+#~ msgid "`(' expected after MINIMUM specifier of BARCHART subcommand."
+#~ msgstr "')' verwacht na variabele lijst bij RENAME subopdracht."
 
-#: src/ui/gui/text-data-import.glade:427
-msgid "Ta_b"
-msgstr ""
+#, fuzzy
+#~ msgid "`(' expected after MAXIMUM specifier of BARCHART subcommand."
+#~ msgstr "')' verwacht na variabele lijst bij RENAME subopdracht."
 
-#: src/ui/gui/text-data-import.glade:442
-msgid "_Space"
-msgstr "_Spatie"
+#, fuzzy
+#~ msgid "PIECHART subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/text-data-import.glade:456
-msgid "<b>Separators</b>"
-msgstr "<b>Scheiders</b>"
+#, fuzzy
+#~ msgid "`(' expected after MINIMUM specifier of PIECHART subcommand."
+#~ msgstr "')' verwacht na variabele lijst bij RENAME subopdracht."
 
-#: src/ui/gui/text-data-import.glade:489
-msgid "Doubled quote mark treated as escape"
-msgstr ""
+#, fuzzy
+#~ msgid "`(' expected after MAXIMUM specifier of PIECHART subcommand."
+#~ msgstr "')' verwacht na variabele lijst bij RENAME subopdracht."
 
-#: src/ui/gui/text-data-import.glade:526
-msgid "Quote separator characters with"
-msgstr "Citeer scheidingstekens met"
+#, fuzzy
+#~ msgid "`(' expected after MINIMUM specifier of HISTOGRAM subcommand."
+#~ msgstr "')' verwacht na variabele lijst bij RENAME subopdracht."
 
-#: src/ui/gui/text-data-import.glade:543
-msgid "<b>Quoting</b>"
-msgstr "<b>Citeren</b>"
+#, fuzzy
+#~ msgid "Number expected after MINIMUM specifier of HISTOGRAM subcommand."
+#~ msgstr "')' verwacht na variabele lijst bij RENAME subopdracht."
 
-#: src/ui/gui/text-data-import.glade:594
-msgid "<b>Fields Preview</b>"
-msgstr "<b>Velden Voorbeeld</b>"
+#, fuzzy
+#~ msgid "`(' expected after MAXIMUM specifier of HISTOGRAM subcommand."
+#~ msgstr "')' verwacht na variabele lijst bij RENAME subopdracht."
 
-#: src/ui/gui/text-data-import.glade:612
-msgid "Adjust Variable Formats"
-msgstr "Pas Variabele Formaat aan"
+#, fuzzy
+#~ msgid "Number expected after MAXIMUM specifier of HISTOGRAM subcommand."
+#~ msgstr "')' verwacht na variabele lijst bij RENAME subopdracht."
 
-#: src/ui/gui/text-data-import.glade:622
-msgid ""
-"Check the data formats displayed below and fix any that are incorrect.  You "
-"may set other variable properties now or later."
-msgstr ""
-"Controleer de data formaten hieronder en verbeter degene die foutief zijn. "
-"Je mag andere variabele opties nu of later zetten."
+#, fuzzy
+#~ msgid "`(' expected after INCREMENT specifier of HISTOGRAM subcommand."
+#~ msgstr "')' verwacht na variabele lijst bij RENAME subopdracht."
 
-#: src/ui/gui/text-data-import.glade:665
-msgid "<b>Variables</b>"
-msgstr "<b>Variabelen</b>"
+#, fuzzy
+#~ msgid "HBAR subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/text-data-import.glade:712
-msgid "<b>Data Preview</b>"
-msgstr "<b>Data Voorbeeld</b>"
+#, fuzzy
+#~ msgid "`(' expected after MINIMUM specifier of HBAR subcommand."
+#~ msgstr "')' verwacht na variabele lijst bij RENAME subopdracht."
 
-#: src/ui/gui/t-test.glade:56 src/ui/gui/t-test.glade:165
-msgid "Define Groups"
-msgstr "Definieer Groepen"
+#, fuzzy
+#~ msgid "`(' expected after MAXIMUM specifier of HBAR subcommand."
+#~ msgstr "')' verwacht na variabele lijst bij RENAME subopdracht."
 
-#: src/ui/gui/t-test.glade:123 src/ui/gui/t-test.glade:549
-#: src/ui/gui/t-test.glade:761
-msgid "Test Variable(s):"
-msgstr "Test Variabel(en):"
+#, fuzzy
+#~ msgid "`)' expected after argument for FREQ specifier of HBAR."
+#~ msgstr "')' verwacht na variabele lijst bij RENAME subopdracht."
 
-#: src/ui/gui/t-test.glade:258
-msgid "Group_2 value:"
-msgstr "Groep_2 waarde:"
+#, fuzzy
+#~ msgid "`)' expected after argument for PERCENT specifier of HBAR."
+#~ msgstr "')' verwacht na variabele lijst bij RENAME subopdracht."
 
-#: src/ui/gui/t-test.glade:271
-msgid "Group_1 value:"
-msgstr "Groep_1 waarde:"
+#, fuzzy
+#~ msgid "`(' expected after INCREMENT specifier of HBAR subcommand."
+#~ msgstr "'(' verwacht bij RENAME subopdracht."
 
-#: src/ui/gui/t-test.glade:320
-msgid "_Cut point:"
-msgstr "_Knip punt:"
+#, fuzzy
+#~ msgid "`)' expected after argument for INCREMENT specifier of HBAR."
+#~ msgstr "')' verwacht na variabele lijst bij RENAME subopdracht."
 
-#: src/ui/gui/t-test.glade:349
-msgid "_Use specified values:"
-msgstr "_Gebruik gespecificeerde waardes:"
+#~ msgid ""
+#~ "At most one of BARCHART, HISTOGRAM, or HBAR should be given.  HBAR will "
+#~ "be assumed.  Argument values will be given precedence increasing along "
+#~ "the order given."
+#~ msgstr ""
+#~ "Op zijn meest een van BARCHART, HISTOGRAM, of HBAR moet opgegeven "
+#~ "worden.  HBAR wordt aangenomen.  Argument waardes zullen gebruikt worden "
+#~ "in opgegeven volgorde."
 
-#: src/ui/gui/t-test.glade:431
-msgid "Exclude cases _analysis by analysis"
-msgstr "Sluit cases _analysis by analysis uit"
+#~ msgid ""
+#~ "MAX must be greater than or equal to MIN, if both are specified.  "
+#~ "However, MIN was specified as %g and MAX as %g.  MIN and MAX will be "
+#~ "ignored."
+#~ msgstr ""
+#~ "MAX moet groter of gelijk zijn aan MIN, als beiden zijn opgegeven. Maar, "
+#~ "MIN was opgegeven als %g en MAX als %g. MIN en MAX worden genegeerd."
 
-#: src/ui/gui/t-test.glade:442
-msgid "Exclude cases _listwise"
-msgstr "Sluit cases _listwise uit"
+#~ msgid "Variable %s specified multiple times on VARIABLES subcommand."
+#~ msgstr "Variabele %s is meerdere keren opgegeven bij VARIABLES subopdracht."
 
-#: src/ui/gui/t-test.glade:594
-msgid "Test Value: "
-msgstr "Test Waarde:"
+#~ msgid "`)' expected after GROUPED interval list."
+#~ msgstr "')' verwacht na GROUPED interval lijst."
 
-#: src/ui/gui/t-test-options.c:60
-#, c-format
-msgid "Confidence Interval: %2d %%"
-msgstr ""
+#~ msgid "Variables %s specified on GROUPED but not on VARIABLES."
+#~ msgstr "Variabele %s gespecificeerd bij GROUPED maar niet bij VARIABLES."
 
-#: src/ui/gui/t-test-paired-samples.c:226
-msgid "Var 1"
-msgstr ""
+#~ msgid "Variables %s specified multiple times on GROUPED subcommand."
+#~ msgstr ""
+#~ "Variabele %s is meerdere keren gespecificeerd bij GROUPED subopdracht."
 
-#: src/ui/gui/t-test-paired-samples.c:227
-msgid "Var 2"
-msgstr ""
+#~ msgid "Value Label"
+#~ msgstr "Waarde Label"
 
-#: src/ui/gui/variable-info-dialog.c:76
-#, c-format
-msgid "Label: %s\n"
-msgstr ""
+#~ msgid "No valid data for variable %s; statistics not displayed."
+#~ msgstr ""
+#~ "Geen geldige data voor variabele %s; statistieken worden niet getoond."
 
-#: src/ui/gui/variable-info-dialog.c:83
-#, c-format
-msgid "Type: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "DEPENDENT subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/variable-info-dialog.c:87
-#, c-format
-msgid "Missing Values: %s\n"
-msgstr "Ontbrekende Waardes: %s\n"
+#, fuzzy
+#~ msgid "BY subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/variable-info-dialog.c:92
-#, c-format
-msgid "Measurement Level: %s\n"
-msgstr "Meetniveau: %s\n"
+#, fuzzy
+#~ msgid "WITH subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/variable-info-dialog.c:107
-msgid "Value Labels:\n"
-msgstr "Waarde Labels:\n"
+#~ msgid "No valid data found. This command was skipped."
+#~ msgstr "Geen geldige data gevonden. Deze opdracht is overgeslagen."
 
-#: src/ui/gui/variable-info-dialog.c:117
-#, c-format
-msgid "%s %s\n"
-msgstr ""
+#~ msgid "Missing required subcommand TABLES."
+#~ msgstr "Missing vereist subopdracht TABLES."
 
-#: src/ui/gui/variable-info-dialog.glade:49
-msgid "Variable Information:"
-msgstr "Variabele Informatie:"
+#~ msgid "TABLES subcommand may not appear more than once."
+#~ msgstr "TABLES subopdracht mag niet meer dan 1 keer voorkomen."
 
-#: src/ui/gui/var-sheet-dialogs.glade:7
-msgid "Variable Type"
-msgstr "Variabele Type"
+#, fuzzy
+#~ msgid "METHOD subcommand may be given only once."
+#~ msgstr "REORDER subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/gui/var-sheet-dialogs.glade:75
-msgid "Scientific notation"
-msgstr "Wetenschappelijke notatie"
+#~ msgid ""
+#~ "The specified value of HI (%d) is lower than the specified value of LO (%"
+#~ "d)"
+#~ msgstr ""
+#~ "De opgegeven waarde van HI (%d) is lager dan de opgegeven waarde van LO (%"
+#~ "d)"
 
-#: src/ui/gui/var-sheet-dialogs.glade:123
-msgid "Custom currency"
-msgstr "Aangepaste waarde"
+#~ msgid ""
+#~ "%d expected values were given, but the specified range (%d-%d) requires "
+#~ "exactly %d values."
+#~ msgstr ""
+#~ "%d verwachte waardes waren opgegeven, maar de opgegeven range (%d-%d) "
+#~ "vereist precies %d waardes."
 
-#: src/ui/gui/var-sheet-dialogs.glade:217
-msgid "positive"
-msgstr "positief"
+#~ msgid ""
+#~ "PAIRED was specified but the number of variables preceding WITH (%zu) did "
+#~ "not match the number following (%zu)."
+#~ msgstr ""
+#~ "PAIRED was opgegeven maar het aantal variabelen voor WITH (%zu) komt niet "
+#~ "overeen met het aantal er achter (%zu)."
 
-#: src/ui/gui/var-sheet-dialogs.glade:223
-msgid "negative"
-msgstr "negatief"
+#~ msgid "`%s' is not a variable name"
+#~ msgstr "'%s' is geen variabele naam"
 
-#: src/ui/gui/var-sheet-dialogs.glade:236
-msgid "Sample"
-msgstr "Steekproef"
+#~ msgid "Significance"
+#~ msgstr "Significantie "
 
-#: src/ui/gui/var-sheet-dialogs.glade:286
-msgid "Width:"
-msgstr "Breedte:"
+#~ msgid "Between Groups"
+#~ msgstr "Tussen Groepen"
 
-#: src/ui/gui/var-sheet-dialogs.glade:330
-msgid "Decimal Places:"
-msgstr "Decimalen:"
+#~ msgid "Within Groups"
+#~ msgstr "Binnen Groepen"
 
-#: src/ui/gui/var-sheet-dialogs.glade:499
-msgid "Value Label:"
-msgstr "Waarde Label:"
+#~ msgid "Assume equal variances"
+#~ msgstr "Veronderstelt gelijke variantie"
 
-#: src/ui/gui/var-sheet-dialogs.glade:677
-msgid "_No missing values"
-msgstr ""
+#~ msgid "Does not assume equal"
+#~ msgstr "Veronderstelt niet gelijk"
 
-#: src/ui/gui/var-sheet-dialogs.glade:747
-msgid "_Discrete missing values"
-msgstr ""
+#~ msgid "%s of %s by %s"
+#~ msgstr "%s van %s per %s"
 
-#: src/ui/gui/var-sheet-dialogs.glade:782
-msgid "_Low:"
-msgstr "_Laag:"
+#~ msgid "%s of %s"
+#~ msgstr "%s van %s"
 
-#: src/ui/gui/var-sheet-dialogs.glade:801
-msgid "_High:"
-msgstr "_Hoog:"
+#~ msgid "Cannot create new rank variable.  All candidates in use."
+#~ msgstr "Kan geen rang variabele creëren. Alle kandidaten zijn in gebruik."
 
-#: src/ui/gui/var-sheet-dialogs.glade:826
-msgid "Di_screte value:"
-msgstr ""
+#~ msgid "Variables Created By RANK"
+#~ msgstr "Variabelen gecreëerd door RANK"
 
-#: src/ui/gui/var-sheet-dialogs.glade:856
-msgid "_Range plus one optional discrete missing value"
-msgstr ""
+#~ msgid "%s into %s(%s of %s using %s BY %s)"
+#~ msgstr "%s in %s(%s van %s gebruikt %s PER %s)"
 
-#: src/ui/gui/weight-cases-dialog.c:85
-#, c-format
-msgid "Weight cases by %s"
-msgstr "Weeg cases by %s"
+#~ msgid "%s into %s(%s of %s BY %s)"
+#~ msgstr "%s in %s(%s van %s PER %s)"
 
-#: src/ui/source-init-opts.c:42
-msgid ""
-"set to `compatible' if you want output calculated from broken algorithms"
-msgstr ""
-"zet op 'compatible' als je uitvoer wilt die door 'broken algorithms' wordt "
-"berekend"
+#~ msgid "%s into %s(%s of %s using %s)"
+#~ msgstr "%s in %s(%s van %s gebruikt %s"
 
-#: src/ui/source-init-opts.c:43
-msgid "Append DIR to include path"
-msgstr "Voeg DIR toe aan include pad"
+#~ msgid "%s into %s(%s of %s)"
+#~ msgstr "%s in %s(%s van %s)"
 
-#: src/ui/source-init-opts.c:44
-msgid "Clear include path"
-msgstr "Maak include pad leeg"
+#~ msgid ""
+#~ "FRACTION has been specified, but NORMAL and PROPORTION rank functions "
+#~ "have not been requested.  The FRACTION subcommand will be ignored."
+#~ msgstr ""
+#~ "FRACTION is gespecificeerd maar NORMAL en PROPORTION rangschik functies "
+#~ "ziin niet gevraagd. De FRACTION subopdracht wordt genegeerd."
 
-#: src/ui/source-init-opts.c:45
-msgid "Disable execution of .pspp/rc at startup"
-msgstr "Schakel uitvoeren van .pspp/rc bij het opstarten uit"
+#~ msgid "Variable %s already exists."
+#~ msgstr "Variabele %s bestaat al."
 
-#: src/ui/source-init-opts.c:46
-msgid "Set configuration directory to DIR"
-msgstr "Zet configuratie directory op DIR"
+#~ msgid "Too many variables in INTO clause."
+#~ msgstr "Te veel variabelen in INTO clause."
 
-#: src/ui/source-init-opts.c:47
-msgid "Don't allow some unsafe operations"
-msgstr "Sta sommige onveilige operaties niet toe"
+#, fuzzy
+#~ msgid "DEPENDENT subcommand must be given."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/source-init-opts.c:48
-msgid "Set to `compatible' if you want only to accept SPSS compatible syntax"
-msgstr ""
-"Zet op 'compatible' als je alleen SPSS compatible syntax wilt accepteren"
+#~ msgid "Dependent variable must be numeric."
+#~ msgstr "Afhankelijke variabele moet numeriek zijn."
 
-#: src/ui/source-init-opts.c:83
-#, c-format
-msgid "Algorithm must be either \"compatible\" or \"enhanced\"."
-msgstr "Algoritme moet zijn \"compatible\" of \"enhanced\"."
+#, fuzzy
+#~ msgid "SCALE subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/source-init-opts.c:124
-#, c-format
-msgid "Syntax must be either \"compatible\" or \"enhanced\"."
-msgstr "Syntax moet zijn \"compatible\" of \"enhanced\"."
+#, fuzzy
+#~ msgid "MODEL subcommand may be given only once."
+#~ msgstr "REORDER subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/terminal/main.c:115
-msgid "PSPP --- A program for statistical analysis"
-msgstr "PSPP -- Een programma voor statistische analyse"
+#~ msgid "Part 1"
+#~ msgstr "Deel 1"
 
-#: src/ui/terminal/main.c:116
-msgid "FILE1, FILE2 ... FILEn"
-msgstr ""
+#~ msgid "Part 2"
+#~ msgstr "Deel 2"
 
-#: src/ui/terminal/main.c:119 src/ui/terminal/terminal-opts.c:177
-msgid "Options affecting input and output locations:"
-msgstr "Opties die invoer en uitvoer locaties beinvloeden:"
+#~ msgid "Equal Length"
+#~ msgstr "Gelijke Lengte"
 
-#: src/ui/terminal/main.c:122 src/ui/terminal/terminal-opts.c:178
-msgid "Diagnostic options:"
-msgstr "Diagnose opties:"
+#~ msgid "Unequal Length"
+#~ msgstr "Ongelijke Lengte"
 
-#: src/ui/terminal/main.c:156
-msgid ""
-"Stopping syntax file processing here to avoid a cascade of dependent command "
-"failures."
-msgstr ""
-"Stop syntax bestand uitvoering hier om een cascade van afhankelijke opdracht "
-"fouten te voorkomen."
+#~ msgid "Excluded"
+#~ msgstr "Uitgesloten"
 
-#: src/ui/terminal/msg-ui.c:67
-#, c-format
-msgid "Cannot open %s (%s). Writing errors to stdout instead.\n"
-msgstr "Kan %s (%s) niet openen. Schrijf fouten naar stdout inplaats.\n"
+#, fuzzy
+#~ msgid "TESTVAL subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/terminal/msg-ui.c:94
-msgid "Terminating execution of syntax file due to error."
-msgstr "Breek uitvoering van syntax bestand af vanwege fout."
+#, fuzzy
+#~ msgid "CRITERIA subcommand may be given only once."
+#~ msgstr "RENAME subopdracht mag maximaal 1 keer gegeven worden."
 
-#: src/ui/terminal/msg-ui.c:96
-#, c-format
-msgid "Errors (%d) exceeds limit (%d)."
-msgstr "Fouten (%d) overschrijdt limiet (%d)."
+#, fuzzy
+#~ msgid "`(' expected after CIN specifier of CRITERIA subcommand."
+#~ msgstr "')' verwacht na variabele lijst bij RENAME subopdracht."
 
-#: src/ui/terminal/msg-ui.c:99
-#, c-format
-msgid "Warnings (%d) exceed limit (%d)."
-msgstr "Waarschuwings (%d) overschrijdt limiet (%d)."
+#, fuzzy
+#~ msgid "Number expected after CIN specifier of CRITERIA subcommand."
+#~ msgstr "')' verwacht na variabele lijst bij RENAME subopdracht."
 
-#: src/ui/terminal/msg-ui.c:150
-msgid "error"
-msgstr "fout"
+#, fuzzy
+#~ msgid ""
+#~ "Exactly one of TESTVAL, GROUPS and PAIRS subcommands must be specified."
+#~ msgstr "TESTVAL, GROUPS en PAIRS subopdracht zijn wederzijds uitsluitend."
 
-#: src/ui/terminal/msg-ui.c:151
-msgid "warning"
-msgstr "waarschuwing"
+#, fuzzy
+#~ msgid "VARIABLES subcommand may not be used with PAIRS."
+#~ msgstr "VARIABLES subprogramma is niet het juiste met PAIRS"
 
-#: src/ui/terminal/terminal.c:72
-#, c-format
-msgid "could not access definition for terminal `%s'"
-msgstr "kon definitie voor terminal '%s' niet benaderen"
+#~ msgid "One or more VARIABLES must be specified."
+#~ msgstr "Een of meer VARIABLES moeten gespecificeerd zijn."
 
-#: src/ui/terminal/terminal-opts.c:41
-msgid "Increase diagnostic verbosity level"
-msgstr "Verhoog diagnose zichtbaarheids niveau"
+#~ msgid ""
+#~ "When applying GROUPS to a string variable, two values must be specified."
+#~ msgstr ""
+#~ "By het toepassen van GROUPS op een string variabele moeten twee waardes "
+#~ "opgegeven zijn."
 
-#: src/ui/terminal/terminal-opts.c:68
-msgid "Send error messages to FILE (appended)"
-msgstr "Stuur fout meldingen naar FILE (aanvullend)"
+#~ msgid "At least two variables must be specified on PAIRS."
+#~ msgstr "Ten minste 2 variabelen moeten opgegeven worden bij PAIRS."
 
-#: src/ui/terminal/terminal-opts.c:71
-msgid "Select output driver DEVICE and disable defaults"
-msgstr "Selecteer uitvoer driver DEVICE en schakel defaults uit"
+#~ msgid "Mean Difference"
+#~ msgstr "Gemiddelde Verschil"
 
-#: src/ui/terminal/terminal-opts.c:74
-msgid "Print a list of known driver classes, then exit"
-msgstr "Print een lijst van bekende driver classes en eindig daarna"
+#~ msgid "Correlation"
+#~ msgstr "Correlatie"
 
-#: src/ui/terminal/terminal-opts.c:76
-msgid "Start an interactive session"
-msgstr "Start een interactieve sessie"
+#~ msgid "Save As"
+#~ msgstr "Opslaan Als"
 
 #~ msgid "Bad variable width %d."
 #~ msgstr "Foutieve variabele breedte %d."
diff --git a/po/pt_BR.po b/po/pt_BR.po
new file mode 100644 (file)
index 0000000..9cfe8f1
--- /dev/null
@@ -0,0 +1,6386 @@
+# translation of pspp-0.6.2-pre4 to Brazilian Portuguese
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+# This file is distributed under the same licence as the PSPP package.
+# Michel Almada de Castro Boaventura <michel@cecaps.ufmg.br>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: pspp-0.6.2-pre4\n"
+"Report-Msgid-Bugs-To: pspp-dev@gnu.org\n"
+"POT-Creation-Date: 2009-07-08 20:24-0700\n"
+"PO-Revision-Date: 2009-09-07 02:30-0300\n"
+"Last-Translator: Michel Almada de Castro Boaventura <michel@cecaps.ufmg.br>\n"
+"Language-Team: Brazilian Portuguese <ldp-br@bazar.conectiva.com.br>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: src/data/any-reader.c:57
+#, c-format
+msgid "An error occurred while opening \"%s\": %s."
+msgstr "Ocorreu um erro ao abrir \"%s\": %s."
+
+#: src/data/any-reader.c:93
+#, c-format
+msgid "\"%s\" is not a system or portable file."
+msgstr "\"%s\" não é um arquivo de sistema ou portátil."
+
+# Inline?
+#: src/data/any-reader.c:99 src/data/any-writer.c:63
+msgid "The inline file is not allowed here."
+msgstr "O arquivo inline não é permitido aqui."
+
+#: src/data/calendar.c:81
+#, c-format
+msgid "Month %d is not in acceptable range of 0 to 13."
+msgstr "O mês %d não está no intervalo aceitável de 0 a 13."
+
+#: src/data/calendar.c:89
+#, c-format
+msgid "Day %d is not in acceptable range of 0 to 31."
+msgstr "O dia %d não está no intervalo aceitável de 0 a 31."
+
+#: src/data/calendar.c:96
+#, c-format
+msgid "Date %04d-%d-%d is before the earliest acceptable date of 1582-10-15."
+msgstr "A data %04d-%d-%d é anterior à data mais antiga aceitável, 1582-10-15."
+
+#: src/data/case-tmpfile.c:57
+#, c-format
+msgid "failed to create temporary file"
+msgstr "falha ao criar arquivo temporário."
+
+#: src/data/case-tmpfile.c:131
+#, c-format
+msgid "seeking in temporary file"
+msgstr "procurando no arquivo temporário."
+
+#: src/data/case-tmpfile.c:153
+#, c-format
+msgid "reading temporary file"
+msgstr "lendo arquivo temporário."
+
+#: src/data/case-tmpfile.c:155
+#, c-format
+msgid "unexpected end of file reading temporary file"
+msgstr "fim inesperado ao ler arquivo temporário"
+
+#: src/data/case-tmpfile.c:175
+#, c-format
+msgid "writing to temporary file"
+msgstr "escrevendo no arquivo temporário."
+
+#: src/data/casereader-filter.c:221
+msgid "At least one case in the data read had a weight value that was user-missing, system-missing, zero, or negative.  These case(s) were ignored."
+msgstr "Pelo menos um caso nos dados lidos tinha uma ponderação que era user-missing, system-missing, zero ou negativo. Este(s) caso(s) foi(foram) ignorado(s)."
+
+#: src/data/data-in.c:262 src/data/data-in.c:452
+msgid "Field contents are not numeric."
+msgstr "Os conteúdo do campo não são numéricos."
+
+#: src/data/data-in.c:264 src/data/data-in.c:454
+msgid "Number followed by garbage."
+msgstr "Número seguido por lixo."
+
+#: src/data/data-in.c:275
+msgid "Invalid numeric syntax."
+msgstr "Sintaxe numérica inválida."
+
+#: src/data/data-in.c:284 src/data/data-in.c:467
+msgid "Too-large number set to system-missing."
+msgstr "Número muito grande definido como system-missing."
+
+#: src/data/data-in.c:289 src/data/data-in.c:472
+msgid "Too-small number set to zero."
+msgstr "Número muito pequeno definido como zero."
+
+#: src/data/data-in.c:315
+msgid "All characters in field must be digits."
+msgstr "Todos os caracteres no campo devem ser dígitos."
+
+#: src/data/data-in.c:338
+msgid "Unrecognized character in field."
+msgstr "Caractere não reconhecido no campo."
+
+#: src/data/data-in.c:362 src/data/data-in.c:636
+msgid "Field must have even length."
+msgstr "Campo deve ter tamanho par."
+
+#: src/data/data-in.c:367 src/data/data-in.c:647
+msgid "Field must contain only hex digits."
+msgstr "Campo deve conter apenas dígitos hexadecimais."
+
+#: src/data/data-in.c:686 src/data/data-in.c:733
+msgid "Syntax error in date field."
+msgstr "Erro de sintaxe no campo de data."
+
+#: src/data/data-in.c:702
+#, c-format
+msgid "Day (%ld) must be between 1 and 31."
+msgstr "Dia (%ld) deve estar entre 1 e 31."
+
+#: src/data/data-in.c:749
+msgid "Delimiter expected between fields in date."
+msgstr "Delimitador esperado entre campos na data."
+
+#: src/data/data-in.c:823
+msgid "Unrecognized month format.  Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names."
+msgstr "Formato de mês não reconhecido. Meses devem ser especificados como números Arábicos ou Romanos, ou com pelo menos 3 letras de seus nomes em Inglês."
+
+#: src/data/data-in.c:850
+#, c-format
+msgid "Year (%ld) must be between 1582 and 19999."
+msgstr "Ano (%ld) deve estar entre 1582 e 19999."
+
+# duvida na tradução.
+#: src/data/data-in.c:862
+#, c-format
+msgid "Trailing garbage \"%.*s\" following date."
+msgstr "Procurando na lixeira \"%.*s\" seguindo por data."
+
+#: src/data/data-in.c:878
+msgid "Julian day must have exactly three digits."
+msgstr "Dia Juliano deve ter exatamente três dígitos."
+
+#: src/data/data-in.c:883
+#, c-format
+msgid "Julian day (%ld) must be between 1 and 366."
+msgstr "Dia Juliano (%ld) deve estar entre 1 e 366."
+
+#: src/data/data-in.c:907
+#, c-format
+msgid "Quarter (%ld) must be between 1 and 4."
+msgstr "Quartil (%ld) deve estar entre 1 e 4."
+
+#: src/data/data-in.c:927
+#, c-format
+msgid "Week (%ld) must be between 1 and 53."
+msgstr "Semana (%ld) deve estar entre 1 e 53."
+
+#: src/data/data-in.c:940
+msgid "Delimiter expected between fields in time."
+msgstr "Delimitador esperado entre campos de tempo."
+
+#: src/data/data-in.c:960
+#, c-format
+msgid "Minute (%ld) must be between 0 and 59."
+msgstr "Minute (%ld) deve estar entre 0 e 59."
+
+#: src/data/data-in.c:1000
+msgid "Unrecognized weekday name.  At least the first two letters of an English weekday name must be specified."
+msgstr "Dia da semana não reconhecido. Pelo menos duas letras do nome em inglês devem ser especificadas."
+
+#: src/data/data-in.c:1138
+#, c-format
+msgid "`%c' expected in date field."
+msgstr "`%c' esperado no campo de data."
+
+#: src/data/data-in.c:1179
+#, c-format
+msgid "column %d"
+msgstr "coluna %d"
+
+#: src/data/data-in.c:1181
+#, c-format
+msgid "columns %d-%d"
+msgstr "colunas %d-%d"
+
+#: src/data/data-in.c:1185
+#, c-format
+msgid "%s field) "
+msgstr "%s campo)"
+
+#: src/data/data-out.c:446
+#, c-format
+msgid "Weekday number %f is not between 1 and 7."
+msgstr "Numero do dia na semana %f não está entre 1 e 7."
+
+#: src/data/data-out.c:467
+#, c-format
+msgid "Month number %f is not between 1 and 12."
+msgstr "Número do mês %f não está entre 1 e 12."
+
+#: src/data/dict-class.c:52
+msgid "ordinary"
+msgstr "ordinária"
+
+#: src/data/dict-class.c:54
+msgid "system"
+msgstr "system"
+
+#: src/data/dict-class.c:56
+msgid "scratch"
+msgstr "rascunho"
+
+#: src/data/dictionary.c:882
+msgid "At least one case in the data file had a weight value that was user-missing, system-missing, zero, or negative.  These case(s) were ignored."
+msgstr "Pelo menos um caso no arquivo de dados tinha um valor de ponderação que era user-missing, system-missing, zero ou negativo. Este(s) caso(s) foi(foram) ignorado(s)."
+
+#: src/data/dictionary.c:1180
+#, c-format
+msgid "Truncating document line to %d bytes."
+msgstr "Linha do documento truncada para %d bytes."
+
+#: src/data/file-handle-def.c:462
+#, c-format
+msgid "Can't read from %s as a %s because it is already being read as a %s."
+msgstr "Impossível ler de %s como uma %s porque ela já está sendo lida como uma %s."
+
+#: src/data/file-handle-def.c:466
+#, c-format
+msgid "Can't write to %s as a %s because it is already being written as a %s."
+msgstr "Impossível gravar em %s como um %s porque ele já está sendo gravado em um %s."
+
+#: src/data/file-handle-def.c:473
+#, c-format
+msgid "Can't re-open %s as a %s."
+msgstr "Impossível reabrir %s como %s."
+
+#: src/data/file-name.c:131
+#, c-format
+msgid "searching for \"%s\" in path \"%s\""
+msgstr "Procurando \"%s\" no caminho \"%s\""
+
+#: src/data/file-name.c:146
+#, c-format
+msgid "...found \"%s\""
+msgstr "...\"%s\" encontrado"
+
+#: src/data/file-name.c:153
+msgid "...not found"
+msgstr "...não encontrado"
+
+#: src/data/file-name.c:243
+#, c-format
+msgid "Not opening pipe file `%s' because SAFER option set."
+msgstr "Não abrindo arquivo pipe '%s' porque a opção SAFER está ativada."
+
+#: src/data/format.c:235
+msgid "Input format"
+msgstr "Formato de entrada"
+
+#: src/data/format.c:235
+msgid "Output format"
+msgstr "Formato de saída"
+
+#: src/data/format.c:244
+#, c-format
+msgid "Format %s may not be used for input."
+msgstr "Formato %s não pode ser utilizado como entrada."
+
+#: src/data/format.c:251
+#, c-format
+msgid "%s specifies width %d, but %s requires an even width."
+msgstr "%s especifica comprimento %d, mas %s requer um comprimento de tamanho par."
+
+#: src/data/format.c:260
+#, c-format
+msgid "%s %s specifies width %d, but %s requires a width between %d and %d."
+msgstr "%s %s especifica comprimento %d, mas %s requer um comprimento entre %d e %d."
+
+#: src/data/format.c:269
+#, c-format
+msgid "%s %s specifies %d decimal place, but %s does not allow any decimals."
+msgid_plural "%s %s specifies %d decimal places, but %s does not allow any decimals."
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/data/format.c:280
+#, c-format
+msgid "%s %s specifies %d decimal place, but the given width allows at most %d decimals."
+msgid_plural "%s %s specifies %d decimal places, but the given width allows at most %d decimals."
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/data/format.c:287
+#, c-format
+msgid "%s %s specifies %d decimal place, but the given width does not allow for any decimals."
+msgid_plural "%s %s specifies %d decimal places, but the given width does not allow for any decimals."
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/data/format.c:326
+#, c-format
+msgid "%s variables are not compatible with %s format %s."
+msgstr "%s variáveis não são compatíveis com %s formato %s."
+
+#: src/data/format.c:327 src/data/sys-file-reader.c:651
+#: src/ui/gui/data-editor.glade:1190 src/ui/gui/psppire-var-store.c:605
+#: src/ui/gui/psppire.glade:2176
+msgid "String"
+msgstr "String"
+
+#: src/data/format.c:327 src/data/sys-file-reader.c:651
+#: src/ui/gui/data-editor.glade:1079 src/ui/gui/psppire-var-store.c:598
+#: src/ui/gui/psppire.glade:2131
+msgid "Numeric"
+msgstr "Numérico"
+
+#: src/data/format.c:328 src/data/sys-file-reader.c:1162
+#: src/data/sys-file-reader.c:1164
+#: src/language/dictionary/apply-dictionary.c:78
+#: src/language/dictionary/apply-dictionary.c:79
+#: src/language/xforms/recode.c:472 src/language/xforms/recode.c:473
+#: src/language/xforms/recode.c:485 src/language/xforms/recode.c:486
+msgid "numeric"
+msgstr "numérico"
+
+#: src/data/format.c:328 src/data/sys-file-reader.c:1162
+#: src/data/sys-file-reader.c:1164
+#: src/language/dictionary/apply-dictionary.c:78
+#: src/language/dictionary/apply-dictionary.c:79
+#: src/language/xforms/recode.c:472 src/language/xforms/recode.c:473
+#: src/language/xforms/recode.c:485 src/language/xforms/recode.c:486
+msgid "string"
+msgstr "string"
+
+#: src/data/format.c:346
+#, c-format
+msgid "String variable with width %d is not compatible with format %s."
+msgstr "String de tamanho %d não é compatível com o formato %s"
+
+#: src/data/gnumeric-reader.c:33
+msgid "Support for Gnumeric files was not compiled into this installation of PSPP"
+msgstr "Suporte para arquivos Gnumeric não foi compilado nesta instalação do PSPP."
+
+#: src/data/gnumeric-reader.c:366
+#, c-format
+msgid "Error opening \"%s\" for reading as a gnumeric file: %s."
+msgstr "Ocorreu um erro ao abrir \"%s\" para ler como arquivo gnumeric: %s."
+
+#: src/data/gnumeric-reader.c:386
+#, c-format
+msgid "Invalid cell range \"%s\""
+msgstr "Intervalo de células \"%s\" inválido"
+
+#: src/data/gnumeric-reader.c:523 src/data/psql-reader.c:184
+#, c-format
+msgid "Cannot create variable name from %s"
+msgstr "Impossível criar nome de variável para %s"
+
+#: src/data/gnumeric-reader.c:535
+#, c-format
+msgid "Selected sheet or range of spreadsheet \"%s\" is empty."
+msgstr ""
+
+#: src/data/make-file.c:64
+#, c-format
+msgid "%s: Creating temporary file: %s."
+msgstr "%s: Criando arquivo temporário: %s"
+
+#: src/data/make-file.c:106
+#, c-format
+msgid "%s: Creating file: %s."
+msgstr "%s: Criando arquivo: %s"
+
+#: src/data/make-file.c:144
+#, c-format
+msgid "Opening %s for writing: %s."
+msgstr "Abrindo %s para gravação: %s."
+
+#: src/data/make-file.c:153
+#, c-format
+msgid "Opening stream for %s: %s."
+msgstr "Abrindo stream para %s: %s."
+
+#: src/data/make-file.c:182
+#, c-format
+msgid "Creating temporary file to replace %s: %s."
+msgstr "Criando arquivo temporário para substituir %s: %s."
+
+#: src/data/make-file.c:193
+#, c-format
+msgid "Creating temporary file %s: %s."
+msgstr "Criando arquivo temporário %s: %s."
+
+#: src/data/make-file.c:205
+#, c-format
+msgid "Opening stream for temporary file %s: %s."
+msgstr "Abrindo stream para arquivo temporário %s: %s."
+
+#: src/data/make-file.c:246
+#, c-format
+msgid "Replacing %s by %s: %s."
+msgstr "Substituindo %s por %s: %s."
+
+#: src/data/make-file.c:274
+#, c-format
+msgid "Removing %s: %s."
+msgstr "Removendo %s: %s."
+
+#: src/data/por-file-reader.c:99
+#, c-format
+msgid "portable file %s corrupt at offset 0x%lx: "
+msgstr "arquivo portable %s corrompido no offset 0x%lx: "
+
+#: src/data/por-file-reader.c:128
+#, c-format
+msgid "reading portable file %s at offset 0x%lx: "
+msgstr "lendo arquivo portable %s no offset 0x%lx: "
+
+#: src/data/por-file-reader.c:156
+#, c-format
+msgid "Error closing portable file \"%s\": %s."
+msgstr "Erro ao fechar arquivo portável \"%s\": %s."
+
+#: src/data/por-file-reader.c:208
+msgid "unexpected end of file"
+msgstr "fim de arquivo inesperado"
+
+#. TRANSLATORS: this fragment will be interpolated into
+#. messages in fh_lock() that identify types of files.
+#: src/data/por-file-reader.c:268 src/data/por-file-writer.c:148
+msgid "portable file"
+msgstr "arquivo portável"
+
+#: src/data/por-file-reader.c:276
+#, c-format
+msgid "An error occurred while opening \"%s\" for reading as a portable file: %s."
+msgstr "Ocorreu um erro ao abrir \"%s\" para ler como arquivo portable: %s."
+
+#: src/data/por-file-reader.c:297
+msgid "Data record expected."
+msgstr "Registro de dados esperado."
+
+#: src/data/por-file-reader.c:379
+msgid "Number expected."
+msgstr "Número esperado."
+
+#: src/data/por-file-reader.c:407
+msgid "Missing numeric terminator."
+msgstr "Terminador de número ausente."
+
+#: src/data/por-file-reader.c:430
+msgid "Invalid integer."
+msgstr "Inteiro inválido."
+
+#: src/data/por-file-reader.c:441
+#, c-format
+msgid "Bad string length %d."
+msgstr "Tamanho de string %d incorreto."
+
+#: src/data/por-file-reader.c:502
+#, c-format
+msgid "%s: Not a portable file."
+msgstr "%s: Não é um arquivo portável."
+
+#: src/data/por-file-reader.c:519
+#, c-format
+msgid "Unrecognized version code `%c'."
+msgstr "Versão de código '%c' não reconhecida."
+
+#: src/data/por-file-reader.c:528
+#, c-format
+msgid "Bad date string length %zu."
+msgstr "Comprimento %zu de string de data inválido"
+
+#: src/data/por-file-reader.c:530
+#, c-format
+msgid "Bad time string length %zu."
+msgstr "Comprimento de String de tempo %zu errado."
+
+#: src/data/por-file-reader.c:572
+#, c-format
+msgid "%s: Bad format specifier byte (%d).  Variable will be assigned a default format."
+msgstr "%s: Byte especificador de formato inválido (%d). Variável será definida com um formato padrão."
+
+#: src/data/por-file-reader.c:593
+#, c-format
+msgid "Numeric variable %s has invalid format specifier %s."
+msgstr "Variável numérica %s tem um especificador de formato inválido: %s."
+
+#: src/data/por-file-reader.c:597
+#, c-format
+msgid "String variable %s with width %d has invalid format specifier %s."
+msgstr "Variável string %s com tamanho %d tem um especificador de formato inválido %s."
+
+#: src/data/por-file-reader.c:621
+msgid "Expected variable count record."
+msgstr "Registro de quantidade de variáveis esperado."
+
+#: src/data/por-file-reader.c:625
+#, c-format
+msgid "Invalid number of variables %d."
+msgstr "Número de variáveis inválido: %d."
+
+#: src/data/por-file-reader.c:635
+#, c-format
+msgid "Weight variable name (%s) truncated."
+msgstr "Nome da variável de ponderação (%s) truncado."
+
+#: src/data/por-file-reader.c:650
+msgid "Expected variable record."
+msgstr "Registro de variável esperado."
+
+#: src/data/por-file-reader.c:654
+#, c-format
+msgid "Invalid variable width %d."
+msgstr "Comprimento %d de variável inválido."
+
+#: src/data/por-file-reader.c:662
+#, c-format
+msgid "Invalid variable name `%s' in position %d."
+msgstr "Nome de variável '%s' inválido na posição %d."
+
+#: src/data/por-file-reader.c:666
+#, c-format
+msgid "Bad width %d for variable %s."
+msgstr "Comprimento %d incorreto para variável %s."
+
+#: src/data/por-file-reader.c:681
+#, c-format
+msgid "Duplicate variable name %s in position %d."
+msgstr "Nome de variável %s duplicado na posição %d."
+
+#: src/data/por-file-reader.c:682
+#, c-format
+msgid "Duplicate variable name %s in position %d renamed to %s."
+msgstr "Nome de variável %s duplicado na posição %d renomeado para %s."
+
+#: src/data/por-file-reader.c:725
+#, c-format
+msgid "Weighting variable %s not present in dictionary."
+msgstr "Variável de ponderação %s ausente no dicionário."
+
+#: src/data/por-file-reader.c:772
+#, c-format
+msgid "Unknown variable %s while parsing value labels."
+msgstr "Variável %s desconhecida ao analisar rótulos dos valores."
+
+#: src/data/por-file-reader.c:775
+#, c-format
+msgid "Cannot assign value labels to %s and %s, which have different variable types."
+msgstr "Impossível atribuir rótulos de valores para %s e %s, as quais possuem diferentes tipos."
+
+#: src/data/por-file-writer.c:140
+#, c-format
+msgid "Invalid decimal digits count %d.  Treating as %d."
+msgstr "Quantidade %d de dígitos decimais inválida. Tratando como %d."
+
+#: src/data/por-file-writer.c:160
+#, c-format
+msgid "Error opening \"%s\" for writing as a portable file: %s."
+msgstr "Erro ao abrir \"%s\" para escrever como arquivo portátil: %s."
+
+#: src/data/por-file-writer.c:500
+#, c-format
+msgid "An I/O error occurred writing portable file \"%s\"."
+msgstr "Um erro de E/S ocorreu ao escrever no arquivo portátil \"%s\"."
+
+#: src/data/psql-reader.c:42
+msgid "Support for reading postgres databases was not compiled into this installation of PSPP"
+msgstr "Suporte para ler bancos de dados postgres não foi compilado nesta instalação do PSPP"
+
+#: src/data/psql-reader.c:239
+msgid "Memory error whilst opening psql source"
+msgstr "Erro de memória ao abrir fonte psql"
+
+#: src/data/psql-reader.c:245
+#, c-format
+msgid "Error opening psql source: %s."
+msgstr "Erro abrindo fonte psql: %s."
+
+#: src/data/psql-reader.c:260
+#, c-format
+msgid "Postgres server is version %s. Reading from versions earlier than 8.0 is not supported."
+msgstr "A versão do Postgres é %s. Ler de versões anteriores à 8.0 não é suportado."
+
+#: src/data/psql-reader.c:280
+msgid "Connection is unencrypted, but unencrypted connections have not been permitted."
+msgstr "Conexão está descriptografada, mas conexões descriptografadas não foram permitidas."
+
+#: src/data/psql-reader.c:307 src/data/psql-reader.c:332
+#: src/data/psql-reader.c:342
+#, c-format
+msgid "Error from psql source: %s."
+msgstr "Erro do destino psql: %s."
+
+#: src/data/psql-reader.c:437
+#, c-format
+msgid "Unsupported OID %d.  SYSMIS values will be inserted."
+msgstr "OID %d não suportado. Valor SYSMIS será inserido."
+
+#: src/data/scratch-reader.c:54
+#, c-format
+msgid "Scratch file handle %s has not yet been written, using SAVE or another procedure, so it cannot yet be used for reading."
+msgstr "Arquivo de rascunho de identificador %s não foi ainda escrito, usando SAVE ou outro procedimento, portanto não pode ser usado ainda para leitura."
+
+#. TRANSLATORS: this fragment will be interpolated into
+#. messages in fh_lock() that identify types of files.
+#: src/data/scratch-writer.c:67 src/language/data-io/file-handle.q:181
+msgid "scratch file"
+msgstr "arquivo de rascunho"
+
+#: src/data/settings.c:685
+#, c-format
+msgid "%s: Custom currency string `%s' does not contain exactly three periods or commas (or it contains both)."
+msgstr "%s: String de moeda personalizada '%s' não contem exatamente três pontos ou vírgulas (ou ela contém ambos)."
+
+#: src/data/short-names.c:66
+msgid "Variable suffix too large."
+msgstr "Sufixo de variável muito grande."
+
+#. TRANSLATORS: this fragment will be interpolated into
+#. messages in fh_lock() that identify types of files.
+#: src/data/sys-file-reader.c:198 src/data/sys-file-writer.c:190
+msgid "system file"
+msgstr "arquivo de sistema"
+
+#: src/data/sys-file-reader.c:205
+#, c-format
+msgid "Error opening \"%s\" for reading as a system file: %s."
+msgstr "Erro ao abrir \"%s\" para leitura como arquivo de sistema: %s."
+
+#: src/data/sys-file-reader.c:244
+msgid "Misplaced type 4 record."
+msgstr "Registro de tipo 4 fora do lugar."
+
+#: src/data/sys-file-reader.c:255
+#, c-format
+msgid "Unrecognized record type %d."
+msgstr "Registro de tipo %d não reconhecido."
+
+#: src/data/sys-file-reader.c:294
+#, c-format
+msgid "File header claims %d variable positions but %d were read from file."
+msgstr "Cabeçalho do arquivo requer %d posições de variáveis, mas %d foram lidas do arquivo."
+
+#: src/data/sys-file-reader.c:334
+#, c-format
+msgid "Error closing system file \"%s\": %s."
+msgstr "Erro ao fechar arquivo de sistema \"%s\": %s."
+
+#: src/data/sys-file-reader.c:399 src/data/sys-file-reader.c:409
+msgid "This is not an SPSS system file."
+msgstr "Este não é um arquivo de sistema do SPSS."
+
+#: src/data/sys-file-reader.c:431
+msgid "Compression bias is not the usual value of 100, or system file uses unrecognized floating-point format."
+msgstr ""
+
+#: src/data/sys-file-reader.c:508
+#, c-format
+msgid "Invalid variable name `%s'."
+msgstr "Nome de variável '%s' inválido."
+
+#: src/data/sys-file-reader.c:512
+#, c-format
+msgid "Bad variable width %d."
+msgstr "Comprimento %d de variável inválido."
+
+#: src/data/sys-file-reader.c:516
+#, c-format
+msgid "Duplicate variable name `%s' within system file."
+msgstr "Nome de variável '%s' duplicado dentro do arquivo de sistema."
+
+#: src/data/sys-file-reader.c:524
+msgid "Variable label indicator field is not 0 or 1."
+msgstr "Campo indicador de rótulo de variável não é 0 ou 1."
+
+#: src/data/sys-file-reader.c:532
+#, c-format
+msgid "Variable %s has label of invalid length %zu."
+msgstr "Variável %s tem um rótulo de tamanho inválido %zu."
+
+#: src/data/sys-file-reader.c:551
+msgid "Numeric missing value indicator field is not -3, -2, 0, 1, 2, or 3."
+msgstr "Campo de indicador de missing numérico não é -3, -3, 0, 1, 2 ou 3."
+
+#: src/data/sys-file-reader.c:566
+msgid "String missing value indicator field is not 0, 1, 2, or 3."
+msgstr "Campo de indicação de valores ausentes de string não é 0, 1, 2 ou 3."
+
+#: src/data/sys-file-reader.c:569
+#, c-format
+msgid "Ignoring missing values on long string variable %s, which PSPP does not yet support."
+msgstr "Ignorando valores missing na variável de string longa %s, os quais PSPP não suporta ainda."
+
+#: src/data/sys-file-reader.c:598
+msgid "Missing string continuation record."
+msgstr "Faltando registro de continuação de string."
+
+#: src/data/sys-file-reader.c:632
+#, c-format
+msgid "Unknown variable format %<PRIu8>."
+msgstr "Variável de formato %<PRIu8> desconhecida."
+
+#: src/data/sys-file-reader.c:650
+#, c-format
+msgid "%s variable %s has invalid %s format %s."
+msgstr "%s variável %s tem um inválido %s formato %s."
+
+#: src/data/sys-file-reader.c:653
+msgid "print"
+msgstr "imprimir"
+
+#: src/data/sys-file-reader.c:653
+msgid "write"
+msgstr "escrever"
+
+#: src/data/sys-file-reader.c:657
+msgid "Suppressing further invalid format warnings."
+msgstr "Ocultando avisos de formato inválido subsequentes."
+
+#: src/data/sys-file-reader.c:675
+msgid "Weighting variable must be numeric."
+msgstr "Variável de ponderação deve ser numérica."
+
+#: src/data/sys-file-reader.c:689
+msgid "Multiple type 6 (document) records."
+msgstr "Múltiplos registros de tipo 6 (documento)."
+
+#: src/data/sys-file-reader.c:693
+#, c-format
+msgid "Number of document lines (%d) must be greater than 0."
+msgstr "Número de linhas do documento (%d) precisa ser maior que 0."
+
+#: src/data/sys-file-reader.c:701
+msgid "Document line contains null byte."
+msgstr "Linha do documento contém byte nulo."
+
+#: src/data/sys-file-reader.c:779
+msgid "Ignoring value labels for long string variables, which PSPP does not yet support."
+msgstr "Ignorando rótulos de valores para variável de string longa, os quais PSPP ainda não suporta."
+
+#: src/data/sys-file-reader.c:784
+#, c-format
+msgid "Unrecognized record type 7, subtype %d.  Please send a copy of this file, and the syntax which created it to %s"
+msgstr "Registro de tipo 7 e subtipo %d não reconhecido. Por favor, envie uma cópia deste arquivo bem como da sintaxe que o criou para %s"
+
+#: src/data/sys-file-reader.c:810
+#, c-format
+msgid "Bad size (%zu) or count (%zu) field on record type 7, subtype 3."
+msgstr "Tamanho (%zu) ou quantidade (%zu) inválidos de registro tipo 7, subtipo 3."
+
+#: src/data/sys-file-reader.c:830
+#, c-format
+msgid "Floating-point representation indicated by system file (%d) differs from expected (%d)."
+msgstr "Representação de ponto flutuante indicado pelo arquivo de sistema (%d) difere do esperado (%d)."
+
+#: src/data/sys-file-reader.c:843
+msgid "little-endian"
+msgstr "little-endian"
+
+#: src/data/sys-file-reader.c:843
+msgid "big-endian"
+msgstr "big-endian"
+
+#: src/data/sys-file-reader.c:844
+#, c-format
+msgid "Integer format indicated by system file (%s) differs from expected (%s)."
+msgstr "Formato inteiro indicado pelo arquivo de sistema (%s) difere do esperado (%s)."
+
+#: src/data/sys-file-reader.c:860
+#, c-format
+msgid "Bad size (%zu) or count (%zu) on extension 4."
+msgstr "Tamanho (%zu) ou quantidade (%zu) da extensão 4 inválido."
+
+#: src/data/sys-file-reader.c:864
+#, c-format
+msgid "File specifies unexpected value %g as SYSMIS."
+msgstr "Arquivo especifica valor inesperado %g como SYSMIS."
+
+#: src/data/sys-file-reader.c:866
+#, c-format
+msgid "File specifies unexpected value %g as HIGHEST."
+msgstr "Arquivo especifica valor inesperado %g como HIGHEST."
+
+#: src/data/sys-file-reader.c:868
+#, c-format
+msgid "File specifies unexpected value %g as LOWEST."
+msgstr "Arquivo especifica valor inesperado %g como LOWEST."
+
+#: src/data/sys-file-reader.c:884
+#, c-format
+msgid "Bad size %zu on extension 11."
+msgstr "Tamanho %zu inválido da extensão 11."
+
+#: src/data/sys-file-reader.c:896
+#, c-format
+msgid "Extension 11 has bad count %zu (for %zu variables)."
+msgstr "Extensão 11 tem uma quantidade inválida %zu (para %zu variáveis)."
+
+#: src/data/sys-file-reader.c:917
+#, c-format
+msgid "Invalid variable display parameters for variable %zu (%s).  Default parameters substituted."
+msgstr "Parâmetro de exibição de variáveis inválido para a variável %zu (%s). Parâmetros substituídos pelo padrão."
+
+#: src/data/sys-file-reader.c:963
+#, c-format
+msgid "Long variable mapping from %s to invalid variable name `%s'."
+msgstr "Variável longa mapeando de %s para um nome de variável inválido '%s'."
+
+#: src/data/sys-file-reader.c:973
+#, c-format
+msgid "Duplicate long variable name `%s' within system file."
+msgstr "Nome longo de variável '%s' duplicado dentro do arquivo de sistema."
+
+#: src/data/sys-file-reader.c:1028
+#, c-format
+msgid "%s listed as string of invalid length %s in very length string record."
+msgstr "%s listada como string de tamanho inválido %s em um registro de string muito longo."
+
+#: src/data/sys-file-reader.c:1038
+#, c-format
+msgid "%s listed in very long string record with width %s, which requires only one segment."
+msgstr "%s listado em registro de string muito longa com comprimento %s, o que requer apenas um segmento."
+
+#: src/data/sys-file-reader.c:1044
+#, c-format
+msgid "Very long string %s overflows dictionary."
+msgstr "String muito longa %s estoura dicionário."
+
+#: src/data/sys-file-reader.c:1058
+#, c-format
+msgid "Very long string with width %ld has segment %d of width %d (expected %d)"
+msgstr "String muito longa de tamanho %ld tem segmento %d de tamanho %d (esperado %d)"
+
+#: src/data/sys-file-reader.c:1103
+#, c-format
+msgid "Invalid number of labels: %d.  Ignoring labels."
+msgstr "Número de rótulos inválido: %d. Ignorando rótulos."
+
+#: src/data/sys-file-reader.c:1134
+msgid "Variable index record (type 4) does not immediately follow value label record (type 3) as it should."
+msgstr "Índice do registro da variável (tipo 4) não foi seguido imediatamente por um registro de rótulo de valores (tipo 3) como deveria."
+
+#: src/data/sys-file-reader.c:1141
+#, c-format
+msgid "Number of variables associated with a value label (%d) is not between 1 and the number of variables (%zu)."
+msgstr "Número de variáveis associadas com um rótulo de valores (%d) não está entre 1 e o número de variáveis (%zu)."
+
+#: src/data/sys-file-reader.c:1151
+#, c-format
+msgid "Value labels are not allowed on long string variables (%s)."
+msgstr "Rótulos de valores não são permitidos em variáveis string longas (%s)."
+
+#: src/data/sys-file-reader.c:1158
+#, c-format
+msgid "Variables associated with value label are not all of identical type.  Variable %s is %s, but variable %s is %s."
+msgstr "Variáveis associadas com rótulo de valores não são todas do mesmo tipo. Variável %s é %s, mas variável %s é %s."
+
+#: src/data/sys-file-reader.c:1191
+#, c-format
+msgid "Duplicate value label for %g on %s."
+msgstr "Rótulo de valores duplicados para %g em %s."
+
+#: src/data/sys-file-reader.c:1194
+#, c-format
+msgid "Duplicate value label for \"%.*s\" on %s."
+msgstr "Rótulo de valores duplicados para \"%.*s\" em %s."
+
+#: src/data/sys-file-reader.c:1272
+msgid "File ends in partial case."
+msgstr "Arquivo termina em um caso parcial."
+
+#: src/data/sys-file-reader.c:1280
+#, c-format
+msgid "Error reading case from file %s."
+msgstr "Erro lendo caso do arquivo %s."
+
+#: src/data/sys-file-reader.c:1377 src/data/sys-file-reader.c:1413
+msgid "Compressed data is corrupt."
+msgstr "Dado compactado está corrompido."
+
+#: src/data/sys-file-reader.c:1500
+#, c-format
+msgid "Variable index %d not in valid range 1...%d."
+msgstr "Índice de variável %d não está no intervalo válido de 1...%d."
+
+#: src/data/sys-file-reader.c:1505
+#, c-format
+msgid "Variable index %d refers to long string continuation."
+msgstr "Variável de índice %d se refere a uma continuação de uma string longa."
+
+#: src/data/sys-file-reader.c:1591
+#, c-format
+msgid "Suppressed %d additional variable map warnings."
+msgstr "Ocultados %d avisos adicionais de mapeamento de variável."
+
+#: src/data/sys-file-reader.c:1604
+#, c-format
+msgid "Variable map refers to unknown variable %s."
+msgstr "Mapeamento de variável se refere a uma variável desconhecida %s."
+
+#: src/data/sys-file-reader.c:1680
+#, c-format
+msgid "System error: %s."
+msgstr "Erro de sistema: %s."
+
+#: src/data/sys-file-reader.c:1682
+msgid "Unexpected end of file."
+msgstr "Fim de arquivo inesperado."
+
+#: src/data/sys-file-writer.c:163
+#, c-format
+msgid "Unknown system file version %d. Treating as version %d."
+msgstr "Arquivo de sistema de versão %d desconhecido. Tratando-o como versão %d."
+
+#: src/data/sys-file-writer.c:202
+#, c-format
+msgid "Error opening \"%s\" for writing as a system file: %s."
+msgstr "Erro ao abrir \"%s\" para gravação como arquivo de sistema: %s."
+
+#: src/data/sys-file-writer.c:737
+#, c-format
+msgid "An I/O error occurred writing system file \"%s\"."
+msgstr "Um erro de E/S ocorreu ao gravar arquivo de sistema \"%s\"."
+
+#: src/data/variable.c:209
+#, c-format
+msgid "Character `%c' (in %s) may not appear as the first character in a variable name."
+msgstr "Caractere '%c' (em %s) não pode aparecer como o primeiro caractere no nome de uma variável."
+
+#: src/data/variable.c:221
+#, c-format
+msgid "Character `%c' (in %s) may not appear in a variable name."
+msgstr "Caractere '%c' (em %s) não pode aparecer em um nome de variável."
+
+#: src/data/variable.c:249
+msgid "Variable name cannot be empty string."
+msgstr "Nome de variável não pode ser uma string vazia."
+
+#: src/data/variable.c:255
+#, c-format
+msgid "Variable name %s exceeds %d-character limit."
+msgstr "Nome de variável %s excede o limite de %d caracteres."
+
+#: src/data/variable.c:263
+#, c-format
+msgid "`%s' may not be used as a variable name because it is a reserved word."
+msgstr "'%s' não pode ser usada como nome de variável por ser uma palavra reservada."
+
+#: src/language/command.c:208
+#, c-format
+msgid "%s is unimplemented."
+msgstr "%s não está implementado."
+
+#: src/language/command.c:214
+#, c-format
+msgid "%s may be used only in testing mode."
+msgstr "%s só pode ser utilizado no modo de teste."
+
+#: src/language/command.c:220
+#, c-format
+msgid "%s may be used only in enhanced syntax mode."
+msgstr "%s só pode ser utilizado no modo de sintaxe otimizado."
+
+#: src/language/command.c:248
+msgid "Error encountered while ERROR=STOP is effective."
+msgstr "Erro encontrado enquanto ERROR=STOP está ativo."
+
+#: src/language/command.c:489
+msgid "expecting command name"
+msgstr "esperando nome de comando"
+
+#: src/language/command.c:503
+#, c-format
+msgid "Unknown command %s."
+msgstr "Comando %s desconhecido."
+
+#: src/language/command.c:628
+#, c-format
+msgid "%s is allowed only before the active file has been defined."
+msgstr "%s é permitido somente após o arquivo ativo ser definido."
+
+#: src/language/command.c:632
+#, c-format
+msgid "%s is allowed only after the active file has been defined."
+msgstr "%s é permitido somente antes do arquivo ativo ser definido."
+
+#: src/language/command.c:636
+#, c-format
+msgid "%s is allowed only inside INPUT PROGRAM."
+msgstr "%s é permitido somente dentro de INPUT PROGRAM."
+
+#: src/language/command.c:640
+#, c-format
+msgid "%s is allowed only inside FILE TYPE."
+msgstr "%s é permitido apenas dentro de FILE TYPE."
+
+#: src/language/command.c:647
+#, c-format
+msgid "%s is allowed only before the active file has been defined or inside INPUT PROGRAM."
+msgstr "%s é permitido apenas após o arquivo ativo ser definido, ou dentro de INPUT PROGRAM."
+
+#: src/language/command.c:651
+#, c-format
+msgid "%s is allowed only before the active file has been defined or inside FILE TYPE."
+msgstr "%s é permitido apenas após o arquivo ativo ser definido, ou dentro de FILE TYPE."
+
+#: src/language/command.c:655
+#, c-format
+msgid "%s is allowed only after the active file has been defined or inside INPUT PROGRAM."
+msgstr "%s é permitido apenas após o arquivo ativo ser definido, ou dentro de INPUT PROGRAM."
+
+#: src/language/command.c:659
+#, c-format
+msgid "%s is allowed only after the active file has been defined or inside FILE TYPE."
+msgstr "%s é permitido apenas antes do arquivo ativo ser definido, ou dentro de FILE TYPE."
+
+#: src/language/command.c:663
+#, c-format
+msgid "%s is allowed only inside INPUT PROGRAM or inside FILE TYPE."
+msgstr "%s é permitido apenas dentro de INPUT PROGRAM ou FILE TYPE."
+
+#: src/language/command.c:669
+#, c-format
+msgid "%s is allowed only after the active file has been defined, inside INPUT PROGRAM, or inside FILE TYPE."
+msgstr "%s é permitido apenas antes do arquivo ativo ser definido, dentro de INPUT PROGRAM, ou FILE TYPE."
+
+#: src/language/command.c:674
+#, c-format
+msgid "%s is allowed only before the active file has been defined, inside INPUT PROGRAM, or inside FILE TYPE."
+msgstr "%s é permitido apenas após o arquivo ativo ser definido, dentro de INPUT PROGRAM, ou FILE TYPE."
+
+#: src/language/command.c:692
+#, c-format
+msgid "%s is not allowed inside INPUT PROGRAM."
+msgstr "%s não é permitido dentro de INPUT PROGRAM."
+
+#: src/language/command.c:694
+#, c-format
+msgid "%s is not allowed inside FILE TYPE."
+msgstr "%s não é permitido dentro de FILE TYPE."
+
+#: src/language/command.c:773 src/language/command.c:881
+#: src/language/utilities/permissions.c:98
+msgid "This command not allowed when the SAFER option is set."
+msgstr "Este comando não é permitido quando a opção SAFER está ativa."
+
+#: src/language/command.c:785
+#, c-format
+msgid "Error removing `%s': %s."
+msgstr "Erro removendo '%s' : %s."
+
+#: src/language/command.c:835
+#, c-format
+msgid "Couldn't fork: %s."
+msgstr "Impossível criar fork: %s."
+
+#: src/language/command.c:850
+msgid "Interactive shell not supported on this platform."
+msgstr "Shell interativo não é suportado nesta plataforma."
+
+#: src/language/command.c:862
+msgid "Command shell not supported on this platform."
+msgstr "Shell de comando não é suportado nesta plataforma."
+
+#: src/language/command.c:868
+#, c-format
+msgid "Error executing command: %s."
+msgstr "Erro executando comando: %s."
+
+#: src/language/control/control-stack.c:27
+#, c-format
+msgid "%s without %s."
+msgstr "%s sem %s."
+
+#: src/language/control/control-stack.c:55
+#, c-format
+msgid "This command must appear inside %s...%s, without intermediate %s...%s."
+msgstr "Este comando deve aparecer dentro de %s...%s sem %s...%s intermediário."
+
+#: src/language/control/control-stack.c:72
+#, c-format
+msgid "This command cannot appear outside %s...%s."
+msgstr "Este comando não pode aparecer fora de %s...%s."
+
+#: src/language/control/do-if.c:177
+msgid "This command may not follow ELSE in DO IF...END IF."
+msgstr "Este comando não pode seguir ELSE em um DO IF...END IF."
+
+#: src/language/control/loop.c:214
+msgid "Only one index clause may be specified."
+msgstr "Apenas um índice de cláusula pode ser especificado."
+
+#: src/language/control/repeat.c:171
+#, c-format
+msgid "Dummy variable name \"%s\" hides dictionary variable \"%s\"."
+msgstr "Nome de variável dummy \"%s\" oculta variável de dicionário \"%s\"."
+
+#: src/language/control/repeat.c:176
+#, c-format
+msgid "Dummy variable name \"%s\" is given twice."
+msgstr "Variável dummy de nome \"%s\" foi informada duas vezes."
+
+#: src/language/control/repeat.c:222
+#, c-format
+msgid "Dummy variable \"%.*s\" had %d substitutions, so \"%.*s\" must also, but %d were specified."
+msgstr "Variável dummy \"%.*s\" tinha %d substituições, portanto \"%.*s\"também deveria ter, porém %d foram especificadas."
+
+#: src/language/control/repeat.c:334
+msgid "DO REPEAT may not nest in compatibility mode."
+msgstr "DO REPEAT não pode estar aninhado no modo de compatibilidade."
+
+#: src/language/control/repeat.c:436
+msgid "Ranges may only have integer bounds"
+msgstr "Intervalos podem ter somente intervalos inteiros"
+
+#: src/language/control/repeat.c:445
+#, c-format
+msgid "%g TO %g is an invalid range."
+msgstr "%g TO %g é um intervalo inválido."
+
+#: src/language/control/repeat.c:480
+msgid "String expected."
+msgstr "String esperada."
+
+#: src/language/control/repeat.c:499
+msgid "No matching DO REPEAT."
+msgstr "DO REPEAT não coincidindo."
+
+#: src/language/control/temporary.c:46
+msgid "This command may only appear once between procedures and procedure-like commands."
+msgstr ""
+
+#: src/language/data-io/data-list.c:128
+msgid "The END subcommand may only be used within INPUT PROGRAM."
+msgstr "O subcomando END só pode ser usado dentro de INPUT PROGRAM."
+
+#: src/language/data-io/data-list.c:134
+msgid "The END subcommand may only be specified once."
+msgstr "O subcomando END só pode ser especificado uma vez."
+
+#: src/language/data-io/data-list.c:172
+msgid "Only one of FIXED, FREE, or LIST may be specified."
+msgstr "Apenas um FIXED, FREE ou LIST pode ser especificado."
+
+#: src/language/data-io/data-list.c:237
+msgid "The END subcommand may be used only with DATA LIST FIXED."
+msgstr "O subcomando END só pode ser usado com DATA LIST FIXED."
+
+#: src/language/data-io/data-list.c:252
+msgid "At least one variable must be specified."
+msgstr "Pelo menos uma variável deve ser especificada."
+
+#: src/language/data-io/data-list.c:349 src/language/data-io/data-list.c:438
+#: src/language/data-io/get-data.c:528
+#, c-format
+msgid "%s is a duplicate variable name."
+msgstr "%s é um nome de variável duplicado."
+
+#: src/language/data-io/data-list.c:356
+#, c-format
+msgid "There is already a variable %s of a different type."
+msgstr "Já existe uma variável %s de um tipo diferente."
+
+#: src/language/data-io/data-list.c:363
+#, c-format
+msgid "There is already a string variable %s of a different width."
+msgstr "Já existe uma variável string %s de comprimento diferente."
+
+#: src/language/data-io/data-list.c:371
+#, c-format
+msgid "Cannot place variable %s on record %d when RECORDS=%d is specified."
+msgstr "Impossível colocar variável %s no registro %d quando RECORDS=%d está especificado."
+
+#: src/language/data-io/data-parser.c:455
+#: src/language/data-io/data-parser.c:464
+msgid "Quoted string extends beyond end of line."
+msgstr "String entre aspas se estende além do fim da linha."
+
+#: src/language/data-io/data-parser.c:520
+#, c-format
+msgid "Partial case of %d of %d records discarded."
+msgstr "Caso parcial dos registros %d a %d descartados."
+
+#: src/language/data-io/data-parser.c:566
+#, c-format
+msgid "Partial case discarded.  The first variable missing was %s."
+msgstr "Casos parciais descartados. A primeira variável ausente foi %s."
+
+#: src/language/data-io/data-parser.c:603
+#, c-format
+msgid "Missing value(s) for all variables from %s onward.  These will be filled with the system-missing value or blanks, as appropriate."
+msgstr ""
+
+#: src/language/data-io/data-parser.c:622
+msgid "Record ends in data not part of any field."
+msgstr "Registro termina em dados que não fazem parte de nenhum campo."
+
+#: src/language/data-io/data-parser.c:642
+#: src/language/data-io/data-parser.c:683 src/language/data-io/print.c:403
+#: src/language/dictionary/split-file.c:84
+#: src/language/dictionary/sys-file-info.c:161
+#: src/language/dictionary/sys-file-info.c:390
+#: src/language/dictionary/sys-file-info.c:634
+#: src/language/stats/descriptives.c:883 src/ui/gui/dict-display.c:245
+msgid "Variable"
+msgstr "Variável"
+
+#: src/language/data-io/data-parser.c:643 src/language/data-io/print.c:404
+msgid "Record"
+msgstr "Registro"
+
+#: src/language/data-io/data-parser.c:644 src/language/data-io/print.c:405
+#: src/ui/gui/crosstabs.glade:92 src/ui/gui/psppire-var-sheet.c:107
+msgid "Columns"
+msgstr "Colunas"
+
+#: src/language/data-io/data-parser.c:645
+#: src/language/data-io/data-parser.c:684 src/language/data-io/print.c:406
+msgid "Format"
+msgstr "Formato"
+
+#: src/language/data-io/data-parser.c:664
+#, c-format
+msgid "Reading %d record from %s."
+msgid_plural "Reading %d records from %s."
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/language/data-io/data-parser.c:700
+#, c-format
+msgid "Reading free-form data from %s."
+msgstr ""
+
+#. TRANSLATORS: this fragment will be interpolated into
+#. messages in fh_lock() that identify types of files.
+#: src/language/data-io/data-reader.c:122
+#: src/language/data-io/data-writer.c:58
+msgid "data file"
+msgstr "arquivo de dados"
+
+#: src/language/data-io/data-reader.c:149
+#, c-format
+msgid "Could not open \"%s\" for reading as a data file: %s."
+msgstr "Impossível abrir \"%s\" para leitura como um arquivo de dados: %s."
+
+#: src/language/data-io/data-reader.c:191
+msgid "Unexpected end-of-file while reading data in BEGIN DATA.  This probably indicates a missing or misformatted END DATA command.  END DATA must appear by itself on a single line with exactly one space between words."
+msgstr "Fim-de-arquivo inesperado ao ler dados com BEGIN DATA. Isto provavelmente indica um END DATA ausente ou mal formatado. END DATA deve aparecer sozinho em uma única linha com exatamente um espaço entre as palavras."
+
+#: src/language/data-io/data-reader.c:216
+#, c-format
+msgid "Error reading file %s: %s."
+msgstr "Erro lendo arquivo %s: %s."
+
+#: src/language/data-io/data-reader.c:219
+#, c-format
+msgid "Unexpected end of file reading %s."
+msgstr "Fim de arquivo não esperado lendo %s."
+
+#: src/language/data-io/data-reader.c:228
+#, c-format
+msgid "Unexpected end of file in partial record reading %s."
+msgstr "Fim de arquivo inesperado em registro parcial ao ler %s."
+
+#: src/language/data-io/data-reader.c:288
+#, c-format
+msgid "Corrupt block descriptor word at offset 0x%lx in %s."
+msgstr "Palavra descritora de bloco corrompida no offset 0x%lx em %s."
+
+#: src/language/data-io/data-reader.c:289
+#, c-format
+msgid "Corrupt record descriptor word at offset 0x%lx in %s."
+msgstr "Palavra descritora de registro corrompida no offset 0x%lx em %s."
+
+#: src/language/data-io/data-reader.c:302
+#, c-format
+msgid "Corrupt record size at offset 0x%lx in %s."
+msgstr "Tamanho de registro corrompido no offset 0x%lx em %s."
+
+#: src/language/data-io/data-reader.c:444
+msgid "Record exceeds remaining block length."
+msgstr "Registro excede tamanho restante de bloco."
+
+#: src/language/data-io/data-reader.c:518
+#, c-format
+msgid "Attempt to read beyond end-of-file on file %s."
+msgstr "Tentativa de ler arquivo %s além de seu fim."
+
+#: src/language/data-io/data-reader.c:521
+msgid "Attempt to read beyond END DATA."
+msgstr "Tentativa de ler além de END DATA."
+
+# inline?
+#: src/language/data-io/data-reader.c:707
+msgid "This command is not valid here since the current input program does not access the inline file."
+msgstr "Este comando não é válido aqui, pois a entrada do programa atual não acessa arquivo inline."
+
+#: src/language/data-io/data-writer.c:74
+#, c-format
+msgid "An error occurred while opening \"%s\" for writing as a data file: %s."
+msgstr "Um erro ocorreu ao abrir \"%s\" para gravação como um arquivo de dados: %s."
+
+#: src/language/data-io/data-writer.c:191
+#, c-format
+msgid "I/O error occurred writing data file \"%s\"."
+msgstr "Ocorreu um erro de E/S gravando no arquivo de dados \"%s\"."
+
+#: src/language/data-io/file-handle.q:65
+#, c-format
+msgid "File handle %s is already defined.  Use CLOSE FILE HANDLE before redefining a file handle."
+msgstr "Manipulador de arquivo %s já está definido. Use CLOSE FILE HANDLER antes de redefinir um manipulador."
+
+#: src/language/data-io/file-handle.q:120
+msgid "RECFORM must be specified with MODE=360."
+msgstr "RECFORM deve ser especificado com MODE=360"
+
+#: src/language/data-io/file-handle.q:131
+#, c-format
+msgid "The specified file mode requires LRECL.  Assuming %d-character records."
+msgstr "O modo de arquivo especificado requer LRECL. Assumindo registros de %d caracteres."
+
+#: src/language/data-io/file-handle.q:135
+#, c-format
+msgid "Record length (%ld) must be between 1 and %lu bytes.  Assuming %d-character records."
+msgstr "Tamanho de registro (%ld) deve ser entre 1 e %lu bytes. Assumindo registros de %d caracteres."
+
+#: src/language/data-io/file-handle.q:177
+msgid "file"
+msgstr "arquivo"
+
+#: src/language/data-io/file-handle.q:179
+msgid "inline file"
+msgstr "arquivo inline"
+
+#: src/language/data-io/file-handle.q:205
+msgid "expecting a file name or handle name"
+msgstr "esperando nome de arquivo ou de manipulador"
+
+#: src/language/data-io/file-handle.q:225
+#, c-format
+msgid "Handle for %s not allowed here."
+msgstr "Manipulador para %s não é permitido aqui."
+
+#: src/language/data-io/get-data.c:62
+#, c-format
+msgid "Unsupported TYPE %s"
+msgstr "TYPE %s não suportado"
+
+#: src/language/data-io/get-data.c:258
+#, c-format
+msgid "%s is allowed only with %s arrangement, but %s arrangement was stated or implied earlier in this command."
+msgstr ""
+
+#: src/language/data-io/get-data.c:313
+msgid "expecting FIXED or DELIMITED"
+msgstr "esperando FIXED ou DELIMITED"
+
+#: src/language/data-io/get-data.c:326
+msgid "Value of FIRSTCASE must be 1 or greater."
+msgstr "Valor de FIRSTCASE deve ser maior ou igual a 1."
+
+#: src/language/data-io/get-data.c:351
+msgid "expecting LINE or VARIABLES"
+msgstr "esperando LINE ou VARIABLES"
+
+#: src/language/data-io/get-data.c:364
+msgid "Value of FIXCASE must be at least 1."
+msgstr "Valor de FIXCASE deve ser pelo menos 1."
+
+#: src/language/data-io/get-data.c:384
+msgid "Value of FIRST must be at least 1."
+msgstr "Valor de FIRST deve ser pelo menos 1."
+
+#: src/language/data-io/get-data.c:396
+msgid "Value of PERCENT must be between 1 and 100."
+msgstr "Valor de PERCENT deve estar entre 1 e 100."
+
+#: src/language/data-io/get-data.c:445
+msgid "In compatible syntax mode, the QUALIFIER string must contain exactly one character."
+msgstr "No modo de sintaxe compatível, a strint QUALIFIER deve conter exatamente um caractere."
+
+#: src/language/data-io/get-data.c:460
+msgid "expecting VARIABLES"
+msgstr "esperando VARIABLES"
+
+#: src/language/data-io/get-data.c:482
+#: src/language/data-io/placement-parser.c:378
+#, c-format
+msgid "The record number specified, %ld, is at or before the previous record, %d.  Data fields must be listed in order of increasing record number."
+msgstr ""
+
+#: src/language/data-io/get-data.c:491
+#, c-format
+msgid "The record number specified, %ld, exceeds the number of records per case specified on FIXCASE, %d."
+msgstr ""
+
+#: src/language/data-io/get.c:99
+msgid "expecting COMM or TAPE"
+msgstr "esperando COMM ou TAPE"
+
+#: src/language/data-io/get.c:272 src/language/data-io/get.c:286
+#: src/language/data-io/get.c:311
+#, c-format
+msgid "expecting %s or %s"
+msgstr "esperando %s ou %s"
+
+#: src/language/data-io/get.c:506 src/language/data-io/print.c:178
+msgid "expecting a valid subcommand"
+msgstr "esperando um subcomando válido"
+
+#: src/language/data-io/get.c:539
+#, c-format
+msgid "Cannot rename %s as %s because there already exists a variable named %s.  To rename variables with overlapping names, use a single RENAME subcommand such as \"/RENAME (A=B)(B=C)(C=A)\", or equivalently, \"/RENAME (A B C=B C A)\"."
+msgstr ""
+
+#: src/language/data-io/get.c:565
+msgid "`=' expected after variable list."
+msgstr "'=' esperado após lista de variáveis."
+
+#: src/language/data-io/get.c:572
+#, c-format
+msgid "Number of variables on left side of `=' (%zu) does not match number of variables on right side (%zu), in parenthesized group %d of RENAME subcommand."
+msgstr ""
+
+#: src/language/data-io/get.c:585
+#, c-format
+msgid "Requested renaming duplicates variable name %s."
+msgstr ""
+
+#: src/language/data-io/get.c:615
+msgid "Cannot DROP all variables from dictionary."
+msgstr "DROP de todas as variáveis do dicionário impossível."
+
+#: src/language/data-io/get.c:788
+msgid "Cannot specify the active file since no active file has been defined."
+msgstr "Impossível especificar o arquivo ativo uma vez que nenhum arquivo ativo foi definido."
+
+#: src/language/data-io/get.c:795
+msgid "MATCH FILES may not be used after TEMPORARY when the active file is an input source.  Temporary transformations will be made permanent."
+msgstr ""
+
+#: src/language/data-io/get.c:829
+msgid "Multiple IN subcommands for a single FILE or TABLE."
+msgstr "Múltiplos subcomandos IN para um único FILE ou TABLE"
+
+#: src/language/data-io/get.c:873
+#, c-format
+msgid "File %s lacks BY variable %s."
+msgstr "Arquivo %s não possui variável BY %s."
+
+#: src/language/data-io/get.c:876
+#, c-format
+msgid "Active file lacks BY variable %s."
+msgstr ""
+
+#: src/language/data-io/get.c:946
+msgid "BY is required when TABLE is specified."
+msgstr "BY é necessário quando TABLE é especificado."
+
+#: src/language/data-io/get.c:951
+msgid "BY is required when IN is specified."
+msgstr "BY é necessário quando IN é especificado."
+
+#: src/language/data-io/get.c:1056
+#, c-format
+msgid "Variable name %s specified on %s subcommand duplicates an existing variable name."
+msgstr ""
+
+#: src/language/data-io/get.c:1303
+#, c-format
+msgid "Variable %s in file %s (%s) has different type or width from the same variable in earlier file (%s)."
+msgstr ""
+
+#: src/language/data-io/inpt-pgm.c:129
+msgid "Unexpected end-of-file within INPUT PROGRAM."
+msgstr ""
+
+#: src/language/data-io/inpt-pgm.c:142
+msgid "Input program did not create any variables."
+msgstr ""
+
+#: src/language/data-io/inpt-pgm.c:287
+msgid "COLUMN subcommand multiply specified."
+msgstr ""
+
+#: src/language/data-io/inpt-pgm.c:337
+msgid "REREAD: Column numbers must be positive finite numbers.  Column set to 1."
+msgstr ""
+
+#: src/language/data-io/list.q:157 src/language/stats/descriptives.c:362
+msgid "No variables specified."
+msgstr ""
+
+#: src/language/data-io/list.q:165
+#, c-format
+msgid "The first case (%ld) specified precedes the last case (%ld) specified.  The values will be swapped."
+msgstr ""
+
+#: src/language/data-io/list.q:173
+#, c-format
+msgid "The first case (%ld) to list is less than 1.  The value is being reset to 1."
+msgstr ""
+
+#: src/language/data-io/list.q:179
+#, c-format
+msgid "The last case (%ld) to list is less than 1.  The value is being reset to 1."
+msgstr ""
+
+#: src/language/data-io/list.q:185
+#, c-format
+msgid "The step value %ld is less than 1.  The value is being reset to 1."
+msgstr ""
+
+#: src/language/data-io/list.q:211
+msgid "`/FORMAT WEIGHT' specified, but weighting is not on."
+msgstr "'/FORMAT WEIGHT' especificado, mas ponderação está desabilitada."
+
+#: src/language/data-io/list.q:467
+msgid "Line"
+msgstr "Linha"
+
+#: src/language/data-io/placement-parser.c:87
+#, c-format
+msgid "Number of variables specified (%zu) differs from number of variable formats (%zu)."
+msgstr ""
+
+#: src/language/data-io/placement-parser.c:97
+msgid "SPSS-like or Fortran-like format specification expected after variable names."
+msgstr ""
+
+#: src/language/data-io/placement-parser.c:119
+#, c-format
+msgid "The %d columns %d-%d can't be evenly divided into %zu fields."
+msgstr ""
+
+#: src/language/data-io/placement-parser.c:226
+#: src/language/lexer/format-parser.c:107
+#: src/language/lexer/format-parser.c:126
+#, c-format
+msgid "Unknown format type \"%s\"."
+msgstr "Tipo de formato \"%s\" desconhecido."
+
+#: src/language/data-io/placement-parser.c:305
+msgid "Column positions for fields must be positive."
+msgstr ""
+
+#: src/language/data-io/placement-parser.c:307
+msgid "Column positions for fields must not be negative."
+msgstr ""
+
+#: src/language/data-io/placement-parser.c:344
+msgid "The ending column for a field must be greater than the starting column."
+msgstr ""
+
+#: src/language/data-io/print-space.c:73 src/language/lexer/lexer.c:476
+#: src/language/stats/autorecode.c:154 src/language/xforms/select-if.c:60
+msgid "expecting end of command"
+msgstr "esperando fim do comando"
+
+#: src/language/data-io/print-space.c:116
+msgid "The expression on PRINT SPACE evaluated to the system-missing value."
+msgstr ""
+
+#: src/language/data-io/print-space.c:119
+#, c-format
+msgid "The expression on PRINT SPACE evaluated to %g."
+msgstr ""
+
+#: src/language/data-io/print.c:266
+#, c-format
+msgid "Output calls for %d records but %zu specified on RECORDS subcommand."
+msgstr ""
+
+#: src/language/data-io/print.c:436
+#, c-format
+msgid "Writing %d record to %s."
+msgid_plural "Writing %d records to %s."
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/language/data-io/print.c:440
+#, c-format
+msgid "Writing %d record."
+msgid_plural "Writing %d records."
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/language/dictionary/apply-dictionary.c:75
+#, c-format
+msgid "Variable %s is %s in target file, but %s in source file."
+msgstr "Variável %s é %s no arquivo de destino, mas %s no arquivo de origem."
+
+#: src/language/dictionary/apply-dictionary.c:99
+#, c-format
+msgid "Cannot add value labels from source file to long string variable %s."
+msgstr ""
+
+#: src/language/dictionary/apply-dictionary.c:113
+#, c-format
+msgid "Cannot apply missing values from source file to long string variable %s."
+msgstr ""
+
+#: src/language/dictionary/apply-dictionary.c:126
+msgid "No matching variables found between the source and target files."
+msgstr "Nenhuma coincidência de variáveis encontrada entre os arquivos de origem e destino."
+
+#: src/language/dictionary/delete-variables.c:40
+msgid "DELETE VARIABLES may not be used after TEMPORARY.  Temporary transformations will be made permanent."
+msgstr ""
+
+#: src/language/dictionary/delete-variables.c:48
+msgid "DELETE VARIABLES may not be used to delete all variables from the active file dictionary.  Use NEW FILE instead."
+msgstr ""
+
+#: src/language/dictionary/formats.c:90
+msgid "`(' expected after variable list."
+msgstr ""
+
+#: src/language/dictionary/formats.c:100 src/language/dictionary/numeric.c:74
+msgid "`)' expected after output format."
+msgstr ""
+
+#: src/language/dictionary/missing-values.c:56
+#: src/language/stats/aggregate.c:451
+msgid "expecting `('"
+msgstr "esperando '('"
+
+#: src/language/dictionary/missing-values.c:72
+#, c-format
+msgid "Cannot mix numeric variables (e.g. %s) and string variables (e.g. %s) within a single list."
+msgstr "Não é possível misturar variáveis numéricas (e.g. %s) e strings (e.g. %s) dentro de uma única lista."
+
+#: src/language/dictionary/missing-values.c:117
+#, c-format
+msgid "Truncating missing value to short string length (%d characters)."
+msgstr ""
+
+#: src/language/dictionary/missing-values.c:139
+#, c-format
+msgid "Missing values provided are too long to assign to variable of width %d."
+msgstr ""
+
+#: src/language/dictionary/modify-variables.c:92
+msgid "MODIFY VARS may not be used after TEMPORARY.  Temporary transformations will be made permanent."
+msgstr ""
+
+#: src/language/dictionary/modify-variables.c:114
+msgid "REORDER subcommand may be given at most once."
+msgstr ""
+
+#: src/language/dictionary/modify-variables.c:137
+msgid "Cannot specify ALL after specifying a set of variables."
+msgstr ""
+
+#: src/language/dictionary/modify-variables.c:147
+msgid "`(' expected on REORDER subcommand."
+msgstr ""
+
+#: src/language/dictionary/modify-variables.c:159
+msgid "`)' expected following variable names on REORDER subcommand."
+msgstr ""
+
+#: src/language/dictionary/modify-variables.c:177
+msgid "RENAME subcommand may be given at most once."
+msgstr "Subcomando RENAME só pode ser dado uma vez."
+
+#: src/language/dictionary/modify-variables.c:190
+msgid "`(' expected on RENAME subcommand."
+msgstr "'(' esperado no subcomando RENAME."
+
+#: src/language/dictionary/modify-variables.c:199
+msgid "`=' expected between lists of new and old variable names on RENAME subcommand."
+msgstr ""
+
+#: src/language/dictionary/modify-variables.c:208
+#: src/language/dictionary/rename-variables.c:76
+#, c-format
+msgid "Differing number of variables in old name list (%zu) and in new name list (%zu)."
+msgstr ""
+
+#: src/language/dictionary/modify-variables.c:219
+msgid "`)' expected after variable lists on RENAME subcommand."
+msgstr ""
+
+#: src/language/dictionary/modify-variables.c:233
+msgid "KEEP subcommand may be given at most once.  It may not be given in conjunction with the DROP subcommand."
+msgstr ""
+
+#: src/language/dictionary/modify-variables.c:276
+msgid "DROP subcommand may be given at most once.  It may not be given in conjunction with the KEEP subcommand."
+msgstr ""
+
+#: src/language/dictionary/modify-variables.c:302
+#, c-format
+msgid "Unrecognized subcommand name `%s'."
+msgstr "Subcomando de nome '%s' não reconhecido."
+
+#: src/language/dictionary/modify-variables.c:304
+msgid "Subcommand name expected."
+msgstr "Nome de Subcomando esperado."
+
+#: src/language/dictionary/modify-variables.c:312
+msgid "`/' or `.' expected."
+msgstr "'/' ou '.' esperado."
+
+#: src/language/dictionary/numeric.c:67
+#, c-format
+msgid "Format type %s may not be used with a numeric variable."
+msgstr "Formato tipo %s não pode ser usado com uma variável numérica."
+
+#: src/language/dictionary/numeric.c:86 src/language/dictionary/numeric.c:155
+#, c-format
+msgid "There is already a variable named %s."
+msgstr "Já existe uma variável de nome %s."
+
+#: src/language/dictionary/numeric.c:140
+#, c-format
+msgid "Format type %s may not be used with a string variable."
+msgstr "Formato tipo %s não pode ser usado como uma variável string."
+
+#: src/language/dictionary/rename-variables.c:49
+msgid "RENAME VARS may not be used after TEMPORARY.  Temporary transformations will be made permanent."
+msgstr ""
+
+#: src/language/dictionary/rename-variables.c:59
+msgid "`(' expected."
+msgstr "'(' esperado."
+
+#: src/language/dictionary/rename-variables.c:67
+msgid "`=' expected between lists of new and old variable names."
+msgstr "'=' esperado entre listas dos novos e velhos nomes de variável"
+
+#: src/language/dictionary/rename-variables.c:87
+msgid "`)' expected after variable names."
+msgstr "')' esperado após nome de variável."
+
+#: src/language/dictionary/rename-variables.c:97
+#, c-format
+msgid "Renaming would duplicate variable name %s."
+msgstr ""
+
+#: src/language/dictionary/split-file.c:85
+#: src/language/dictionary/sys-file-info.c:563
+#: src/language/stats/crosstabs.q:1169 src/language/stats/crosstabs.q:1196
+#: src/language/stats/crosstabs.q:1216 src/language/stats/crosstabs.q:1238
+#: src/language/stats/examine.q:1215 src/language/stats/frequencies.q:1063
+#: src/language/stats/frequencies.q:1188
+msgid "Value"
+msgstr "Valor"
+
+#: src/language/dictionary/split-file.c:86
+#: src/language/dictionary/sys-file-info.c:397
+#: src/language/dictionary/sys-file-info.c:564 src/ui/gui/crosstabs.glade:275
+#: src/ui/gui/psppire-var-sheet.c:104 src/ui/gui/psppire.glade:2099
+msgid "Label"
+msgstr "Label"
+
+#: src/language/dictionary/sys-file-info.c:110
+msgid "File:"
+msgstr "Arquivo:"
+
+#: src/language/dictionary/sys-file-info.c:112 src/ui/gui/psppire.glade:2052
+#: src/ui/gui/recode.glade:841
+msgid "Label:"
+msgstr "Label:"
+
+#: src/language/dictionary/sys-file-info.c:116
+msgid "No label."
+msgstr "Sem rótulo."
+
+#: src/language/dictionary/sys-file-info.c:119
+msgid "Created:"
+msgstr "Criado:"
+
+#: src/language/dictionary/sys-file-info.c:122
+msgid "Integer Format:"
+msgstr "Formato inteiro:"
+
+#: src/language/dictionary/sys-file-info.c:124
+msgid "Big Endian."
+msgstr "Big Endian."
+
+#: src/language/dictionary/sys-file-info.c:125
+msgid "Little Endian."
+msgstr "Little Endian."
+
+#: src/language/dictionary/sys-file-info.c:126
+#: src/language/dictionary/sys-file-info.c:134
+msgid "Unknown."
+msgstr "Desconhecido."
+
+#: src/language/dictionary/sys-file-info.c:127
+msgid "Real Format:"
+msgstr "Formato Real:"
+
+#: src/language/dictionary/sys-file-info.c:129
+msgid "IEEE 754 LE."
+msgstr "IEEE 754 LE."
+
+#: src/language/dictionary/sys-file-info.c:130
+msgid "IEEE 754 BE."
+msgstr "IEE 754 BE."
+
+#: src/language/dictionary/sys-file-info.c:131
+msgid "VAX D."
+msgstr "VAX D."
+
+#: src/language/dictionary/sys-file-info.c:132
+msgid "VAX G."
+msgstr "VAX G."
+
+#: src/language/dictionary/sys-file-info.c:133
+msgid "IBM 390 Hex Long."
+msgstr "IBM 390 Hex Long."
+
+#: src/language/dictionary/sys-file-info.c:135
+#: src/ui/gui/descriptives-dialog.glade:79 src/ui/gui/recode.glade:940
+msgid "Variables:"
+msgstr "Variáveis:"
+
+#: src/language/dictionary/sys-file-info.c:137
+msgid "Cases:"
+msgstr "Casos:"
+
+#: src/language/dictionary/sys-file-info.c:139
+msgid "Unknown"
+msgstr "Desconhecido"
+
+#: src/language/dictionary/sys-file-info.c:141
+msgid "Type:"
+msgstr "Tipo:"
+
+#: src/language/dictionary/sys-file-info.c:142
+msgid "System File."
+msgstr "Arquivo de sistema."
+
+#: src/language/dictionary/sys-file-info.c:143
+msgid "Weight:"
+msgstr "Peso:"
+
+#: src/language/dictionary/sys-file-info.c:148
+msgid "Not weighted."
+msgstr "Sem ponderação."
+
+#: src/language/dictionary/sys-file-info.c:150
+msgid "Mode:"
+msgstr "Modo:"
+
+#: src/language/dictionary/sys-file-info.c:152
+#, c-format
+msgid "Compression %s."
+msgstr "Compressão %s."
+
+#: src/language/dictionary/sys-file-info.c:152
+msgid "on"
+msgstr "Ligado"
+
+#: src/language/dictionary/sys-file-info.c:152
+msgid "off"
+msgstr "Desligado"
+
+#: src/language/dictionary/sys-file-info.c:162
+#: src/language/dictionary/sys-file-info.c:395
+msgid "Description"
+msgstr "Descrição"
+
+#: src/language/dictionary/sys-file-info.c:163
+#: src/language/dictionary/sys-file-info.c:393
+#: src/language/dictionary/sys-file-info.c:633
+msgid "Position"
+msgstr "Posição"
+
+#: src/language/dictionary/sys-file-info.c:222
+msgid "The active file does not have a file label."
+msgstr "O arquivo ativo não possui um rótulo de arquivo."
+
+#: src/language/dictionary/sys-file-info.c:225
+msgid "File label:"
+msgstr "Rótulo de arquivo:"
+
+#: src/language/dictionary/sys-file-info.c:288
+msgid "No variables to display."
+msgstr "Nenhuma variável para exibir."
+
+#: src/language/dictionary/sys-file-info.c:307
+msgid "Macros not supported."
+msgstr "Macros não suportadas."
+
+#: src/language/dictionary/sys-file-info.c:317
+msgid "The active file dictionary does not contain any documents."
+msgstr "O arquivo de dicionário ativo não contém nenhum documento."
+
+#: src/language/dictionary/sys-file-info.c:325
+msgid "Documents in the active file:"
+msgstr "Documentos no arquivo ativo:"
+
+#: src/language/dictionary/sys-file-info.c:477
+#, c-format
+msgid "Format: %s"
+msgstr "Formato: %s"
+
+#: src/language/dictionary/sys-file-info.c:485
+#, c-format
+msgid "Print Format: %s"
+msgstr "Formato de Impressão: %s"
+
+#: src/language/dictionary/sys-file-info.c:488
+#, c-format
+msgid "Write Format: %s"
+msgstr "Formato de Escrita: %s"
+
+#: src/language/dictionary/sys-file-info.c:494
+#, c-format
+msgid "Measure: %s"
+msgstr "Medida: %s"
+
+#: src/language/dictionary/sys-file-info.c:495
+#: src/ui/gui/psppire-var-sheet.c:123
+msgid "Nominal"
+msgstr "Nominal"
+
+#: src/language/dictionary/sys-file-info.c:496
+#: src/ui/gui/psppire-var-sheet.c:124
+msgid "Ordinal"
+msgstr "Ordinal"
+
+#: src/language/dictionary/sys-file-info.c:497
+#: src/ui/gui/psppire-var-sheet.c:125
+msgid "Scale"
+msgstr "Escalar"
+
+#: src/language/dictionary/sys-file-info.c:500
+#, c-format
+msgid "Display Alignment: %s"
+msgstr ""
+
+#: src/language/dictionary/sys-file-info.c:501
+#: src/ui/gui/psppire-var-sheet.c:116
+msgid "Left"
+msgstr "Esquerda"
+
+#: src/language/dictionary/sys-file-info.c:502
+#: src/ui/gui/psppire-var-sheet.c:118
+msgid "Center"
+msgstr "Centro"
+
+#: src/language/dictionary/sys-file-info.c:503
+#: src/ui/gui/psppire-var-sheet.c:117
+msgid "Right"
+msgstr "Direita"
+
+#: src/language/dictionary/sys-file-info.c:506
+#, c-format
+msgid "Display Width: %d"
+msgstr ""
+
+#: src/language/dictionary/sys-file-info.c:517
+msgid "Missing Values: "
+msgstr "Missing Values:"
+
+#: src/language/dictionary/sys-file-info.c:611
+msgid "No vectors defined."
+msgstr "Vetor não definido."
+
+#: src/language/dictionary/sys-file-info.c:632
+msgid "Vector"
+msgstr "Vetor"
+
+#: src/language/dictionary/sys-file-info.c:635
+msgid "Print Format"
+msgstr "Formato de Impressão"
+
+#: src/language/dictionary/value-labels.c:121
+#, c-format
+msgid "It is not possible to assign value labels to long string variables such as %s."
+msgstr ""
+
+#: src/language/dictionary/value-labels.c:157 src/language/lexer/lexer.c:629
+msgid "expecting string"
+msgstr "esperando string"
+
+#: src/language/dictionary/value-labels.c:166 src/language/lexer/lexer.c:643
+msgid "expecting integer"
+msgstr "esperando inteiro"
+
+#: src/language/dictionary/value-labels.c:170
+#, c-format
+msgid "Value label `%g' is not integer."
+msgstr ""
+
+#: src/language/dictionary/value-labels.c:184
+msgid "Truncating value label to 60 characters."
+msgstr "Truncando rótulo de valores para 60 caracteres."
+
+#: src/language/dictionary/variable-display.c:119
+msgid "Variable display width must be a positive integer."
+msgstr ""
+
+#: src/language/dictionary/variable-label.c:51
+msgid "String expected for variable label."
+msgstr "Esperada string como rotulo de variável."
+
+#: src/language/dictionary/variable-label.c:59
+msgid "Truncating variable label to 255 characters."
+msgstr "Truncando rótulo de variável para 255 caracteres."
+
+#: src/language/dictionary/vector.c:64
+#, c-format
+msgid "A vector named %s already exists."
+msgstr "Um vetor chamado %s já existe."
+
+#: src/language/dictionary/vector.c:72
+#, c-format
+msgid "Vector name %s is given twice."
+msgstr "O nome do vetor %s foi informado duas vezes"
+
+#: src/language/dictionary/vector.c:96
+msgid "A slash must separate each vector specification in VECTOR's long form."
+msgstr "Uma barra deve separar cada especificação de vetor na forma longa de VECTOR."
+
+#: src/language/dictionary/vector.c:129
+msgid "Vectors must have at least one element."
+msgstr "Vetores devem ter pelo menos um elemento."
+
+#: src/language/dictionary/vector.c:150
+msgid "expecting vector length"
+msgstr "esperando tamanho do vetor"
+
+#: src/language/dictionary/vector.c:166
+#, c-format
+msgid "%s is too long for a variable name."
+msgstr "%s é muito longo para um nome de variável."
+
+#: src/language/dictionary/vector.c:171
+#, c-format
+msgid "%s is an existing variable name."
+msgstr "%s é um nome de variável existente."
+
+#: src/language/dictionary/weight.c:49
+msgid "The weighting variable must be numeric."
+msgstr "A variável de ponderação deve ser numérica."
+
+#: src/language/dictionary/weight.c:54
+msgid "The weighting variable may not be scratch."
+msgstr "A variável de ponderação não deve ser rascunho."
+
+#: src/language/expressions/evaluate.c:154
+msgid "expecting number or string"
+msgstr "esperando número ou string"
+
+#: src/language/expressions/evaluate.c:168
+#, c-format
+msgid "Duplicate variable name %s."
+msgstr "Nome de variável %s duplicado."
+
+#: src/language/expressions/helpers.c:51
+msgid "One of the arguments to a DATE function is not an integer.  The result will be system-missing."
+msgstr "Um dos argumentos para a função DATE não é um inteiro. O resultado será um system-missing."
+
+#: src/language/expressions/helpers.c:73
+msgid "The week argument to DATE.WKYR is not an integer.  The result will be system-missing."
+msgstr "O argumento semana para DATE.WKYR não é um inteiro. O resultado será um system-missing."
+
+#: src/language/expressions/helpers.c:79
+msgid "The week argument to DATE.WKYR is outside the acceptable range of 1 to 53.  The result will be system-missing."
+msgstr "O argumento semana para DATE.WKYR está fora do intervalo aceitável entre 1 e 53. O resultado será um system-missing."
+
+#: src/language/expressions/helpers.c:101
+msgid "The day argument to DATE.YRDAY is not an integer.  The result will be system-missing."
+msgstr "O argumento dia para DATE.YRDAY não é um inteiro. O resultado será um system-missing."
+
+#: src/language/expressions/helpers.c:107
+msgid "The day argument to DATE.YRDAY is outside the acceptable range of 1 to 366.  The result will be system-missing."
+msgstr "O argumento dia para DATE.YRDAY está fora do intervalo aceitável entre 1 e 366. O resultado será um system-missing."
+
+#: src/language/expressions/helpers.c:129
+msgid "The year argument to YRMODA is greater than 47516.  The result will be system-missing."
+msgstr "O argumento ano para YRMODA é maior que 47516. O resultado será um system-missing."
+
+#: src/language/expressions/helpers.c:182
+#, c-format
+msgid "Unrecognized date unit \"%.*s\".  Valid date units are \"years\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", and \"seconds\"."
+msgstr "Unidade de data não reconhecido \"%.*s\". Valores válidos de unidade são \"years\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", and \"seconds\"."
+
+#: src/language/expressions/helpers.c:332
+msgid "Invalid DATESUM method.  Valid choices are \"closest\" and \"rollover\"."
+msgstr "Método DATESUM inválido. Escolhas válidas são \"closest\" and \"rollover\"."
+
+#: src/language/expressions/parse.c:259
+#, c-format
+msgid "Type mismatch: expression has %s type, but a numeric value is required here."
+msgstr "Incompatibilidade de tipos: expressão tem tipo %s, mas um valor numérico é requerido aqui."
+
+#: src/language/expressions/parse.c:271
+#, c-format
+msgid "Type mismatch: expression has %s type, but a string value is required here."
+msgstr "Incompatibilidade de tipos: expressão tem tipo %s, mas um valor string é requerido aqui."
+
+#: src/language/expressions/parse.c:427
+#, c-format
+msgid "Type mismatch while applying %s operator: cannot convert %s to %s."
+msgstr "Incompatibilidade de tipos ao aplicar o operador %s: não é possível converter %s para %s."
+
+#: src/language/expressions/parse.c:643
+msgid "Chaining relational operators (e.g. \"a < b < c\") will not produce the mathematically expected result.  Use the AND logical operator to fix the problem (e.g. \"a < b AND b < c\").  If chaining is really intended, parentheses will disable this warning (e.g. \"(a < b) < c\".)"
+msgstr "Encadear operadores relacionais (i.e. \"a < b < c\") não irá produzir o resultado esperado. Use o operador lógico AND para corrigir o problema (i.e. \"a < b AND b < c\"). Se o encadeamento é intencional, o uso de parênteses irá desabilitar este aviso (i.e. \"(a < b) < c\".)"
+
+#: src/language/expressions/parse.c:744
+msgid "The exponentiation operator (\"**\") is left-associative, even though right-associative semantics are more useful.  That is, \"a**b**c\" equals \"(a**b)**c\", not as \"a**(b**c)\".  To disable this warning, insert parentheses."
+msgstr "O operador exponencial (\"**\") é associativo à esquerda, mesmo que a semântica associativa a direita seja mais útil.Ou seja, \"a**b**c\" equivale a \"(a**b)**c\", não a \"a**(b**c)\". Para desabilitar este aviso, insira parênteses."
+
+#: src/language/expressions/parse.c:809
+#, c-format
+msgid "Unknown system variable %s."
+msgstr "Variável de sistema %s desconhecida."
+
+#: src/language/expressions/parse.c:857
+#, c-format
+msgid "Unknown identifier %s."
+msgstr "Identificador %s desconhecido."
+
+#: src/language/expressions/parse.c:885 src/language/stats/aggregate.c:509
+msgid "expecting `)'"
+msgstr "esperando ')'"
+
+#: src/language/expressions/parse.c:892
+msgid "in expression"
+msgstr "na expressão"
+
+#: src/language/expressions/parse.c:1073
+#, c-format
+msgid "%s must have at least %d arguments in list."
+msgstr "%s deve ter pelo menos %d argumentos na lista."
+
+#: src/language/expressions/parse.c:1082
+#, c-format
+msgid "%s must have even number of arguments in list."
+msgstr "%s deve ter um número par de argumentos na lista."
+
+#: src/language/expressions/parse.c:1085
+#, c-format
+msgid "%s must have multiple of %d arguments in list."
+msgstr "%s deve ter um número de argumentos múltiplo de %d na lista."
+
+#: src/language/expressions/parse.c:1095
+#, c-format
+msgid "%s function does not accept a minimum valid argument count."
+msgstr ""
+
+#: src/language/expressions/parse.c:1104
+#, c-format
+msgid "%s requires at least %d valid arguments in list."
+msgstr ""
+
+#: src/language/expressions/parse.c:1110
+#, c-format
+msgid "With %s, using minimum valid argument count of %d does not make sense when passing only %d arguments in list."
+msgstr ""
+
+#: src/language/expressions/parse.c:1164
+#, c-format
+msgid "Type mismatch invoking %s as "
+msgstr "Incompatibilidade de tipos invocando %s como "
+
+#: src/language/expressions/parse.c:1169
+msgid "Function invocation "
+msgstr "Invocação de função"
+
+#: src/language/expressions/parse.c:1171
+msgid " does not match any known function.  Candidates are:"
+msgstr " não combina com nenhuma função conhecida. Candidatas são:"
+
+#: src/language/expressions/parse.c:1201
+#, c-format
+msgid "No function or vector named %s."
+msgstr "Nenhuma função ou vetor de nome %s."
+
+#: src/language/expressions/parse.c:1244
+#, c-format
+msgid "expecting `,' or `)' invoking %s function"
+msgstr "esperando ',' ou ')' invocando função %s"
+
+#: src/language/expressions/parse.c:1264
+#, c-format
+msgid "%s is a PSPP extension."
+msgstr "%s é uma extensão do PSPP."
+
+#: src/language/expressions/parse.c:1267 src/ui/terminal/command-line.c:127
+#: src/ui/terminal/command-line.c:146 src/ui/terminal/command-line.c:158
+#, c-format
+msgid "%s is not yet implemented."
+msgstr ""
+
+#: src/language/expressions/parse.c:1273
+#, c-format
+msgid "%s may not appear after TEMPORARY."
+msgstr "%s não pode aparecer após TEMPORARY."
+
+#: src/language/lexer/format-parser.c:88
+msgid "expecting valid format specifier"
+msgstr "esperando especificador de formato válido"
+
+#: src/language/lexer/format-parser.c:121
+msgid "expecting format type"
+msgstr "esperando formato de tipo"
+
+#: src/language/lexer/lexer.c:282
+#, c-format
+msgid "%s does not form a valid number."
+msgstr "%s não forma um número válido."
+
+#: src/language/lexer/lexer.c:386
+#, c-format
+msgid "Bad character in input: `%c'."
+msgstr "Caractere inválido na entrada: '%c'."
+
+#: src/language/lexer/lexer.c:388
+#, c-format
+msgid "Bad character in input: `\\%o'."
+msgstr "Caractere inválido na entrada: '\\%o'."
+
+#: src/language/lexer/lexer.c:424
+#, c-format
+msgid "Subcommand %s may only be specified once."
+msgstr "Subcomando %s só pode ser especificado uma vez."
+
+#: src/language/lexer/lexer.c:432
+#, c-format
+msgid "missing required subcommand %s"
+msgstr "subcomando necessário %s ausente"
+
+#: src/language/lexer/lexer.c:461
+#, c-format
+msgid "Syntax error %s at %s."
+msgstr "Erro de sintaxe %s em %s."
+
+#: src/language/lexer/lexer.c:464
+#, c-format
+msgid "Syntax error at %s."
+msgstr "Erro de sintaxe em %s."
+
+#: src/language/lexer/lexer.c:598 src/language/lexer/lexer.c:615
+#, c-format
+msgid "expecting `%s'"
+msgstr "esperando '%s'"
+
+#: src/language/lexer/lexer.c:656
+msgid "expecting number"
+msgstr "esperando número"
+
+#: src/language/lexer/lexer.c:668
+msgid "expecting identifier"
+msgstr "esperando identificador"
+
+#: src/language/lexer/lexer.c:1062
+msgid "binary"
+msgstr "binário"
+
+#: src/language/lexer/lexer.c:1067
+msgid "octal"
+msgstr "octal"
+
+#: src/language/lexer/lexer.c:1072
+msgid "hex"
+msgstr "hexa"
+
+#: src/language/lexer/lexer.c:1082
+#, c-format
+msgid "String of %s digits has %zu characters, which is not a multiple of %d."
+msgstr "String de %s dígitos tem %zu caracteres, o que não é múltiplo de %d."
+
+#: src/language/lexer/lexer.c:1111
+#, c-format
+msgid "`%c' is not a valid %s digit."
+msgstr "'%c' não é um dígito %s válido."
+
+#: src/language/lexer/lexer.c:1145
+msgid "Unterminated string constant."
+msgstr "Constante string não terminada."
+
+#: src/language/lexer/lexer.c:1199
+msgid "Unexpected end of file in string concatenation."
+msgstr "Fim de arquivo inesperado na concatenação da string."
+
+#: src/language/lexer/lexer.c:1207
+msgid "String expected following `+'."
+msgstr "String esperada seguindo '+'."
+
+#: src/language/lexer/lexer.c:1220
+#, c-format
+msgid "String exceeds 255 characters in length (%zu characters)."
+msgstr "String excedeu 255 caracteres de comprimento (%zu caracteres)."
+
+#: src/language/lexer/range-parser.c:60
+#, c-format
+msgid "Low end of range (%g) is below high end (%g).  The range will be treated as reversed."
+msgstr "Limite inferior do intervalo (%g) é maior que o limite superior (%g). O intervalo será invertido."
+
+#: src/language/lexer/range-parser.c:68
+#, c-format
+msgid "Ends of range are equal (%g)."
+msgstr "Limites do intervalo são iguais (%g)."
+
+#: src/language/lexer/range-parser.c:76
+msgid "LO or LOWEST must be part of a range."
+msgstr "LO ou LOWEST deve ser parte do intervalo."
+
+#: src/language/lexer/range-parser.c:108
+msgid "System-missing value is not valid here."
+msgstr "Valor system-missing não é válido aqui."
+
+#: src/language/lexer/range-parser.c:116
+msgid "expecting number or data string"
+msgstr "esperando número ou string de data"
+
+#: src/language/lexer/variable-parser.c:63
+msgid "expecting variable name"
+msgstr "esperando nome de variável"
+
+#: src/language/lexer/variable-parser.c:73
+#, c-format
+msgid "%s is not a variable name."
+msgstr "%s não é um nome válido."
+
+#: src/language/lexer/variable-parser.c:176
+#, c-format
+msgid "%s is not a numeric variable.  It will not be included in the variable list."
+msgstr "%s não é uma variável válida. Ela não será incluída na lista de variáveis."
+
+#: src/language/lexer/variable-parser.c:179
+#, c-format
+msgid "%s is not a string variable.  It will not be included in the variable list."
+msgstr "%s não é uma variável string. Ela não será incluída na lista de variáveis."
+
+#: src/language/lexer/variable-parser.c:183
+#, c-format
+msgid "Scratch variables (such as %s) are not allowed here."
+msgstr "Variáveis rascunho (como %s) não são permitidas aqui."
+
+#: src/language/lexer/variable-parser.c:187
+#, c-format
+msgid "%s and %s are not the same type.  All variables in this variable list must be of the same type.  %s will be omitted from the list."
+msgstr "%s e %s não são do mesmo tipo. Todas as variáveis nesta lista devem ser do mesmo tipo. %s será omitida da lista."
+
+#: src/language/lexer/variable-parser.c:193
+#, c-format
+msgid "%s and %s are string variables with different widths.  All variables in this variable list must have the same width.  %s will be omitted from the list."
+msgstr "%s e %s são variáveis strings de tamanho diferente. Todas as variáveis nesta lista devem ter o mesmo tamanho. %s será omitida da lista."
+
+#: src/language/lexer/variable-parser.c:198
+#, c-format
+msgid "Variable %s appears twice in variable list."
+msgstr "Variável %s apareceu duas vezes na lista de variáveis."
+
+#: src/language/lexer/variable-parser.c:311
+#, c-format
+msgid "%s TO %s is not valid syntax since %s precedes %s in the dictionary."
+msgstr "%s TO %s não é uma sintaxe válida pois %s precede %s no dicionário."
+
+#: src/language/lexer/variable-parser.c:319
+#, c-format
+msgid "When using the TO keyword to specify several variables, both variables must be from the same variable dictionaries, of either ordinary, scratch, or system variables.  %s is a %s variable, whereas %s is %s."
+msgstr "Ao usar a palavra-chave TO para especificar várias variáveis, ambas devem ser do mesmo dicionário de variáveis, ordinárias, rascunho ou variáveis de sistema. %s é uma variável %s, enquanto %s é %s."
+
+#: src/language/lexer/variable-parser.c:393
+msgid "incorrect use of TO convention"
+msgstr "uso incorreto da convenção TO."
+
+#: src/language/lexer/variable-parser.c:436
+msgid "Scratch variables not allowed here."
+msgstr "Variáveis rascunho não permitidas aqui."
+
+#: src/language/lexer/variable-parser.c:458
+msgid "Prefixes don't match in use of TO convention."
+msgstr "Prefixos não coincidem no uso da convenção TO."
+
+#: src/language/lexer/variable-parser.c:463
+msgid "Bad bounds in use of TO convention."
+msgstr "Intervalos incorretos no uso da convenção TO."
+
+#: src/language/stats/aggregate.c:209
+msgid "while expecting COLUMNWISE"
+msgstr "ao esperar COLUMNWISE"
+
+#: src/language/stats/aggregate.c:240
+msgid "expecting BREAK"
+msgstr "esperando BREAK"
+
+#: src/language/stats/aggregate.c:245
+msgid "When PRESORTED is specified, specifying sorting directions with (A) or (D) has no effect.  Output data will be sorted the same way as the input data."
+msgstr "Quando PRESORTED é especificado, definir uma direção de ordenamento com (A) ou (D) não tem efeito. Dados de saída serão ordenadores da mesma forma que os de entrada."
+
+#: src/language/stats/aggregate.c:416
+msgid "expecting aggregation function"
+msgstr "esperando função agregadora"
+
+#: src/language/stats/aggregate.c:434
+#, c-format
+msgid "Unknown aggregation function %s."
+msgstr "Função agregadora desconhecida %s."
+
+#: src/language/stats/aggregate.c:490
+#, c-format
+msgid "Missing argument %zu to %s."
+msgstr "Faltando argumento %zu para %s."
+
+#: src/language/stats/aggregate.c:499
+#, c-format
+msgid "Arguments to %s must be of same type as source variables."
+msgstr "Argumento para %s deve ser do mesmo tipo que as variáveis de origem."
+
+#: src/language/stats/aggregate.c:521
+#, c-format
+msgid "Number of source variables (%zu) does not match number of target variables (%zu)."
+msgstr "Número de variáveis de origem (%zu) não combinam com o número de variáveis algo (%zu)."
+
+#: src/language/stats/aggregate.c:537
+#, c-format
+msgid "The value arguments passed to the %s function are out-of-order.  They will be treated as if they had been specified in the correct order."
+msgstr ""
+
+#: src/language/stats/aggregate.c:607
+#, c-format
+msgid "Variable name %s is not unique within the aggregate file dictionary, which contains the aggregate variables and the break variables."
+msgstr ""
+
+#: src/language/stats/autorecode.c:136
+#, c-format
+msgid "Source variable count (%zu) does not match target variable count (%zu)."
+msgstr ""
+
+#: src/language/stats/autorecode.c:164
+#, c-format
+msgid "Target variable %s duplicates existing variable %s."
+msgstr "Variável de destino %s duplica variável existente %s."
+
+#: src/language/stats/autorecode.c:171
+#, c-format
+msgid "Duplicate variable name %s among target variables."
+msgstr ""
+
+#: src/language/stats/binomial.c:133
+#, c-format
+msgid "Variable %s is not dichotomous"
+msgstr "Variável %s não é dicotômica"
+
+#: src/language/stats/binomial.c:183
+msgid "Binomial Test"
+msgstr "Teste Binomial"
+
+#: src/language/stats/binomial.c:207
+msgid "Group1"
+msgstr "Grupo 1"
+
+#: src/language/stats/binomial.c:208
+msgid "Group2"
+msgstr "Grupo 2"
+
+#: src/language/stats/binomial.c:209 src/language/stats/chisquare.c:224
+#: src/language/stats/chisquare.c:284 src/language/stats/crosstabs.q:870
+#: src/language/stats/crosstabs.q:1076 src/language/stats/crosstabs.q:1799
+#: src/language/stats/examine.q:924 src/language/stats/frequencies.q:1140
+#: src/language/stats/oneway.q:307 src/language/stats/oneway.q:479
+#: src/language/stats/regression.q:309 src/ui/gui/crosstabs-dialog.c:59
+msgid "Total"
+msgstr "Total"
+
+#: src/language/stats/binomial.c:242 src/language/stats/chisquare.c:247
+#: src/language/stats/crosstabs.q:1194 src/language/stats/crosstabs.q:1235
+msgid "Category"
+msgstr "Categoria"
+
+#: src/language/stats/binomial.c:243 src/language/stats/crosstabs.q:880
+#: src/language/stats/examine.q:999 src/language/stats/frequencies.q:1411
+#: src/language/stats/npar-summary.c:128 src/language/stats/oneway.q:394
+#: src/language/stats/t-test.q:700 src/language/stats/t-test.q:724
+#: src/language/stats/t-test.q:863 src/language/stats/t-test.q:1425
+msgid "N"
+msgstr "N"
+
+#: src/language/stats/binomial.c:244
+msgid "Observed Prop."
+msgstr ""
+
+#: src/language/stats/binomial.c:245
+msgid "Test Prop."
+msgstr ""
+
+#: src/language/stats/binomial.c:248
+#, c-format
+msgid "Exact Sig. (%d-tailed)"
+msgstr ""
+
+#: src/language/stats/chisquare.c:194
+#, c-format
+msgid "CHISQUARE test specified %d expected values, but %d distinct values were encountered in variable %s."
+msgstr ""
+
+#: src/language/stats/chisquare.c:208 src/language/stats/chisquare.c:248
+msgid "Observed N"
+msgstr "N observado"
+
+#: src/language/stats/chisquare.c:209 src/language/stats/chisquare.c:249
+msgid "Expected N"
+msgstr "N esperado"
+
+#: src/language/stats/chisquare.c:210 src/language/stats/chisquare.c:250
+#: src/language/stats/regression.q:308 src/ui/gui/crosstabs-dialog.c:61
+msgid "Residual"
+msgstr "Resíduo"
+
+#: src/language/stats/chisquare.c:243
+msgid "Frequencies"
+msgstr "Frequência"
+
+#: src/language/stats/chisquare.c:298
+msgid "Test Statistics"
+msgstr "Testes estatísticos"
+
+#: src/language/stats/chisquare.c:312
+msgid "Chi-Square"
+msgstr "Chi-quadrado"
+
+#: src/language/stats/chisquare.c:313 src/language/stats/crosstabs.q:1170
+#: src/language/stats/oneway.q:280 src/language/stats/oneway.q:695
+#: src/language/stats/regression.q:302 src/language/stats/t-test.q:1026
+#: src/language/stats/t-test.q:1219 src/language/stats/t-test.q:1316
+msgid "df"
+msgstr "df"
+
+#: src/language/stats/chisquare.c:314
+msgid "Asymp. Sig."
+msgstr "Asymp. Sig."
+
+#: src/language/stats/crosstabs.q:284
+msgid "Missing mode REPORT not allowed in general mode.  Assuming MISSING=TABLE."
+msgstr ""
+
+#: src/language/stats/crosstabs.q:294
+msgid "Write mode ALL not allowed in general mode.  Assuming WRITE=CELLS."
+msgstr ""
+
+#: src/language/stats/crosstabs.q:370
+msgid "Too many cross-tabulation variables or dimensions."
+msgstr "Excessivo número de variáveis ou dimensões para crosstab."
+
+#: src/language/stats/crosstabs.q:380
+msgid "expecting BY"
+msgstr "esperando BY"
+
+#: src/language/stats/crosstabs.q:447
+msgid "VARIABLES must be specified before TABLES."
+msgstr ""
+
+#: src/language/stats/crosstabs.q:485
+#, c-format
+msgid "Maximum value (%ld) less than minimum value (%ld)."
+msgstr ""
+
+#: src/language/stats/crosstabs.q:865
+msgid "Summary."
+msgstr "Sumário."
+
+#: src/language/stats/crosstabs.q:867 src/language/stats/examine.q:987
+msgid "Cases"
+msgstr "Casos"
+
+#: src/language/stats/crosstabs.q:868 src/language/stats/examine.q:922
+#: src/language/stats/frequencies.q:1061 src/language/stats/frequencies.q:1412
+msgid "Valid"
+msgstr "Valido"
+
+#: src/language/stats/crosstabs.q:869 src/language/stats/examine.q:923
+#: src/language/stats/frequencies.q:1131 src/language/stats/frequencies.q:1413
+#: src/ui/gui/psppire-var-sheet.c:106
+msgid "Missing"
+msgstr "Missing"
+
+#: src/language/stats/crosstabs.q:881 src/language/stats/examine.q:1002
+#: src/language/stats/frequencies.q:1065 src/language/stats/frequencies.q:1066
+#: src/language/stats/frequencies.q:1067
+msgid "Percent"
+msgstr "Percentual"
+
+#: src/language/stats/crosstabs.q:1128
+msgid "count"
+msgstr "contagem"
+
+#: src/language/stats/crosstabs.q:1129
+msgid "row %"
+msgstr "linha %"
+
+#: src/language/stats/crosstabs.q:1130
+msgid "column %"
+msgstr "coluna %"
+
+#: src/language/stats/crosstabs.q:1131
+msgid "total %"
+msgstr "total %"
+
+#: src/language/stats/crosstabs.q:1132
+msgid "expected"
+msgstr "esperado"
+
+#: src/language/stats/crosstabs.q:1133
+msgid "residual"
+msgstr "residual"
+
+#: src/language/stats/crosstabs.q:1134
+msgid "std. resid."
+msgstr ""
+
+#: src/language/stats/crosstabs.q:1135
+msgid "adj. resid."
+msgstr ""
+
+#: src/language/stats/crosstabs.q:1165
+msgid "Chi-square tests."
+msgstr "Teste Chi-quadrado"
+
+#: src/language/stats/crosstabs.q:1168 src/language/stats/crosstabs.q:1195
+#: src/language/stats/crosstabs.q:1215 src/language/stats/crosstabs.q:1236
+#: src/language/stats/examine.q:1462 src/ui/gui/checkbox-treeview.c:94
+msgid "Statistic"
+msgstr "Estatística"
+
+#: src/language/stats/crosstabs.q:1172
+msgid "Asymp. Sig. (2-sided)"
+msgstr ""
+
+#: src/language/stats/crosstabs.q:1174
+msgid "Exact. Sig. (2-sided)"
+msgstr ""
+
+#: src/language/stats/crosstabs.q:1176
+msgid "Exact. Sig. (1-sided)"
+msgstr ""
+
+#: src/language/stats/crosstabs.q:1191
+msgid "Symmetric measures."
+msgstr "Medidas simétricas."
+
+#: src/language/stats/crosstabs.q:1197 src/language/stats/crosstabs.q:1239
+msgid "Asymp. Std. Error"
+msgstr ""
+
+#: src/language/stats/crosstabs.q:1198 src/language/stats/crosstabs.q:1240
+msgid "Approx. T"
+msgstr ""
+
+#: src/language/stats/crosstabs.q:1199 src/language/stats/crosstabs.q:1241
+msgid "Approx. Sig."
+msgstr ""
+
+#: src/language/stats/crosstabs.q:1210
+msgid "Risk estimate."
+msgstr ""
+
+#: src/language/stats/crosstabs.q:1214
+#, c-format
+msgid "95%% Confidence Interval"
+msgstr "Intervalo de confiança de 95%%"
+
+#: src/language/stats/crosstabs.q:1217 src/language/stats/t-test.q:1030
+#: src/language/stats/t-test.q:1216 src/language/stats/t-test.q:1319
+msgid "Lower"
+msgstr ""
+
+#: src/language/stats/crosstabs.q:1218 src/language/stats/t-test.q:1031
+#: src/language/stats/t-test.q:1217 src/language/stats/t-test.q:1320
+msgid "Upper"
+msgstr ""
+
+#: src/language/stats/crosstabs.q:1232
+msgid "Directional measures."
+msgstr ""
+
+#: src/language/stats/crosstabs.q:1237 src/ui/gui/psppire-var-sheet.c:101
+#: src/ui/gui/psppire.glade:2223
+msgid "Type"
+msgstr "Tipo"
+
+#: src/language/stats/crosstabs.q:1993
+msgid "Pearson Chi-Square"
+msgstr "Chi-quadrado de Pearson"
+
+#: src/language/stats/crosstabs.q:1994
+msgid "Likelihood Ratio"
+msgstr ""
+
+#: src/language/stats/crosstabs.q:1995
+msgid "Fisher's Exact Test"
+msgstr ""
+
+#: src/language/stats/crosstabs.q:1996
+msgid "Continuity Correction"
+msgstr ""
+
+#: src/language/stats/crosstabs.q:1997
+msgid "Linear-by-Linear Association"
+msgstr ""
+
+#: src/language/stats/crosstabs.q:2034 src/language/stats/crosstabs.q:2107
+#: src/language/stats/crosstabs.q:2169
+msgid "N of Valid Cases"
+msgstr "N de casos válidos"
+
+#: src/language/stats/crosstabs.q:2053 src/language/stats/crosstabs.q:2185
+msgid "Nominal by Nominal"
+msgstr ""
+
+#: src/language/stats/crosstabs.q:2054 src/language/stats/crosstabs.q:2186
+msgid "Ordinal by Ordinal"
+msgstr ""
+
+#: src/language/stats/crosstabs.q:2055
+msgid "Interval by Interval"
+msgstr ""
+
+#: src/language/stats/crosstabs.q:2056
+msgid "Measure of Agreement"
+msgstr ""
+
+#: src/language/stats/crosstabs.q:2061 src/ui/gui/crosstabs-dialog.c:41
+msgid "Phi"
+msgstr ""
+
+#: src/language/stats/crosstabs.q:2062
+msgid "Cramer's V"
+msgstr ""
+
+#: src/language/stats/crosstabs.q:2063
+msgid "Contingency Coefficient"
+msgstr ""
+
+#: src/language/stats/crosstabs.q:2064
+msgid "Kendall's tau-b"
+msgstr ""
+
+#: src/language/stats/crosstabs.q:2065
+msgid "Kendall's tau-c"
+msgstr ""
+
+#: src/language/stats/crosstabs.q:2066 src/ui/gui/crosstabs-dialog.c:48
+msgid "Gamma"
+msgstr "Gamma"
+
+#: src/language/stats/crosstabs.q:2067
+msgid "Spearman Correlation"
+msgstr ""
+
+#: src/language/stats/crosstabs.q:2068
+msgid "Pearson's R"
+msgstr "R de Pearson"
+
+#: src/language/stats/crosstabs.q:2069 src/ui/gui/crosstabs-dialog.c:50
+msgid "Kappa"
+msgstr "Kappa"
+
+#: src/language/stats/crosstabs.q:2142
+#, c-format
+msgid "Odds Ratio for %s (%g / %g)"
+msgstr ""
+
+#: src/language/stats/crosstabs.q:2145
+#, c-format
+msgid "Odds Ratio for %s (%.*s / %.*s)"
+msgstr ""
+
+#: src/language/stats/crosstabs.q:2153
+#, c-format
+msgid "For cohort %s = %g"
+msgstr ""
+
+#: src/language/stats/crosstabs.q:2156
+#, c-format
+msgid "For cohort %s = %.*s"
+msgstr ""
+
+#: src/language/stats/crosstabs.q:2187
+msgid "Nominal by Interval"
+msgstr ""
+
+#: src/language/stats/crosstabs.q:2192 src/ui/gui/crosstabs-dialog.c:43
+msgid "Lambda"
+msgstr "Lambda"
+
+#: src/language/stats/crosstabs.q:2193
+msgid "Goodman and Kruskal tau"
+msgstr ""
+
+#: src/language/stats/crosstabs.q:2194
+msgid "Uncertainty Coefficient"
+msgstr ""
+
+#: src/language/stats/crosstabs.q:2195
+msgid "Somers' d"
+msgstr ""
+
+#: src/language/stats/crosstabs.q:2196 src/ui/gui/crosstabs-dialog.c:51
+msgid "Eta"
+msgstr ""
+
+#: src/language/stats/crosstabs.q:2201
+msgid "Symmetric"
+msgstr "Simétrico"
+
+#: src/language/stats/crosstabs.q:2202 src/language/stats/crosstabs.q:2203
+#, c-format
+msgid "%s Dependent"
+msgstr "%s Dependente"
+
+#: src/language/stats/descriptives.c:102 src/language/stats/examine.q:1579
+#: src/language/stats/frequencies.q:123 src/language/stats/npar-summary.c:131
+#: src/language/stats/oneway.q:395 src/language/stats/t-test.q:701
+#: src/language/stats/t-test.q:725 src/language/stats/t-test.q:862
+#: src/language/stats/t-test.q:1213 src/ui/gui/descriptives-dialog.c:39
+#: src/ui/gui/frequencies-dialog.c:40
+msgid "Mean"
+msgstr "Média"
+
+#: src/language/stats/descriptives.c:103
+msgid "S E Mean"
+msgstr ""
+
+#: src/language/stats/descriptives.c:104 src/language/stats/frequencies.q:127
+msgid "Std Dev"
+msgstr "Std Dev"
+
+#: src/language/stats/descriptives.c:105 src/language/stats/examine.q:1659
+#: src/language/stats/frequencies.q:128 src/ui/gui/descriptives-dialog.c:46
+#: src/ui/gui/frequencies-dialog.c:45
+msgid "Variance"
+msgstr "Variança"
+
+#: src/language/stats/descriptives.c:106 src/language/stats/examine.q:1760
+#: src/language/stats/frequencies.q:129 src/ui/gui/descriptives-dialog.c:47
+#: src/ui/gui/frequencies-dialog.c:50
+msgid "Kurtosis"
+msgstr ""
+
+#: src/language/stats/descriptives.c:107
+msgid "S E Kurt"
+msgstr ""
+
+#: src/language/stats/descriptives.c:108 src/language/stats/examine.q:1741
+#: src/language/stats/frequencies.q:131 src/ui/gui/descriptives-dialog.c:48
+#: src/ui/gui/frequencies-dialog.c:46
+msgid "Skewness"
+msgstr ""
+
+#: src/language/stats/descriptives.c:109
+msgid "S E Skew"
+msgstr ""
+
+#: src/language/stats/descriptives.c:110 src/language/stats/examine.q:1704
+#: src/language/stats/frequencies.q:133 src/ui/gui/descriptives-dialog.c:43
+#: src/ui/gui/frequencies-dialog.c:48
+msgid "Range"
+msgstr "Intervalo"
+
+#: src/language/stats/descriptives.c:111 src/language/stats/examine.q:1684
+#: src/language/stats/frequencies.q:134 src/language/stats/npar-summary.c:137
+#: src/language/stats/oneway.q:407 src/ui/gui/descriptives-dialog.c:41
+#: src/ui/gui/frequencies-dialog.c:42
+msgid "Minimum"
+msgstr "Mínimo"
+
+#: src/language/stats/descriptives.c:112 src/language/stats/examine.q:1694
+#: src/language/stats/frequencies.q:135 src/language/stats/npar-summary.c:140
+#: src/language/stats/oneway.q:408 src/ui/gui/descriptives-dialog.c:42
+#: src/ui/gui/frequencies-dialog.c:43
+msgid "Maximum"
+msgstr "Máximo"
+
+#: src/language/stats/descriptives.c:113 src/language/stats/frequencies.q:136
+#: src/ui/gui/descriptives-dialog.c:44 src/ui/gui/frequencies-dialog.c:53
+msgid "Sum"
+msgstr "Soma"
+
+#: src/language/stats/descriptives.c:344
+#, c-format
+msgid "Z-score variable name %s would be a duplicate variable name."
+msgstr ""
+
+#: src/language/stats/descriptives.c:451
+msgid "expecting statistic name: reverting to default"
+msgstr "nome de estatística esperado: revertendo para o padrão"
+
+#: src/language/stats/descriptives.c:524
+msgid "Ran out of generic names for Z-score variables.  There are only 126 generic names: ZSC001-ZSC0999, STDZ01-STDZ09, ZZZZ01-ZZZZ09, ZQZQ01-ZQZQ09."
+msgstr ""
+
+#: src/language/stats/descriptives.c:556
+msgid "Mapping of variables to corresponding Z-scores."
+msgstr ""
+
+#: src/language/stats/descriptives.c:561
+msgid "Source"
+msgstr "Fonte"
+
+#: src/language/stats/descriptives.c:562
+msgid "Target"
+msgstr "Destino"
+
+#: src/language/stats/descriptives.c:672
+#, c-format
+msgid "Z-score of %s"
+msgstr ""
+
+#: src/language/stats/descriptives.c:886
+msgid "Valid N"
+msgstr "N válidos"
+
+#: src/language/stats/descriptives.c:887
+msgid "Missing N"
+msgstr ""
+
+#: src/language/stats/descriptives.c:915
+#, c-format
+msgid "Valid cases = %g; cases with missing value(s) = %g."
+msgstr ""
+
+#: src/language/stats/examine.q:290 src/language/stats/examine.q:293
+#, c-format
+msgid "%s is not currently supported."
+msgstr "%s não é atualmente suportada."
+
+#: src/language/stats/examine.q:503 src/language/stats/examine.q:516
+#, c-format
+msgid "%s and %s are mutually exclusive"
+msgstr "%s e %s são mutualmente excludentes"
+
+#: src/language/stats/examine.q:982
+msgid "Case Processing Summary"
+msgstr "Sumário de processamento de casos"
+
+#: src/language/stats/examine.q:1200
+msgid "Extreme Values"
+msgstr ""
+
+#: src/language/stats/examine.q:1216
+msgid "Case Number"
+msgstr "Número do caso"
+
+#: src/language/stats/examine.q:1317
+msgid "Highest"
+msgstr "Maior"
+
+#: src/language/stats/examine.q:1322
+msgid "Lowest"
+msgstr "Menor"
+
+#: src/language/stats/examine.q:1463 src/language/stats/oneway.q:397
+#: src/language/stats/oneway.q:693 src/language/stats/regression.q:203
+msgid "Std. Error"
+msgstr "Erro padrão"
+
+#: src/language/stats/examine.q:1465 src/language/stats/oneway.q:411
+#: src/ui/gui/examine.glade:307
+msgid "Descriptives"
+msgstr "Descritivas"
+
+#: src/language/stats/examine.q:1597 src/language/stats/oneway.q:402
+#, c-format
+msgid "%g%% Confidence Interval for Mean"
+msgstr ""
+
+#: src/language/stats/examine.q:1603 src/language/stats/oneway.q:404
+msgid "Lower Bound"
+msgstr "Intervalo inferior"
+
+#: src/language/stats/examine.q:1614 src/language/stats/oneway.q:405
+msgid "Upper Bound"
+msgstr "Intervalo superior"
+
+#: src/language/stats/examine.q:1626
+#, c-format
+msgid "5%% Trimmed Mean"
+msgstr ""
+
+#: src/language/stats/examine.q:1637 src/language/stats/frequencies.q:125
+#: src/ui/gui/frequencies-dialog.c:52
+msgid "Median"
+msgstr ""
+
+#: src/language/stats/examine.q:1671 src/language/stats/npar-summary.c:134
+#: src/language/stats/oneway.q:396 src/language/stats/t-test.q:702
+#: src/language/stats/t-test.q:726 src/language/stats/t-test.q:864
+#: src/language/stats/t-test.q:1214
+msgid "Std. Deviation"
+msgstr "Desvio padrão"
+
+#: src/language/stats/examine.q:1716
+msgid "Interquartile Range"
+msgstr ""
+
+#: src/language/stats/examine.q:1870
+#, c-format
+msgid "Boxplot of %s vs. %s"
+msgstr "Boxplot de %s por %s"
+
+#: src/language/stats/examine.q:1897
+msgid "Boxplot"
+msgstr "Boxplot"
+
+#: src/language/stats/examine.q:1939
+#, c-format
+msgid "Normal Q-Q Plot of %s"
+msgstr ""
+
+#: src/language/stats/examine.q:1940 src/language/stats/examine.q:1946
+msgid "Observed Value"
+msgstr ""
+
+#: src/language/stats/examine.q:1941
+msgid "Expected Normal"
+msgstr ""
+
+#: src/language/stats/examine.q:1944
+#, c-format
+msgid "Detrended Normal Q-Q Plot of %s"
+msgstr ""
+
+#: src/language/stats/examine.q:1947
+msgid "Dev from Normal"
+msgstr ""
+
+#: src/language/stats/examine.q:2066 src/language/stats/examine.q:2088
+#: src/language/stats/frequencies.q:1422 src/language/stats/npar-summary.c:147
+#: src/ui/gui/examine.glade:328
+msgid "Percentiles"
+msgstr "Percentis"
+
+#: src/language/stats/examine.q:2221
+msgid "Tukey's Hinges"
+msgstr ""
+
+#: src/language/stats/flip.c:96
+msgid "FLIP ignores TEMPORARY.  Temporary transformations will be made permanent."
+msgstr "FLIP ignora TEMPORARY. Transformações temporárias serão feitas permanentes."
+
+#: src/language/stats/flip.c:151
+msgid "Could not create temporary file for FLIP."
+msgstr "Não foi possível criar arquivo temporário para FLIP."
+
+#: src/language/stats/flip.c:162
+#, c-format
+msgid "Error writing FLIP file: %s."
+msgstr "Erro escrevendo em arquivo FLIP: %s."
+
+#: src/language/stats/flip.c:262
+#, c-format
+msgid "Could not create acceptable variant for variable %s."
+msgstr "Não foi possível criar variança aceitável para variável %s."
+
+#: src/language/stats/flip.c:278
+msgid "Cannot create more than 99999 variable names."
+msgstr "Impossível criar mais que 99999 nomes de variáve."
+
+#: src/language/stats/flip.c:394
+#, c-format
+msgid "Error rewinding FLIP file: %s."
+msgstr ""
+
+#: src/language/stats/flip.c:401
+msgid "Error creating FLIP source file."
+msgstr "Erro ao criar arquivo de origem FLIP"
+
+#: src/language/stats/flip.c:414
+#, c-format
+msgid "Error reading FLIP file: %s."
+msgstr ""
+
+#: src/language/stats/flip.c:416
+msgid "Unexpected end of file reading FLIP file."
+msgstr ""
+
+#: src/language/stats/flip.c:432
+#, c-format
+msgid "Error seeking FLIP source file: %s."
+msgstr ""
+
+#: src/language/stats/flip.c:440
+#, c-format
+msgid "Error writing FLIP source file: %s."
+msgstr ""
+
+#: src/language/stats/flip.c:451
+#, c-format
+msgid "Error closing FLIP source file: %s."
+msgstr ""
+
+#: src/language/stats/flip.c:459
+#, c-format
+msgid "Error rewinding FLIP source file: %s."
+msgstr ""
+
+#: src/language/stats/flip.c:488
+#, c-format
+msgid "Error reading FLIP temporary file: %s."
+msgstr ""
+
+#: src/language/stats/flip.c:491
+msgid "Unexpected end of file reading FLIP temporary file."
+msgstr ""
+
+#: src/language/stats/frequencies.q:124
+msgid "S.E. Mean"
+msgstr ""
+
+#: src/language/stats/frequencies.q:126 src/ui/gui/frequencies-dialog.c:49
+msgid "Mode"
+msgstr ""
+
+#: src/language/stats/frequencies.q:130
+msgid "S.E. Kurt"
+msgstr ""
+
+#: src/language/stats/frequencies.q:132
+msgid "S.E. Skew"
+msgstr ""
+
+#: src/language/stats/frequencies.q:409
+msgid "At most one of BARCHART, HISTOGRAM, or HBAR should be given.  HBAR will be assumed.  Argument values will be given precedence increasing along the order given."
+msgstr ""
+
+#: src/language/stats/frequencies.q:492
+#, c-format
+msgid "MAX must be greater than or equal to MIN, if both are specified.  However, MIN was specified as %g and MAX as %g.  MIN and MAX will be ignored."
+msgstr ""
+
+#: src/language/stats/frequencies.q:761
+#, c-format
+msgid "Variable %s specified multiple times on VARIABLES subcommand."
+msgstr ""
+
+#: src/language/stats/frequencies.q:824
+msgid "`)' expected after GROUPED interval list."
+msgstr "')' esperado após lista de intervalo do GROUPED"
+
+#: src/language/stats/frequencies.q:836
+#, c-format
+msgid "Variables %s specified on GROUPED but not on VARIABLES."
+msgstr ""
+
+#: src/language/stats/frequencies.q:843
+#, c-format
+msgid "Variables %s specified multiple times on GROUPED subcommand."
+msgstr ""
+
+#: src/language/stats/frequencies.q:1062 src/language/stats/frequencies.q:1155
+#: src/language/stats/frequencies.q:1156 src/language/stats/frequencies.q:1191
+msgid "Cum"
+msgstr ""
+
+#: src/language/stats/frequencies.q:1064 src/output/charts/plot-hist.c:125
+msgid "Frequency"
+msgstr "Frequência"
+
+#: src/language/stats/frequencies.q:1085
+msgid "Value Label"
+msgstr ""
+
+#: src/language/stats/frequencies.q:1189
+msgid "Freq"
+msgstr ""
+
+#: src/language/stats/frequencies.q:1190 src/language/stats/frequencies.q:1192
+msgid "Pct"
+msgstr ""
+
+#: src/language/stats/frequencies.q:1385
+#, c-format
+msgid "No valid data for variable %s; statistics not displayed."
+msgstr ""
+
+#: src/language/stats/frequencies.q:1426
+msgid "50 (Median)"
+msgstr ""
+
+#: src/language/stats/glm.q:148
+msgid "Multivariate GLM not yet supported"
+msgstr ""
+
+#: src/language/stats/glm.q:356 src/language/stats/regression.q:1026
+msgid "No valid data found. This command was skipped."
+msgstr ""
+
+#: src/language/stats/means.q:100
+msgid "Missing required subcommand TABLES."
+msgstr ""
+
+#: src/language/stats/means.q:134
+msgid "TABLES subcommand may not appear more than once."
+msgstr ""
+
+#: src/language/stats/npar-summary.c:114
+msgid "Descriptive Statistics"
+msgstr ""
+
+#: src/language/stats/npar-summary.c:151
+msgid "25th"
+msgstr ""
+
+#: src/language/stats/npar-summary.c:154
+msgid "50th (Median)"
+msgstr ""
+
+#: src/language/stats/npar-summary.c:157
+msgid "75th"
+msgstr ""
+
+#: src/language/stats/npar.q:98
+msgid "NPAR subcommand not currently implemented."
+msgstr ""
+
+#: src/language/stats/npar.q:236
+#, c-format
+msgid "The specified value of HI (%d) is lower than the specified value of LO (%d)"
+msgstr ""
+
+#: src/language/stats/npar.q:291
+#, c-format
+msgid "%d expected values were given, but the specified range (%d-%d) requires exactly %d values."
+msgstr ""
+
+#: src/language/stats/npar.q:425 src/language/stats/t-test.q:501
+#, c-format
+msgid "PAIRED was specified but the number of variables preceding WITH (%zu) did not match the number following (%zu)."
+msgstr ""
+
+#: src/language/stats/oneway.q:170
+msgid "Number of contrast coefficients must equal the number of groups"
+msgstr ""
+
+#: src/language/stats/oneway.q:179
+#, c-format
+msgid "Coefficients for contrast %zu do not total zero"
+msgstr ""
+
+#: src/language/stats/oneway.q:245
+#, c-format
+msgid "`%s' is not a variable name"
+msgstr ""
+
+#: src/language/stats/oneway.q:279 src/language/stats/regression.q:301
+msgid "Sum of Squares"
+msgstr "Soma dos quadrados"
+
+#: src/language/stats/oneway.q:281 src/language/stats/regression.q:303
+msgid "Mean Square"
+msgstr ""
+
+#: src/language/stats/oneway.q:282 src/language/stats/regression.q:304
+#: src/language/stats/t-test.q:1023
+msgid "F"
+msgstr ""
+
+#: src/language/stats/oneway.q:283 src/language/stats/oneway.q:543
+#: src/language/stats/regression.q:206 src/language/stats/regression.q:305
+msgid "Significance"
+msgstr ""
+
+#: src/language/stats/oneway.q:305
+msgid "Between Groups"
+msgstr ""
+
+#: src/language/stats/oneway.q:306
+msgid "Within Groups"
+msgstr ""
+
+#: src/language/stats/oneway.q:353 src/language/stats/regression.q:330
+msgid "ANOVA"
+msgstr "ANOVA"
+
+#: src/language/stats/oneway.q:540
+msgid "Levene Statistic"
+msgstr "Estatística de Levene"
+
+#: src/language/stats/oneway.q:541
+msgid "df1"
+msgstr ""
+
+#: src/language/stats/oneway.q:542
+msgid "df2"
+msgstr ""
+
+#: src/language/stats/oneway.q:546
+msgid "Test of Homogeneity of Variances"
+msgstr ""
+
+#: src/language/stats/oneway.q:614
+msgid "Contrast Coefficients"
+msgstr ""
+
+#: src/language/stats/oneway.q:616 src/language/stats/oneway.q:691
+msgid "Contrast"
+msgstr ""
+
+#: src/language/stats/oneway.q:689
+msgid "Contrast Tests"
+msgstr ""
+
+#: src/language/stats/oneway.q:692
+msgid "Value of Contrast"
+msgstr ""
+
+#: src/language/stats/oneway.q:694 src/language/stats/regression.q:205
+#: src/language/stats/t-test.q:1025 src/language/stats/t-test.q:1218
+#: src/language/stats/t-test.q:1315
+msgid "t"
+msgstr ""
+
+#: src/language/stats/oneway.q:696 src/language/stats/t-test.q:1027
+#: src/language/stats/t-test.q:1220 src/language/stats/t-test.q:1317
+msgid "Sig. (2-tailed)"
+msgstr ""
+
+#: src/language/stats/oneway.q:740
+msgid "Assume equal variances"
+msgstr ""
+
+#: src/language/stats/oneway.q:744
+msgid "Does not assume equal"
+msgstr ""
+
+#: src/language/stats/rank.q:221
+#, c-format
+msgid "%s of %s by %s"
+msgstr ""
+
+#: src/language/stats/rank.q:226
+#, c-format
+msgid "%s of %s"
+msgstr ""
+
+#: src/language/stats/rank.q:602
+msgid "Cannot create new rank variable.  All candidates in use."
+msgstr ""
+
+#: src/language/stats/rank.q:695
+msgid "Variables Created By RANK"
+msgstr ""
+
+#: src/language/stats/rank.q:719
+#, c-format
+msgid "%s into %s(%s of %s using %s BY %s)"
+msgstr ""
+
+#: src/language/stats/rank.q:730
+#, c-format
+msgid "%s into %s(%s of %s BY %s)"
+msgstr ""
+
+#: src/language/stats/rank.q:744
+#, c-format
+msgid "%s into %s(%s of %s using %s)"
+msgstr ""
+
+#: src/language/stats/rank.q:754
+#, c-format
+msgid "%s into %s(%s of %s)"
+msgstr ""
+
+#: src/language/stats/rank.q:767
+msgid "FRACTION has been specified, but NORMAL and PROPORTION rank functions have not been requested.  The FRACTION subcommand will be ignored."
+msgstr ""
+
+#: src/language/stats/rank.q:860
+#, c-format
+msgid "Variable %s already exists."
+msgstr ""
+
+#: src/language/stats/rank.q:865
+msgid "Too many variables in INTO clause."
+msgstr ""
+
+#: src/language/stats/regression.q:159 src/ui/gui/regression-dialog.c:41
+msgid "R"
+msgstr ""
+
+#: src/language/stats/regression.q:160
+msgid "R Square"
+msgstr ""
+
+#: src/language/stats/regression.q:161
+msgid "Adjusted R Square"
+msgstr ""
+
+#: src/language/stats/regression.q:162
+msgid "Std. Error of the Estimate"
+msgstr ""
+
+#: src/language/stats/regression.q:167
+msgid "Model Summary"
+msgstr ""
+
+#: src/language/stats/regression.q:202
+msgid "B"
+msgstr ""
+
+#: src/language/stats/regression.q:204
+msgid "Beta"
+msgstr ""
+
+#: src/language/stats/regression.q:207
+msgid "(Constant)"
+msgstr ""
+
+#: src/language/stats/regression.q:271
+msgid "Coefficients"
+msgstr "Coeficientes"
+
+#: src/language/stats/regression.q:307
+msgid "Regression"
+msgstr "Regressão"
+
+#: src/language/stats/regression.q:389
+msgid "Model"
+msgstr "Modelo"
+
+#: src/language/stats/regression.q:390
+msgid "Covariances"
+msgstr "Co-variança"
+
+#: src/language/stats/regression.q:405
+msgid "Coefficient Correlations"
+msgstr ""
+
+#: src/language/stats/regression.q:807
+msgid "The dependent variable is equal to the independent variable.The least squares line is therefore Y=X.Standard errors and related statistics may be meaningless."
+msgstr ""
+
+#: src/language/stats/regression.q:931
+msgid "Dependent variable must be numeric."
+msgstr "Variável dependente precisa ser numérica"
+
+#: src/language/stats/sort-cases.c:64
+msgid "Buffer limit must be at least 2."
+msgstr ""
+
+#: src/language/stats/sort-criteria.c:69
+msgid "`A' or `D' expected inside parentheses."
+msgstr ""
+
+#: src/language/stats/sort-criteria.c:74
+msgid "`)' expected."
+msgstr ""
+
+#: src/language/stats/sort-criteria.c:85
+#, c-format
+msgid "Variable %s specified twice in sort criteria."
+msgstr ""
+
+#: src/language/stats/t-test.q:280
+msgid "TESTVAL, GROUPS and PAIRS subcommands are mutually exclusive."
+msgstr "TESTVAL, GROUPS e PAIRS subcomandos são mutualmente excludentes."
+
+#: src/language/stats/t-test.q:298
+msgid "VARIABLES subcommand is not appropriate with PAIRS"
+msgstr ""
+
+#: src/language/stats/t-test.q:336
+msgid "One or more VARIABLES must be specified."
+msgstr ""
+
+#: src/language/stats/t-test.q:386
+#, c-format
+msgid "Long string variable %s is not valid here."
+msgstr "Variável string longa %s não é válida aqui."
+
+#: src/language/stats/t-test.q:406 src/language/stats/t-test.q:420
+msgid "When applying GROUPS to a string variable, two values must be specified."
+msgstr ""
+
+#: src/language/stats/t-test.q:518
+msgid "At least two variables must be specified on PAIRS."
+msgstr ""
+
+#: src/language/stats/t-test.q:698
+msgid "One-Sample Statistics"
+msgstr ""
+
+#: src/language/stats/t-test.q:703 src/language/stats/t-test.q:727
+#: src/language/stats/t-test.q:865
+msgid "SE. Mean"
+msgstr ""
+
+#: src/language/stats/t-test.q:722
+msgid "Group Statistics"
+msgstr ""
+
+#: src/language/stats/t-test.q:859
+msgid "Paired Sample Statistics"
+msgstr ""
+
+#: src/language/stats/t-test.q:885 src/language/stats/t-test.q:1243
+#: src/language/stats/t-test.q:1442
+#, c-format
+msgid "Pair %d"
+msgstr ""
+
+#: src/language/stats/t-test.q:1011
+msgid "Independent Samples Test"
+msgstr "Teste de Amostras Independentes"
+
+#: src/language/stats/t-test.q:1019
+msgid "Levene's Test for Equality of Variances"
+msgstr "Teste de Levene para Igualdade de Varianças"
+
+#: src/language/stats/t-test.q:1021
+msgid "t-test for Equality of Means"
+msgstr "teste t para Igualdade de Médias"
+
+#: src/language/stats/t-test.q:1024 src/language/stats/t-test.q:1427
+msgid "Sig."
+msgstr ""
+
+#: src/language/stats/t-test.q:1028 src/language/stats/t-test.q:1318
+msgid "Mean Difference"
+msgstr ""
+
+#: src/language/stats/t-test.q:1029
+msgid "Std. Error Difference"
+msgstr ""
+
+#: src/language/stats/t-test.q:1034 src/language/stats/t-test.q:1210
+#: src/language/stats/t-test.q:1310
+#, c-format
+msgid "%g%% Confidence Interval of the Difference"
+msgstr ""
+
+#: src/language/stats/t-test.q:1090
+msgid "Equal variances assumed"
+msgstr ""
+
+#: src/language/stats/t-test.q:1142
+msgid "Equal variances not assumed"
+msgstr ""
+
+#: src/language/stats/t-test.q:1200
+msgid "Paired Samples Test"
+msgstr ""
+
+#: src/language/stats/t-test.q:1203
+msgid "Paired Differences"
+msgstr ""
+
+#: src/language/stats/t-test.q:1215
+msgid "Std. Error Mean"
+msgstr ""
+
+#: src/language/stats/t-test.q:1299
+msgid "One-Sample Test"
+msgstr ""
+
+#: src/language/stats/t-test.q:1304
+#, c-format
+msgid "Test Value = %f"
+msgstr ""
+
+#: src/language/stats/t-test.q:1422
+msgid "Paired Samples Correlations"
+msgstr ""
+
+#: src/language/stats/t-test.q:1426
+msgid "Correlation"
+msgstr ""
+
+#: src/language/stats/t-test.q:1445
+#, c-format
+msgid "%s & %s"
+msgstr ""
+
+#: src/language/syntax-file.c:88
+#, c-format
+msgid "opening \"%s\" as syntax file"
+msgstr ""
+
+#: src/language/syntax-file.c:93
+#, c-format
+msgid "Opening `%s': %s."
+msgstr ""
+
+#: src/language/syntax-file.c:106
+#, c-format
+msgid "Reading `%s': %s."
+msgstr ""
+
+#: src/language/syntax-file.c:126
+#, c-format
+msgid "Closing `%s': %s."
+msgstr ""
+
+#: src/language/tests/check-model.q:138
+msgid "PATH and SEARCH subcommands are mutually exclusive.  Ignoring PATH."
+msgstr ""
+
+#: src/language/tests/check-model.q:156
+msgid "At least one value must be specified on PATH."
+msgstr ""
+
+#: src/language/tests/check-model.q:167
+#, c-format
+msgid "Hash bits adjusted to %d."
+msgstr ""
+
+#: src/language/tests/check-model.q:208
+#, c-format
+msgid "error opening \"%s\" for writing"
+msgstr "erro ao abrir \"%s\" para gravação"
+
+#: src/language/tests/float-format.c:124
+#, c-format
+msgid "%zu-byte string needed but %zu-byte string supplied."
+msgstr ""
+
+#: src/language/tests/float-format.c:136
+msgid "Hexadecimal floating constant too long."
+msgstr ""
+
+#: src/language/tests/float-format.c:201
+#, c-format
+msgid "%s conversion of %s from %s to %s should have produced %s but actually produced %s."
+msgstr ""
+
+#: src/language/tests/float-format.c:247
+msgid "Too many values in single command."
+msgstr "Muitos valores em um único comando."
+
+#: src/language/tests/moments-test.c:47
+msgid "expecting weight value"
+msgstr "esperando valor de ponderação"
+
+#: src/language/utilities/cd.c:41
+#, c-format
+msgid "Cannot change directory to %s:  %s "
+msgstr "Não é possível mudar diretório para %s: %s"
+
+#: src/language/utilities/date.c:32
+msgid "Only USE ALL is currently implemented."
+msgstr ""
+
+#: src/language/utilities/include.c:93
+msgid "Expecting BATCH or INTERACTIVE after SYNTAX."
+msgstr ""
+
+#: src/language/utilities/include.c:110
+msgid "Expecting YES or NO after CD."
+msgstr ""
+
+#: src/language/utilities/include.c:127
+msgid "Expecting CONTINUE or STOP after ERROR."
+msgstr ""
+
+#: src/language/utilities/include.c:134
+#, c-format
+msgid "Unexpected token: `%s'."
+msgstr ""
+
+#: src/language/utilities/include.c:179
+msgid "expecting file name"
+msgstr ""
+
+#: src/language/utilities/include.c:191
+#, c-format
+msgid "Can't find `%s' in include file search path."
+msgstr ""
+
+#: src/language/utilities/include.c:199
+#, c-format
+msgid "Unable to open `%s': %s."
+msgstr ""
+
+#: src/language/utilities/permissions.c:73
+#, c-format
+msgid "Expecting %s or %s."
+msgstr ""
+
+#: src/language/utilities/permissions.c:106
+#, c-format
+msgid "Cannot stat %s: %s"
+msgstr ""
+
+#: src/language/utilities/permissions.c:119
+#, c-format
+msgid "Cannot change mode of %s: %s"
+msgstr ""
+
+#: src/language/utilities/set.q:200
+msgid "WORKSPACE must be at least 1MB"
+msgstr ""
+
+#: src/language/utilities/set.q:206 src/language/utilities/set.q:208
+#: src/language/utilities/set.q:210 src/language/utilities/set.q:212
+#: src/language/utilities/set.q:214 src/language/utilities/set.q:216
+#: src/language/utilities/set.q:218 src/language/utilities/set.q:220
+#: src/language/utilities/set.q:222
+#, c-format
+msgid "%s is obsolete."
+msgstr "%s é obsoleto."
+
+#: src/language/utilities/set.q:225
+#, c-format
+msgid "%s is not implemented."
+msgstr "%s não está implementado."
+
+#: src/language/utilities/set.q:228
+msgid "Active file compression is not implemented."
+msgstr "Compressão de arquivo ativo não está implementado."
+
+#: src/language/utilities/set.q:323
+msgid "EPOCH must be 1500 or later."
+msgstr ""
+
+#: src/language/utilities/set.q:330
+msgid "expecting AUTOMATIC or year"
+msgstr "esperando AUTOMATIC ou ano"
+
+#: src/language/utilities/set.q:351
+msgid "LENGTH must be at least 1."
+msgstr "LENGTH deve ser pelo menos 1."
+
+#: src/language/utilities/set.q:395
+msgid "WIDTH must be at least 40."
+msgstr "WIDTH deve ser pelo menos 40."
+
+#: src/language/utilities/set.q:418
+#, c-format
+msgid "FORMAT requires numeric output format as an argument.  Specified format %s is of type string."
+msgstr ""
+
+#: src/language/utilities/set.q:485
+msgid "BLANKS is SYSMIS."
+msgstr ""
+
+#: src/language/utilities/set.q:487
+#, c-format
+msgid "BLANKS is %g."
+msgstr ""
+
+#: src/language/utilities/set.q:522
+#, c-format
+msgid "%s is \"%s\"."
+msgstr "%s é \"%s\"."
+
+#: src/language/utilities/set.q:558
+#, c-format
+msgid "DECIMAL is \"%c\"."
+msgstr ""
+
+#: src/language/utilities/set.q:564
+#, c-format
+msgid "ENDCMD is \"%c\"."
+msgstr ""
+
+#: src/language/utilities/set.q:572
+#, c-format
+msgid "ERRORS is \"%s\"."
+msgstr ""
+
+#: src/language/utilities/set.q:583
+#, c-format
+msgid "FORMAT is %s."
+msgstr "FORMAT é %s."
+
+#: src/language/utilities/set.q:589
+#, c-format
+msgid "LENGTH is %d."
+msgstr ""
+
+#: src/language/utilities/set.q:595
+#, c-format
+msgid "MXERRS is %d."
+msgstr ""
+
+#: src/language/utilities/set.q:601
+#, c-format
+msgid "MXLOOPS is %d."
+msgstr ""
+
+#: src/language/utilities/set.q:607
+#, c-format
+msgid "MXWARNS is %d."
+msgstr ""
+
+#: src/language/utilities/set.q:614 src/language/utilities/set.q:665
+#, c-format
+msgid "%s is %s (%s)."
+msgstr "%s é %s (%s)."
+
+#: src/language/utilities/set.q:686
+msgid "SCOMPRESSION is ON."
+msgstr ""
+
+#: src/language/utilities/set.q:688
+msgid "SCOMPRESSION is OFF."
+msgstr ""
+
+#: src/language/utilities/set.q:695
+msgid "UNDEFINED is WARN."
+msgstr ""
+
+#: src/language/utilities/set.q:697
+msgid "UNDEFINED is NOWARN."
+msgstr ""
+
+#: src/language/utilities/set.q:705
+msgid "WEIGHT is off."
+msgstr ""
+
+#: src/language/utilities/set.q:707
+#, c-format
+msgid "WEIGHT is variable %s."
+msgstr "WEIGHT é a variável %s."
+
+#: src/language/utilities/set.q:725
+#, c-format
+msgid "WIDTH is %d."
+msgstr ""
+
+#: src/language/utilities/title.c:68
+#, c-format
+msgid "%s: `.' expected after string."
+msgstr "%s: '.' esperado após string."
+
+#: src/language/utilities/title.c:108
+#, c-format
+msgid "   (Entered %s)"
+msgstr ""
+
+#: src/language/xforms/compute.c:146 src/language/xforms/compute.c:194
+#, c-format
+msgid "When executing COMPUTE: SYSMIS is not a valid value as an index into vector %s."
+msgstr ""
+
+#: src/language/xforms/compute.c:150 src/language/xforms/compute.c:201
+#, c-format
+msgid "When executing COMPUTE: %g is not a valid value as an index into vector %s."
+msgstr ""
+
+#: src/language/xforms/compute.c:344
+#, c-format
+msgid "There is no vector named %s."
+msgstr "Não existe vetor de nome %s."
+
+#: src/language/xforms/count.c:123
+msgid "Destination cannot be a string variable."
+msgstr "Destino não pode ser uma variável string."
+
+#: src/language/xforms/recode.c:246
+msgid "Inconsistent target variable types.  Target variables must be all numeric or all string."
+msgstr ""
+
+#: src/language/xforms/recode.c:267
+msgid "CONVERT requires string input values and numeric output values."
+msgstr ""
+
+#: src/language/xforms/recode.c:317
+msgid "THRU is not allowed with string variables."
+msgstr "THRU não é permitido com variáveis string."
+
+#: src/language/xforms/recode.c:391
+msgid "expecting output value"
+msgstr ""
+
+#: src/language/xforms/recode.c:440
+#, c-format
+msgid "%zu variable(s) cannot be recoded into %zu variable(s).  Specify the same number of variables as source and target variables."
+msgstr ""
+
+#: src/language/xforms/recode.c:455
+#, c-format
+msgid "There is no variable named %s.  (All string variables specified on INTO must already exist.  Use the STRING command to create a string variable.)"
+msgstr "Não existe variável de nome %s. (Todas as variáveis strings especificadas em INTO devem existir previamente.  Use o comando STRING para criar uma variável string.)"
+
+#: src/language/xforms/recode.c:470
+#, c-format
+msgid "INTO is required with %s input values and %s output values."
+msgstr ""
+
+#: src/language/xforms/recode.c:483
+#, c-format
+msgid "Type mismatch.  Cannot store %s data in %s variable %s."
+msgstr ""
+
+#: src/language/xforms/sample.c:76
+msgid "The sampling factor must be between 0 and 1 exclusive."
+msgstr ""
+
+#: src/language/xforms/sample.c:96
+#, c-format
+msgid "Cannot sample %d observations from a population of %d."
+msgstr ""
+
+#: src/language/xforms/select-if.c:100
+msgid "Syntax error expecting OFF or BY.  Turning off case filtering."
+msgstr ""
+
+#: src/language/xforms/select-if.c:115
+msgid "The filter variable must be numeric."
+msgstr ""
+
+#: src/language/xforms/select-if.c:121
+msgid "The filter variable may not be scratch."
+msgstr ""
+
+#: src/libpspp/hash.c:614
+#, c-format
+msgid "hash table:"
+msgstr "tabela hash:"
+
+#: src/math/percentiles.c:41
+msgid "HAverage"
+msgstr ""
+
+#: src/math/percentiles.c:42
+msgid "Weighted Average"
+msgstr "Média ponderada"
+
+#: src/math/percentiles.c:43
+msgid "Rounded"
+msgstr ""
+
+#: src/math/percentiles.c:44
+msgid "Empirical"
+msgstr ""
+
+#: src/math/percentiles.c:45
+msgid "Empirical with averaging"
+msgstr ""
+
+#: src/output/afm.c:149
+#, c-format
+msgid "opening font metrics file \"%s\""
+msgstr ""
+
+#: src/output/afm.c:239
+msgid "first line must be StartFontMetrics"
+msgstr ""
+
+#: src/output/afm.c:266
+#, c-format
+msgid "unsupported MappingScheme %d"
+msgstr ""
+
+#: src/output/afm.c:287
+msgid "required FontName is missing"
+msgstr ""
+
+#: src/output/afm.c:394
+msgid "CharMetrics line must start with C or CH"
+msgstr ""
+
+#: src/output/afm.c:535
+#, c-format
+msgid "reference to unknown character \"%s\""
+msgstr ""
+
+#: src/output/afm.c:593
+msgid "expected end of file"
+msgstr "fim de arquivo esperado"
+
+#: src/output/afm.c:605
+msgid "syntax error expecting end of line"
+msgstr ""
+
+#: src/output/afm.c:623 src/output/afm.c:660
+msgid "number out of valid range"
+msgstr "número fora do intervalo válido"
+
+#: src/output/afm.c:625 src/output/afm.c:662
+msgid "invalid numeric syntax"
+msgstr "sintaxe numérica inválida"
+
+#: src/output/afm.c:641
+msgid "syntax error expecting integer"
+msgstr "erro de sintaxe esperando inteiro"
+
+#: src/output/afm.c:679
+msgid "syntax error expecting number"
+msgstr "erro de sintaxe esperando número"
+
+#: src/output/afm.c:692
+msgid "syntax error in hex constant"
+msgstr "erro de sintaxe em constante hexa"
+
+#: src/output/afm.c:707
+msgid "syntax error expecting hex constant"
+msgstr "erro de sintaxe esperando constante hexa"
+
+#: src/output/afm.c:745
+msgid "unexpected end of line"
+msgstr "fim de linha inesperado"
+
+#: src/output/afm.c:795
+msgid "unexpected end of line expecting string"
+msgstr "fim de linha inesperado esperando string"
+
+#: src/output/ascii.c:251
+#, c-format
+msgid "ascii: page excluding margins and headers must be at least 59 characters wide by 15 lines long, but as configured is only %d characters by %d lines"
+msgstr ""
+
+#: src/output/ascii.c:329
+#, c-format
+msgid "ascii: bad index value for `box' key: syntax is box[INDEX], 0 <= INDEX < %d decimal, with INDEX expressed in base 4"
+msgstr ""
+
+#: src/output/ascii.c:336
+#, c-format
+msgid "ascii: multiple values for %s"
+msgstr ""
+
+#: src/output/ascii.c:344
+#, c-format
+msgid "ascii: unknown parameter `%s'"
+msgstr ""
+
+#: src/output/ascii.c:360
+#, c-format
+msgid "ascii: only screen devices may have `auto' length or width"
+msgstr ""
+
+#: src/output/ascii.c:374
+#, c-format
+msgid "ascii: positive integer required as `%s' value"
+msgstr ""
+
+#: src/output/ascii.c:402
+#, c-format
+msgid "ascii: `emphasis' value must be `bold', `underline', or `none'"
+msgstr ""
+
+#: src/output/ascii.c:415
+#, c-format
+msgid "ascii: zero or positive integer required as `%s' value"
+msgstr ""
+
+#: src/output/ascii.c:446
+#, c-format
+msgid "ascii: boolean value expected for `%s'"
+msgstr ""
+
+#: src/output/ascii.c:478 src/output/html.c:187
+#, c-format
+msgid "`chart-files' value must contain `#'"
+msgstr ""
+
+#: src/output/ascii.c:524
+#, c-format
+msgid "ascii: opening output file \"%s\""
+msgstr ""
+
+#: src/output/ascii.c:587
+#, c-format
+msgid "ascii: bad line (%d,%d)-(%d,%d) out of (%d,%d)\n"
+msgstr ""
+
+#: src/output/ascii.c:809 src/output/postscript.c:826
+#, c-format
+msgid "%s - Page %d"
+msgstr ""
+
+#: src/output/ascii.c:861
+#, c-format
+msgid "ascii: closing output file \"%s\""
+msgstr ""
+
+#: src/output/chart.c:145
+#, c-format
+msgid "creating \"%s\""
+msgstr ""
+
+#: src/output/charts/plot-hist.c:123
+msgid "HISTOGRAM"
+msgstr ""
+
+#: src/output/html.c:71
+#, c-format
+msgid "opening HTML output file: %s"
+msgstr ""
+
+#: src/output/html.c:82
+msgid "PSPP Output"
+msgstr ""
+
+#: src/output/html.c:170
+#, c-format
+msgid "unknown configuration parameter `%s' for HTML device driver"
+msgstr ""
+
+#: src/output/journal.c:69
+#, c-format
+msgid "error writing \"%s\""
+msgstr ""
+
+#: src/output/journal.c:94
+#, c-format
+msgid "error creating \"%s\""
+msgstr ""
+
+#: src/output/output.c:168
+#, c-format
+msgid "unknown output driver `%s'"
+msgstr ""
+
+#: src/output/output.c:170
+#, c-format
+msgid "output driver `%s' referenced but never defined"
+msgstr ""
+
+#: src/output/output.c:261
+#, c-format
+msgid "using default output driver configuration"
+msgstr ""
+
+#: src/output/output.c:290
+#, c-format
+msgid "cannot find output initialization file (use `-vv' to view search path)"
+msgstr ""
+
+#: src/output/output.c:298
+#, c-format
+msgid "cannot open \"%s\""
+msgstr ""
+
+#: src/output/output.c:310
+#, c-format
+msgid "reading \"%s\""
+msgstr ""
+
+#: src/output/output.c:332 src/ui/gui/message-dialog.c:97
+#, c-format
+msgid "syntax error"
+msgstr ""
+
+#: src/output/output.c:341
+#, c-format
+msgid "error closing \"%s\""
+msgstr ""
+
+#: src/output/output.c:349
+#, c-format
+msgid "no active output drivers"
+msgstr ""
+
+#: src/output/output.c:352
+#, c-format
+msgid "error reading device definition file"
+msgstr ""
+
+#: src/output/output.c:470
+#, c-format
+msgid ""
+"Driver classes:\n"
+"\t"
+msgstr ""
+
+#: src/output/output.c:502
+#, c-format
+msgid "syntax error parsing options for \"%s\" driver"
+msgstr ""
+
+#: src/output/output.c:518
+#, c-format
+msgid "reached end of options inside quoted string parsing options for \"%s\" driver"
+msgstr ""
+
+#: src/output/output.c:588
+#, c-format
+msgid "syntax error in string constant parsing options for \"%s\" driver"
+msgstr ""
+
+#: src/output/output.c:636
+#, c-format
+msgid "syntax error expecting `=' parsing options for driver \"%s\""
+msgstr ""
+
+#: src/output/output.c:687
+#, c-format
+msgid "unknown output driver class `%.*s'"
+msgstr ""
+
+#: src/output/output.c:702
+#, c-format
+msgid "unknown device type `%.*s'"
+msgstr ""
+
+#: src/output/output.c:719
+#, c-format
+msgid "cannot initialize output driver `%s' of class `%s'"
+msgstr ""
+
+#: src/output/output.c:765
+#, c-format
+msgid "driver definition line missing driver name or class name"
+msgstr ""
+
+#: src/output/output.c:868
+#, c-format
+msgid "`%s' is not a valid length."
+msgstr ""
+
+#: src/output/output.c:960
+#, c-format
+msgid "unknown paper type `%.*s'"
+msgstr ""
+
+#: src/output/output.c:978
+#, c-format
+msgid "error opening \"%s\""
+msgstr ""
+
+#: src/output/output.c:989
+#, c-format
+msgid "error reading \"%s\""
+msgstr ""
+
+#: src/output/output.c:1006
+#, c-format
+msgid "paper size file \"%s\" does not state a paper size"
+msgstr ""
+
+#: src/output/output.c:1066
+#, c-format
+msgid "syntax error in paper size `%s'"
+msgstr ""
+
+#: src/output/postscript.c:158
+#, c-format
+msgid "opening PostScript output file \"%s\""
+msgstr ""
+
+#: src/output/postscript.c:196
+#, c-format
+msgid "The defined PostScript page is not long enough to hold margins and headers, plus least 15 lines of the default fonts.  In fact, there's only room for %d lines of each font at the default size of %d.%03d points."
+msgstr ""
+
+#: src/output/postscript.c:246
+#, c-format
+msgid "closing PostScript output file \"%s\""
+msgstr ""
+
+#: src/output/postscript.c:309
+#, c-format
+msgid "unknown configuration parameter `%s' for PostScript device driver"
+msgstr ""
+
+#: src/output/postscript.c:325
+#, c-format
+msgid "unknown orientation `%s' (valid orientations are `portrait' and `landscape')"
+msgstr "orientação desconhecida '%s' (orientações válidas são 'retrato' e 'paisagem')"
+
+#: src/output/postscript.c:337
+#, c-format
+msgid "boolean value expected for %s"
+msgstr "valor booleano esperado para %s"
+
+#: src/output/postscript.c:350
+#, c-format
+msgid "positive integer value required for `%s'"
+msgstr "valor inteiro positivo requerido para '%s'"
+
+#: src/output/postscript.c:355
+#, c-format
+msgid "default font size must be at least 1 point (value of 1000 for key `%s')"
+msgstr "tamanho padrão de fonte precisa ser pelo menos de 1 ponto (valor de 1000 para chave '%s')"
+
+#: src/output/postscript.c:1176
+#, c-format
+msgid "\"%s\": bad font specification"
+msgstr "\"%s\": especificação de fonte inválida"
+
+#: src/output/postscript.c:1184
+#, c-format
+msgid "could not find AFM file \"%s\""
+msgstr "impossível encontrar arquivo AFM \"%s\""
+
+#: src/output/postscript.c:1198
+#, c-format
+msgid "could not find font \"%s\""
+msgstr "impossível encontrar fonte \"%s\""
+
+#: src/output/postscript.c:1207
+#, c-format
+msgid "could not find encoding \"%s\""
+msgstr "impossível abrir codificação \"%s\""
+
+#: src/output/postscript.c:1307
+#, c-format
+msgid "cannot open font file \"%s\""
+msgstr "impossível abrir arquivo de fonte \"%s\""
+
+#: src/output/postscript.c:1348
+#, c-format
+msgid "reading font file \"%s\""
+msgstr "lendo arquivo de fonte \"%s\""
+
+#: src/output/postscript.c:1370
+#, c-format
+msgid "cannot open font encoding file \"%s\""
+msgstr "impossível abrir arquivo de codificação de fonte \"%s\""
+
+#: src/output/postscript.c:1399
+#, c-format
+msgid "invalid numeric format"
+msgstr "formato numérico inválido"
+
+#: src/output/postscript.c:1421
+#, c-format
+msgid "closing Postscript encoding \"%s\""
+msgstr "fechando codificação \"%s\" Postscript"
+
+#: src/output/table.c:236
+#, c-format
+msgid "bad vline: x=%d+%d=%d y=(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n"
+msgstr "problema na vline: x=%d+%d=%d y=(%d+%d=%d,%d+%d=%d) no tamanho da tabela (%d,%d)\n"
+
+#: src/output/table.c:307
+#, c-format
+msgid "bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n"
+msgstr "problema na caixa: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) no tamanho da tabela (%d,%d)\n"
+
+#: src/ui/gui/comments-dialog.c:58
+#, c-format
+msgid "Column Number: %d"
+msgstr "Número da coluna: %d"
+
+#: src/ui/gui/crosstabs-dialog.c:40
+msgid "Chisq"
+msgstr "Chisq"
+
+#: src/ui/gui/crosstabs-dialog.c:42
+msgid "CC"
+msgstr "CC"
+
+#: src/ui/gui/crosstabs-dialog.c:44
+msgid "UC"
+msgstr "UC"
+
+#: src/ui/gui/crosstabs-dialog.c:45
+msgid "BTau"
+msgstr "BTau"
+
+#: src/ui/gui/crosstabs-dialog.c:46
+msgid "CTau"
+msgstr "CTau"
+
+#: src/ui/gui/crosstabs-dialog.c:47
+msgid "Risk"
+msgstr "Risk"
+
+#: src/ui/gui/crosstabs-dialog.c:49
+msgid "D"
+msgstr "D"
+
+#: src/ui/gui/crosstabs-dialog.c:52
+msgid "Corr"
+msgstr "Corr"
+
+#: src/ui/gui/crosstabs-dialog.c:53 src/ui/gui/crosstabs-dialog.c:64
+#: src/ui/gui/crosstabs-dialog.c:99 src/ui/gui/crosstabs-dialog.c:107
+#: src/ui/gui/psppire-var-store.c:591 src/ui/gui/var-display.c:14
+msgid "None"
+msgstr "Nenhum"
+
+#: src/ui/gui/crosstabs-dialog.c:56
+msgid "Count"
+msgstr "Contagem"
+
+#: src/ui/gui/crosstabs-dialog.c:57
+msgid "Row"
+msgstr "Linha"
+
+#: src/ui/gui/crosstabs-dialog.c:58
+msgid "Column"
+msgstr "Coluna"
+
+#: src/ui/gui/crosstabs-dialog.c:60
+msgid "Expected"
+msgstr "Esperado"
+
+#: src/ui/gui/crosstabs-dialog.c:62
+msgid "Std. Residual"
+msgstr "Resíduo padrão"
+
+#: src/ui/gui/crosstabs-dialog.c:63
+msgid "Adjusted Std. Residual"
+msgstr "Resíduo padrão ajustado"
+
+#: src/ui/gui/crosstabs.glade:50
+msgid "Rows"
+msgstr "Linhas"
+
+#: src/ui/gui/crosstabs.glade:131 src/ui/gui/frequencies.glade:185
+msgid "Format..."
+msgstr "Formato..."
+
+#: src/ui/gui/crosstabs.glade:138 src/ui/gui/examine.glade:246
+#: src/ui/gui/regression.glade:31
+msgid "Statistics..."
+msgstr "Estatísticas..."
+
+#: src/ui/gui/crosstabs.glade:148
+msgid "Cells..."
+msgstr "Células..."
+
+#: src/ui/gui/crosstabs.glade:230
+msgid "Print tables"
+msgstr "Imprimir tabelas"
+
+#: src/ui/gui/crosstabs.glade:240
+msgid "Pivot"
+msgstr "Pivô"
+
+#: src/ui/gui/crosstabs.glade:253 src/ui/gui/psppire.glade:778
+msgid "Ascending"
+msgstr "Ascendente"
+
+#: src/ui/gui/crosstabs.glade:283
+msgid "No label"
+msgstr "Sem rótulo"
+
+#: src/ui/gui/crosstabs.glade:295
+msgid "Suppress value labels"
+msgstr "Ocultar rótulos de valores"
+
+#: src/ui/gui/crosstabs.glade:311
+msgid "Labeling"
+msgstr "Rotulando"
+
+#: src/ui/gui/crosstabs.glade:378
+msgid "Cell Display"
+msgstr "Visualizar Célula"
+
+#: src/ui/gui/crosstabs.glade:439 src/ui/gui/oneway.glade:207
+#: src/ui/gui/regression.glade:322
+msgid "Statistics"
+msgstr "Estatísticas"
+
+#: src/ui/gui/customentry.c:334
+msgid "Style of bevel around the custom entry button"
+msgstr ""
+
+#: src/ui/gui/data-editor.c:150
+msgid "Transformations Pending"
+msgstr "Transformação Pendente"
+
+#: src/ui/gui/data-editor.c:323
+msgid "_Labels"
+msgstr "_Label"
+
+#: src/ui/gui/data-editor.c:324
+msgid "Show/hide value labels"
+msgstr "Exibir/ocultar rótulos de valores"
+
+#: src/ui/gui/data-editor.c:342 src/ui/gui/data-editor.c:361
+#: src/ui/gui/data-editor.c:1512 src/ui/gui/data-editor.c:1566
+msgid "Clear"
+msgstr "Limpar"
+
+#: src/ui/gui/data-editor.c:343
+msgid "Delete the cases at the selected position(s)"
+msgstr "Deletar o caso na posição(ões) selecionada(s)"
+
+#: src/ui/gui/data-editor.c:362
+msgid "Delete the variables at the selected position(s)"
+msgstr "Deletar as variáveis na posição(ões) selecionada(s)"
+
+#: src/ui/gui/data-editor.c:377
+msgid "Insert _Variable"
+msgstr "Inserir _Variáveis"
+
+#: src/ui/gui/data-editor.c:378
+msgid "Create a new variable at the current position"
+msgstr "Criar uma variável na posição atual"
+
+#: src/ui/gui/data-editor.c:396
+msgid "Insert Ca_se"
+msgstr "Inserir Ca_so"
+
+#: src/ui/gui/data-editor.c:397
+msgid "Create a new case at the current position"
+msgstr "Criar um caso na posição atual"
+
+#: src/ui/gui/data-editor.c:417
+msgid "_Goto Case"
+msgstr "_Ir para Caso"
+
+#: src/ui/gui/data-editor.c:418
+msgid "Jump to a Case in the Data Sheet"
+msgstr "Pular para o Caso na matriz de dados"
+
+#: src/ui/gui/data-editor.c:437
+msgid "_Weights"
+msgstr "_Ponderação"
+
+#: src/ui/gui/data-editor.c:438
+msgid "Weight cases by variable"
+msgstr "Pondera casos pela variável"
+
+#: src/ui/gui/data-editor.c:447 src/ui/gui/data-editor.glade:319
+msgid "_Transpose"
+msgstr "_Transpor"
+
+#: src/ui/gui/data-editor.c:448
+msgid "Transpose the cases with the variables"
+msgstr "Transpor os casos com as variáveis"
+
+#: src/ui/gui/data-editor.c:459
+msgid "S_plit"
+msgstr "_Dividir"
+
+#: src/ui/gui/data-editor.c:460
+msgid "Split the active file"
+msgstr "Dividir o arquivo ativo"
+
+#: src/ui/gui/data-editor.c:470
+msgid "_Sort"
+msgstr "_Ordenar"
+
+#: src/ui/gui/data-editor.c:471
+msgid "Sort cases in the active file"
+msgstr "Ordenar casos no arquivo ativo"
+
+#: src/ui/gui/data-editor.c:479 src/ui/gui/data-editor.glade:340
+msgid "Select _Cases"
+msgstr "Selecionar _Casos"
+
+#: src/ui/gui/data-editor.c:480
+msgid "Select cases from the active file"
+msgstr "Selecionar casos do arquivo ativo"
+
+#: src/ui/gui/data-editor.c:489 src/ui/gui/data-editor.glade:369
+msgid "_Compute"
+msgstr "_Computar"
+
+#: src/ui/gui/data-editor.c:490
+msgid "Compute new values for a variable"
+msgstr "Computar novos valores de uma variável"
+
+#: src/ui/gui/data-editor.c:498
+msgid "Oneway _ANOVA"
+msgstr "_ANOVA de Um Fator"
+
+#: src/ui/gui/data-editor.c:499
+msgid "Perform one way analysis of variance"
+msgstr "Fazer análise one way de variância"
+
+#: src/ui/gui/data-editor.c:507 src/ui/gui/data-editor.glade:496
+msgid "_Independent Samples T Test"
+msgstr "Teste T para Amostras _Independentes"
+
+#: src/ui/gui/data-editor.c:508
+msgid "Calculate T Test for samples from independent groups"
+msgstr "Calcular Teste T para amostrar de grupos independentes"
+
+#: src/ui/gui/data-editor.c:517 src/ui/gui/data-editor.glade:504
+msgid "_Paired Samples T Test"
+msgstr "Teste T para amostras em_parelhadas"
+
+#: src/ui/gui/data-editor.c:518
+msgid "Calculate T Test for paired samples"
+msgstr "Calcular Teste T para amostras emparelhadas"
+
+#: src/ui/gui/data-editor.c:527
+msgid "One _Sample T Test"
+msgstr "Teste T Para Uma Am_ostra"
+
+#: src/ui/gui/data-editor.c:528
+msgid "Calculate T Test for sample from a single distribution"
+msgstr "Calcular Teste T para amostra de uma distribuição única"
+
+#: src/ui/gui/data-editor.c:537 src/ui/gui/data-editor.glade:593
+msgid "Data File _Comments"
+msgstr "_Comentários do Arquivo de Dados"
+
+#: src/ui/gui/data-editor.c:538
+msgid "Commentary text for the data file"
+msgstr "Comentário do arquivo de dados"
+
+#: src/ui/gui/data-editor.c:546 src/ui/gui/data-editor.glade:228
+msgid "_Find"
+msgstr "_Localizar"
+
+#: src/ui/gui/data-editor.c:547
+msgid "Find Case"
+msgstr "Localizar Casos"
+
+#: src/ui/gui/data-editor.c:556 src/ui/gui/data-editor.glade:377
+msgid "Ran_k Cases"
+msgstr "Classificar Casos"
+
+#: src/ui/gui/data-editor.c:557
+msgid "Rank Cases"
+msgstr "Ordenamento de Casos"
+
+#: src/ui/gui/data-editor.c:566 src/ui/gui/data-editor.glade:389
+msgid "Recode into _Same Variables"
+msgstr "Recodificar na _Mesma Variável"
+
+#: src/ui/gui/data-editor.c:567
+msgid "Recode values into the same Variables"
+msgstr "Recodificar valores na mesma variável"
+
+#: src/ui/gui/data-editor.c:576 src/ui/gui/data-editor.glade:396
+msgid "Recode into _Different Variables"
+msgstr "Recodificar em uma Variável _Diferente"
+
+#: src/ui/gui/data-editor.c:577
+msgid "Recode values into different Variables"
+msgstr "Recodificar valores em variáveis diferentes"
+
+#: src/ui/gui/data-editor.c:586 src/ui/gui/data-editor.glade:293
+#: src/ui/gui/data-editor.glade:584
+msgid "_Variables"
+msgstr "_Variáveis"
+
+#: src/ui/gui/data-editor.c:587
+msgid "Jump to Variable"
+msgstr "Pular para variável"
+
+#: src/ui/gui/data-editor.c:595 src/ui/gui/data-editor.glade:450
+#: src/ui/gui/oneway.glade:179
+msgid "_Descriptives"
+msgstr "_Descritivas"
+
+#: src/ui/gui/data-editor.c:596
+msgid "Calculate descriptive statistics (mean, variance, ...)"
+msgstr "Calcular estatísticas descritivas (média, variância, ...)"
+
+#: src/ui/gui/data-editor.c:605 src/ui/gui/data-editor.glade:442
+msgid "_Frequencies"
+msgstr "_Frequências"
+
+#: src/ui/gui/data-editor.c:606
+msgid "Generate frequency statistics"
+msgstr "Gerar estatísticas de frequência"
+
+#: src/ui/gui/data-editor.c:614 src/ui/gui/data-editor.glade:466
+msgid "_Crosstabs"
+msgstr "_Crosstabs"
+
+#: src/ui/gui/data-editor.c:615
+msgid "Generate crosstabulations"
+msgstr "Gerar crosstabs"
+
+#: src/ui/gui/data-editor.c:624 src/ui/gui/data-editor.glade:458
+msgid "_Explore"
+msgstr "_Explorar"
+
+#: src/ui/gui/data-editor.c:625
+msgid "Examine Data by Factors"
+msgstr "Examina dados pelos fatores"
+
+#: src/ui/gui/data-editor.c:634 src/ui/gui/data-editor.glade:532
+msgid "Linear _Regression"
+msgstr "Regressão Linear"
+
+#: src/ui/gui/data-editor.c:635
+msgid "Estimate parameters of the linear model"
+msgstr "Estima parâmetros do modelo linear"
+
+#: src/ui/gui/data-editor.c:1027
+msgid "Font Selection"
+msgstr "Seleção de fonte"
+
+#: src/ui/gui/data-editor.c:1099
+msgid "No Split"
+msgstr "Sem divisão"
+
+#: src/ui/gui/data-editor.c:1108
+msgid "Split by "
+msgstr "Dividido por "
+
+#: src/ui/gui/data-editor.c:1133
+msgid "Filter off"
+msgstr "Sem Filtro"
+
+#: src/ui/gui/data-editor.c:1145
+#, c-format
+msgid "Filter by %s"
+msgstr "Filtrar por %s"
+
+#: src/ui/gui/data-editor.c:1163
+msgid "Weights off"
+msgstr "Sem Pesos"
+
+#: src/ui/gui/data-editor.c:1175
+#, c-format
+msgid "Weight by %s"
+msgstr "Peso por %s"
+
+#: src/ui/gui/data-editor.c:1198 src/ui/gui/data-editor.c:1445
+#: src/ui/gui/data-editor.glade:660
+msgid "Open"
+msgstr "Abrir"
+
+#: src/ui/gui/data-editor.c:1199
+msgid "Open a data file"
+msgstr "Abrir arquivo de dados"
+
+#: src/ui/gui/data-editor.c:1207 src/ui/gui/data-editor.c:1323
+#: src/ui/gui/data-editor.glade:670
+msgid "Save"
+msgstr "Salvar"
+
+#: src/ui/gui/data-editor.c:1208 src/ui/gui/data-editor.c:1218
+msgid "Save data to file"
+msgstr "Salvar dados para arquivo"
+
+#: src/ui/gui/data-editor.c:1217
+msgid "Save As"
+msgstr "Salvar Como"
+
+#: src/ui/gui/data-editor.c:1226 src/ui/gui/recode-dialog.c:928
+#: src/ui/gui/recode-dialog.c:1023
+msgid "New"
+msgstr "Novo"
+
+#: src/ui/gui/data-editor.c:1227
+msgid "New data file"
+msgstr "Novo arquivo de dados"
+
+#: src/ui/gui/data-editor.c:1235
+msgid "_Import Text Data"
+msgstr "_Importar dados textuais"
+
+#: src/ui/gui/data-editor.c:1236
+msgid "Import text data file"
+msgstr "Importar arquivo de dados textuais"
+
+#: src/ui/gui/data-editor.c:1331 src/ui/gui/data-editor.c:1453
+msgid "System Files (*.sav)"
+msgstr "Arquivo de Sistema (*.sav)"
+
+#: src/ui/gui/data-editor.c:1337 src/ui/gui/data-editor.c:1459
+msgid "Portable Files (*.por) "
+msgstr "Arquivo Portável (*.por) "
+
+#: src/ui/gui/data-editor.c:1343 src/ui/gui/data-editor.c:1465
+#: src/ui/gui/syntax-editor.c:138 src/ui/gui/syntax-editor.c:522
+msgid "All Files"
+msgstr "Todos os Arquivos"
+
+#: src/ui/gui/data-editor.c:1351
+msgid "System File"
+msgstr "Arquivos de Sistema"
+
+#: src/ui/gui/data-editor.c:1356
+msgid "Portable File"
+msgstr "Arquivo portátil"
+
+#: src/ui/gui/data-editor.c:1503
+msgid "Sort Ascending"
+msgstr "Ordenar Ascendentemente "
+
+#: src/ui/gui/data-editor.c:1506
+msgid "Sort Descending"
+msgstr "Ordenar Descendentemente"
+
+#: src/ui/gui/data-editor.c:1509 src/ui/gui/data-editor.glade:150
+#: src/ui/gui/data-editor.glade:801
+msgid "Insert Variable"
+msgstr "Inserir Variáveis"
+
+#: src/ui/gui/data-editor.c:1563 src/ui/gui/data-editor.glade:789
+msgid "Insert Case"
+msgstr "Inserir Caso"
+
+#: src/ui/gui/data-editor.glade:18 src/ui/gui/output-viewer.glade:22
+#: src/ui/gui/syntax-editor.glade:39
+msgid "_File"
+msgstr "_Arquivo"
+
+#: src/ui/gui/data-editor.glade:33 src/ui/gui/data-editor.glade:59
+#: src/ui/gui/syntax-editor.glade:57 src/ui/gui/syntax-editor.glade:87
+msgid "_Syntax"
+msgstr "_Sintaxe"
+
+#: src/ui/gui/data-editor.glade:40 src/ui/gui/data-editor.glade:66
+#: src/ui/gui/data-editor.glade:286 src/ui/gui/data-editor.glade:304
+#: src/ui/gui/syntax-editor.glade:66 src/ui/gui/syntax-editor.glade:96
+msgid "_Data"
+msgstr "_Dados"
+
+#: src/ui/gui/data-editor.glade:78
+msgid "_Import Delimited Text Data"
+msgstr "_Importar Dados Textuais Delimitados"
+
+#: src/ui/gui/data-editor.glade:111
+msgid "Recently Used Da_ta"
+msgstr "Dados Recen_temente usados"
+
+#: src/ui/gui/data-editor.glade:118
+msgid "Recently Used _Files"
+msgstr "Arquivos _Recentemente Usados"
+
+#: src/ui/gui/data-editor.glade:142 src/ui/gui/output-viewer.glade:55
+#: src/ui/gui/syntax-editor.glade:143
+msgid "_Edit"
+msgstr "_Editar"
+
+#: src/ui/gui/data-editor.glade:158
+msgid "Insert Cases"
+msgstr "Inserir Casos"
+
+#: src/ui/gui/data-editor.glade:166 src/ui/gui/data-editor.glade:738
+msgid "Go To Case"
+msgstr "Ir para Caso"
+
+#: src/ui/gui/data-editor.glade:207
+msgid "Cl_ear Variables"
+msgstr "Limpar Variáv_eis"
+
+#: src/ui/gui/data-editor.glade:215
+msgid "_Clear Cases"
+msgstr "Limpar _Casos"
+
+#: src/ui/gui/data-editor.glade:239
+msgid "_View"
+msgstr "_Ver"
+
+#: src/ui/gui/data-editor.glade:246
+msgid "_Status Bar"
+msgstr "_Barra de Status"
+
+#: src/ui/gui/data-editor.glade:259
+msgid "_Fonts"
+msgstr "_Fontes"
+
+#: src/ui/gui/data-editor.glade:266
+msgid "_Grid Lines"
+msgstr "_Linhas da Grade"
+
+#: src/ui/gui/data-editor.glade:274
+msgid "Value _Labels"
+msgstr "_Labels"
+
+#: src/ui/gui/data-editor.glade:311
+msgid "_Sort Cases"
+msgstr "_Ordenar Casos"
+
+#: src/ui/gui/data-editor.glade:332
+msgid "S_plit File"
+msgstr "_Dividir Arquivo"
+
+#: src/ui/gui/data-editor.glade:347
+msgid "_Weight Cases"
+msgstr "Dar _Peso aos Casos"
+
+#: src/ui/gui/data-editor.glade:359
+msgid "_Transform"
+msgstr "_Transformar"
+
+#: src/ui/gui/data-editor.glade:409
+msgid "_Run Pending Transforms"
+msgstr "_Executar Transformações Pendentes"
+
+#: src/ui/gui/data-editor.glade:422
+msgid "_Analyze"
+msgstr "A_nalisar"
+
+#: src/ui/gui/data-editor.glade:432
+msgid "_Descriptive Statistics"
+msgstr "Estatísticas _Descritivas"
+
+#: src/ui/gui/data-editor.glade:478
+msgid "Compare _Means"
+msgstr "Comparar _Médias"
+
+#: src/ui/gui/data-editor.glade:488
+msgid "_One Sample T Test"
+msgstr "Teste T Para Uma Am_ostra"
+
+#: src/ui/gui/data-editor.glade:512
+msgid "One Way _ANOVA"
+msgstr "_ANOVA de Um Fator"
+
+#: src/ui/gui/data-editor.glade:524
+msgid "Bivariate _Correlation"
+msgstr "_Correlação Bivariada"
+
+#: src/ui/gui/data-editor.glade:540
+msgid "_Non-Parametric Statistics"
+msgstr "Estatísticas Não-Paramétricas"
+
+#: src/ui/gui/data-editor.glade:550
+msgid "_Chi-Square"
+msgstr "_Chi-Quadrado"
+
+#: src/ui/gui/data-editor.glade:558
+msgid "_Binomial"
+msgstr "_Binomial"
+
+#: src/ui/gui/data-editor.glade:574
+msgid "_Utilities"
+msgstr "_Utilidades"
+
+#: src/ui/gui/data-editor.glade:604 src/ui/gui/output-viewer.glade:78
+#: src/ui/gui/syntax-editor.glade:234
+msgid "_Windows"
+msgstr "_Janelas"
+
+#: src/ui/gui/data-editor.glade:611 src/ui/gui/output-viewer.glade:88
+#: src/ui/gui/syntax-editor.glade:243
+msgid "_Minimize All Windows"
+msgstr "_Minimizar Todas as Janelas"
+
+#: src/ui/gui/data-editor.glade:622 src/ui/gui/output-viewer.glade:99
+#: src/ui/gui/syntax-editor.glade:254
+msgid "_Help"
+msgstr "A_juda"
+
+#: src/ui/gui/data-editor.glade:629 src/ui/gui/output-viewer.glade:106
+#: src/ui/gui/syntax-editor.glade:262
+msgid "_Reference Manual"
+msgstr "_Manual de Referência"
+
+#: src/ui/gui/data-editor.glade:636 src/ui/gui/output-viewer.glade:113
+#: src/ui/gui/syntax-editor.glade:269
+msgid "_About"
+msgstr "_Sobre"
+
+#: src/ui/gui/data-editor.glade:680
+msgid "Print"
+msgstr "Imprimir"
+
+#: src/ui/gui/data-editor.glade:690
+msgid "Recall"
+msgstr "Recall"
+
+#: src/ui/gui/data-editor.glade:708
+msgid "Undo"
+msgstr "Desfazer"
+
+#: src/ui/gui/data-editor.glade:718
+msgid "Redo"
+msgstr "Refazer"
+
+#: src/ui/gui/data-editor.glade:748
+msgid "Variables"
+msgstr "Variáveis"
+
+#: src/ui/gui/data-editor.glade:769
+msgid "Find"
+msgstr "Localizar"
+
+#: src/ui/gui/data-editor.glade:821
+msgid "Split File"
+msgstr "Dividir Arquivo"
+
+#: src/ui/gui/data-editor.glade:832
+msgid "Weight Cases"
+msgstr "Dar Peso Aos Casos"
+
+#: src/ui/gui/data-editor.glade:844
+msgid "Select Cases"
+msgstr "Selecionar Casos"
+
+#: src/ui/gui/data-editor.glade:864 src/ui/gui/data-editor.glade:1452
+#: src/ui/gui/data-editor.glade:1633
+msgid "Value Labels"
+msgstr "Value Labels"
+
+#: src/ui/gui/data-editor.glade:875
+msgid "Use Sets"
+msgstr ""
+
+#: src/ui/gui/data-editor.glade:907
+msgid "Information Area"
+msgstr "Área de Informação"
+
+#: src/ui/gui/data-editor.glade:926
+msgid "Processor Area"
+msgstr "Área do Processamento"
+
+#: src/ui/gui/data-editor.glade:951
+msgid "Case Counter Area"
+msgstr "Área de Contagem dos Casos"
+
+#: src/ui/gui/data-editor.glade:976
+msgid "Filter Use Status Area"
+msgstr "Área de Status do Uso de Filtros"
+
+#: src/ui/gui/data-editor.glade:1002
+msgid "Weight Status Area"
+msgstr "Área de Status dos Pesos"
+
+#: src/ui/gui/data-editor.glade:1028
+msgid "Split File Status Area"
+msgstr "Área de Status da Divisão de Arquivos"
+
+#: src/ui/gui/data-editor.glade:1058
+msgid "Variable Type"
+msgstr "Tipo da Variável"
+
+#: src/ui/gui/data-editor.glade:1094 src/ui/gui/psppire-var-store.c:599
+msgid "Comma"
+msgstr "Vírgula"
+
+#: src/ui/gui/data-editor.glade:1110 src/ui/gui/psppire-var-store.c:600
+msgid "Dot"
+msgstr "Ponto"
+
+#: src/ui/gui/data-editor.glade:1126
+msgid "Scientific notation"
+msgstr "Notação Científica"
+
+#: src/ui/gui/data-editor.glade:1142 src/ui/gui/psppire-var-store.c:602
+msgid "Date"
+msgstr "Data"
+
+#: src/ui/gui/data-editor.glade:1158 src/ui/gui/psppire-var-store.c:603
+msgid "Dollar"
+msgstr "Moeda"
+
+#: src/ui/gui/data-editor.glade:1174
+msgid "Custom currency"
+msgstr "Moeda Personalizada"
+
+#: src/ui/gui/data-editor.glade:1268
+msgid "positive"
+msgstr "positivo"
+
+#: src/ui/gui/data-editor.glade:1274
+msgid "negative"
+msgstr "negativo"
+
+#: src/ui/gui/data-editor.glade:1287
+msgid "Sample"
+msgstr "Amostra"
+
+#: src/ui/gui/data-editor.glade:1337
+msgid "Width:"
+msgstr "Tamanho:"
+
+#: src/ui/gui/data-editor.glade:1381
+msgid "Decimal Places:"
+msgstr "Casas Decimais:"
+
+#: src/ui/gui/data-editor.glade:1550
+msgid "Value Label:"
+msgstr "Value Label:"
+
+#: src/ui/gui/data-editor.glade:1563 src/ui/gui/psppire.glade:2544
+#: src/ui/gui/recode.glade:185
+msgid "Value:"
+msgstr "Valor:"
+
+#: src/ui/gui/data-editor.glade:1700 src/ui/gui/examine.glade:423
+#: src/ui/gui/t-test.glade:460
+msgid "Missing Values"
+msgstr "Missing Values"
+
+#: src/ui/gui/data-editor.glade:1718
+msgid "_Range plus one optional discrete missing value"
+msgstr ""
+
+#: src/ui/gui/data-editor.glade:1743
+msgid "_Low:"
+msgstr "_Menor:"
+
+#: src/ui/gui/data-editor.glade:1772
+msgid "_High:"
+msgstr "Ma_ior:"
+
+#: src/ui/gui/data-editor.glade:1813
+msgid "Di_screte value:"
+msgstr "Valor Di_screto:"
+
+#: src/ui/gui/data-editor.glade:1860
+msgid "_No missing values"
+msgstr "Sem missi_ng values"
+
+#: src/ui/gui/data-editor.glade:1878
+msgid "_Discrete missing values"
+msgstr "Missing values _discretos"
+
+#: src/ui/gui/descriptives-dialog.c:40 src/ui/gui/frequencies-dialog.c:41
+msgid "Standard deviation"
+msgstr "Desvio padrão"
+
+#: src/ui/gui/descriptives-dialog.c:45
+msgid "Standard error"
+msgstr "Erro padrão"
+
+#: src/ui/gui/descriptives-dialog.glade:122 src/ui/gui/frequencies.glade:139
+msgid "Statistics:"
+msgstr "Estatísticas:"
+
+#: src/ui/gui/descriptives-dialog.glade:184
+msgid "Exclude entire case if any selected variable is missing"
+msgstr "Excluir o caso completo se qualquer variável selecionada for um missing"
+
+#: src/ui/gui/descriptives-dialog.glade:194
+msgid "Include user-missing data in analysis"
+msgstr "Incluir user-missing na análise"
+
+#: src/ui/gui/descriptives-dialog.glade:207
+msgid "Save Z-scores of selected variables as new variables"
+msgstr "Salvar Z-score da variável selecionada como novas variáveis"
+
+#: src/ui/gui/descriptives-dialog.glade:223
+msgid "Options:"
+msgstr "Opções:"
+
+#: src/ui/gui/examine.glade:132
+msgid "Dependent List:"
+msgstr "Lista Dependente:"
+
+#: src/ui/gui/examine.glade:180
+msgid "Factor List:"
+msgstr "Lista de Fator:"
+
+#: src/ui/gui/examine.glade:218
+msgid "Label Cases by:"
+msgstr "Inserir Label nos Casos por:"
+
+#: src/ui/gui/examine.glade:255 src/ui/gui/t-test.glade:69
+#: src/ui/gui/t-test.glade:629 src/ui/gui/t-test.glade:780
+msgid "Options..."
+msgstr "Opções..."
+
+#: src/ui/gui/examine.glade:316
+msgid "Extremes"
+msgstr "Extremos"
+
+#: src/ui/gui/examine.glade:382
+msgid "Exclude cases listwise"
+msgstr ""
+
+#: src/ui/gui/examine.glade:392
+msgid "Exclude cases pairwise"
+msgstr ""
+
+#: src/ui/gui/examine.glade:406
+msgid "Repeat values"
+msgstr "Repetir valores"
+
+#: src/ui/gui/find-dialog.c:659
+#, c-format
+msgid "Bad regular expression: %s"
+msgstr "Expressão regular mal formada: %s"
+
+#: src/ui/gui/frequencies-dialog.c:44
+msgid "Standard error of the mean"
+msgstr "Erro padrão da média"
+
+#: src/ui/gui/frequencies-dialog.c:47
+msgid "Standard error of the skewness"
+msgstr "Erro padrão do skewness"
+
+#: src/ui/gui/frequencies-dialog.c:51
+msgid "Standard error of the kurtosis"
+msgstr "Erro padrão do kurtosis"
+
+#: src/ui/gui/frequencies.glade:98 src/ui/gui/psppire.glade:265
+#: src/ui/gui/rank.glade:67
+msgid "Variable(s):"
+msgstr "Variável(is):"
+
+#: src/ui/gui/frequencies.glade:168
+msgid "Display Frequency Table"
+msgstr "Exibir Tabela de Frequência"
+
+#: src/ui/gui/frequencies.glade:264
+msgid "Ascending Order"
+msgstr "Ordem Ascendente"
+
+#: src/ui/gui/frequencies.glade:275
+msgid "Descending Order"
+msgstr "Ordem Descendente"
+
+#: src/ui/gui/frequencies.glade:290
+msgid "Ascending Counts"
+msgstr "Contagens Ascendentes"
+
+#: src/ui/gui/frequencies.glade:305
+msgid "Descending Counts"
+msgstr "Contagens Descendentes"
+
+#: src/ui/gui/frequencies.glade:323
+msgid "Order by"
+msgstr "Ordenar por"
+
+#: src/ui/gui/frequencies.glade:355
+msgid "Supress tables with more than N categories"
+msgstr "Ocultar tabelas com mais de N categorias"
+
+#: src/ui/gui/frequencies.glade:371
+msgid "Maximum no of categories"
+msgstr "Número máximo de categorias"
+
+#: src/ui/gui/helper.c:139
+msgid "Sorry. The help system hasn't yet been implemented."
+msgstr "Desculpe. O sistema de ajuda ainda não foi implementado."
+
+#: src/ui/gui/helper.c:165
+#, c-format
+msgid "Cannot open reference manual: %s"
+msgstr "Impossível abrir manual de referência: %s"
+
+#: src/ui/gui/message-dialog.c:101
+msgid "data file error"
+msgstr "erro no arquivo de dados"
+
+#: src/ui/gui/message-dialog.c:106
+msgid "PSPP error"
+msgstr "Erro no PSPP"
+
+#: src/ui/gui/message-dialog.c:114
+msgid "syntax warning"
+msgstr "aviso na sintaxe"
+
+#: src/ui/gui/message-dialog.c:118
+msgid "data file warning"
+msgstr "aviso no arquivo de dados"
+
+#: src/ui/gui/message-dialog.c:123
+msgid "PSPP warning"
+msgstr "aviso do PSPP"
+
+#: src/ui/gui/message-dialog.c:132
+msgid "syntax information"
+msgstr "informação da sintaxe"
+
+#: src/ui/gui/message-dialog.c:136
+msgid "data file information"
+msgstr "informação do arquivo de dados"
+
+#: src/ui/gui/message-dialog.c:141
+msgid "PSPP information"
+msgstr "Informação do PSPP"
+
+#: src/ui/gui/message-dialog.c:209
+msgid "The PSPP processing engine reported the following message:"
+msgid_plural "The PSPP processing engine reported the following messages:"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/ui/gui/message-dialog.c:216
+#, c-format
+msgid "The PSPP processing engine reported %d message."
+msgid_plural "The PSPP processing engine reported %d messages."
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/ui/gui/message-dialog.c:223
+#, c-format
+msgid "%d of these messages are displayed below."
+msgid_plural "%d of these messages are displayed below."
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/ui/gui/message-dialog.glade:8
+msgid "Messages Reported"
+msgstr "Mensagens Reportadas"
+
+#: src/ui/gui/message-dialog.glade:42
+msgid "The PSPP processor reported # errors.  The first # and last # are shown below:"
+msgstr "O processador do PSPP reportou # erros. O primeiro # e o último # estão abaixo:"
+
+#: src/ui/gui/message-dialog.glade:94
+msgid "gtk-close"
+msgstr "gtk-close"
+
+#: src/ui/gui/missing-val-dialog.c:115 src/ui/gui/missing-val-dialog.c:160
+msgid "Incorrect value for variable type"
+msgstr "Valor incorreto para tipo de variável"
+
+#: src/ui/gui/missing-val-dialog.c:136 src/ui/gui/missing-val-dialog.c:143
+msgid "Incorrect range specification"
+msgstr "Especificação incorreta de intervalo"
+
+#: src/ui/gui/oneway-anova-dialog.c:335
+#, c-format
+msgid "Contrast %d of %d"
+msgstr "Contraste %d de %d"
+
+#: src/ui/gui/oneway.glade:30
+msgid "_Factor:"
+msgstr "_Fator:"
+
+#: src/ui/gui/oneway.glade:66
+msgid "Dependent _Variable(s):"
+msgstr "_Variável(s) Dependente(s)"
+
+#: src/ui/gui/oneway.glade:190
+msgid "_Homogeneity"
+msgstr "_Homogeneidade"
+
+#: src/ui/gui/oneway.glade:226
+msgid "_Contrasts..."
+msgstr "_Contrastes..."
+
+#: src/ui/gui/oneway.glade:309
+msgid "gtk-go-back"
+msgstr "gtk-go-back"
+
+#: src/ui/gui/oneway.glade:320
+msgid "gtk-go-forward"
+msgstr "gtk-go-forward"
+
+#: src/ui/gui/oneway.glade:343
+msgid "_Coefficients:"
+msgstr "_Coeficientes:"
+
+#: src/ui/gui/oneway.glade:389
+msgid "Coefficient Total: "
+msgstr "Coeficiente Total: "
+
+#: src/ui/gui/oneway.glade:422
+msgid "Contrast 1 of 1"
+msgstr "Contraste 1 de 1"
+
+#: src/ui/gui/output-viewer.glade:32
+msgid "gtk-save"
+msgstr "gtk-save"
+
+#: src/ui/gui/output-viewer.glade:41
+msgid "gtk-save-as"
+msgstr "gtk-save-as"
+
+#: src/ui/gui/output-viewer.glade:65
+msgid "gtk-copy"
+msgstr "gtk-copy"
+
+#: src/ui/gui/psppire-buttonbox.c:143
+msgid "Buttons"
+msgstr "Botões"
+
+#: src/ui/gui/psppire-buttonbox.c:144
+msgid "The mask that decides what buttons appear in the button box"
+msgstr "A máscara que decide qual botão irá aparecer na caixa de botões"
+
+#: src/ui/gui/psppire-buttonbox.c:273 src/ui/gui/psppire-buttonbox.c:429
+msgid "Continue"
+msgstr "Continuar"
+
+#: src/ui/gui/psppire-buttonbox.c:427
+msgid "OK"
+msgstr "OK"
+
+#: src/ui/gui/psppire-buttonbox.c:428
+msgid "Go To"
+msgstr "Ir Para"
+
+#: src/ui/gui/psppire-buttonbox.c:430
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: src/ui/gui/psppire-buttonbox.c:431
+msgid "Help"
+msgstr "Ajuda"
+
+#: src/ui/gui/psppire-buttonbox.c:432
+msgid "Reset"
+msgstr "Reiniciar"
+
+#: src/ui/gui/psppire-buttonbox.c:433
+msgid "Paste"
+msgstr "Colar"
+
+#: src/ui/gui/psppire-data-editor.c:617
+msgid "Data View"
+msgstr "Visualização de dados"
+
+#: src/ui/gui/psppire-data-editor.c:620
+msgid "Variable View"
+msgstr "Visualização de variáveis"
+
+#: src/ui/gui/psppire-data-store.c:828
+msgid "var"
+msgstr "var"
+
+#: src/ui/gui/psppire-data-store.c:949 src/ui/gui/psppire-var-store.c:840
+#, c-format
+msgid "%ld"
+msgstr "%ld"
+
+#: src/ui/gui/psppire-var-sheet.c:100
+msgid "Name"
+msgstr "Nome"
+
+#: src/ui/gui/psppire-var-sheet.c:102 src/ui/gui/psppire.glade:2187
+msgid "Width"
+msgstr "Tamanho"
+
+#: src/ui/gui/psppire-var-sheet.c:103
+msgid "Decimals"
+msgstr "Decimais"
+
+#: src/ui/gui/psppire-var-sheet.c:105
+msgid "Values"
+msgstr "Valores"
+
+#: src/ui/gui/psppire-var-sheet.c:108
+msgid "Align"
+msgstr "Alinhamento"
+
+#: src/ui/gui/psppire-var-sheet.c:109
+msgid "Measure"
+msgstr "Medida"
+
+#: src/ui/gui/psppire-var-store.c:601
+msgid "Scientific"
+msgstr "Científica"
+
+#: src/ui/gui/psppire-var-store.c:604
+msgid "Custom"
+msgstr "Personalizado"
+
+#: src/ui/gui/psppire-var-store.c:675 src/ui/gui/psppire-var-store.c:685
+#: src/ui/gui/psppire-var-store.c:695
+#, c-format
+msgid "%d"
+msgstr "%d"
+
+#: src/ui/gui/psppire.c:206
+msgid "_Reset"
+msgstr "_Reiniciar"
+
+#: src/ui/gui/psppire.c:207
+msgid "_Select"
+msgstr "_Selecionar"
+
+#: src/ui/gui/psppire.glade:11
+msgid "This is beta status software.  Please report bugs to bug-gnu-pspp@gnu.org"
+msgstr ""
+
+#: src/ui/gui/psppire.glade:73 src/ui/gui/psppire.glade:154
+#: src/ui/gui/weight-cases-dialog.c:80
+msgid "Do not weight cases"
+msgstr "Não ponderar casos"
+
+#: src/ui/gui/psppire.glade:83
+msgid "Weight cases by"
+msgstr "Ponderar casos por"
+
+#: src/ui/gui/psppire.glade:107
+msgid "Frequency Variable"
+msgstr "Frequência da Variável"
+
+#: src/ui/gui/psppire.glade:147
+msgid "Current Status: "
+msgstr "Status Atual: "
+
+#: src/ui/gui/psppire.glade:314
+msgid "Name Variable:"
+msgstr "Nome da Variável"
+
+#: src/ui/gui/psppire.glade:429
+msgid "Analyze all cases.  Do not create groups."
+msgstr "Analisar todos os casos. Não criar grupos."
+
+#: src/ui/gui/psppire.glade:439
+msgid "Compare groups."
+msgstr "Comparar grupos."
+
+#: src/ui/gui/psppire.glade:452
+msgid "Organize output by groups."
+msgstr "Organizar saída por grupos."
+
+#: src/ui/gui/psppire.glade:499
+msgid "Groups based on:"
+msgstr "Grupos baseados em:"
+
+#: src/ui/gui/psppire.glade:563
+msgid "Sort the file by grouping variables."
+msgstr "Ordenar o arquivo agrupando variáveis."
+
+#: src/ui/gui/psppire.glade:574
+msgid "File is already sorted."
+msgstr "Arquivo já está ordenado."
+
+#: src/ui/gui/psppire.glade:618
+msgid "Current Status : "
+msgstr "Status Atual : "
+
+#: src/ui/gui/psppire.glade:626
+msgid "Analysis by groups is off"
+msgstr "Análise por grupos está desabilitada"
+
+#: src/ui/gui/psppire.glade:725
+msgid "Sort by:"
+msgstr "Ordenar por:"
+
+#: src/ui/gui/psppire.glade:788
+msgid "Descending"
+msgstr "Descendente"
+
+#: src/ui/gui/psppire.glade:804
+msgid "Sort Order"
+msgstr "Ordenação"
+
+#: src/ui/gui/psppire.glade:873
+msgid "Target Variable:"
+msgstr "Variável alvo:"
+
+#: src/ui/gui/psppire.glade:904
+msgid "Type & Label"
+msgstr "Tipo & Label"
+
+#: src/ui/gui/psppire.glade:943
+msgid "="
+msgstr "="
+
+#: src/ui/gui/psppire.glade:989
+msgid "Numeric Expressions:"
+msgstr "Expressões Numéricas:"
+
+#: src/ui/gui/psppire.glade:1043
+msgid "Functions:"
+msgstr "Funções:"
+
+#: src/ui/gui/psppire.glade:1107 src/ui/gui/psppire.glade:1253
+#: src/ui/gui/recode.glade:731
+msgid "If..."
+msgstr "Se..."
+
+#: src/ui/gui/psppire.glade:1223
+msgid "All Cases"
+msgstr "Todos os Casos"
+
+#: src/ui/gui/psppire.glade:1239
+msgid "If condition is satisfied"
+msgstr "Se condição é satisfeita"
+
+#: src/ui/gui/psppire.glade:1291
+msgid "Random sample of cases"
+msgstr "Amostra aleatória de casos"
+
+#: src/ui/gui/psppire.glade:1305
+msgid "Sample..."
+msgstr "Amostra..."
+
+#: src/ui/gui/psppire.glade:1343
+msgid "Based on time or case range"
+msgstr "Baseado no tempo ou intervalo do caso"
+
+#: src/ui/gui/psppire.glade:1356
+msgid "Range..."
+msgstr "Intervalo..."
+
+#: src/ui/gui/psppire.glade:1394
+msgid "Use filter variable"
+msgstr "Usar variável de filtro"
+
+#: src/ui/gui/psppire.glade:1556
+msgid "Select"
+msgstr "Selecionar"
+
+#: src/ui/gui/psppire.glade:1586
+msgid "Filtered"
+msgstr "Filtrado"
+
+#: src/ui/gui/psppire.glade:1596
+msgid "Deleted"
+msgstr "Apagado"
+
+#: src/ui/gui/psppire.glade:1613
+msgid "Unselected Cases Are"
+msgstr "Casos não selecionados São"
+
+#: src/ui/gui/psppire.glade:1678
+msgid "Comments:"
+msgstr "Comentários:"
+
+#: src/ui/gui/psppire.glade:1720
+msgid "Display comments in output"
+msgstr "Exibir comentários na saída"
+
+#: src/ui/gui/psppire.glade:1734
+msgid "Column Number: 0"
+msgstr "Número da Coluna: 0"
+
+#: src/ui/gui/psppire.glade:1810
+msgid "Variable Information:"
+msgstr "Informação da Variável:"
+
+#: src/ui/gui/psppire.glade:1836
+msgid ""
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+msgstr ""
+
+#: src/ui/gui/psppire.glade:1900
+msgid "Observation"
+msgstr "Observação"
+
+#: src/ui/gui/psppire.glade:1910
+msgid "Last case"
+msgstr "Último caso"
+
+#: src/ui/gui/psppire.glade:1923
+msgid "First case"
+msgstr "Primeiro caso"
+
+#: src/ui/gui/psppire.glade:2081
+msgid "Use expression as label"
+msgstr "Usar expressão como rótulo"
+
+#: src/ui/gui/psppire.glade:2274
+msgid "Goto Case Number:"
+msgstr "Ir Para Caso Número:"
+
+#: src/ui/gui/psppire.glade:2410
+msgid "Sample Size"
+msgstr "Tamanho da Amostra"
+
+#: src/ui/gui/psppire.glade:2513
+msgid "Variable:"
+msgstr "Variável:"
+
+#: src/ui/gui/psppire.glade:2570
+msgid "Search value labels"
+msgstr "Procurar por rótulos de valores"
+
+#: src/ui/gui/psppire.glade:2593
+msgid "Regular expression Match"
+msgstr "Casamento da expressão Regular"
+
+#: src/ui/gui/psppire.glade:2603
+msgid "Search substrings"
+msgstr "Procurar sub-strings"
+
+#: src/ui/gui/psppire.glade:2615
+msgid "Wrap around"
+msgstr ""
+
+#: src/ui/gui/psppire.glade:2627
+msgid "Search backward"
+msgstr "Pesquisa reversa"
+
+#: src/ui/gui/rank.glade:111
+msgid "By:"
+msgstr "Por:"
+
+#: src/ui/gui/rank.glade:197
+msgid "_Smallest Value"
+msgstr "_Menor Valor"
+
+#: src/ui/gui/rank.glade:209
+msgid "_Largest Value"
+msgstr "_Maior Valor"
+
+#: src/ui/gui/rank.glade:228
+msgid "Assign rank 1 to:"
+msgstr ""
+
+#: src/ui/gui/rank.glade:246
+msgid "_Display summary tables"
+msgstr "_Exibir tabelas de resumo"
+
+#: src/ui/gui/rank.glade:262
+msgid "Rank T_ypes"
+msgstr "Tipos de _Ordenamento"
+
+#: src/ui/gui/rank.glade:273
+msgid "_Ties..."
+msgstr ""
+
+#: src/ui/gui/rank.glade:343
+msgid "Ntiles"
+msgstr "Ntiles"
+
+#: src/ui/gui/rank.glade:376
+msgid "Rank"
+msgstr "Ordenamento"
+
+#: src/ui/gui/rank.glade:386
+msgid "Savage score"
+msgstr ""
+
+#: src/ui/gui/rank.glade:400
+msgid "Fractional rank"
+msgstr ""
+
+#: src/ui/gui/rank.glade:414
+msgid "Fractional rank as %"
+msgstr ""
+
+# lala
+#: src/ui/gui/rank.glade:428
+msgid "Sum of case weights"
+msgstr "Soma dos pesos dos casos"
+
+#: src/ui/gui/rank.glade:450
+msgid "Proportion Estimates"
+msgstr "Estimativas de proporção"
+
+#: src/ui/gui/rank.glade:460
+msgid "Normal Scores"
+msgstr ""
+
+#: src/ui/gui/rank.glade:495
+msgid "Blom"
+msgstr "Blom"
+
+#: src/ui/gui/rank.glade:506
+msgid "Tukey"
+msgstr "Tukey"
+
+#: src/ui/gui/rank.glade:520
+msgid "Rankit"
+msgstr "Rankit"
+
+#: src/ui/gui/rank.glade:534
+msgid "Van der Wärden"
+msgstr "Van der Wärden"
+
+#: src/ui/gui/rank.glade:551
+msgid "Proportion Estimation Formula"
+msgstr ""
+
+#: src/ui/gui/rank.glade:614
+msgid "_Mean"
+msgstr "_Média"
+
+#: src/ui/gui/rank.glade:626
+msgid "_Low"
+msgstr "_Mínimo"
+
+#: src/ui/gui/rank.glade:642
+msgid "_High"
+msgstr "Máxim_o"
+
+#: src/ui/gui/rank.glade:660
+msgid "_Sequential ranks to unique values"
+msgstr ""
+
+#: src/ui/gui/rank.glade:680
+msgid "Rank Assigned to Ties"
+msgstr ""
+
+#: src/ui/gui/recode-dialog.c:879
+msgid "Recode into Different Variables"
+msgstr "Transformar para Variáveis Diferentes"
+
+#: src/ui/gui/recode-dialog.c:882
+msgid "Recode into Same Variables"
+msgstr "Transformar para a Mesma Variável"
+
+#: src/ui/gui/recode-dialog.c:913 src/ui/gui/recode-dialog.c:1015
+msgid "Old"
+msgstr "Antigo"
+
+#: src/ui/gui/recode-dialog.c:1274
+msgid "Recode into Different Variables: Old and New Values "
+msgstr "Transformar Para Diferentes Variáveis: Antigos e Novos Valores "
+
+#: src/ui/gui/recode-dialog.c:1275
+msgid "Recode into Same Variables: Old and New Values"
+msgstr "Transformar Para a Mesma Variável: Antigos e Novos Valores"
+
+#: src/ui/gui/recode.glade:197
+msgid "System-Missing"
+msgstr "System-Missing"
+
+#: src/ui/gui/recode.glade:211
+msgid "System-or user-missing"
+msgstr "System ou user-missing"
+
+#: src/ui/gui/recode.glade:245
+msgid "through"
+msgstr "até"
+
+#: src/ui/gui/recode.glade:283
+msgid "Range, LOWEST thru value"
+msgstr "Intervalo, MENOR até valor"
+
+#: src/ui/gui/recode.glade:297
+msgid "Range, value thru HIGHEST"
+msgstr "Intervalo, valor até MÁXIMO"
+
+#: src/ui/gui/recode.glade:327
+msgid "All other values"
+msgstr "Todos os outros valores"
+
+#: src/ui/gui/recode.glade:363
+msgid "Range:"
+msgstr "Intervalo:"
+
+#: src/ui/gui/recode.glade:380
+msgid "Old Value"
+msgstr "Valores Antigos"
+
+#: src/ui/gui/recode.glade:462
+msgid "System Missing"
+msgstr "System Missing"
+
+#: src/ui/gui/recode.glade:476
+msgid "Copy old values"
+msgstr "Copiar valores antigos"
+
+#: src/ui/gui/recode.glade:500
+msgid "Value: "
+msgstr "Valor: "
+
+#: src/ui/gui/recode.glade:530
+msgid "New Value"
+msgstr "Novo Valor"
+
+#: src/ui/gui/recode.glade:590
+msgid "Convert numeric strings to numbers ('5' -> 5)"
+msgstr "Converter stringe numérica para número ('5' -> 5)"
+
+#: src/ui/gui/recode.glade:608
+msgid "Output variables are strings"
+msgstr "Variáveis de outputt são strings"
+
+#: src/ui/gui/recode.glade:620
+msgid "Width: "
+msgstr "Tamanho: "
+
+#: src/ui/gui/recode.glade:743
+msgid "(optional case selection condition)"
+msgstr ""
+
+#: src/ui/gui/recode.glade:823
+msgid "Name:"
+msgstr "Nome:"
+
+#: src/ui/gui/recode.glade:867
+msgid "Change"
+msgstr "Mudar"
+
+#: src/ui/gui/recode.glade:885
+msgid "Output Variable"
+msgstr "Variável de Saída"
+
+#: src/ui/gui/recode.glade:965
+msgid "Old and New Values"
+msgstr "Antigos e Novos Valores"
+
+#: src/ui/gui/regression-dialog.c:40
+msgid "Coeff"
+msgstr "Coeff"
+
+#: src/ui/gui/regression-dialog.c:42
+msgid "Anova"
+msgstr "Anova"
+
+#: src/ui/gui/regression-dialog.c:43
+msgid "Bcov"
+msgstr "Bcov"
+
+#: src/ui/gui/regression.glade:40
+msgid "Save..."
+msgstr "Salvar..."
+
+#: src/ui/gui/regression.glade:145
+msgid "Dependent"
+msgstr "Dependente"
+
+#: src/ui/gui/regression.glade:193
+msgid "Independent"
+msgstr "Independente"
+
+#: src/ui/gui/regression.glade:243
+msgid "Predicted values"
+msgstr "Valores esperados"
+
+#: src/ui/gui/regression.glade:252
+msgid "Residuals"
+msgstr "Residuais"
+
+#: src/ui/gui/select-cases-dialog.c:81
+#, c-format
+msgid "Approximately %3d%% of all cases."
+msgstr "Aproximadamente %3d%% de todos os casos."
+
+#: src/ui/gui/select-cases-dialog.c:82
+#, c-format
+msgid "Exactly %3d cases from the first %3d cases."
+msgstr "Exatamente %3d casos dos primeiros %3d casos."
+
+#: src/ui/gui/select-cases-dialog.c:222
+#, c-format
+msgid "%d thru %d"
+msgstr "%d até %d"
+
+#: src/ui/gui/syntax-editor.c:77
+#, c-format
+msgid "Save contents of syntax editor to %s?"
+msgstr ""
+
+#: src/ui/gui/syntax-editor.c:124
+msgid "Save Syntax"
+msgstr "Salvar Sintaxe"
+
+#: src/ui/gui/syntax-editor.c:132 src/ui/gui/syntax-editor.c:516
+msgid "Syntax Files (*.sps) "
+msgstr "Arquivo de Sintaxe (*.sps) "
+
+#: src/ui/gui/syntax-editor.c:508
+msgid "Open Syntax"
+msgstr "Abrir Sintaxe"
+
+#: src/ui/gui/syntax-editor.glade:10
+msgid "Psppire Syntax Editor"
+msgstr "Editor de Sintaxe do PSPP"
+
+#: src/ui/gui/syntax-editor.glade:188
+msgid "_Run"
+msgstr "_Executar"
+
+#: src/ui/gui/syntax-editor.glade:197
+msgid "All"
+msgstr "Todos"
+
+#: src/ui/gui/syntax-editor.glade:205
+msgid "Selection"
+msgstr "Seleção"
+
+#: src/ui/gui/syntax-editor.glade:213
+msgid "Current Line"
+msgstr "Linha atual"
+
+#: src/ui/gui/syntax-editor.glade:222
+msgid "To End"
+msgstr "Para o Final"
+
+#: src/ui/gui/t-test-options.c:60
+#, c-format
+msgid "Confidence Interval: %2d %%"
+msgstr "Intervalo de confiança: %2d %%"
+
+#: src/ui/gui/t-test-paired-samples.c:228
+msgid "Var 1"
+msgstr "Var 1"
+
+#: src/ui/gui/t-test-paired-samples.c:229
+msgid "Var 2"
+msgstr "Var 2"
+
+#: src/ui/gui/t-test.glade:56 src/ui/gui/t-test.glade:165
+msgid "Define Groups"
+msgstr "Define grupos"
+
+#: src/ui/gui/t-test.glade:123 src/ui/gui/t-test.glade:549
+#: src/ui/gui/t-test.glade:761
+msgid "Test Variable(s):"
+msgstr "Variável(is) de teste:"
+
+#: src/ui/gui/t-test.glade:258
+msgid "Group_2 value:"
+msgstr "Valor do grupo_2:"
+
+#: src/ui/gui/t-test.glade:271
+msgid "Group_1 value:"
+msgstr "Valor do grupo_1:"
+
+#: src/ui/gui/t-test.glade:320
+msgid "_Cut point:"
+msgstr "Ponto de _corte:"
+
+#: src/ui/gui/t-test.glade:349
+msgid "_Use specified values:"
+msgstr ""
+
+#: src/ui/gui/t-test.glade:431
+msgid "Exclude cases _analysis by analysis"
+msgstr ""
+
+#: src/ui/gui/t-test.glade:442
+msgid "Exclude cases _listwise"
+msgstr "Excluir casos _listwise"
+
+#: src/ui/gui/t-test.glade:594
+msgid "Test Value: "
+msgstr "Valor de teste: "
+
+#: src/ui/gui/text-data-import-dialog.c:70
+msgid "The text import assistant has not been compiled into this build of PSPPIRE, because GTK+ version 2.10.0 or later was not available."
+msgstr ""
+
+#: src/ui/gui/text-data-import-dialog.c:488
+#, c-format
+msgid "Could not open \"%s\": %s"
+msgstr "Impossível abrir \"%s\": %s"
+
+#: src/ui/gui/text-data-import-dialog.c:504
+#, c-format
+msgid "Error reading \"%s\": %s"
+msgstr "Erro lendo \"%s\": %s"
+
+#: src/ui/gui/text-data-import-dialog.c:507
+#, c-format
+msgid "Failed to read \"%s\", because it contains a line over %d bytes long and therefore appears not to be a text file."
+msgstr "Falha ao ler \"%s\", porque ele contém uma linha com mais de %d bytes d"
+
+#: src/ui/gui/text-data-import-dialog.c:521
+#, c-format
+msgid "\"%s\" is empty."
+msgstr "\"%s\" está vazio."
+
+#: src/ui/gui/text-data-import-dialog.c:566
+msgid "Import Delimited Text Data"
+msgstr "Importar Dados Textuais Delimitados"
+
+#: src/ui/gui/text-data-import-dialog.c:617
+msgid "Importing Delimited Text Data"
+msgstr "Importando dados textuais delimitados"
+
+#: src/ui/gui/text-data-import-dialog.c:768
+msgid ""
+"This assistant will guide you through the process of importing data into PSPP from a text file with one line per case,  in which fields are separated by tabs, commas, or other delimiters.\n"
+"\n"
+msgstr "Este assistente irá acompanhá-lo durante o processo de importar dados para o PSPP de um arquivo de texto com um caso por linha, no qual campos são separados por tabulações, vírgulas ou outros delimitadores.\n"
+
+#: src/ui/gui/text-data-import-dialog.c:774
+#, c-format
+msgid "The selected file contains %zu line of text.  "
+msgid_plural "The selected file contains %zu lines of text.  "
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/ui/gui/text-data-import-dialog.c:782
+#, c-format
+msgid "The selected file contains approximately %lu line of text.  "
+msgid_plural "The selected file contains approximately %lu lines of text.  "
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/ui/gui/text-data-import-dialog.c:788
+#, c-format
+msgid "Only the first %zu line of the file will be shown for preview purposes in the following screens.  "
+msgid_plural "Only the first %zu lines of the file will be shown for preview purposes in the following screens.  "
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/ui/gui/text-data-import-dialog.c:795
+msgid "You may choose below how much of the file should actually be imported."
+msgstr "Você pode escolher abaixo quanto do arquivo será efetivamente importado."
+
+#: src/ui/gui/text-data-import-dialog.c:1515
+#: src/ui/gui/text-data-import-dialog.c:1759
+msgid "This input line has too few separators to fill in this field."
+msgstr "Esta linha de entrada tem poucos separadores para preencher este campo."
+
+#: src/ui/gui/text-data-import-dialog.c:1750
+#, c-format
+msgid "Field content \"%.*s\" cannot be parsed in format %s."
+msgstr "Campo contendo \"%.*s\" não pode ser analisado no formato %s."
+
+#: src/ui/gui/text-data-import.glade:7
+msgid "Importing Textual Data"
+msgstr "Importar dados textuais"
+
+#: src/ui/gui/text-data-import.glade:16
+msgid ""
+"This assistant will guide you through the process of importing data into PSPP from a text file with one line per case,  in which fields are separated by tabs, commas, or other delimiters.\n"
+"\n"
+"The selected file contains N lines of text.  Only the first M of these will be shown for preview purposes in the following screens.  You may choose below how much of the file should actually be imported."
+msgstr ""
+"Este assistente irá acompanhá-lo durante o processo de importar dados para o PSPP de um arquivo de texto com um caso por linha, no qual campos são separados por tabulações, vírgulas ou outros delimitadores.\n"
+"\n"
+"O arquivo selecionado contém N linhas de texto. Apenas as M primeiras destas irão ser exibidas como pré-visualização nas telas seguintes. Você pode escolher abaixo quanto do arquivo deve ser efetivamente importado."
+
+#: src/ui/gui/text-data-import.glade:47
+msgid "All cases"
+msgstr "Todos os casos"
+
+#: src/ui/gui/text-data-import.glade:62 src/ui/gui/text-data-import.glade:117
+msgid "Only first "
+msgstr "Apenas o primeiro "
+
+#: src/ui/gui/text-data-import.glade:93
+msgid " cases"
+msgstr "casos"
+
+#: src/ui/gui/text-data-import.glade:147
+msgid "% of file (approximately)"
+msgstr "% do arquivo (aproximadamente)"
+
+#: src/ui/gui/text-data-import.glade:168
+msgid "<b>Amount to Import</b>"
+msgstr "<b>Quantidade para importar</b>"
+
+#: src/ui/gui/text-data-import.glade:189
+msgid "Select Data to Import"
+msgstr "Selecione dados para importar"
+
+#: src/ui/gui/text-data-import.glade:198
+msgid "Select the first line of the data file that contains data."
+msgstr "Selecione a primeira linha do arquivo de dados que contem dados."
+
+#: src/ui/gui/text-data-import.glade:209
+msgid "Line above selected line contains variable names"
+msgstr ""
+
+#: src/ui/gui/text-data-import.glade:243
+msgid "Choose Separators"
+msgstr "Escolha os separadores"
+
+#: src/ui/gui/text-data-import.glade:274
+msgid "_Space"
+msgstr "E_spaço"
+
+#: src/ui/gui/text-data-import.glade:285
+msgid "Ta_b"
+msgstr "Ta_bulação"
+
+#: src/ui/gui/text-data-import.glade:300
+msgid "Ban_g (!)"
+msgstr "Exclamaçã_o (!)"
+
+#: src/ui/gui/text-data-import.glade:315
+msgid "_Colon (:)"
+msgstr "Dois-P_ontos (:)"
+
+#: src/ui/gui/text-data-import.glade:330
+msgid "Co_mma (,)"
+msgstr "Vírgul_a (,)"
+
+#: src/ui/gui/text-data-import.glade:347
+msgid "H_yphen (-)"
+msgstr "Híf_en (-) "
+
+#: src/ui/gui/text-data-import.glade:364
+msgid "P_ipe (|)"
+msgstr "P_ipe (|)"
+
+#: src/ui/gui/text-data-import.glade:379
+msgid "Semicolo_n (;)"
+msgstr "Po_nto-e-vírgula (;)"
+
+#: src/ui/gui/text-data-import.glade:396
+msgid "Slas_h (/)"
+msgstr "Barr_a (/)"
+
+#: src/ui/gui/text-data-import.glade:413
+msgid "C_ustom"
+msgstr "Personalizad_o"
+
+#: src/ui/gui/text-data-import.glade:444
+msgid "<b>Separators</b>"
+msgstr "<b>Separadores</b>"
+
+#: src/ui/gui/text-data-import.glade:475
+msgid "Quote separator characters with"
+msgstr ""
+
+#: src/ui/gui/text-data-import.glade:489
+msgid ""
+"\"'\n"
+"\"\n"
+"'\n"
+msgstr ""
+
+#: src/ui/gui/text-data-import.glade:514
+msgid "Doubled quote mark treated as escape"
+msgstr "Marca de aspas duplas tratado como escape"
+
+#: src/ui/gui/text-data-import.glade:533
+msgid "<b>Quoting</b>"
+msgstr "<b>Quoting</b>"
+
+#: src/ui/gui/text-data-import.glade:584
+msgid "<b>Fields Preview</b>"
+msgstr "<b>Visualização dos campos</b>"
+
+#: src/ui/gui/text-data-import.glade:601
+msgid "Adjust Variable Formats"
+msgstr "Ajustar formatos da variável"
+
+#: src/ui/gui/text-data-import.glade:610
+msgid "Check the data formats displayed below and fix any that are incorrect.  You may set other variable properties now or later."
+msgstr "Verifique os formatos de dados exibidos abaixo e corrija os incorretos. Você pode definir outras propriedades das variáveis agora ou mais tarde."
+
+#: src/ui/gui/text-data-import.glade:653
+msgid "<b>Variables</b>"
+msgstr "<b>Variáveis</b>"
+
+#: src/ui/gui/text-data-import.glade:700
+msgid "<b>Data Preview</b>"
+msgstr "<b>Visualização de dados</b>"
+
+#: src/ui/gui/variable-info-dialog.c:89
+#, c-format
+msgid "Label: %s\n"
+msgstr "Label: %s\n"
+
+#: src/ui/gui/variable-info-dialog.c:98
+#, c-format
+msgid "Type: %s\n"
+msgstr "Tipo: %s\n"
+
+#: src/ui/gui/variable-info-dialog.c:102
+#, c-format
+msgid "Missing Values: %s\n"
+msgstr "Valores missing: %s\n"
+
+#: src/ui/gui/variable-info-dialog.c:107
+#, c-format
+msgid "Measurement Level: %s\n"
+msgstr "Nível de medida: %s\n"
+
+#: src/ui/gui/variable-info-dialog.c:121
+msgid "Value Labels:\n"
+msgstr "Value Labels:\n"
+
+#: src/ui/gui/variable-info-dialog.c:133
+#, c-format
+msgid "%s %s\n"
+msgstr ""
+
+#: src/ui/gui/weight-cases-dialog.c:86
+#, c-format
+msgid "Weight cases by %s"
+msgstr "Pesar casos por %s"
+
+#: src/ui/gui/window-manager.c:142
+#, c-format
+msgid "Syntax%d"
+msgstr "Sintaxe%d"
+
+#: src/ui/gui/window-manager.c:143 src/ui/gui/window-manager.c:178
+#, c-format
+msgid "%s --- PSPP Syntax Editor"
+msgstr "%s --- Editor de Sintaxe do PSPP"
+
+#: src/ui/gui/window-manager.c:146
+#, c-format
+msgid "Untitled%d"
+msgstr "Sem título%d"
+
+#: src/ui/gui/window-manager.c:147 src/ui/gui/window-manager.c:181
+#, c-format
+msgid "%s --- PSPP Data Editor"
+msgstr "%s --- Editor de Dados do PSPP"
+
+#: src/ui/gui/window-manager.c:150
+#, c-format
+msgid "Output%d"
+msgstr "Saída%d"
+
+#: src/ui/gui/window-manager.c:151
+#, c-format
+msgid "%s --- PSPP Output"
+msgstr "%s --- Saída do PSPP"
+
+#: src/ui/terminal/command-line.c:230
+#, c-format
+msgid ""
+"PSPP, a program for statistical analysis of sample data.\n"
+"\n"
+"Usage: %s [OPTION]... FILE...\n"
+"\n"
+"If a long option shows an argument as mandatory, then it is mandatory\n"
+"for the equivalent short option also.  Similarly for optional arguments.\n"
+"\n"
+"Configuration:\n"
+"  -a, --algorithm={compatible|enhanced}\n"
+"                            set to `compatible' if you want output\n"
+"                            calculated from broken algorithms\n"
+"  -B, --config-dir=DIR      set configuration directory to DIR\n"
+"  -o, --device=DEVICE       select output driver DEVICE and disable defaults\n"
+"\n"
+"Input and output:\n"
+"  -e, --error-file=FILE     send error messages to FILE (appended)\n"
+"  -f, --out-file=FILE       send output to FILE (overwritten)\n"
+"  -p, --pipe                read syntax from stdin, send output to stdout\n"
+"  -I-, --no-include         clear include path\n"
+"  -I, --include=DIR         append DIR to include path\n"
+"\n"
+"Language modifiers:\n"
+"  -i, --interactive         interpret syntax in interactive mode\n"
+"  -n, --edit                just check syntax; don't actually run the code\n"
+"  -r, --no-statrc           disable execution of .pspp/rc at startup\n"
+"  -s, --safer               don't allow some unsafe operations\n"
+"  -x, --syntax={compatible|enhanced}\n"
+"                            set to `compatible' if you want only to accept\n"
+"                            spss compatible syntax\n"
+"\n"
+"Informative output:\n"
+"  -h, --help                print this help, then exit\n"
+"  -l, --list                print a list of known driver classes, then exit\n"
+"  -V, --version             show PSPP version, then exit\n"
+"  -v, --verbose             increments verbosity level\n"
+"\n"
+"Non-option arguments:\n"
+" FILE                       syntax file to execute\n"
+" KEY=VALUE                  overrides macros in output initialization file\n"
+"\n"
+msgstr ""
+"PSPP, um programa para análises estatísticas de dados amostrais.\n"
+"\n"
+"Uso: %s [OPÇÃO]... ARQUIVO...\n"
+"\n"
+"Se uma opção longa exibe um argumento como obrigatório, então ele também é obrigatório\n"
+"para a opção curta equivale. O mesmo se aplica para argumentos opcionais.\n"
+"\n"
+"Configuração:\n"
+"  -a, --algorithm={compatible|enhanced}\n"
+"                            escolha 'compatible' se você deseja saída\n"
+"                            calculada por algoritmos problemáticos\n"
+"  -B, --config-dir=DIR      define o diretório de configuração como DIR\n"
+"  -o, --device=DEVICE       seleciona DEVICE como driver de saída e desabilita padrões\n"
+"\n"
+"Entrada e saída:\n"
+"  -e, --error-file=FILE     envia mensagens de erro para FILE (incluídas no final)\n"
+"  -f, --out-file=FILE       envia saída para FILE (sobrescrevendo)\n"
+"  -p, --pipe                lê sintaxe de stdin, e envia saída para stdout\n"
+"  -I-, --no-include         limpa caminho de inclusão\n"
+"  -I, --include=DIR         Insere DIR no caminho de inclusão\n"
+"\n"
+"Modificadores da linguagem:\n"
+"  -i, --interactive         interpreta sintaxe no modo interativo\n"
+"  -n, --edit                simplesmente checa sintaxe; não executa o código\n"
+"  -r, --no-statrc           desabilita a execução de .pspp/rc na inicialização\n"
+"  -s, --safer               não permite algumas operações inseguras\n"
+"  -x, --syntax={compatible|enhanced}\n"
+"                            escolha 'compatible' se você deseja somente aceitar\n"
+"                            sintaxe compatível com SPSS\n"
+"\n"
+"Informative output:\n"
+"  -h, --help                exibe esta ajuda, e então sai\n"
+"  -l, --list                exibe uma lista de classes de driver conhecidos, e então sai\n"
+"  -V, --version             exibe a versão do PSPP, e então sai\n"
+"  -v, --verbose             incrementa o nível de verbosidade\n"
+"\n"
+"Non-option arguments:\n"
+" FILE                       arquivo de sintaxe para executar\n"
+" KEY=VALUE                  sobrescreve macros no arquivo de inicialização da saída\n"
+"\n"
+
+#: src/ui/terminal/command-line.c:265
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Reporte bugs para <%s>.\n"
+
+#: src/ui/terminal/main.c:131
+msgid "Stopping syntax file processing here to avoid a cascade of dependent command failures."
+msgstr "Interrompendo processamento do arquivo de sintaxe para evitar falha uma cascata de falhas de comandos."
+
+#: src/ui/terminal/msg-ui.c:67
+#, c-format
+msgid "Cannot open %s (%s). Writing errors to stdout instead.\n"
+msgstr "Impossível abrir %s (%s). Imprimindo erros na saída padrão.\n"
+
+#: src/ui/terminal/msg-ui.c:94
+msgid "Terminating execution of syntax file due to error."
+msgstr "Terminando a execução do arquivo de sintaxe devido a um erro."
+
+#: src/ui/terminal/msg-ui.c:96
+#, c-format
+msgid "Errors (%d) exceeds limit (%d)."
+msgstr "(%d) erros excederam o limite (%d)."
+
+#: src/ui/terminal/msg-ui.c:99
+#, c-format
+msgid "Warnings (%d) exceed limit (%d)."
+msgstr "(%d) avisos excederam o limite (%d)."
+
+#: src/ui/terminal/msg-ui.c:150
+msgid "error"
+msgstr "erro"
+
+#: src/ui/terminal/msg-ui.c:151
+msgid "warning"
+msgstr "aviso"
+
+#: src/ui/terminal/terminal.c:72
+#, c-format
+msgid "could not access definition for terminal `%s'"
+msgstr "não foi possível acessar definição para o terminal '%s'"
index 56f7590410f8d042761b9cdbf64949d219c4c669..46e0ef73403f1cbd7dd097c0361b692c6aeaaff9 100644 (file)
@@ -14,7 +14,7 @@ lib_LTLIBRARIES = src/libpspp-core.la src/libpspp.la
 src_libpspp_core_la_SOURCES = 
 
 
-src_libpspp_core_la_LDFLAGS = -release @VERSION@
+src_libpspp_core_la_LDFLAGS = -release $(VERSION)
 
 src_libpspp_core_la_LIBADD = \
        src/data/libdata.la \
@@ -24,7 +24,7 @@ src_libpspp_core_la_LIBADD = \
 
 src_libpspp_la_SOURCES = 
 
-src_libpspp_la_LDFLAGS = -release @VERSION@
+src_libpspp_la_LDFLAGS = -release $(VERSION)
 
 src_libpspp_la_LIBADD = \
        src/language/liblanguage.la \
index 7379d1940ad9b511bcffa03faf301aa0f7727238..1ddf5575aa68c4877f77fea845d3b4e6ea567ccc 100644 (file)
@@ -119,7 +119,7 @@ dict_dump (const struct dictionary *d)
     {
       const struct variable *v =
        d->var[i];
-      printf ("Name: %s;\tdict_idx: %d; case_idx: %d\n",
+      printf ("Name: %s;\tdict_idx: %zu; case_idx: %zu\n",
              var_get_name (v),
              var_get_dict_index (v),
              var_get_case_index (v));
index 601afd5579e04a2ffff00193166989aedcd8e3b5..91229595924c7bfe7fe11d1486970ae598950f5c 100644 (file)
@@ -476,7 +476,6 @@ default_output_path (void)
          const char *home_drive = getenv ("HOMEDRIVE");
          const char *home_path = getenv ("HOMEPATH");
 
-
          if (home_drive != NULL && home_path != NULL)
            home_dir = xasprintf ("%s%s",
                                  home_drive, home_path);
@@ -485,8 +484,14 @@ default_output_path (void)
       if (home_dir == NULL)
        home_dir = "c:/users/default"; /* poor default */
 
-      path = xasprintf ("%s%c", home_dir, '/');
-
+      /* Copy home_dir into path.  Add a slash at the end but
+         only if there isn't already one there, because Windows
+         treats // specially. */
+      if (home_dir[0] == '\0'
+          || strchr ("/\\", home_dir[strlen (home_dir) - 1]) == NULL)
+        path = xasprintf ("%s%c", home_dir, '/');
+      else
+        path = xstrdup (home_dir);
 
       for(i = 0; i < strlen (path); i++)
        if (path[i] == '\\') path[i] = '/';
index 2162741a78e416324d07578f49e5d75f5da4a95e..f5cda498a89358662965a01c2b5e44a39c5a707b 100644 (file)
@@ -177,7 +177,7 @@ replace_file_start (const char *file_name, const char *mode,
     {
       /* Generate unique temporary file name. */
       rf->tmp_name = xasprintf ("%s.tmpXXXXXX", file_name);
-      if (gen_tempname (rf->tmp_name, GT_NOCREATE) < 0)
+      if (gen_tempname (rf->tmp_name, 0600, GT_NOCREATE) < 0)
         {
           msg (ME, _("Creating temporary file to replace %s: %s."),
                rf->file_name, strerror (errno));
index b0a41a83573b0e986fb35bfb3bce46379282662f..b024e4f0ef81532d51f7024a9b2ea352efba84f6 100644 (file)
@@ -931,7 +931,7 @@ read_machine_integer_info (struct sfm_reader *r, size_t size, size_t count,
     NOT_REACHED ();
   if (integer_representation != expected_integer_format)
     {
-      static const char *const endian[] = {N_("little-endian"), N_("big-endian")};
+      static const char *const endian[] = {N_("Little Endian"), N_("Big Endian")};
       sys_warn (r, _("Integer format indicated by system file (%s) "
                      "differs from expected (%s)."),
                 gettext (endian[integer_representation == 1]),
index 3fed2e05445135ec2ebcc300ce23c4855d0f41df..5daea89dc5a908ac385a5f19dc8c2c62db7c0e20 100644 (file)
@@ -461,12 +461,12 @@ write_variable (struct sfm_writer *w, const struct variable *v, const struct dic
   /* Value label. */
   if (var_has_label (v))
     {
-      const char *label = var_get_label (v);
-      char *l = recode_string (dict_get_encoding (dict), UTF8, label, -1);
-      size_t padded_len = ROUND_UP (MIN (strlen (l), 255), 4);
-      write_int (w, padded_len);
-      write_string (w, l, padded_len);
-      free (l);
+      char *label = recode_string (dict_get_encoding (dict), UTF8, var_get_label (v), -1);
+      size_t label_len = MIN (strlen (label), 255);
+      size_t padded_len = ROUND_UP (label_len, 4);
+      write_int (w, label_len);
+      write_string (w, label, padded_len);
+      free (label);
     }
 
   /* Write the missing values, if any, range first. */
index 74f99a89a682009dfa0fa62452669cf8622a446c..4c3612fb290977674247b7bd2d66801afa56f818 100644 (file)
@@ -688,9 +688,9 @@ report_state_mismatch (const struct command *command, enum cmd_state state)
         }
     }
   else if (state == CMD_STATE_INPUT_PROGRAM)
-    msg (SE, _("%s is not allowed inside INPUT PROGRAM."), command->name);
+    msg (SE, _("%s is not allowed inside %s."), command->name, "INPUT PROGRAM" );
   else if (state == CMD_STATE_FILE_TYPE)
-    msg (SE, _("%s is not allowed inside FILE TYPE."), command->name);
+    msg (SE, _("%s is not allowed inside %s."), command->name, "FILE TYPE");
 
   return false;
 }
index fa1bb1e88c6b2da3f683cbc49cb15449a9d24d07..066ecf92c4c7a28a483a7a5f0bdae136006b5b02 100644 (file)
@@ -100,6 +100,7 @@ DEF_CMD (S_DATA, 0, "AUTORECODE", cmd_autorecode)
 DEF_CMD (S_DATA, F_KEEP_FINAL_TOKEN, "BEGIN DATA", cmd_begin_data)
 DEF_CMD (S_DATA, 0, "COUNT", cmd_count)
 DEF_CMD (S_DATA, 0, "CROSSTABS", cmd_crosstabs)
+DEF_CMD (S_DATA, 0, "CORRELATIONS", cmd_correlation)
 DEF_CMD (S_DATA, 0, "DELETE VARIABLES", cmd_delete_variables)
 DEF_CMD (S_DATA, 0, "DESCRIPTIVES", cmd_descriptives)
 DEF_CMD (S_DATA, 0, "EXAMINE", cmd_examine)
@@ -113,6 +114,7 @@ DEF_CMD (S_DATA, 0, "MEANS", cmd_means)
 DEF_CMD (S_DATA, 0, "MODIFY VARS", cmd_modify_vars)
 DEF_CMD (S_DATA, 0, "NPAR TESTS", cmd_npar_tests)
 DEF_CMD (S_DATA, 0, "ONEWAY", cmd_oneway)
+DEF_CMD (S_DATA, 0, "PEARSON CORRELATIONS", cmd_correlation)
 DEF_CMD (S_DATA, 0, "RANK", cmd_rank)
 DEF_CMD (S_DATA, 0, "REGRESSION", cmd_regression)
 DEF_CMD (S_DATA, 0, "RELIABILITY", cmd_reliability)
@@ -155,7 +157,6 @@ UNIMPL_CMD ("CCF", "Time series cross correlation")
 UNIMPL_CMD ("CLEAR TRANSFORMATIONS", "Clears transformations from active file")
 UNIMPL_CMD ("CLUSTER", "Hierachial clustering")
 UNIMPL_CMD ("CONJOINT", "Analyse full concept data")
-UNIMPL_CMD ("CORRELATIONS", "Correlation coefficients")
 UNIMPL_CMD ("CORRESPONDENCE", "Show correspondence")
 UNIMPL_CMD ("COXREG", "Cox proportional hazards regression")
 UNIMPL_CMD ("CREATE", "Create time series data")
@@ -216,7 +217,6 @@ UNIMPL_CMD ("ORTHOPLAN", "Orthogonal effects design")
 UNIMPL_CMD ("OVERALS", "Nonlinear canonical correlation")
 UNIMPL_CMD ("PACF", "Partial autocorrelation")
 UNIMPL_CMD ("PARTIAL CORR", "Partial correlation")
-UNIMPL_CMD ("PEARSON CORRELATIONS", "Correlation coefficients")
 UNIMPL_CMD ("PLANCARDS", "Conjoint analysis planning")
 UNIMPL_CMD ("PLUM", "Estimate ordinal regression models")
 UNIMPL_CMD ("POINT", "Marker in keyed file")
index 644051804e40f3932c9dd2065b38f587d4bd0b2b..d4b9bf58905cde762b12510d4506f797630918cb 100644 (file)
@@ -378,12 +378,12 @@ combine_files (enum comb_command_type command,
         }
       if (n_tables)
         {
-          msg (SE, _("BY is required when TABLE is specified."));
+          msg (SE, _("BY is required when %s is specified."), "TABLE");
           goto error;
         }
       if (saw_sort)
         {
-          msg (SE, _("BY is required when SORT is specified."));
+          msg (SE, _("BY is required when %s is specified."), "SORT");
           goto error;
         }
     }
index 3e053ed57262eb5f6e94d404ed5686253e640a16..33aa1d168a5c4efce423688b3d8998193b8c7abc 100644 (file)
@@ -129,7 +129,7 @@ cmd_file_handle (struct lexer *lexer, struct dataset *ds)
         {
           if (cmd.n_lrecl[0] == LONG_MIN)
             msg (SE, _("The specified file mode requires LRECL.  "
-                       "Assuming %d-character records."),
+                       "Assuming %zu-character records."),
                  properties.record_width);
           else if (cmd.n_lrecl[0] < 1 || cmd.n_lrecl[0] >= (1UL << 31))
             msg (SE, _("Record length (%ld) must be between 1 and %lu bytes.  "
index dd1e26d270dab5d8d13eff9a85146260b68cc053..9c8f56e84289196182fc10bb8599e26a35c8f3b3 100644 (file)
@@ -435,12 +435,12 @@ dump_table (struct print_trns *trns, const struct file_handle *fh)
     }
 
   if (fh != NULL)
-    tab_title (t, ngettext ("Writing %d record to %s.",
-                            "Writing %d records to %s.", trns->record_cnt),
+    tab_title (t, ngettext ("Writing %zu record to %s.",
+                            "Writing %zu records to %s.", trns->record_cnt),
                trns->record_cnt, fh_get_name (fh));
   else
-    tab_title (t, ngettext ("Writing %d record.",
-                            "Writing %d records.", trns->record_cnt),
+    tab_title (t, ngettext ("Writing %zu record.",
+                            "Writing %zu records.", trns->record_cnt),
                trns->record_cnt);
   tab_submit (t);
 }
index cd5016910d61242c0c6afa8698a8f43553d38308..64204b78ec374cd0ef3477e0157b9a3883e994bf 100644 (file)
@@ -111,7 +111,7 @@ cmd_modify_vars (struct lexer *lexer, struct dataset *ds)
 
          if (already_encountered & 1)
            {
-             msg (SE, _("REORDER subcommand may be given at most once."));
+             msg (SE, _("%s subcommand may be given at most once."), "REORDER");
              goto done;
            }
          already_encountered |= 1;
@@ -144,7 +144,7 @@ cmd_modify_vars (struct lexer *lexer, struct dataset *ds)
                {
                  if (!lex_match (lexer, '('))
                    {
-                     msg (SE, _("`(' expected on REORDER subcommand."));
+                     msg (SE, _("`(' expected on %s subcommand."), "REORDER");
                      free (v);
                      goto done;
                    }
@@ -174,7 +174,7 @@ cmd_modify_vars (struct lexer *lexer, struct dataset *ds)
        {
          if (already_encountered & 2)
            {
-             msg (SE, _("RENAME subcommand may be given at most once."));
+             msg (SE, _("%s subcommand may be given at most once."), "RENAME");
              goto done;
            }
          already_encountered |= 2;
@@ -187,7 +187,7 @@ cmd_modify_vars (struct lexer *lexer, struct dataset *ds)
 
              if (!lex_match (lexer, '('))
                {
-                 msg (SE, _("`(' expected on RENAME subcommand."));
+                 msg (SE, _("`(' expected on %s subcommand."), "RENAME");
                  goto done;
                }
              if (!parse_variables (lexer, dataset_dict (ds),
index 1202045d098cc6fdcd4bc342e6c610b5b01f0137..6c44a0c3baaefefbda7129b081442468106d7c9c 100644 (file)
@@ -125,9 +125,9 @@ cmd_sysfile_info (struct lexer *lexer, struct dataset *ds UNUSED)
                    info.creation_date, info.creation_time, info.product);
   tab_text (t, 0, 3, TAB_LEFT, _("Integer Format:"));
   tab_text (t, 1, 3, TAB_LEFT,
-            info.integer_format == INTEGER_MSB_FIRST ? _("Big Endian.")
-            : info.integer_format == INTEGER_LSB_FIRST ? _("Little Endian.")
-            : _("Unknown."));
+            info.integer_format == INTEGER_MSB_FIRST ? _("Big Endian")
+            : info.integer_format == INTEGER_LSB_FIRST ? _("Little Endian")
+            : _("Unknown"));
   tab_text (t, 0, 4, TAB_LEFT, _("Real Format:"));
   tab_text (t, 1, 4, TAB_LEFT,
             info.float_format == FLOAT_IEEE_DOUBLE_LE ? _("IEEE 754 LE.")
@@ -135,7 +135,7 @@ cmd_sysfile_info (struct lexer *lexer, struct dataset *ds UNUSED)
             : info.float_format == FLOAT_VAX_D ? _("VAX D.")
             : info.float_format == FLOAT_VAX_G ? _("VAX G.")
             : info.float_format == FLOAT_Z_LONG ? _("IBM 390 Hex Long.")
-            : _("Unknown."));
+            : _("Unknown"));
   tab_text (t, 0, 5, TAB_LEFT, _("Variables:"));
   tab_text_format (t, 1, 5, TAB_LEFT, "%zu", dict_get_var_cnt (d));
   tab_text (t, 0, 6, TAB_LEFT, _("Cases:"));
@@ -143,7 +143,7 @@ cmd_sysfile_info (struct lexer *lexer, struct dataset *ds UNUSED)
                    info.case_cnt == -1 ? _("Unknown") : "%ld",
                    (long int) info.case_cnt);
   tab_text (t, 0, 7, TAB_LEFT, _("Type:"));
-  tab_text (t, 1, 7, TAB_LEFT, _("System File."));
+  tab_text (t, 1, 7, TAB_LEFT, _("System File"));
   tab_text (t, 0, 8, TAB_LEFT, _("Weight:"));
   {
     struct variable *weight_var = dict_get_weight (d);
index bc4e830d7ffefc010cf3283d6f237fb8dc58a880..11eb8e0bf35645fe422c82d4932cb4132a4bfb4d 100644 (file)
@@ -23,19 +23,19 @@ helpers = src/language/expressions/generate.pl \
        src/language/expressions/operations.def
 
 $(expressions_built_sources): $(helpers)
-EXTRA_DIST += $(helpers) $(expressions_built_sources:=.pl)
+EXTRA_DIST += $(helpers) $(expressions_built_sources:=pl)
 AM_CPPFLAGS += -I$(top_builddir)/src/language/expressions \
        -I$(top_srcdir)/src/language/expressions
 
-SUFFIXES = .h.pl .inc.pl
+SUFFIXES += .h .hpl .inc .incpl
 
 generate_from_pl = $(MKDIR_P) `dirname $@` && \
        $(PERL) -I $(top_srcdir)/src/language/expressions $< -o $@ -i $(top_srcdir)/src/language/expressions/operations.def
 
-.h.pl.h:
+.hpl.h:
        $(generate_from_pl)
 
-.inc.pl.inc:
+.incpl.inc:
        $(generate_from_pl)
 
 EXTRA_DIST += src/language/expressions/OChangeLog
diff --git a/src/language/expressions/evaluate.h.pl b/src/language/expressions/evaluate.h.pl
deleted file mode 100644 (file)
index c26a7cc..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-use strict;
-use warnings 'all';
-
-do 'generate.pl';
-
-our (%ops);
-our (@order);
-sub generate_output {
-    print "#include \"helpers.h\"\n\n";
-
-    for my $opname (@order) {
-       my ($op) = $ops{$opname};
-       next if $op->{UNIMPLEMENTED};
-
-       my (@args);
-       for my $arg (@{$op->{ARGS}}) {
-           if (!defined $arg->{IDX}) {
-               push (@args, c_type ($arg->{TYPE}) . $arg->{NAME});
-           } else {
-               push (@args, c_type ($arg->{TYPE}) . "$arg->{NAME}" . "[]");
-               push (@args, "size_t $arg->{IDX}");
-           }
-       }
-       for my $aux (@{$op->{AUX}}) {
-           push (@args, c_type ($aux->{TYPE}) . $aux->{NAME});
-       }
-       push (@args, "void") if !@args;
-
-       my ($statements) = $op->{BLOCK} || "  return $op->{EXPRESSION};\n";
-
-       print "static inline ", c_type ($op->{RETURNS}), "\n";
-       print "eval_$opname (", join (', ', @args), ")\n";
-       print "{\n";
-       print "$statements";
-       print "}\n\n";
-    }
-}
diff --git a/src/language/expressions/evaluate.hpl b/src/language/expressions/evaluate.hpl
new file mode 100644 (file)
index 0000000..c26a7cc
--- /dev/null
@@ -0,0 +1,37 @@
+use strict;
+use warnings 'all';
+
+do 'generate.pl';
+
+our (%ops);
+our (@order);
+sub generate_output {
+    print "#include \"helpers.h\"\n\n";
+
+    for my $opname (@order) {
+       my ($op) = $ops{$opname};
+       next if $op->{UNIMPLEMENTED};
+
+       my (@args);
+       for my $arg (@{$op->{ARGS}}) {
+           if (!defined $arg->{IDX}) {
+               push (@args, c_type ($arg->{TYPE}) . $arg->{NAME});
+           } else {
+               push (@args, c_type ($arg->{TYPE}) . "$arg->{NAME}" . "[]");
+               push (@args, "size_t $arg->{IDX}");
+           }
+       }
+       for my $aux (@{$op->{AUX}}) {
+           push (@args, c_type ($aux->{TYPE}) . $aux->{NAME});
+       }
+       push (@args, "void") if !@args;
+
+       my ($statements) = $op->{BLOCK} || "  return $op->{EXPRESSION};\n";
+
+       print "static inline ", c_type ($op->{RETURNS}), "\n";
+       print "eval_$opname (", join (', ', @args), ")\n";
+       print "{\n";
+       print "$statements";
+       print "}\n\n";
+    }
+}
diff --git a/src/language/expressions/evaluate.inc.pl b/src/language/expressions/evaluate.inc.pl
deleted file mode 100644 (file)
index e2fccab..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-use strict;
-use warnings 'all';
-
-do 'generate.pl';
-
-our (@order);
-our (%ops);
-
-sub generate_output {
-    for my $opname (@order) {
-       my ($op) = $ops{$opname};
-
-       if ($op->{UNIMPLEMENTED}) {
-           print "case $opname:\n";
-           print "  NOT_REACHED ();\n\n";
-           next;
-       }
-
-       my (@decls);
-       my (@args);
-       for my $arg (@{$op->{ARGS}}) {
-           my ($name) = $arg->{NAME};
-           my ($type) = $arg->{TYPE};
-           my ($c_type) = c_type ($type);
-           my ($idx) = $arg->{IDX};
-           push (@args, "arg_$arg->{NAME}");
-           if (!defined ($idx)) {
-               my ($decl) = "${c_type}arg_$name";
-               if ($type->{ROLE} eq 'any') {
-                   unshift (@decls, "$decl = *--$type->{STACK}");
-               } elsif ($type->{ROLE} eq 'leaf') {
-                   push (@decls, "$decl = op++->$type->{ATOM}");
-               } else {
-                   die;
-               }
-           } else {
-               my ($stack) = $type->{STACK};
-               defined $stack or die;
-               unshift (@decls,
-                        "$c_type*arg_$arg->{NAME} = $stack -= arg_$idx");
-               unshift (@decls, "size_t arg_$arg->{IDX} = op++->integer");
-
-               my ($idx) = "arg_$idx";
-               if ($arg->{TIMES} != 1) {
-                   $idx .= " / $arg->{TIMES}";
-               }
-               push (@args, $idx);
-           }
-       }
-       for my $aux (@{$op->{AUX}}) {
-           my ($type) = $aux->{TYPE};
-           my ($name) = $aux->{NAME};
-           if ($type->{ROLE} eq 'leaf') {
-               my ($c_type) = c_type ($type);
-               push (@decls, "${c_type}aux_$name = op++->$type->{ATOM}");
-               push (@args, "aux_$name");
-           } elsif ($type->{ROLE} eq 'fixed') {
-               push (@args, $type->{FIXED_VALUE});
-           }
-       }
-
-       my ($sysmis_cond) = make_sysmis_decl ($op, "op++->integer");
-       push (@decls, $sysmis_cond) if defined $sysmis_cond;
-
-       my ($result) = "eval_$op->{OPNAME} (" . join (', ', @args) . ")";
-
-       my ($stack) = $op->{RETURNS}{STACK};
-
-       print "case $opname:\n";
-       if (@decls) {
-           print "  {\n";
-           print "    $_;\n" foreach @decls;
-           if (defined $sysmis_cond) {
-               my ($miss_ret) = $op->{RETURNS}{MISSING_VALUE};
-               print "    *$stack++ = force_sysmis ? $miss_ret : $result;\n";
-           } else {
-               print "    *$stack++ = $result;\n";
-           }
-           print "  }\n";
-       } else {
-           print "  *$stack++ = $result;\n";
-       }
-       print "  break;\n\n";
-    }
-}
diff --git a/src/language/expressions/evaluate.incpl b/src/language/expressions/evaluate.incpl
new file mode 100644 (file)
index 0000000..e2fccab
--- /dev/null
@@ -0,0 +1,85 @@
+use strict;
+use warnings 'all';
+
+do 'generate.pl';
+
+our (@order);
+our (%ops);
+
+sub generate_output {
+    for my $opname (@order) {
+       my ($op) = $ops{$opname};
+
+       if ($op->{UNIMPLEMENTED}) {
+           print "case $opname:\n";
+           print "  NOT_REACHED ();\n\n";
+           next;
+       }
+
+       my (@decls);
+       my (@args);
+       for my $arg (@{$op->{ARGS}}) {
+           my ($name) = $arg->{NAME};
+           my ($type) = $arg->{TYPE};
+           my ($c_type) = c_type ($type);
+           my ($idx) = $arg->{IDX};
+           push (@args, "arg_$arg->{NAME}");
+           if (!defined ($idx)) {
+               my ($decl) = "${c_type}arg_$name";
+               if ($type->{ROLE} eq 'any') {
+                   unshift (@decls, "$decl = *--$type->{STACK}");
+               } elsif ($type->{ROLE} eq 'leaf') {
+                   push (@decls, "$decl = op++->$type->{ATOM}");
+               } else {
+                   die;
+               }
+           } else {
+               my ($stack) = $type->{STACK};
+               defined $stack or die;
+               unshift (@decls,
+                        "$c_type*arg_$arg->{NAME} = $stack -= arg_$idx");
+               unshift (@decls, "size_t arg_$arg->{IDX} = op++->integer");
+
+               my ($idx) = "arg_$idx";
+               if ($arg->{TIMES} != 1) {
+                   $idx .= " / $arg->{TIMES}";
+               }
+               push (@args, $idx);
+           }
+       }
+       for my $aux (@{$op->{AUX}}) {
+           my ($type) = $aux->{TYPE};
+           my ($name) = $aux->{NAME};
+           if ($type->{ROLE} eq 'leaf') {
+               my ($c_type) = c_type ($type);
+               push (@decls, "${c_type}aux_$name = op++->$type->{ATOM}");
+               push (@args, "aux_$name");
+           } elsif ($type->{ROLE} eq 'fixed') {
+               push (@args, $type->{FIXED_VALUE});
+           }
+       }
+
+       my ($sysmis_cond) = make_sysmis_decl ($op, "op++->integer");
+       push (@decls, $sysmis_cond) if defined $sysmis_cond;
+
+       my ($result) = "eval_$op->{OPNAME} (" . join (', ', @args) . ")";
+
+       my ($stack) = $op->{RETURNS}{STACK};
+
+       print "case $opname:\n";
+       if (@decls) {
+           print "  {\n";
+           print "    $_;\n" foreach @decls;
+           if (defined $sysmis_cond) {
+               my ($miss_ret) = $op->{RETURNS}{MISSING_VALUE};
+               print "    *$stack++ = force_sysmis ? $miss_ret : $result;\n";
+           } else {
+               print "    *$stack++ = $result;\n";
+           }
+           print "  }\n";
+       } else {
+           print "  *$stack++ = $result;\n";
+       }
+       print "  break;\n\n";
+    }
+}
diff --git a/src/language/expressions/operations.h.pl b/src/language/expressions/operations.h.pl
deleted file mode 100644 (file)
index 8e6e120..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-use strict;
-use warnings 'all';
-
-do 'generate.pl';
-our (@types, @funcs, @opers);
-
-sub generate_output {
-    print "#include <stdlib.h>\n";
-    print "#include <stdbool.h>\n\n";
-
-    print "typedef enum";
-    print "  {\n";
-    my (@atoms);
-    foreach my $type (@types) {
-       next if $type->{ROLE} eq 'fixed';
-       push (@atoms, "OP_$type->{NAME}");
-    }
-    print_operations ('atom', 1, \@atoms);
-    print_operations ('function', "OP_atom_last + 1", \@funcs);
-    print_operations ('operator', "OP_function_last + 1", \@opers);
-    print_range ("OP_composite", "OP_function_first", "OP_operator_last");
-    print ",\n\n";
-    print_range ("OP", "OP_atom_first", "OP_composite_last");
-    print "\n  }\n";
-    print "operation_type, atom_type;\n";
-
-    print_predicate ('is_operation', 'OP');
-    print_predicate ("is_$_", "OP_$_")
-       foreach qw (atom composite function operator);
-}
-
-sub print_operations {
-    my ($type, $first, $names) = @_;
-    print "    /* \u$type types. */\n";
-    print "    $names->[0] = $first,\n";
-    print "    $_,\n" foreach @$names[1...$#{$names}];
-    print_range ("OP_$type", $names->[0], $names->[$#{$names}]);
-    print ",\n\n";
-}
-
-sub print_range {
-    my ($prefix, $first, $last) = @_;
-    print "    ${prefix}_first = $first,\n";
-    print "    ${prefix}_last = $last,\n";
-    print "    ${prefix}_cnt = ${prefix}_last - ${prefix}_first + 1";
-}
-
-sub print_predicate {
-    my ($function, $category) = @_;
-    my ($assertion) = "";
-
-    print "\nstatic inline bool\n";
-    print "$function (operation_type op)\n";
-    print "{\n";
-    print "  assert (is_operation (op));\n" if $function ne 'is_operation';
-    print "  return op >= ${category}_first && op <= ${category}_last;\n";
-    print "}\n";
-}
diff --git a/src/language/expressions/operations.hpl b/src/language/expressions/operations.hpl
new file mode 100644 (file)
index 0000000..8e6e120
--- /dev/null
@@ -0,0 +1,58 @@
+use strict;
+use warnings 'all';
+
+do 'generate.pl';
+our (@types, @funcs, @opers);
+
+sub generate_output {
+    print "#include <stdlib.h>\n";
+    print "#include <stdbool.h>\n\n";
+
+    print "typedef enum";
+    print "  {\n";
+    my (@atoms);
+    foreach my $type (@types) {
+       next if $type->{ROLE} eq 'fixed';
+       push (@atoms, "OP_$type->{NAME}");
+    }
+    print_operations ('atom', 1, \@atoms);
+    print_operations ('function', "OP_atom_last + 1", \@funcs);
+    print_operations ('operator', "OP_function_last + 1", \@opers);
+    print_range ("OP_composite", "OP_function_first", "OP_operator_last");
+    print ",\n\n";
+    print_range ("OP", "OP_atom_first", "OP_composite_last");
+    print "\n  }\n";
+    print "operation_type, atom_type;\n";
+
+    print_predicate ('is_operation', 'OP');
+    print_predicate ("is_$_", "OP_$_")
+       foreach qw (atom composite function operator);
+}
+
+sub print_operations {
+    my ($type, $first, $names) = @_;
+    print "    /* \u$type types. */\n";
+    print "    $names->[0] = $first,\n";
+    print "    $_,\n" foreach @$names[1...$#{$names}];
+    print_range ("OP_$type", $names->[0], $names->[$#{$names}]);
+    print ",\n\n";
+}
+
+sub print_range {
+    my ($prefix, $first, $last) = @_;
+    print "    ${prefix}_first = $first,\n";
+    print "    ${prefix}_last = $last,\n";
+    print "    ${prefix}_cnt = ${prefix}_last - ${prefix}_first + 1";
+}
+
+sub print_predicate {
+    my ($function, $category) = @_;
+    my ($assertion) = "";
+
+    print "\nstatic inline bool\n";
+    print "$function (operation_type op)\n";
+    print "{\n";
+    print "  assert (is_operation (op));\n" if $function ne 'is_operation';
+    print "  return op >= ${category}_first && op <= ${category}_last;\n";
+    print "}\n";
+}
diff --git a/src/language/expressions/optimize.inc.pl b/src/language/expressions/optimize.inc.pl
deleted file mode 100644 (file)
index c441774..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-use strict;
-use warnings 'all';
-
-do 'generate.pl';
-our (@order, %ops);
-
-sub generate_output {
-    for my $opname (@order) {
-       my ($op) = $ops{$opname};
-
-       if (!$op->{OPTIMIZABLE} || $op->{UNIMPLEMENTED}) {
-           print "case $opname:\n";
-           print "  NOT_REACHED ();\n\n";
-           next;
-       }
-
-       my (@decls);
-       my ($arg_idx) = 0;
-       for my $arg (@{$op->{ARGS}}) {
-           my ($decl);
-           my ($name) = $arg->{NAME};
-           my ($type) = $arg->{TYPE};
-           my ($ctype) = c_type ($type);
-           my ($idx) = $arg->{IDX};
-           if (!defined ($idx)) {
-               my ($func) = "get_$type->{ATOM}_arg";
-               push (@decls, "${ctype}arg_$name = $func (node, $arg_idx)");
-           } else {
-               my ($decl) = "size_t arg_$idx = node->arg_cnt";
-               $decl .= " - $arg_idx" if $arg_idx;
-               push (@decls, $decl);
-
-               push (@decls, "${ctype}*arg_$name = "
-                     . "get_$type->{ATOM}_args "
-                     . " (node, $arg_idx, arg_$idx, e)");
-           }
-           $arg_idx++;
-       }
-
-       my ($sysmis_cond) = make_sysmis_decl ($op, "node->min_valid");
-       push (@decls, $sysmis_cond) if defined $sysmis_cond;
-
-       my (@args);
-       for my $arg (@{$op->{ARGS}}) {
-           push (@args, "arg_$arg->{NAME}");
-           if (defined $arg->{IDX}) {
-               my ($idx) = "arg_$arg->{IDX}";
-               $idx .= " / $arg->{TIMES}" if $arg->{TIMES} != 1;
-               push (@args, $idx);
-           }
-       }
-       for my $aux (@{$op->{AUX}}) {
-           my ($type) = $aux->{TYPE};
-           if ($type->{ROLE} eq 'leaf') {
-               my ($func) = "get_$type->{ATOM}_arg";
-               push (@args, "$func (node, $arg_idx)");
-               $arg_idx++;
-           } elsif ($type->{ROLE} eq 'fixed') {
-               push (@args, $type->{FIXED_VALUE});
-           } else {
-               die;
-           }
-       }
-
-       my ($result) = "eval_$op->{OPNAME} (" . join (', ', @args) . ")";
-       if (@decls && defined ($sysmis_cond)) {
-           my ($miss_ret) = $op->{RETURNS}{MISSING_VALUE};
-           push (@decls, c_type ($op->{RETURNS}) . "result = "
-                 . "force_sysmis ? $miss_ret : $result");
-           $result = "result";
-       }
-
-       print "case $opname:\n";
-       my ($alloc_func) = "expr_allocate_$op->{RETURNS}{NAME}";
-       if (@decls) {
-           print "  {\n";
-           print "    $_;\n" foreach @decls;
-           print "    return $alloc_func (e, $result);\n";
-           print "  }\n";
-       } else {
-           print "  return $alloc_func (e, $result);\n";
-       }
-       print "\n";
-    }
-}
diff --git a/src/language/expressions/optimize.incpl b/src/language/expressions/optimize.incpl
new file mode 100644 (file)
index 0000000..c441774
--- /dev/null
@@ -0,0 +1,85 @@
+use strict;
+use warnings 'all';
+
+do 'generate.pl';
+our (@order, %ops);
+
+sub generate_output {
+    for my $opname (@order) {
+       my ($op) = $ops{$opname};
+
+       if (!$op->{OPTIMIZABLE} || $op->{UNIMPLEMENTED}) {
+           print "case $opname:\n";
+           print "  NOT_REACHED ();\n\n";
+           next;
+       }
+
+       my (@decls);
+       my ($arg_idx) = 0;
+       for my $arg (@{$op->{ARGS}}) {
+           my ($decl);
+           my ($name) = $arg->{NAME};
+           my ($type) = $arg->{TYPE};
+           my ($ctype) = c_type ($type);
+           my ($idx) = $arg->{IDX};
+           if (!defined ($idx)) {
+               my ($func) = "get_$type->{ATOM}_arg";
+               push (@decls, "${ctype}arg_$name = $func (node, $arg_idx)");
+           } else {
+               my ($decl) = "size_t arg_$idx = node->arg_cnt";
+               $decl .= " - $arg_idx" if $arg_idx;
+               push (@decls, $decl);
+
+               push (@decls, "${ctype}*arg_$name = "
+                     . "get_$type->{ATOM}_args "
+                     . " (node, $arg_idx, arg_$idx, e)");
+           }
+           $arg_idx++;
+       }
+
+       my ($sysmis_cond) = make_sysmis_decl ($op, "node->min_valid");
+       push (@decls, $sysmis_cond) if defined $sysmis_cond;
+
+       my (@args);
+       for my $arg (@{$op->{ARGS}}) {
+           push (@args, "arg_$arg->{NAME}");
+           if (defined $arg->{IDX}) {
+               my ($idx) = "arg_$arg->{IDX}";
+               $idx .= " / $arg->{TIMES}" if $arg->{TIMES} != 1;
+               push (@args, $idx);
+           }
+       }
+       for my $aux (@{$op->{AUX}}) {
+           my ($type) = $aux->{TYPE};
+           if ($type->{ROLE} eq 'leaf') {
+               my ($func) = "get_$type->{ATOM}_arg";
+               push (@args, "$func (node, $arg_idx)");
+               $arg_idx++;
+           } elsif ($type->{ROLE} eq 'fixed') {
+               push (@args, $type->{FIXED_VALUE});
+           } else {
+               die;
+           }
+       }
+
+       my ($result) = "eval_$op->{OPNAME} (" . join (', ', @args) . ")";
+       if (@decls && defined ($sysmis_cond)) {
+           my ($miss_ret) = $op->{RETURNS}{MISSING_VALUE};
+           push (@decls, c_type ($op->{RETURNS}) . "result = "
+                 . "force_sysmis ? $miss_ret : $result");
+           $result = "result";
+       }
+
+       print "case $opname:\n";
+       my ($alloc_func) = "expr_allocate_$op->{RETURNS}{NAME}";
+       if (@decls) {
+           print "  {\n";
+           print "    $_;\n" foreach @decls;
+           print "    return $alloc_func (e, $result);\n";
+           print "  }\n";
+       } else {
+           print "  return $alloc_func (e, $result);\n";
+       }
+       print "\n";
+    }
+}
diff --git a/src/language/expressions/parse.inc.pl b/src/language/expressions/parse.inc.pl
deleted file mode 100644 (file)
index 4e7243c..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-use strict;
-use warnings 'all';
-
-do 'generate.pl';
-our (@types, @order, %ops);
-
-sub generate_output {
-    my (@members) = ("\"\"", "\"\"", 0, 0, 0, "{}", 0, 0);
-    print "{", join (', ', @members), "},\n";
-
-    for my $type (@types) {
-       next if $type->{ROLE} eq 'fixed';
-
-       my ($human_name) = $type->{HUMAN_NAME};
-       $human_name = "" if !defined $human_name;
-       
-       my (@members) = ("\"$type->{NAME}\"", "\"\"",
-                        0, "OP_$type->{NAME}", 0, "{}", 0, 0);
-       print "{", join (', ', @members), "},\n";
-    }
-
-    for my $opname (@order) {
-       my ($op) = $ops{$opname};
-
-       my (@members);
-
-       push (@members, "\"$op->{NAME}\"");
-
-       if ($op->{CATEGORY} eq 'function') {
-           my (@args, @opt_args);
-           for my $arg (@{$op->{ARGS}}) {
-               push (@args, $arg->{TYPE}{HUMAN_NAME}) if !defined $arg->{IDX};
-           }
-
-           if (my ($array) = array_arg ($op)) {
-               if (!defined $op->{MIN_VALID}) {
-                   my (@array_args);
-                   for (my $i = 0; $i < $array->{TIMES}; $i++) {
-                       push (@array_args, $array->{TYPE}{HUMAN_NAME});
-                   }
-                   push (@args, @array_args);
-                   @opt_args = @array_args;
-               } else {
-                   for (my $i = 0; $i < $op->{MIN_VALID}; $i++) {
-                       push (@args, $array->{TYPE}{HUMAN_NAME});
-                   }
-                   push (@opt_args, $array->{TYPE}{HUMAN_NAME});
-               }
-           }
-           my ($human) = "$op->{NAME}(" . join (', ', @args);
-           $human .= '[, ' . join (', ', @opt_args) . ']...' if @opt_args;
-           $human .= ')';
-           push (@members, "\"$human\"");
-       } else {
-           push (@members, "NULL");
-       }
-
-       my (@flags);
-       push (@flags, "OPF_ABSORB_MISS") if defined $op->{ABSORB_MISS};
-       push (@flags, "OPF_ARRAY_OPERAND") if array_arg ($op);
-       push (@flags, "OPF_MIN_VALID") if defined $op->{MIN_VALID};
-       push (@flags, "OPF_NONOPTIMIZABLE") if !$op->{OPTIMIZABLE};
-       push (@flags, "OPF_EXTENSION") if $op->{EXTENSION};
-       push (@flags, "OPF_UNIMPLEMENTED") if $op->{UNIMPLEMENTED};
-       push (@flags, "OPF_PERM_ONLY") if $op->{PERM_ONLY};
-       push (@flags, "OPF_NO_ABBREV") if $op->{NO_ABBREV};
-       push (@members, @flags ? join (' | ', @flags) : 0);
-
-       push (@members, "OP_$op->{RETURNS}{NAME}");
-
-       push (@members, scalar (@{$op->{ARGS}}));
-
-       my (@arg_types) = map ("OP_$_->{TYPE}{NAME}", @{$op->{ARGS}});
-       push (@members, "{" . join (', ', @arg_types) . "}");
-
-       push (@members, $op->{MIN_VALID} || 0);
-
-       push (@members, array_arg ($op) ? ${array_arg ($op)}{TIMES} : 0);
-
-       print "{", join (', ', @members), "},\n";
-    }
-}
diff --git a/src/language/expressions/parse.incpl b/src/language/expressions/parse.incpl
new file mode 100644 (file)
index 0000000..4e7243c
--- /dev/null
@@ -0,0 +1,82 @@
+use strict;
+use warnings 'all';
+
+do 'generate.pl';
+our (@types, @order, %ops);
+
+sub generate_output {
+    my (@members) = ("\"\"", "\"\"", 0, 0, 0, "{}", 0, 0);
+    print "{", join (', ', @members), "},\n";
+
+    for my $type (@types) {
+       next if $type->{ROLE} eq 'fixed';
+
+       my ($human_name) = $type->{HUMAN_NAME};
+       $human_name = "" if !defined $human_name;
+       
+       my (@members) = ("\"$type->{NAME}\"", "\"\"",
+                        0, "OP_$type->{NAME}", 0, "{}", 0, 0);
+       print "{", join (', ', @members), "},\n";
+    }
+
+    for my $opname (@order) {
+       my ($op) = $ops{$opname};
+
+       my (@members);
+
+       push (@members, "\"$op->{NAME}\"");
+
+       if ($op->{CATEGORY} eq 'function') {
+           my (@args, @opt_args);
+           for my $arg (@{$op->{ARGS}}) {
+               push (@args, $arg->{TYPE}{HUMAN_NAME}) if !defined $arg->{IDX};
+           }
+
+           if (my ($array) = array_arg ($op)) {
+               if (!defined $op->{MIN_VALID}) {
+                   my (@array_args);
+                   for (my $i = 0; $i < $array->{TIMES}; $i++) {
+                       push (@array_args, $array->{TYPE}{HUMAN_NAME});
+                   }
+                   push (@args, @array_args);
+                   @opt_args = @array_args;
+               } else {
+                   for (my $i = 0; $i < $op->{MIN_VALID}; $i++) {
+                       push (@args, $array->{TYPE}{HUMAN_NAME});
+                   }
+                   push (@opt_args, $array->{TYPE}{HUMAN_NAME});
+               }
+           }
+           my ($human) = "$op->{NAME}(" . join (', ', @args);
+           $human .= '[, ' . join (', ', @opt_args) . ']...' if @opt_args;
+           $human .= ')';
+           push (@members, "\"$human\"");
+       } else {
+           push (@members, "NULL");
+       }
+
+       my (@flags);
+       push (@flags, "OPF_ABSORB_MISS") if defined $op->{ABSORB_MISS};
+       push (@flags, "OPF_ARRAY_OPERAND") if array_arg ($op);
+       push (@flags, "OPF_MIN_VALID") if defined $op->{MIN_VALID};
+       push (@flags, "OPF_NONOPTIMIZABLE") if !$op->{OPTIMIZABLE};
+       push (@flags, "OPF_EXTENSION") if $op->{EXTENSION};
+       push (@flags, "OPF_UNIMPLEMENTED") if $op->{UNIMPLEMENTED};
+       push (@flags, "OPF_PERM_ONLY") if $op->{PERM_ONLY};
+       push (@flags, "OPF_NO_ABBREV") if $op->{NO_ABBREV};
+       push (@members, @flags ? join (' | ', @flags) : 0);
+
+       push (@members, "OP_$op->{RETURNS}{NAME}");
+
+       push (@members, scalar (@{$op->{ARGS}}));
+
+       my (@arg_types) = map ("OP_$_->{TYPE}{NAME}", @{$op->{ARGS}});
+       push (@members, "{" . join (', ', @arg_types) . "}");
+
+       push (@members, $op->{MIN_VALID} || 0);
+
+       push (@members, array_arg ($op) ? ${array_arg ($op)}{TIMES} : 0);
+
+       print "{", join (', ', @members), "},\n";
+    }
+}
index 6df3f96b69a980626f1fcffee0d6d91f038345ba..84bcaba8950d2fc2f3ffc62236329c500f870af3 100644 (file)
@@ -1,4 +1,3 @@
-correlations.c
 crosstabs.c
 examine.c
 frequencies.c
index 8eb52cf030de86ab041baca050a9cdb78b3802e8..05e8bcf9440060a73537a7a2ccc4af8bd684ed37 100644 (file)
@@ -22,6 +22,7 @@ language_stats_sources = \
        src/language/stats/binomial.h \
        src/language/stats/chisquare.c \
        src/language/stats/chisquare.h \
+       src/language/stats/correlations.c \
        src/language/stats/descriptives.c \
        src/language/stats/npar.h \
        src/language/stats/sort-cases.c \
diff --git a/src/language/stats/correlations.c b/src/language/stats/correlations.c
new file mode 100644 (file)
index 0000000..ad90ef4
--- /dev/null
@@ -0,0 +1,542 @@
+/* PSPP - a program for statistical analysis.
+   Copyright (C) 2009 Free Software Foundation, Inc.
+
+   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
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <libpspp/assertion.h>
+#include <math/covariance.h>
+#include <math/design-matrix.h>
+#include <gsl/gsl_matrix.h>
+#include <data/casegrouper.h>
+#include <data/casereader.h>
+#include <data/dictionary.h>
+#include <data/procedure.h>
+#include <data/variable.h>
+#include <language/command.h>
+#include <language/dictionary/split-file.h>
+#include <language/lexer/lexer.h>
+#include <language/lexer/variable-parser.h>
+#include <output/manager.h>
+#include <output/table.h>
+#include <libpspp/message.h>
+#include <data/format.h>
+#include <math/moments.h>
+
+#include <math.h>
+#include "xalloc.h"
+#include "minmax.h"
+#include <libpspp/misc.h>
+#include <gsl/gsl_cdf.h>
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+#define N_(msgid) msgid
+
+
+static double
+significance_of_correlation (double rho, double w)
+{
+  double t = w - 2;
+  t /= 1 - MIN (1, pow2 (rho));
+  t = sqrt (t);
+  t *= rho;
+  
+  if (t > 0)
+    return  gsl_cdf_tdist_Q (t, w - 2);
+  else
+    return  gsl_cdf_tdist_P (t, w - 2);
+}
+
+
+struct corr
+{
+  size_t n_vars_total;
+  size_t n_vars1;
+
+  const struct variable **vars;
+};
+
+
+/* Handling of missing values. */
+enum corr_missing_type
+  {
+    CORR_PAIRWISE,       /* Handle missing values on a per-variable-pair basis. */
+    CORR_LISTWISE        /* Discard entire case if any variable is missing. */
+  };
+
+enum stats_opts
+  {
+    STATS_DESCRIPTIVES = 0x01,
+    STATS_XPROD = 0x02,
+    STATS_ALL = STATS_XPROD | STATS_DESCRIPTIVES
+  };
+
+struct corr_opts
+{
+  enum corr_missing_type missing_type;
+  enum mv_class exclude;      /* Classes of missing values to exclude. */
+
+  bool sig;   /* Flag significant values or not */
+  int tails;  /* Report significance with how many tails ? */
+  enum stats_opts statistics;
+
+  const struct variable *wv;  /* The weight variable (if any) */
+};
+
+
+static void
+output_descriptives (const struct corr *corr, const gsl_matrix *means,
+                    const gsl_matrix *vars, const gsl_matrix *ns)
+{
+  const int nr = corr->n_vars_total + 1;
+  const int nc = 4;
+  int c, r;
+
+  const int heading_columns = 1;
+  const int heading_rows = 1;
+
+  struct tab_table *t = tab_create (nc, nr);
+  tab_title (t, _("Descriptive Statistics"));
+  tab_dim (t, tab_natural_dimensions, NULL, NULL);
+
+  tab_headers (t, heading_columns, 0, heading_rows, 0);
+
+  /* Outline the box */
+  tab_box (t,
+          TAL_2, TAL_2,
+          -1, -1,
+          0, 0,
+          nc - 1, nr - 1);
+
+  /* Vertical lines */
+  tab_box (t,
+          -1, -1,
+          -1, TAL_1,
+          heading_columns, 0,
+          nc - 1, nr - 1);
+
+  tab_vline (t, TAL_2, heading_columns, 0, nr - 1);
+  tab_hline (t, TAL_1, 0, nc - 1, heading_rows);
+
+  tab_text (t, 1, 0, TAB_CENTER | TAT_TITLE, _("Mean"));
+  tab_text (t, 2, 0, TAB_CENTER | TAT_TITLE, _("Std. Deviation"));
+  tab_text (t, 3, 0, TAB_CENTER | TAT_TITLE, _("N"));
+
+  for (r = 0 ; r < corr->n_vars_total ; ++r)
+    {
+      const struct variable *v = corr->vars[r];
+      tab_text (t, 0, r + heading_rows, TAB_LEFT | TAT_TITLE, var_to_string (v));
+
+      for (c = 1 ; c < nc ; ++c)
+       {
+         double x ;
+         double n;
+         switch (c)
+           {
+           case 1:
+             x = gsl_matrix_get (means, r, 0);
+             break;
+           case 2:
+             x = gsl_matrix_get (vars, r, 0);
+
+             /* Here we want to display the non-biased estimator */
+             n = gsl_matrix_get (ns, r, 0);
+             x *= n / (n -1);
+
+             x = sqrt (x);
+             break;
+           case 3:
+             x = gsl_matrix_get (ns, r, 0);
+             break;
+           default: 
+             NOT_REACHED ();
+           };
+         
+         tab_double (t, c, r + heading_rows, 0, x, NULL);
+       }
+    }
+
+  tab_submit (t);
+}
+
+static void
+output_correlation (const struct corr *corr, const struct corr_opts *opts,
+                   const gsl_matrix *cm, const gsl_matrix *samples,
+                   const gsl_matrix *cv)
+{
+  int r, c;
+  struct tab_table *t;
+  int matrix_cols;
+  int nr = corr->n_vars1;
+  int nc = matrix_cols = corr->n_vars_total > corr->n_vars1 ?
+    corr->n_vars_total - corr->n_vars1 : corr->n_vars1;
+
+  const struct fmt_spec *wfmt = opts->wv ? var_get_print_format (opts->wv) : & F_8_0;
+
+  const int heading_columns = 2;
+  const int heading_rows = 1;
+
+  int rows_per_variable = opts->missing_type == CORR_LISTWISE ? 2 : 3;
+
+  if (opts->statistics & STATS_XPROD)
+    rows_per_variable += 2;
+
+  /* Two header columns */
+  nc += heading_columns;
+
+  /* Three data per variable */
+  nr *= rows_per_variable;
+
+  /* One header row */
+  nr += heading_rows;
+
+  t = tab_create (nc, nr);
+  tab_title (t, _("Correlations"));
+  tab_dim (t, tab_natural_dimensions, NULL, NULL);
+
+  tab_headers (t, heading_columns, 0, heading_rows, 0);
+
+  /* Outline the box */
+  tab_box (t,
+          TAL_2, TAL_2,
+          -1, -1,
+          0, 0,
+          nc - 1, nr - 1);
+
+  /* Vertical lines */
+  tab_box (t,
+          -1, -1,
+          -1, TAL_1,
+          heading_columns, 0,
+          nc - 1, nr - 1);
+
+  tab_vline (t, TAL_2, heading_columns, 0, nr - 1);
+  tab_vline (t, TAL_1, 1, heading_rows, nr - 1);
+
+  for (r = 0 ; r < corr->n_vars1 ; ++r)
+    {
+      tab_text (t, 0, 1 + r * rows_per_variable, TAB_LEFT | TAT_TITLE, 
+               var_to_string (corr->vars[r]));
+
+      tab_text (t, 1, 1 + r * rows_per_variable, TAB_LEFT | TAT_TITLE, _("Pearson Correlation"));
+      tab_text (t, 1, 2 + r * rows_per_variable, TAB_LEFT | TAT_TITLE, 
+               (opts->tails == 2) ? _("Sig. (2-tailed)") : _("Sig. (1-tailed)"));
+
+      if (opts->statistics & STATS_XPROD)
+       {
+         tab_text (t, 1, 3 + r * rows_per_variable, TAB_LEFT | TAT_TITLE, _("Cross-products"));
+         tab_text (t, 1, 4 + r * rows_per_variable, TAB_LEFT | TAT_TITLE, _("Covariance"));
+       }
+
+      if ( opts->missing_type != CORR_LISTWISE )
+       tab_text (t, 1, rows_per_variable + r * rows_per_variable, TAB_LEFT | TAT_TITLE, _("N"));
+
+      tab_hline (t, TAL_1, 0, nc - 1, r * rows_per_variable + 1);
+    }
+
+  for (c = 0 ; c < matrix_cols ; ++c)
+    {
+      const struct variable *v = corr->n_vars_total > corr->n_vars1 ? corr->vars[corr->n_vars_total - corr->n_vars1 + c] : corr->vars[c];
+      tab_text (t, heading_columns + c, 0, TAB_LEFT | TAT_TITLE, var_to_string (v));      
+    }
+
+  for (r = 0 ; r < corr->n_vars1 ; ++r)
+    {
+      const int row = r * rows_per_variable + heading_rows;
+      for (c = 0 ; c < matrix_cols ; ++c)
+       {
+         unsigned char flags = 0; 
+         const int col_index = corr->n_vars_total - corr->n_vars1 + c;
+         double pearson = gsl_matrix_get (cm, r, col_index);
+         double w = gsl_matrix_get (samples, r, col_index);
+         double sig = opts->tails * significance_of_correlation (pearson, w);
+
+         if ( opts->missing_type != CORR_LISTWISE )
+           tab_double (t, c + heading_columns, row + rows_per_variable - 1, 0, w, wfmt);
+
+         if ( c != r)
+           tab_double (t, c + heading_columns, row + 1, 0,  sig, NULL);
+
+         if ( opts->sig && c != r && sig < 0.05)
+           flags = TAB_EMPH;
+         
+         tab_double (t, c + heading_columns, row, flags, pearson, NULL);
+
+         if (opts->statistics & STATS_XPROD)
+           {
+             double cov = gsl_matrix_get (cv, r, col_index);
+             const double xprod_dev = cov * w;
+             cov *= w / (w - 1.0);
+
+             tab_double (t, c + heading_columns, row + 2, 0, xprod_dev, NULL);
+             tab_double (t, c + heading_columns, row + 3, 0, cov, NULL);
+           }
+       }
+    }
+
+  tab_submit (t);
+}
+
+
+static gsl_matrix *
+correlation_from_covariance (const gsl_matrix *cv, const gsl_matrix *v)
+{
+  size_t i, j;
+  gsl_matrix *corr = gsl_matrix_calloc (cv->size1, cv->size2);
+  
+  for (i = 0 ; i < cv->size1; ++i)
+    {
+      for (j = 0 ; j < cv->size2; ++j)
+       {
+         double rho = gsl_matrix_get (cv, i, j);
+         
+         rho /= sqrt (gsl_matrix_get (v, i, j))
+           * 
+           sqrt (gsl_matrix_get (v, j, i));
+         
+         gsl_matrix_set (corr, i, j, rho);
+       }
+    }
+  
+  return corr;
+}
+
+
+
+
+static void
+run_corr (struct casereader *r, const struct corr_opts *opts, const struct corr *corr)
+{
+  struct ccase *c;
+  const gsl_matrix *var_matrix,  *samples_matrix, *mean_matrix;
+  const gsl_matrix *cov_matrix;
+  gsl_matrix *corr_matrix;
+  struct covariance *cov = covariance_create (corr->n_vars_total, corr->vars,
+                                             opts->wv, opts->exclude);
+
+  for ( ; (c = casereader_read (r) ); case_unref (c))
+    {
+      covariance_accumulate (cov, c);
+    }
+
+  cov_matrix = covariance_calculate (cov);
+
+  samples_matrix = covariance_moments (cov, MOMENT_NONE);
+  var_matrix = covariance_moments (cov, MOMENT_VARIANCE);
+  mean_matrix = covariance_moments (cov, MOMENT_MEAN);
+
+  corr_matrix = correlation_from_covariance (cov_matrix, var_matrix);
+
+  if ( opts->statistics & STATS_DESCRIPTIVES) 
+    output_descriptives (corr, mean_matrix, var_matrix, samples_matrix);
+
+  output_correlation (corr, opts,
+                     corr_matrix,
+                     samples_matrix,
+                     cov_matrix);
+
+  covariance_destroy (cov);
+  gsl_matrix_free (corr_matrix);
+}
+
+int
+cmd_correlation (struct lexer *lexer, struct dataset *ds)
+{
+  int i;
+  int n_all_vars = 0; /* Total number of variables involved in this command */
+  const struct variable **all_vars ;
+  const struct dictionary *dict = dataset_dict (ds);
+  bool ok = true;
+
+  struct casegrouper *grouper;
+  struct casereader *group;
+
+  struct corr *corr = NULL;
+  size_t n_corrs = 0;
+
+  struct corr_opts opts;
+  opts.missing_type = CORR_PAIRWISE;
+  opts.wv = dict_get_weight (dict);
+  opts.tails = 2;
+  opts.sig = false;
+  opts.exclude = MV_ANY;
+  opts.statistics = 0;
+
+  /* Parse CORRELATIONS. */
+  while (lex_token (lexer) != '.')
+    {
+      lex_match (lexer, '/');
+      if (lex_match_id (lexer, "MISSING"))
+        {
+          lex_match (lexer, '=');
+          while (lex_token (lexer) != '.' && lex_token (lexer) != '/')
+            {
+              if (lex_match_id (lexer, "PAIRWISE"))
+                opts.missing_type = CORR_PAIRWISE;
+              else if (lex_match_id (lexer, "LISTWISE"))
+                opts.missing_type = CORR_LISTWISE;
+
+              else if (lex_match_id (lexer, "INCLUDE"))
+                opts.exclude = MV_SYSTEM;
+              else if (lex_match_id (lexer, "EXCLUDE"))
+               opts.exclude = MV_ANY;
+              else
+                {
+                  lex_error (lexer, NULL);
+                  goto error;
+                }
+              lex_match (lexer, ',');
+            }
+        }
+      else if (lex_match_id (lexer, "PRINT"))
+       {
+          lex_match (lexer, '=');
+          while (lex_token (lexer) != '.' && lex_token (lexer) != '/')
+           {
+             if ( lex_match_id (lexer, "TWOTAIL"))
+               opts.tails = 2;
+             else if (lex_match_id (lexer, "ONETAIL"))
+               opts.tails = 1;
+             else if (lex_match_id (lexer, "SIG"))
+               opts.sig = false;
+             else if (lex_match_id (lexer, "NOSIG"))
+               opts.sig = true;
+             else
+               {
+                 lex_error (lexer, NULL);
+                 goto error;
+               }
+
+              lex_match (lexer, ',');
+           }
+       }
+      else if (lex_match_id (lexer, "STATISTICS"))
+       {
+         lex_match (lexer, '=');
+          while (lex_token (lexer) != '.' && lex_token (lexer) != '/')
+           {
+             if ( lex_match_id (lexer, "DESCRIPTIVES"))
+               opts.statistics = STATS_DESCRIPTIVES;
+             else if (lex_match_id (lexer, "XPROD"))
+               opts.statistics = STATS_XPROD;
+             else if (lex_token (lexer) == T_ALL)
+               {
+                 opts.statistics = STATS_ALL;
+                 lex_get (lexer);
+               }
+             else 
+               {
+                 lex_error (lexer, NULL);
+                 goto error;
+               }
+
+              lex_match (lexer, ',');
+           }
+       }
+      else
+       {
+         if (lex_match_id (lexer, "VARIABLES"))
+           {
+             lex_match (lexer, '=');
+           }
+
+         corr = xrealloc (corr, sizeof (*corr) * (n_corrs + 1));
+         corr[n_corrs].n_vars_total = corr[n_corrs].n_vars1 = 0;
+      
+         if ( ! parse_variables_const (lexer, dict, &corr[n_corrs].vars, 
+                                       &corr[n_corrs].n_vars_total,
+                                       PV_NUMERIC))
+           {
+             ok = false;
+             break;
+           }
+
+
+         corr[n_corrs].n_vars1 = corr[n_corrs].n_vars_total;
+
+         if ( lex_match (lexer, T_WITH))
+           {
+             if ( ! parse_variables_const (lexer, dict,
+                                           &corr[n_corrs].vars, &corr[n_corrs].n_vars_total,
+                                           PV_NUMERIC | PV_APPEND))
+               {
+                 ok = false;
+                 break;
+               }
+           }
+
+         n_all_vars += corr[n_corrs].n_vars_total;
+
+         n_corrs++;
+       }
+    }
+
+  if (n_corrs == 0)
+    {
+      msg (SE, _("No variables specified."));
+      goto error;
+    }
+
+
+  all_vars = xmalloc (sizeof (*all_vars) * n_all_vars);
+
+  {
+    /* FIXME:  Using a hash here would make more sense */
+    const struct variable **vv = all_vars;
+
+    for (i = 0 ; i < n_corrs; ++i)
+      {
+       int v;
+       const struct corr *c = &corr[i];
+       for (v = 0 ; v < c->n_vars_total; ++v)
+         *vv++ = c->vars[v];
+      }
+  }
+
+  grouper = casegrouper_create_splits (proc_open (ds), dict);
+
+  while (casegrouper_get_next_group (grouper, &group))
+    {
+      for (i = 0 ; i < n_corrs; ++i)
+       {
+         /* FIXME: No need to iterate the data multiple times */
+         struct casereader *r = casereader_clone (group);
+
+         if ( opts.missing_type == CORR_LISTWISE)
+           r = casereader_create_filter_missing (r, all_vars, n_all_vars,
+                                                 opts.exclude, NULL, NULL);
+
+
+         run_corr (r, &opts,  &corr[i]);
+         casereader_destroy (r);
+       }
+      casereader_destroy (group);
+    }
+
+  ok = casegrouper_destroy (grouper);
+  ok = proc_commit (ds) && ok;
+
+  free (all_vars);
+
+
+  /* Done. */
+  free (corr);
+  return ok ? CMD_SUCCESS : CMD_CASCADING_FAILURE;
+
+ error:
+  free (corr);
+  return CMD_FAILURE;
+}
index d87410fb17a4a19226db63768e6f7baed99f22d6..e78d771e147a95ea5630360d8e9c120984f96a14 100644 (file)
@@ -100,13 +100,13 @@ struct dsc_statistic_info
 static const struct dsc_statistic_info dsc_info[DSC_N_STATS] =
   {
     {"MEAN", N_("Mean"), MOMENT_MEAN},
-    {"SEMEAN", N_("S E Mean"), MOMENT_VARIANCE},
+    {"SEMEAN", N_("S.E. Mean"), MOMENT_VARIANCE},
     {"STDDEV", N_("Std Dev"), MOMENT_VARIANCE},
     {"VARIANCE", N_("Variance"), MOMENT_VARIANCE},
     {"KURTOSIS", N_("Kurtosis"), MOMENT_KURTOSIS},
-    {"SEKURTOSIS", N_("S E Kurt"), MOMENT_NONE},
+    {"SEKURTOSIS", N_("S.E. Kurt"), MOMENT_NONE},
     {"SKEWNESS", N_("Skewness"), MOMENT_SKEWNESS},
-    {"SESKEWNESS", N_("S E Skew"), MOMENT_NONE},
+    {"SESKEWNESS", N_("S.E. Skew"), MOMENT_NONE},
     {"RANGE", N_("Range"), MOMENT_NONE},
     {"MINIMUM", N_("Minimum"), MOMENT_NONE},
     {"MAXIMUM", N_("Maximum"), MOMENT_NONE},
index b56fad4c65bc432c93baf60b09c6c4663906bc50..1d399b5a1888908a4b08c8cfe2874da0af039bed 100644 (file)
@@ -1776,7 +1776,6 @@ show_extremes (const struct variable **dependent_var,
              min_ll = ll_next (min_ll);
            }
 
-
          max_ll = ll_head (extrema_list (result->metrics[v].maxima));
          for (e = 0; e < cmd.st_n;)
            {
index 3e595968d9c4c3232f719a1b48520a2a71dfdc37..c8cb03b92d7f75aff63dc5fe3ca549d8a4d2b365 100644 (file)
@@ -211,7 +211,7 @@ cmd_flip (struct lexer *lexer, struct dataset *ds)
     else
       {
         char s[VAR_NAME_LEN + 1];
-        sprintf (s, "VAR%03d", i);
+        sprintf (s, "VAR%03zu", i);
         dict_create_var_assert (dict, s, 0);
       }
 
index 76ba5d3f1f874c4bd720f33f02b20e82b9642195..e1d6fb0e3dfcaa95518dc2f60b346da92199887b 100644 (file)
@@ -1046,32 +1046,16 @@ dump_full (const struct variable *v, const struct variable *wv)
   struct freq_tab *ft;
   struct freq_mutable *f;
   struct tab_table *t;
-  int r;
+  int r, x;
   double cum_total = 0.0;
   double cum_freq = 0.0;
 
-  struct init
-    {
-      int c, r;
-      const char *s;
-    };
-
-  const struct init *p;
-
-  static const struct init vec[] =
-  {
-    {4, 0, N_("Valid")},
-    {5, 0, N_("Cum")},
-    {1, 1, N_("Value")},
-    {2, 1, N_("Frequency")},
-    {3, 1, N_("Percent")},
-    {4, 1, N_("Percent")},
-    {5, 1, N_("Percent")},
-    {0, 0, NULL},
-    {1, 0, NULL},
-    {2, 0, NULL},
-    {3, 0, NULL},
-    {-1, -1, NULL},
+  static const char *headings[] = {
+    N_("Value"),
+    N_("Frequency"),
+    N_("Percent"),
+    N_("Valid Percent"),
+    N_("Cum Percent")
   };
 
   const bool lab = (cmd.labels == FRQ_LABELS);
@@ -1081,21 +1065,20 @@ dump_full (const struct variable *v, const struct variable *wv)
   vf = get_var_freqs (v);
   ft = &vf->tab;
   n_categories = ft->n_valid + ft->n_missing;
-  t = tab_create (5 + lab, n_categories + 3);
-  tab_headers (t, 0, 0, 2, 0);
+  t = tab_create (5 + lab, n_categories + 2);
+  tab_headers (t, 0, 0, 1, 0);
 
   aux = xmalloc (sizeof *aux);
   aux->show_labels = lab;
   tab_dim (t, full_dim, full_dim_free, aux);
 
   if (lab)
-    tab_text (t, 0, 1, TAB_CENTER | TAT_TITLE, _("Value Label"));
+    tab_text (t, 0, 0, TAB_CENTER | TAT_TITLE, _("Value Label"));
 
-  for (p = vec; p->s; p++)
-    tab_text (t, lab ? p->c : p->c - 1, p->r,
-                 TAB_CENTER | TAT_TITLE, gettext (p->s));
+  for (x = 0; x < 5; x++)
+    tab_text (t, lab + x, 0, TAB_CENTER | TAT_TITLE, gettext (headings[x]));
 
-  r = 2;
+  r = 1;
   for (f = ft->valid; f < ft->missing; f++)
     {
       double percent, valid_percent;
@@ -1142,7 +1125,7 @@ dump_full (const struct variable *v, const struct variable *wv)
   tab_box (t, TAL_1, TAL_1,
           cmd.spaces == FRQ_SINGLE ? -1 : TAL_GAP, TAL_1,
           0, 0, 4 + lab, r);
-  tab_hline (t, TAL_2, 0, 4 + lab, 2);
+  tab_hline (t, TAL_2, 0, 4 + lab, 1);
   tab_hline (t, TAL_2, 0, 4 + lab, r);
   tab_joint_text (t, 0, r, 0 + lab, r, TAB_RIGHT | TAT_TITLE, _("Total"));
   tab_vline (t, TAL_0, 1, r, r);
index 26b903651eea06771c7b90799f9700162a9fb478..fd36041636e5ad25d619ceffee2ea42824b7aa8f 100644 (file)
@@ -53,6 +53,7 @@
 /* (specification)
    "GLM" (glm_):
    *dependent=custom;
+   design=custom;
    by=varlist;
    with=varlist.
 */
@@ -60,6 +61,7 @@
 /* (functions) */
 static struct cmd_glm cmd;
 
+
 /*
   Moments for each of the variables used.
  */
@@ -83,19 +85,63 @@ static const struct variable **v_dependent;
  */
 static size_t n_dependent;
 
-#if 0
-/*
-  Return value for the procedure.
- */
-static int pspp_glm_rc = CMD_SUCCESS;
-#else
+size_t n_inter; /* Number of interactions. */
+size_t n_members; /* Number of memebr variables in an interaction. */ 
+
+struct interaction_variable **interactions;
+
 int cmd_glm (struct lexer *lexer, struct dataset *ds);
-#endif
 
 static bool run_glm (struct casereader *,
                     struct cmd_glm *,
                     const struct dataset *);
-
+/*
+  If the DESIGN subcommand was not specified, specify all possible
+  two-way interactions.
+ */
+static void
+check_interactions (struct dataset *ds, struct cmd_glm *cmd)
+{
+  size_t i;
+  size_t j;
+  size_t k = 0;
+  struct variable **interaction_vars;
+
+  /* 
+     User did not specify the design matrix, so we 
+     specify it here.
+  */
+  n_inter = (cmd->n_by + cmd->n_with) * (cmd->n_by + cmd->n_with - 1) / 2;
+  interactions = xnmalloc (n_inter, sizeof (*interactions));
+  interaction_vars = xnmalloc (2, sizeof (*interaction_vars));
+  for (i = 0; i < cmd->n_by; i++)
+    {
+      for (j = i + 1; j < cmd->n_by; j++)
+       {
+         interaction_vars[0] = cmd->v_by[i];
+         interaction_vars[1] = cmd->v_by[j];
+         interactions[k] = interaction_variable_create (interaction_vars, 2);
+         k++;
+       }
+      for (j = 0; j < cmd->n_with; j++)
+       {
+         interaction_vars[0] = cmd->v_by[i];
+         interaction_vars[1] = cmd->v_with[j];
+         interactions[k] = interaction_variable_create (interaction_vars, 2);
+         k++;
+       }
+    }
+  for (i = 0; i < cmd->n_with; i++)
+    {
+      for (j = i + 1; j < cmd->n_with; j++)
+       {
+         interaction_vars[0] = cmd->v_with[i];
+         interaction_vars[1] = cmd->v_with[j];
+         interactions[k] = interaction_variable_create (interaction_vars, 2);
+         k++;
+       }
+    }
+}
 int
 cmd_glm (struct lexer *lexer, struct dataset *ds)
 {
@@ -107,7 +153,11 @@ cmd_glm (struct lexer *lexer, struct dataset *ds)
   if (!parse_glm (lexer, ds, &cmd, NULL))
     return CMD_FAILURE;
 
-  /* Data pass. */
+  if (!lex_match_id (lexer, "DESIGN"))
+    {
+      check_interactions (ds, &cmd);
+    }
+   /* Data pass. */
   grouper = casegrouper_create_splits (proc_open (ds), dataset_dict (ds));
   while (casegrouper_get_next_group (grouper, &group))
     {
@@ -120,6 +170,58 @@ cmd_glm (struct lexer *lexer, struct dataset *ds)
   return ok ? CMD_SUCCESS : CMD_FAILURE;
 }
 
+static int
+parse_interactions (struct lexer *lexer, const struct variable **interaction_vars, int n_members,
+                   int max_members, struct dataset *ds)
+{
+  if (lex_match (lexer, '*'))
+    {
+      if (n_members > max_members)
+       {
+         max_members *= 2;
+         xnrealloc (interaction_vars, max_members, sizeof (*interaction_vars));
+       }
+      interaction_vars[n_members] = parse_variable (lexer, dataset_dict (ds));
+      parse_interactions (lexer, interaction_vars, n_members++, max_members, ds);
+    }
+  return n_members;
+}
+/* Parser for the design subcommand. */
+static int
+glm_custom_design (struct lexer *lexer, struct dataset *ds,
+                  struct cmd_glm *cmd UNUSED, void *aux UNUSED)
+{
+  size_t n_allocated = 2;
+  size_t n_members;
+  struct variable **interaction_vars;
+  struct variable *this_var;
+
+  interactions = xnmalloc (n_allocated, sizeof (*interactions));
+  n_inter = 1;
+  while (lex_token (lexer) != T_STOP && lex_token (lexer) != '.')
+    {
+      this_var = parse_variable (lexer, dataset_dict (ds));
+      if (lex_match (lexer, '('))
+       {
+         lex_force_match (lexer, ')');
+       }
+      else if (lex_match (lexer, '*'))
+       {
+         interaction_vars = xnmalloc (2 * n_inter, sizeof (*interaction_vars));
+         n_members = parse_interactions (lexer, interaction_vars, 1, 2 * n_inter, ds);
+         if (n_allocated < n_inter)
+           {
+             n_allocated *= 2;
+             xnrealloc (interactions, n_allocated, sizeof (*interactions));
+           }
+         interactions [n_inter - 1] = 
+           interaction_variable_create (interaction_vars, n_members);
+         n_inter++;
+         free (interaction_vars);
+       }
+    }
+  return 1;
+}
 /* Parser for the dependent sub command */
 static int
 glm_custom_dependent (struct lexer *lexer, struct dataset *ds,
@@ -236,26 +338,17 @@ run_glm (struct casereader *input,
        if (var_is_alpha (all_vars[i]))
          cat_stored_values_create (all_vars[i]);
       
-      cov = covariance_matrix_init (n_all_vars, all_vars, ONE_PASS, PAIRWISE, MV_ANY);
       reader = casereader_create_counter (reader, &row, -1);
+
+      for (i = 0; i < n_inter; i++)
       for (; (c = casereader_read (reader)) != NULL; case_unref (c))
        {
          /* 
             Accumulate the covariance matrix.
          */
-         covariance_matrix_accumulate (cov, c, NULL, 0);
          n_data++;
        }
-      covariance_matrix_compute (cov);
-
-      for (i = 0; i < n_dependent; i++)
-       {
-         model = fit_model (cov, v_dependent[i], indep_vars, n_data, n_indep);
-         pspp_linreg_cache_free (model);
-       }
-
       casereader_destroy (reader);
-      covariance_matrix_destroy (cov);
     }
   else
     {
index 34bdc6f0940724dd4420a1594b00514ad306de30..b61ae586b488292d23fda2b8ee9b96daab4d37f2 100644 (file)
@@ -914,7 +914,7 @@ run_regression (struct casereader *input, struct cmd_regression *cmd,
     }
   lopts.get_depvar_mean_std = 1;
 
-  lopts.get_indep_mean_std = xnmalloc (n_variables, sizeof (int));
+
   indep_vars = xnmalloc (n_variables, sizeof *indep_vars);
 
   for (k = 0; k < cmd->n_dependent; k++)
@@ -942,6 +942,7 @@ run_regression (struct casereader *input, struct cmd_regression *cmd,
            design_matrix_create (n_indep,
                                  (const struct variable **) indep_vars,
                                  n_data);
+         lopts.get_indep_mean_std = xnmalloc (X->m->size2, sizeof (int));
          for (i = 0; i < X->m->size2; i++)
            {
              lopts.get_indep_mean_std[i] = 1;
@@ -993,6 +994,7 @@ run_regression (struct casereader *input, struct cmd_regression *cmd,
 
          gsl_vector_free (Y);
          design_matrix_destroy (X);
+         free (lopts.get_indep_mean_std);
        }
       else
        {
@@ -1007,7 +1009,6 @@ run_regression (struct casereader *input, struct cmd_regression *cmd,
     }
   free (mom);
   free (indep_vars);
-  free (lopts.get_indep_mean_std);
   casereader_destroy (input);
 
   return true;
index 8d2b2122d1bda6eca09682ba5c98a6df4c5f31b2..d417d31c0d26e944b9548756e05e2baf1ea178ad 100644 (file)
@@ -47,6 +47,7 @@
 #include <output/table.h>
 #include <data/format.h>
 
+#include "minmax.h"
 #include "xalloc.h"
 #include "xmemdup0.h"
 
@@ -506,7 +507,7 @@ ssbox_one_sample_init (struct ssbox *this, struct t_test_proc *proc)
   tab_text (this->t, 1, 0, TAB_CENTER | TAT_TITLE, _("N"));
   tab_text (this->t, 2, 0, TAB_CENTER | TAT_TITLE, _("Mean"));
   tab_text (this->t, 3, 0, TAB_CENTER | TAT_TITLE, _("Std. Deviation"));
-  tab_text (this->t, 4, 0, TAB_CENTER | TAT_TITLE, _("SE. Mean"));
+  tab_text (this->t, 4, 0, TAB_CENTER | TAT_TITLE, _("S.E. Mean"));
 }
 
 /* Initialize the independent samples ssbox */
@@ -526,7 +527,7 @@ ssbox_independent_samples_init (struct ssbox *this, struct t_test_proc *proc)
   tab_text (this->t, 2, 0, TAB_CENTER | TAT_TITLE, _("N"));
   tab_text (this->t, 3, 0, TAB_CENTER | TAT_TITLE, _("Mean"));
   tab_text (this->t, 4, 0, TAB_CENTER | TAT_TITLE, _("Std. Deviation"));
-  tab_text (this->t, 5, 0, TAB_CENTER | TAT_TITLE, _("SE. Mean"));
+  tab_text (this->t, 5, 0, TAB_CENTER | TAT_TITLE, _("S.E. Mean"));
 }
 
 /* Populate the ssbox for independent samples */
@@ -625,7 +626,7 @@ ssbox_paired_init (struct ssbox *this, struct t_test_proc *proc)
   tab_text (this->t, 2, 0, TAB_CENTER | TAT_TITLE, _("Mean"));
   tab_text (this->t, 3, 0, TAB_CENTER | TAT_TITLE, _("N"));
   tab_text (this->t, 4, 0, TAB_CENTER | TAT_TITLE, _("Std. Deviation"));
-  tab_text (this->t, 5, 0, TAB_CENTER | TAT_TITLE, _("SE. Mean"));
+  tab_text (this->t, 5, 0, TAB_CENTER | TAT_TITLE, _("S.E. Mean"));
 }
 
 /* Populate the ssbox for paired values */
@@ -1109,10 +1110,14 @@ pscbox (struct t_test_proc *proc)
   for (i = 0; i < proc->n_pairs; i++)
     {
       struct pair *pair = &proc->pairs[i];
+      double df = pair->n - 2;
       double p, q;
-      double df = pair->n -2;
-      double correlation_t = (pair->correlation * sqrt (df) /
-                              sqrt (1 - pow2 (pair->correlation)));
+
+      /* corr2 will mathematically always be in the range [0, 1.0].  Inaccurate
+         calculations sometimes cause it to be slightly greater than 1.0, so
+         force it into the correct range to avoid NaN from sqrt(). */
+      double corr2 = MIN (1.0, pow2 (pair->correlation));
+      double correlation_t = pair->correlation * sqrt (df) / sqrt (1 - corr2);
 
       /* row headings */
       tab_text_format (table, 0, i + 1, TAB_LEFT | TAT_TITLE,
index fd4e1a93839e27b453abdc9298a559f3b1b8ce6d..5c2b571ec57a7df2a7f9203abe2d23d244e083c9 100644 (file)
@@ -224,7 +224,7 @@ cmd_set (struct lexer *lexer, struct dataset *ds)
     msg (SW, _("%s is obsolete."), "TB1");
 
   if (cmd.sbc_case)
-    msg (SW, _("%s is not implemented."), "CASE");
+    msg (SW, _("%s is not yet implemented."), "CASE");
 
   if (cmd.sbc_compression)
     msg (SW, _("Active file compression is not implemented."));
index 3406ba216746e6d7d5aa4203da0487857a3599b2..6e6d83ff82cac17a4a0decc875b73ba4d1a6195a 100644 (file)
@@ -37,6 +37,7 @@
 
 #include <getopt.h>
 #include <stdbool.h>
+#include <stddef.h>
 
 struct argv_option
   {
index 5e434206970825c2773d9d045d7c469b4ab94fc5..746756d8900ba0207e45ae77718ed8dbab8dda91 100644 (file)
@@ -89,12 +89,12 @@ src/libpspp/version.c: $(top_srcdir)/AUTHORS Makefile
        echo "   Generated by src/libpspp/automake.mk --- Do not edit.">> $@
        echo "" >> $@
        echo "   The following line is for the benefit of the perl module" >>$@
-       echo "\$$VERSION='"@VERSION@"';" >> $@
+       echo "\$$VERSION='$(VERSION_FOR_PERL)';" >> $@
        echo "*/" >> $@
        echo "#include \"version.h\"" >> $@
-       echo "const char bare_version[] = \"@VERSION@\";" >> $@
-       echo "const char version[] = \"GNU @PACKAGE@ @VERSION@\";" >> $@
-       echo "const char stat_version[] = \"GNU @PACKAGE@ @VERSION@ \
+       echo "const char bare_version[] = \"$(VERSION)\";" >> $@
+       echo "const char version[] = \"GNU $(PACKAGE) $(VERSION)\";" >> $@
+       echo "const char stat_version[] = \"GNU $(PACKAGE) $(VERSION) \
 (`date`).\";" >> $@
        echo "const char host_system[] = \"$(host_triplet)\";" >> $@
        echo "const char build_system[] = \"$(build_triplet)\";" >> $@
index 563cc59b1e85b8a6d7d44bdba3e9414e4d17603d..d22819446f5e5ee7a5eececf9c4f0e3ef261e758 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPP - a program for statistical analysis.
-   Copyright (C) 2006 Free Software Foundation, Inc.
+   Copyright (C) 2006, 2009 Free Software Foundation, Inc.
 
    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
@@ -45,7 +45,7 @@
    non-`NULL' pointer it returns cannot alias any other pointer
    valid when the function returns. */
 #if __GNUC__ > 2
-#define MALLOC_LIKE ATTRIBUTE ((malloc))
+#define MALLOC_LIKE ATTRIBUTE ((__malloc__))
 #else
 #define MALLOC_LIKE
 #endif
index 1214b95ca1f3da178f6b34bac1af8893e0b5d3c3..302cd9137ddbc7b748ae07c9c4c34103ffecbf86 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPP - a program for statistical analysis.
-   Copyright (C) 1997-9, 2000, 2006 Free Software Foundation, Inc.
+   Copyright (C) 1997-9, 2000, 2006, 2009 Free Software Foundation, Inc.
 
    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
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
-#include <stdlib.h>
 #include <config.h>
 
+#include <stdlib.h>
+
 #include "getl.h"
 
 #include <libpspp/str.h>
index e08ba2804bbf4d6b0dbe7c6cf81b820c7a239462..80a0ed35dd57a388f622146482e56fddca9b7211 100644 (file)
@@ -73,13 +73,13 @@ create_iconv (const char* tocode, const char* fromcode)
   hmapx_insert (&map, converter, hash);
 
   /* I don't think it's safe to translate this string or to use messaging
-     as the convertors have not yet been set up */
+     as the converters have not yet been set up */
   if ( (iconv_t) -1 == converter->conv && 0 != strcmp (tocode, fromcode))
     {
       const int err = errno;
       fprintf (stderr,
                "Warning: "
-               "cannot create a convertor for \"%s\" to \"%s\": %s\n",
+               "cannot create a converter for \"%s\" to \"%s\": %s\n",
                fromcode, tocode, strerror (err));
     }
 
index cadfb90079ebf429083edede4d7cfbb9ec4a8f8f..9fc15aaf10a35088095399764f85a910178e9816 100644 (file)
@@ -13,6 +13,8 @@ src_math_libpspp_math_la_SOURCES = \
        src/math/box-whisker.c src/math/box-whisker.h \
        src/math/coefficient.c \
        src/math/coefficient.h \
+       src/math/covariance.c \
+       src/math/covariance.h \
        src/math/covariance-matrix.c \
        src/math/covariance-matrix.h \
        src/math/design-matrix.c src/math/design-matrix.h \
diff --git a/src/math/covariance.c b/src/math/covariance.c
new file mode 100644 (file)
index 0000000..ba0de0b
--- /dev/null
@@ -0,0 +1,267 @@
+/* PSPP - a program for statistical analysis.
+   Copyright (C) 2009 Free Software Foundation, Inc.
+
+   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
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "covariance.h"
+#include <gl/xalloc.h>
+#include "moments.h"
+#include <gsl/gsl_matrix.h>
+#include <data/case.h>
+#include <data/variable.h>
+#include <libpspp/misc.h>
+
+#define n_MOMENTS (MOMENT_VARIANCE + 1)
+
+
+struct covariance
+{
+  /* The variables for which the covariance matrix is to be calculated */
+  size_t n_vars;
+  const struct variable **vars;
+  
+  /* The weight variable (or NULL if none) */
+  const struct variable *wv;
+
+  /* A set of matrices containing the 0th, 1st and 2nd moments */
+  gsl_matrix **moments;
+
+  /* The class of missing values to exclude */
+  enum mv_class exclude;
+
+  /* An array of doubles representing the covariance matrix.
+     Only the top triangle is included, and no diagonals */
+  double *cm;
+  int n_cm;
+};
+
+
+
+/* Return a matrix containing the M th moments.
+   The matrix is of size  NxN where N is the number of variables.
+   Each row represents the moments of a variable.
+   In the absence of missing values, the columns of this matrix will
+   be identical.  If missing values are involved, then element (i,j)
+   is the moment of the i th variable, when paired with the j th variable.
+ */
+const gsl_matrix *
+covariance_moments (const struct covariance *cov, int m)
+{
+  return cov->moments[m];
+}
+
+
+
+/* Create a covariance struct */
+struct covariance *
+covariance_create (size_t n_vars, const struct variable **vars,
+                  const struct variable *weight, enum mv_class exclude)
+{
+  size_t i;
+  struct covariance *cov = xmalloc (sizeof *cov);
+  cov->vars = xmalloc (sizeof *cov->vars * n_vars);
+
+  cov->wv = weight;
+  cov->n_vars = n_vars;
+
+  for (i = 0; i < n_vars; ++i)
+    cov->vars[i] = vars[i];
+
+  cov->moments = xmalloc (sizeof *cov->moments * n_MOMENTS);
+  
+  for (i = 0; i < n_MOMENTS; ++i)
+    cov->moments[i] = gsl_matrix_calloc (n_vars, n_vars);
+
+  cov->exclude = exclude;
+
+  cov->n_cm = (n_vars * (n_vars - 1)  ) / 2;
+
+  cov->cm = xcalloc (sizeof *cov->cm, cov->n_cm);
+
+  return cov;
+}
+
+/* Return an integer, which can be used to index 
+   into COV->cm, to obtain the I, J th element
+   of the covariance matrix.  If COV->cm does not
+   contain that element, then a negative value
+   will be returned.
+*/
+static int
+cm_idx (const struct covariance *cov, int i, int j)
+{
+  int as;
+  const int n2j = cov->n_vars - 2 - j;
+  const int nj = cov->n_vars - 2 ;
+  
+  assert (i >= 0);
+  assert (j < cov->n_vars);
+
+  if ( i == 0)
+    return -1;
+
+  if (j >= cov->n_vars - 1)
+    return -1;
+
+  if ( i <= j) 
+    return -1 ;
+
+  as = nj * (nj + 1) ;
+  as -= n2j * (n2j + 1) ; 
+  as /= 2;
+
+  return i - 1 + as;
+}
+
+
+/* Call this function for every case in the data set */
+void
+covariance_accumulate (struct covariance *cov, const struct ccase *c)
+{
+  size_t i, j, m;
+  const double weight = cov->wv ? case_data (c, cov->wv)->f : 1.0;
+
+  for (i = 0 ; i < cov->n_vars; ++i)
+    {
+      const union value *val1 = case_data (c, cov->vars[i]);
+
+      if ( var_is_value_missing (cov->vars[i], val1, cov->exclude))
+       continue;
+
+      for (j = 0 ; j < cov->n_vars; ++j)
+       {
+         double pwr = 1.0;
+         int idx;
+         const union value *val2 = case_data (c, cov->vars[j]);
+
+         if ( var_is_value_missing (cov->vars[j], val2, cov->exclude))
+           continue;
+
+         idx = cm_idx (cov, i, j);
+         if (idx >= 0)
+           {
+             cov->cm [idx] += val1->f * val2->f * weight;
+           }
+
+         for (m = 0 ; m < n_MOMENTS; ++m)
+           {
+             double *x = gsl_matrix_ptr (cov->moments[m], i, j);
+
+             *x += pwr * weight;
+             pwr *= val1->f;
+           }
+       }
+    }
+}
+
+
+/* 
+   Allocate and return a gsl_matrix containing the covariances of the
+   data.
+*/
+static gsl_matrix *
+cm_to_gsl (struct covariance *cov)
+{
+  int i, j;
+  gsl_matrix *m = gsl_matrix_calloc (cov->n_vars, cov->n_vars);
+
+  /* Copy the non-diagonal elements from cov->cm */
+  for ( j = 0 ; j < cov->n_vars - 1; ++j)
+    {
+      for (i = j+1 ; i < cov->n_vars; ++i)
+       {
+         double x = cov->cm [cm_idx (cov, i, j)];
+         gsl_matrix_set (m, i, j, x);
+         gsl_matrix_set (m, j, i, x);
+       }
+    }
+
+  /* Copy the diagonal elements from cov->moments[2] */
+  for (j = 0 ; j < cov->n_vars ; ++j)
+    {
+      double sigma = gsl_matrix_get (cov->moments[2], j, j);
+      gsl_matrix_set (m, j, j, sigma);
+    }
+
+  return m;
+}
+
+
+
+/* 
+   Return a pointer to gsl_matrix containing the pairwise covariances.
+   The matrix remains owned by the COV object, and must not be freed.
+   Call this function only after all data have been accumulated.
+*/
+const gsl_matrix *
+covariance_calculate (struct covariance *cov)
+{
+  size_t i, j;
+  size_t m;
+
+  for (m = 0; m < n_MOMENTS; ++m)
+    {
+      /* Divide the moments by the number of samples */
+      if ( m > 0)
+       {
+         for (i = 0 ; i < cov->n_vars; ++i)
+           {
+             for (j = 0 ; j < cov->n_vars; ++j)
+               {
+                 double *x = gsl_matrix_ptr (cov->moments[m], i, j);
+                 *x /= gsl_matrix_get (cov->moments[0], i, j);
+
+                 if ( m == MOMENT_VARIANCE)
+                   *x -= pow2 (gsl_matrix_get (cov->moments[1], i, j));
+               }
+           }
+       }
+    }
+
+  /* Centre the moments */
+  for ( j = 0 ; j < cov->n_vars - 1; ++j)
+    {
+      for (i = j + 1 ; i < cov->n_vars; ++i)
+       {
+         double *x = &cov->cm [cm_idx (cov, i, j)];
+         
+         *x /= gsl_matrix_get (cov->moments[0], i, j);
+
+         *x -=
+           gsl_matrix_get (cov->moments[MOMENT_MEAN], i, j) 
+           *
+           gsl_matrix_get (cov->moments[MOMENT_MEAN], j, i); 
+       }
+    }
+
+  return cm_to_gsl (cov);
+}
+
+
+/* Destroy the COV object */
+void
+covariance_destroy (struct covariance *cov)
+{
+  size_t i;
+  free (cov->vars);
+
+  for (i = 0; i < n_MOMENTS; ++i)
+    gsl_matrix_free (cov->moments[i]);
+
+  free (cov->moments);
+  free (cov->cm);
+  free (cov);
+}
diff --git a/src/math/covariance.h b/src/math/covariance.h
new file mode 100644 (file)
index 0000000..8b8de88
--- /dev/null
@@ -0,0 +1,41 @@
+/* PSPP - a program for statistical analysis.
+   Copyright (C) 2009 Free Software Foundation, Inc.
+
+   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
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>. */
+
+
+#ifndef COVARIANCE_H
+#define COVARIANCE_H
+
+#include <stddef.h>
+
+#include <data/missing-values.h>
+#include <gsl/gsl_matrix.h>
+
+struct covariance;
+struct variable;
+struct ccase ;
+
+struct covariance * covariance_create (size_t n_vars, const struct variable **vars, 
+                                      const struct variable *wv, enum mv_class excl);
+
+void covariance_accumulate (struct covariance *, const struct ccase *);
+
+const gsl_matrix * covariance_calculate (struct covariance *cov);
+
+void covariance_destroy (struct covariance *cov);
+
+const gsl_matrix *covariance_moments (const struct covariance *cov, int m);
+
+#endif
index db3d89ba879e2ee015b36dbb979725f1ae001c7e..334818b4cad9428975f8c2e1623ea567ff57ac5c 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPP - a program for statistical analysis.
-   Copyright  (C) 2004, 2009 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2009 Free Software Foundation, Inc.
 
    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
index 765b529f4382c7d190414dbe643899c76ceb7d34..5ecf6695b3231122bc77cb05fa19844907b67bfc 100644 (file)
@@ -1,2 +1 @@
 psppire
-*.ui
index 838f0d69800d7ce6d3d8f0499920216869e558ea..05f362194cc207442d902d3b63fcd6d18adeb4f6 100644 (file)
@@ -4,10 +4,7 @@ include $(top_srcdir)/src/ui/gui/sheet/automake.mk
 
 bin_PROGRAMS += src/ui/gui/psppire 
 
-src_ui_gui_psppire_CFLAGS = $(GTK_CFLAGS) -Wall \
-       -DINSTALLDIR=\"$(bindir)\"  \
-       -DDOCDIR=\"$(docdir)\"  \
-       -DGDK_MULTIHEAD_SAFE=1
+src_ui_gui_psppire_CFLAGS = $(GTK_CFLAGS) -Wall -DGDK_MULTIHEAD_SAFE=1
 
 
 src_ui_gui_psppire_LDFLAGS = \
@@ -30,7 +27,7 @@ src_ui_gui_psppire_LDADD = \
        src/libpspp-core.la \
        $(GTK_LIBS) \
        $(CAIRO_LIBS) \
-       @LIBINTL@
+       $(LIBINTL)
 
 src_ui_gui_psppiredir = $(pkgdatadir)
 
@@ -50,36 +47,39 @@ INSTALL_DATA_HOOKS += install-icons
 
 uninstall-icons:
        for size in 16x16 ; do \
-          $(RM) $(themedir)/$$size/$(context)/psppicon.png ; \
+          rm -f $(themedir)/$$size/$(context)/psppicon.png ; \
        done 
        gtk-update-icon-cache --ignore-theme-index $(themedir)
 
 UNINSTALL_DATA_HOOKS += uninstall-icons
 
 
+UI_FILES = \
+       src/ui/gui/crosstabs.ui \
+       src/ui/gui/descriptives.ui \
+       src/ui/gui/examine.ui \
+       src/ui/gui/find.ui \
+       src/ui/gui/frequencies.ui \
+       src/ui/gui/message-dialog.ui \
+       src/ui/gui/oneway.ui \
+       src/ui/gui/psppire.ui \
+       src/ui/gui/rank.ui \
+       src/ui/gui/recode.ui \
+       src/ui/gui/regression.ui \
+       src/ui/gui/reliability.ui \
+       src/ui/gui/t-test.ui \
+       src/ui/gui/text-data-import.ui \
+       src/ui/gui/var-sheet-dialogs.ui \
+       src/ui/gui/variable-info.ui
+
 nodist_src_ui_gui_psppire_DATA = \
-       $(top_builddir)/src/ui/gui/crosstabs.ui \
-       $(top_builddir)/src/ui/gui/descriptives-dialog.ui \
        $(top_builddir)/src/ui/gui/data-editor.ui \
-       $(top_builddir)/src/ui/gui/examine.ui \
-       $(top_builddir)/src/ui/gui/find.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/output-viewer.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/reliability.ui \
-       $(top_builddir)/src/ui/gui/syntax-editor.ui \
-       $(top_builddir)/src/ui/gui/text-data-import.ui \
-       $(top_builddir)/src/ui/gui/t-test.ui \
-       $(top_builddir)/src/ui/gui/var-sheet-dialogs.ui \
-       $(top_builddir)/src/ui/gui/variable-info-dialog.ui
+       $(top_builddir)/src/ui/gui/syntax-editor.ui
 
 
 dist_src_ui_gui_psppire_DATA = \
+       $(UI_FILES) \
        $(top_srcdir)/src/ui/gui/pspplogo.png \
        $(top_srcdir)/src/ui/gui/icons/value-labels.png \
        $(top_srcdir)/src/ui/gui/icons/goto-variable.png\
@@ -219,25 +219,9 @@ src_ui_gui_psppire_SOURCES = \
        src/ui/gui/widget-io.h \
        src/ui/gui/widgets.c \
        src/ui/gui/widgets.h \
-       src/ui/gui/crosstabs.glade \
-       src/ui/gui/descriptives-dialog.glade \
        src/ui/gui/data-editor.glade \
-       src/ui/gui/examine.glade \
-       src/ui/gui/find.glade \
-       src/ui/gui/frequencies.glade \
-       src/ui/gui/message-dialog.glade \
-       src/ui/gui/psppire.glade \
-       src/ui/gui/oneway.glade \
        src/ui/gui/output-viewer.glade \
-       src/ui/gui/rank.glade \
-       src/ui/gui/recode.glade \
-       src/ui/gui/regression.glade \
-       src/ui/gui/reliability.glade \
-       src/ui/gui/syntax-editor.glade \
-       src/ui/gui/text-data-import.glade \
-       src/ui/gui/t-test.glade \
-       src/ui/gui/var-sheet-dialogs.glade \
-       src/ui/gui/variable-info-dialog.glade
+       src/ui/gui/syntax-editor.glade
 
 
 nodist_src_ui_gui_psppire_SOURCES = \
@@ -261,11 +245,12 @@ AM_CPPFLAGS += -Isrc
 
 src/ui/gui/psppire-marshal.c: src/ui/gui/marshaller-list
        echo '#include <config.h>' > $@
-       glib-genmarshal --body --prefix=psppire_marshal $< >> $@
+       glib-genmarshal --body --prefix=psppire_marshal $? >> $@
 
 src/ui/gui/psppire-marshal.h: src/ui/gui/marshaller-list
-       glib-genmarshal --header --prefix=psppire_marshal $< > $@
+       glib-genmarshal --header --prefix=psppire_marshal $? > $@
 
+SUFFIXES += .glade .ui
 .glade.ui:
        $(top_srcdir)/lib/gtk-contrib/gtk-builder-convert $< $@
 
diff --git a/src/ui/gui/crosstabs.glade b/src/ui/gui/crosstabs.glade
deleted file mode 100644 (file)
index 0409d9e..0000000
+++ /dev/null
@@ -1,465 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<!--Generated with glade3 3.2.2 on Thu Feb  7 10:02:16 2008 by jhs@debs-->
-<glade-interface>
-  <requires lib="psppire"/>
-  <widget class="PsppireDialog" id="crosstabs-dialog">
-    <property name="title">Crosstabs</property>
-    <property name="modal">True</property>
-    <child internal-child="hbox">
-      <widget class="GtkHBox" id="dialog-hbox1">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="spacing">2</property>
-        <child>
-          <widget class="GtkTable" id="table1">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="n_rows">3</property>
-            <property name="n_columns">3</property>
-            <child>
-              <widget class="GtkFrame" id="frame1">
-                <property name="visible">True</property>
-                <property name="label_xalign">0</property>
-                <property name="shadow_type">GTK_SHADOW_NONE</property>
-                <child>
-                  <widget class="GtkAlignment" id="alignment4">
-                    <property name="visible">True</property>
-                    <property name="left_padding">12</property>
-                    <child>
-                      <widget class="GtkScrolledWindow" id="scrolledwindow2">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                        <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                        <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-                        <child>
-                          <widget class="GtkTreeView" id="rows">
-                            <property name="visible">True</property>
-                            <property name="headers_visible">False</property>
-                          </widget>
-                        </child>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkLabel" id="label1">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="label" translatable="yes">Rows</property>
-                  </widget>
-                  <packing>
-                    <property name="type">label_item</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="left_attach">2</property>
-                <property name="right_attach">3</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkFrame" id="frame2">
-                <property name="visible">True</property>
-                <property name="label_xalign">0</property>
-                <property name="shadow_type">GTK_SHADOW_NONE</property>
-                <child>
-                  <widget class="GtkAlignment" id="alignment5">
-                    <property name="visible">True</property>
-                    <property name="left_padding">12</property>
-                    <child>
-                      <widget class="GtkScrolledWindow" id="scrolledwindow3">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                        <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                        <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-                        <child>
-                          <widget class="GtkTreeView" id="cols">
-                            <property name="visible">True</property>
-                            <property name="headers_visible">False</property>
-                          </widget>
-                        </child>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkLabel" id="label2">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="label" translatable="yes">Columns</property>
-                  </widget>
-                  <packing>
-                    <property name="type">label_item</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="left_attach">2</property>
-                <property name="right_attach">3</property>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkScrolledWindow" id="scrolledwindow1">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-                <child>
-                  <widget class="PsppireDictView" id="dict-treeview">
-                    <property name="visible">True</property>
-                    <property name="headers_visible">False</property>
-                  </widget>
-                </child>
-              </widget>
-              <packing>
-                <property name="bottom_attach">2</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkHButtonBox" id="hbuttonbox3">
-                <property name="visible">True</property>
-                <property name="layout_style">GTK_BUTTONBOX_SPREAD</property>
-                <child>
-                  <widget class="GtkButton" id="format-button">
-                    <property name="visible">True</property>
-                    <property name="label" translatable="yes">Format...</property>
-                    <property name="response_id">0</property>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkButton" id="stats-button">
-                    <property name="visible">True</property>
-                    <property name="label" translatable="yes">Statistics...</property>
-                    <property name="response_id">0</property>
-                  </widget>
-                  <packing>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkButton" id="cell-button">
-                    <property name="visible">True</property>
-                    <property name="label" translatable="yes">Cells...</property>
-                    <property name="response_id">0</property>
-                  </widget>
-                  <packing>
-                    <property name="position">2</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="right_attach">3</property>
-                <property name="top_attach">2</property>
-                <property name="bottom_attach">3</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="PsppireSelector" id="row-selector">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="border_width">5</property>
-              </widget>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="x_options"></property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="PsppireSelector" id="col-selector">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="border_width">5</property>
-              </widget>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-                <property name="x_options"></property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-          </widget>
-        </child>
-        <child>
-          <widget class="PsppireVButtonBox" id="psppire-vbuttonbox1">
-            <property name="visible">True</property>
-            <property name="border_width">5</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="PsppireDialog" id="format-dialog">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="title">Crosstabs: Format</property>
-    <property name="modal">True</property>
-    <child internal-child="hbox">
-      <widget class="GtkHBox" id="dialog-hbox2">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="spacing">2</property>
-        <child>
-          <widget class="GtkVBox" id="vbox1">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <child>
-              <widget class="GtkCheckButton" id="print-tables">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label" translatable="yes">Print tables</property>
-                <property name="response_id">0</property>
-                <property name="draw_indicator">True</property>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkCheckButton" id="pivot">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label" translatable="yes">Pivot</property>
-                <property name="response_id">0</property>
-                <property name="draw_indicator">True</property>
-              </widget>
-              <packing>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkCheckButton" id="ascending">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label" translatable="yes">Ascending</property>
-                <property name="response_id">0</property>
-                <property name="draw_indicator">True</property>
-              </widget>
-              <packing>
-                <property name="position">2</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkFrame" id="Labeling">
-                <property name="visible">True</property>
-                <property name="label_xalign">0</property>
-                <child>
-                  <widget class="GtkAlignment" id="alignment2">
-                    <property name="visible">True</property>
-                    <property name="left_padding">12</property>
-                    <child>
-                      <widget class="GtkVBox" id="vbox2">
-                        <property name="visible">True</property>
-                        <child>
-                          <widget class="GtkRadioButton" id="radiobutton1">
-                            <property name="visible">True</property>
-                            <property name="label" translatable="yes">Label</property>
-                            <property name="response_id">0</property>
-                            <property name="draw_indicator">True</property>
-                          </widget>
-                        </child>
-                        <child>
-                          <widget class="GtkRadioButton" id="radiobutton2">
-                            <property name="visible">True</property>
-                            <property name="label" translatable="yes">No label</property>
-                            <property name="response_id">0</property>
-                            <property name="draw_indicator">True</property>
-                            <property name="group">radiobutton1</property>
-                          </widget>
-                          <packing>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkRadioButton" id="radiobutton3">
-                            <property name="visible">True</property>
-                            <property name="label" translatable="yes">Suppress value labels</property>
-                            <property name="response_id">0</property>
-                            <property name="draw_indicator">True</property>
-                            <property name="group">radiobutton1</property>
-                          </widget>
-                          <packing>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkLabel" id="label4">
-                    <property name="visible">True</property>
-                    <property name="label" translatable="yes">Labeling</property>
-                    <property name="use_markup">True</property>
-                  </widget>
-                  <packing>
-                    <property name="type">label_item</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="position">3</property>
-              </packing>
-            </child>
-          </widget>
-        </child>
-        <child>
-          <widget class="PsppireVButtonBox" id="psppire-vbuttonbox2">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="border_width">5</property>
-            <property name="homogeneous">True</property>
-            <property name="buttons">PSPPIRE_BUTTON_CONTINUE_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="PsppireDialog" id="cell-dialog">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="title">Crosstabs: Cells</property>
-    <property name="modal">True</property>
-    <child internal-child="hbox">
-      <widget class="GtkHBox" id="dialog-hbox3">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="spacing">2</property>
-        <child>
-          <widget class="GtkFrame" id="frame4">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">GTK_SHADOW_NONE</property>
-            <child>
-              <widget class="GtkScrolledWindow" id="scrolledwindow4">
-                <property name="width_request">128</property>
-                <property name="height_request">180</property>
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                <child>
-                  <widget class="GtkTreeView" id="cell-view">
-                    <property name="visible">True</property>
-                    <property name="headers_visible">False</property>
-                  </widget>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkLabel" id="frame3">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label" translatable="yes">Cell Display</property>
-                <property name="use_markup">True</property>
-              </widget>
-              <packing>
-                <property name="type">label_item</property>
-              </packing>
-            </child>
-          </widget>
-        </child>
-        <child>
-          <widget class="PsppireVButtonBox" id="psppire-vbuttonbox3">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="border_width">5</property>
-            <property name="buttons">PSPPIRE_BUTTON_CONTINUE_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="PsppireDialog" id="stat-dialog">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="title">Crosstabs: Statistics</property>
-    <property name="modal">True</property>
-    <child internal-child="hbox">
-      <widget class="GtkHBox" id="dialog-hbox4">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="spacing">2</property>
-        <child>
-          <widget class="GtkFrame" id="frame3">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">GTK_SHADOW_NONE</property>
-            <child>
-              <widget class="GtkScrolledWindow" id="scrolledwindow5">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                <child>
-                  <widget class="GtkTreeView" id="stats-view">
-                    <property name="width_request">128</property>
-                    <property name="height_request">150</property>
-                    <property name="visible">True</property>
-                    <property name="headers_visible">False</property>
-                  </widget>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkLabel" id="label3">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label" translatable="yes">Statistics</property>
-                <property name="use_markup">True</property>
-              </widget>
-              <packing>
-                <property name="type">label_item</property>
-              </packing>
-            </child>
-          </widget>
-        </child>
-        <child>
-          <widget class="PsppireVButtonBox" id="psppire-vbuttonbox4">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="border_width">5</property>
-            <property name="buttons">PSPPIRE_BUTTON_CONTINUE_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-</glade-interface>
diff --git a/src/ui/gui/crosstabs.ui b/src/ui/gui/crosstabs.ui
new file mode 100644 (file)
index 0000000..c556c47
--- /dev/null
@@ -0,0 +1,485 @@
+<?xml version="1.0"?>
+<interface>
+  <!-- interface-requires gtk+ 2.12 -->
+  <requires lib="psppire" version="2054.22072"/>
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="PsppireDialog" id="crosstabs-dialog">
+    <property name="title">Crosstabs</property>
+    <property name="modal">True</property>
+    <child internal-child="hbox">
+      <object class="GtkHBox" id="dialog-hbox1">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkTable" id="table1">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="n_rows">3</property>
+            <property name="n_columns">3</property>
+            <child>
+              <object class="GtkFrame" id="frame1">
+                <property name="visible">True</property>
+                <property name="label_xalign">0</property>
+                <property name="shadow_type">none</property>
+                <child>
+                  <object class="GtkAlignment" id="alignment4">
+                    <property name="visible">True</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <object class="GtkScrolledWindow" id="scrolledwindow2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="hscrollbar_policy">never</property>
+                        <property name="vscrollbar_policy">automatic</property>
+                        <property name="shadow_type">etched-in</property>
+                        <child>
+                          <object class="GtkTreeView" id="rows">
+                            <property name="visible">True</property>
+                            <property name="headers_visible">False</property>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child type="label">
+                  <object class="GtkLabel" id="label1">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="label" translatable="yes">Rows</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="left_attach">2</property>
+                <property name="right_attach">3</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkFrame" id="frame2">
+                <property name="visible">True</property>
+                <property name="label_xalign">0</property>
+                <property name="shadow_type">none</property>
+                <child>
+                  <object class="GtkAlignment" id="alignment5">
+                    <property name="visible">True</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <object class="GtkScrolledWindow" id="scrolledwindow3">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="hscrollbar_policy">never</property>
+                        <property name="vscrollbar_policy">automatic</property>
+                        <property name="shadow_type">etched-in</property>
+                        <child>
+                          <object class="GtkTreeView" id="cols">
+                            <property name="visible">True</property>
+                            <property name="headers_visible">False</property>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child type="label">
+                  <object class="GtkLabel" id="label2">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="label" translatable="yes">Columns</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="left_attach">2</property>
+                <property name="right_attach">3</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkScrolledWindow" id="scrolledwindow1">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="hscrollbar_policy">never</property>
+                <property name="vscrollbar_policy">automatic</property>
+                <property name="shadow_type">etched-in</property>
+                <child>
+                  <object class="PsppireDictView" id="dict-treeview">
+                    <property name="visible">True</property>
+                    <property name="headers_visible">False</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="bottom_attach">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHButtonBox" id="hbuttonbox3">
+                <property name="visible">True</property>
+                <property name="layout_style">spread</property>
+                <child>
+                  <object class="GtkButton" id="format-button">
+                    <property name="label" translatable="yes">Format...</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="receives_default">False</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkButton" id="stats-button">
+                    <property name="label" translatable="yes">Statistics...</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="receives_default">False</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkButton" id="cell-button">
+                    <property name="label" translatable="yes">Cells...</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="receives_default">False</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="right_attach">3</property>
+                <property name="top_attach">2</property>
+                <property name="bottom_attach">3</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <object class="PsppireSelector" id="row-selector">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="border_width">5</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="x_options"></property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <object class="PsppireSelector" id="col-selector">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="border_width">5</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="x_options"></property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="PsppireVButtonBox" id="psppire-vbuttonbox1">
+            <property name="visible">True</property>
+            <property name="border_width">5</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="PsppireDialog" id="format-dialog">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="title">Crosstabs: Format</property>
+    <property name="modal">True</property>
+    <child internal-child="hbox">
+      <object class="GtkHBox" id="dialog-hbox2">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkVBox" id="vbox1">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="orientation">vertical</property>
+            <child>
+              <object class="GtkCheckButton" id="print-tables">
+                <property name="label" translatable="yes">Print tables</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="draw_indicator">True</property>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkCheckButton" id="pivot">
+                <property name="label" translatable="yes">Pivot</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="draw_indicator">True</property>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkCheckButton" id="ascending">
+                <property name="label" translatable="yes">Ascending</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="draw_indicator">True</property>
+              </object>
+              <packing>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkFrame" id="Labeling">
+                <property name="visible">True</property>
+                <property name="label_xalign">0</property>
+                <child>
+                  <object class="GtkAlignment" id="alignment2">
+                    <property name="visible">True</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <object class="GtkVBox" id="vbox2">
+                        <property name="visible">True</property>
+                        <property name="orientation">vertical</property>
+                        <child>
+                          <object class="GtkRadioButton" id="radiobutton1">
+                            <property name="label" translatable="yes">Label</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="receives_default">False</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" id="radiobutton2">
+                            <property name="label" translatable="yes">No label</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="receives_default">False</property>
+                            <property name="draw_indicator">True</property>
+                            <property name="group">radiobutton1</property>
+                          </object>
+                          <packing>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" id="radiobutton3">
+                            <property name="label" translatable="yes">Suppress value labels</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="receives_default">False</property>
+                            <property name="draw_indicator">True</property>
+                            <property name="group">radiobutton1</property>
+                          </object>
+                          <packing>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child type="label">
+                  <object class="GtkLabel" id="label4">
+                    <property name="visible">True</property>
+                    <property name="label" translatable="yes">Labeling</property>
+                    <property name="use_markup">True</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="position">3</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="PsppireVButtonBox" id="psppire-vbuttonbox2">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="border_width">5</property>
+            <property name="homogeneous">True</property>
+            <property name="buttons">PSPPIRE_BUTTON_CONTINUE_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="PsppireDialog" id="cell-dialog">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="title">Crosstabs: Cells</property>
+    <property name="modal">True</property>
+    <child internal-child="hbox">
+      <object class="GtkHBox" id="dialog-hbox3">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkFrame" id="frame4">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkScrolledWindow" id="scrolledwindow4">
+                <property name="width_request">128</property>
+                <property name="height_request">180</property>
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="hscrollbar_policy">never</property>
+                <property name="vscrollbar_policy">automatic</property>
+                <child>
+                  <object class="GtkTreeView" id="cell-view">
+                    <property name="visible">True</property>
+                    <property name="headers_visible">False</property>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="label999">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label" translatable="yes">Cell Display</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="PsppireVButtonBox" id="psppire-vbuttonbox3">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="border_width">5</property>
+            <property name="buttons">PSPPIRE_BUTTON_CONTINUE_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="PsppireDialog" id="stat-dialog">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="title">Crosstabs: Statistics</property>
+    <property name="modal">True</property>
+    <child internal-child="hbox">
+      <object class="GtkHBox" id="dialog-hbox4">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkFrame" id="frame3">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkScrolledWindow" id="scrolledwindow5">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="hscrollbar_policy">never</property>
+                <property name="vscrollbar_policy">automatic</property>
+                <child>
+                  <object class="GtkTreeView" id="stats-view">
+                    <property name="width_request">128</property>
+                    <property name="height_request">150</property>
+                    <property name="visible">True</property>
+                    <property name="headers_visible">False</property>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="label3">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label" translatable="yes">Statistics</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="PsppireVButtonBox" id="psppire-vbuttonbox4">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="border_width">5</property>
+            <property name="buttons">PSPPIRE_BUTTON_CONTINUE_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>
index a1e65ea7d7971a9fbb4643dac59ccfabad308628..318646f8ef87a4eff2002a092f7d6a111a6e70f1 100644 (file)
@@ -206,7 +206,7 @@ descriptives_dialog (GObject *o, gpointer data)
 
   struct descriptives_dialog scd;
 
-  GtkBuilder *xml = builder_new ("descriptives-dialog.ui");
+  GtkBuilder *xml = builder_new ("descriptives.ui");
 
   GtkWidget *dialog = get_widget_assert   (xml, "descriptives-dialog");
 
diff --git a/src/ui/gui/descriptives-dialog.glade b/src/ui/gui/descriptives-dialog.glade
deleted file mode 100644 (file)
index 3fa67a5..0000000
+++ /dev/null
@@ -1,253 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<!--Generated with glade3 3.2.2 on Fri Oct  5 21:18:15 2007 by blp@blp-->
-<glade-interface>
-  <requires lib="psppire"/>
-  <widget class="PsppireDialog" id="descriptives-dialog">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="title">Descriptives</property>
-    <property name="modal">True</property>
-    <child internal-child="hbox">
-      <widget class="GtkHBox" id="dialog-hbox16">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="spacing">2</property>
-        <child>
-          <widget class="GtkVBox" id="vbox29">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <child>
-              <widget class="GtkHBox" id="hbox24">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <child>
-                  <widget class="GtkScrolledWindow" id="scrolledwindow16">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                    <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                    <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-                    <child>
-                      <widget class="PsppireDictView" id="all-variables">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="headers_visible">False</property>
-                        <property name="headers_clickable">True</property>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkAlignment" id="alignment19">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="yalign">0.25</property>
-                    <property name="xscale">0</property>
-                    <property name="yscale">0</property>
-                    <child>
-                      <widget class="PsppireSelector" id="stat-var-selector">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="border_width">5</property>
-                        <property name="response_id">0</property>
-                      </widget>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkVBox" id="vbox30">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <child>
-                      <widget class="GtkVBox" id="vbox31">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <child>
-                          <widget class="GtkLabel" id="label37">
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="xalign">0</property>
-                            <property name="label" translatable="yes">Variables:</property>
-                            <property name="wrap_mode">PANGO_WRAP_WORD_CHAR</property>
-                          </widget>
-                          <packing>
-                            <property name="expand">False</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkScrolledWindow" id="scrolledwindow17">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                            <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                            <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-                            <child>
-                              <widget class="GtkTreeView" id="stat-variables">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="headers_visible">False</property>
-                                <property name="headers_clickable">True</property>
-                              </widget>
-                            </child>
-                          </widget>
-                          <packing>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="padding">5</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkVBox" id="vbox28">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <child>
-                          <widget class="GtkLabel" id="label36">
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="xalign">0</property>
-                            <property name="label" translatable="yes">Statistics:</property>
-                            <property name="wrap_mode">PANGO_WRAP_WORD_CHAR</property>
-                          </widget>
-                          <packing>
-                            <property name="expand">False</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkScrolledWindow" id="scrolledwindow14">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                            <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                            <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-                            <child>
-                              <widget class="GtkTreeView" id="statistics">
-                                <property name="height_request">200</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="headers_visible">False</property>
-                                <property name="headers_clickable">True</property>
-                              </widget>
-                            </child>
-                          </widget>
-                          <packing>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="padding">5</property>
-                    <property name="position">2</property>
-                  </packing>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkFrame" id="frame11">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label_xalign">0</property>
-                <child>
-                  <widget class="GtkAlignment" id="alignment20">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="left_padding">12</property>
-                    <child>
-                      <widget class="GtkVButtonBox" id="vbuttonbox5">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <child>
-                          <widget class="GtkCheckButton" id="exclude_missing_listwise">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">Exclude entire case if any selected variable is missing</property>
-                            <property name="response_id">0</property>
-                            <property name="draw_indicator">True</property>
-                          </widget>
-                        </child>
-                        <child>
-                          <widget class="GtkCheckButton" id="include_user_missing">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">Include user-missing data in analysis</property>
-                            <property name="response_id">0</property>
-                            <property name="draw_indicator">True</property>
-                          </widget>
-                          <packing>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkCheckButton" id="save_z_scores">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">Save Z-scores of selected variables as new variables</property>
-                            <property name="response_id">0</property>
-                            <property name="draw_indicator">True</property>
-                          </widget>
-                          <packing>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkLabel" id="label40">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="label" translatable="yes">Options:</property>
-                  </widget>
-                  <packing>
-                    <property name="type">label_item</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </widget>
-        </child>
-        <child>
-          <widget class="PsppireVButtonBox" id="psppire-buttonbox6">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="border_width">5</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-</glade-interface>
diff --git a/src/ui/gui/descriptives.ui b/src/ui/gui/descriptives.ui
new file mode 100644 (file)
index 0000000..f5dc93f
--- /dev/null
@@ -0,0 +1,271 @@
+<?xml version="1.0"?>
+<interface>
+  <requires lib="psppire" version="2054.17080"/>
+  <!-- interface-requires gtk+ 2.12 -->
+  <!-- interface-naming-policy project-wide -->
+  <object class="PsppireDialog" id="descriptives-dialog">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="title">Descriptives</property>
+    <property name="modal">True</property>
+    <child internal-child="hbox">
+      <object class="GtkHBox" id="dialog-hbox16">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkVBox" id="vbox29">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="orientation">vertical</property>
+            <child>
+              <object class="GtkHBox" id="hbox24">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <child>
+                  <object class="GtkScrolledWindow" id="scrolledwindow16">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="hscrollbar_policy">never</property>
+                    <property name="vscrollbar_policy">automatic</property>
+                    <property name="shadow_type">etched-in</property>
+                    <child>
+                      <object class="PsppireDictView" id="all-variables">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="headers_visible">False</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkAlignment" id="alignment19">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="yalign">0.25</property>
+                    <property name="xscale">0</property>
+                    <property name="yscale">0</property>
+                    <child>
+                      <object class="PsppireSelector" id="stat-var-selector">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="border_width">5</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkVBox" id="vbox30">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="orientation">vertical</property>
+                    <child>
+                      <object class="GtkVBox" id="vbox31">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="orientation">vertical</property>
+                        <child>
+                          <object class="GtkLabel" id="label37">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Variables:</property>
+                            <property name="wrap_mode">word-char</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkScrolledWindow" id="scrolledwindow17">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="hscrollbar_policy">never</property>
+                            <property name="vscrollbar_policy">automatic</property>
+                            <property name="shadow_type">etched-in</property>
+                            <child>
+                              <object class="GtkTreeView" id="stat-variables">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="headers_visible">False</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="padding">5</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkVBox" id="vbox28">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="orientation">vertical</property>
+                        <child>
+                          <object class="GtkLabel" id="label36">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Statistics:</property>
+                            <property name="wrap_mode">word-char</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkScrolledWindow" id="scrolledwindow14">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="hscrollbar_policy">automatic</property>
+                            <property name="vscrollbar_policy">automatic</property>
+                            <property name="shadow_type">etched-in</property>
+                            <child>
+                              <object class="GtkTreeView" id="statistics">
+                                <property name="height_request">200</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="headers_visible">False</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="padding">5</property>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkFrame" id="frame11">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label_xalign">0</property>
+                <child>
+                  <object class="GtkAlignment" id="alignment20">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <object class="GtkVButtonBox" id="vbuttonbox5">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <child>
+                          <object class="GtkCheckButton" id="exclude_missing_listwise">
+                            <property name="label" translatable="yes">Exclude entire case if any selected variable is missing</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkCheckButton" id="include_user_missing">
+                            <property name="label" translatable="yes">Include user-missing data in analysis</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkCheckButton" id="save_z_scores">
+                            <property name="label" translatable="yes">Save Z-scores of selected variables as new variables</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child type="label">
+                  <object class="GtkLabel" id="label40">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="label" translatable="yes">Options:</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="PsppireVButtonBox" id="psppire-buttonbox6">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="border_width">5</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/src/ui/gui/examine.glade b/src/ui/gui/examine.glade
deleted file mode 100644 (file)
index a6f7ca8..0000000
+++ /dev/null
@@ -1,458 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<!--Generated with glade3 3.2.2 on Mon Dec 15 07:18:17 2008 by john@marilyn-->
-<glade-interface>
-  <requires lib="psppire"/>
-  <widget class="PsppireDialog" id="examine-dialog">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="title">Explore</property>
-    <property name="modal">True</property>
-    <child internal-child="hbox">
-      <widget class="GtkHBox" id="dialog-hbox1">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="spacing">2</property>
-        <child>
-          <widget class="GtkVBox" id="vbox1">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="spacing">5</property>
-            <child>
-              <widget class="GtkTable" id="table1">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="n_rows">3</property>
-                <property name="n_columns">3</property>
-                <child>
-                  <widget class="GtkFrame" id="frame3">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="shadow_type">GTK_SHADOW_NONE</property>
-                    <child>
-                      <widget class="GtkAlignment" id="alignment3">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <widget class="GtkEntry" id="entry1">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                          </widget>
-                        </child>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkLabel" id="label3">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">Label Cases by:</property>
-                        <property name="use_markup">True</property>
-                      </widget>
-                      <packing>
-                        <property name="type">label_item</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="left_attach">2</property>
-                    <property name="right_attach">3</property>
-                    <property name="top_attach">2</property>
-                    <property name="bottom_attach">3</property>
-                    <property name="y_options">GTK_FILL</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkFrame" id="frame2">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="shadow_type">GTK_SHADOW_NONE</property>
-                    <child>
-                      <widget class="GtkAlignment" id="alignment2">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <widget class="GtkScrolledWindow" id="scrolledwindow3">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                            <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                            <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-                            <child>
-                              <widget class="GtkTreeView" id="treeview3">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="headers_visible">False</property>
-                                <property name="headers_clickable">True</property>
-                              </widget>
-                            </child>
-                          </widget>
-                        </child>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkLabel" id="label2">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">Factor List:</property>
-                        <property name="use_markup">True</property>
-                      </widget>
-                      <packing>
-                        <property name="type">label_item</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="left_attach">2</property>
-                    <property name="right_attach">3</property>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkFrame" id="frame1">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="shadow_type">GTK_SHADOW_NONE</property>
-                    <child>
-                      <widget class="GtkAlignment" id="alignment1">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <widget class="GtkScrolledWindow" id="scrolledwindow2">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                            <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                            <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-                            <child>
-                              <widget class="GtkTreeView" id="treeview2">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="headers_visible">False</property>
-                                <property name="headers_clickable">True</property>
-                              </widget>
-                            </child>
-                          </widget>
-                        </child>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkLabel" id="label1">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">Dependent List:</property>
-                        <property name="use_markup">True</property>
-                      </widget>
-                      <packing>
-                        <property name="type">label_item</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="left_attach">2</property>
-                    <property name="right_attach">3</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="PsppireSelector" id="psppire-selector3">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="border_width">5</property>
-                  </widget>
-                  <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
-                    <property name="top_attach">2</property>
-                    <property name="bottom_attach">3</property>
-                    <property name="x_options"></property>
-                    <property name="y_options"></property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="PsppireSelector" id="psppire-selector2">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="border_width">5</property>
-                  </widget>
-                  <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                    <property name="x_options"></property>
-                    <property name="y_options"></property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="PsppireSelector" id="psppire-selector1">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="border_width">5</property>
-                  </widget>
-                  <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
-                    <property name="x_options"></property>
-                    <property name="y_options"></property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkScrolledWindow" id="scrolledwindow1">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                    <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                    <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-                    <child>
-                      <widget class="PsppireDictView" id="treeview1">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="headers_visible">False</property>
-                        <property name="headers_clickable">True</property>
-                      </widget>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="bottom_attach">3</property>
-                  </packing>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkHButtonBox" id="hbuttonbox1">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="layout_style">GTK_BUTTONBOX_SPREAD</property>
-                <child>
-                  <widget class="GtkButton" id="stats-button">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="label" translatable="yes">Statistics...</property>
-                    <property name="response_id">0</property>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkButton" id="opts-button">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="label" translatable="yes">Options...</property>
-                    <property name="response_id">0</property>
-                  </widget>
-                  <packing>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="padding">5</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </widget>
-        </child>
-        <child>
-          <widget class="PsppireVButtonBox" id="psppire-vbuttonbox1">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="border_width">5</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="PsppireDialog" id="statistics-dialog">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="title">Explore: Statistics</property>
-    <property name="modal">True</property>
-    <property name="orientation">PSPPIRE_VERTICAL</property>
-    <child internal-child="hbox">
-      <widget class="GtkVBox" id="dialog-hbox2">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="spacing">2</property>
-        <child>
-          <widget class="GtkVBox" id="vbox2">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="homogeneous">True</property>
-            <child>
-              <widget class="GtkCheckButton" id="descriptives-button">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label" translatable="yes">Descriptives</property>
-                <property name="response_id">0</property>
-                <property name="draw_indicator">True</property>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkCheckButton" id="extremes-button">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label" translatable="yes">Extremes</property>
-                <property name="response_id">0</property>
-                <property name="draw_indicator">True</property>
-              </widget>
-              <packing>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkCheckButton" id="percentiles-button">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label" translatable="yes">Percentiles</property>
-                <property name="response_id">0</property>
-                <property name="draw_indicator">True</property>
-              </widget>
-              <packing>
-                <property name="position">2</property>
-              </packing>
-            </child>
-          </widget>
-        </child>
-        <child>
-          <widget class="PsppireHButtonBox" id="psppire-hbuttonbox1">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="border_width">5</property>
-            <property name="layout_style">GTK_BUTTONBOX_SPREAD</property>
-            <property name="buttons">PSPPIRE_BUTTON_CONTINUE_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="PsppireDialog" id="options-dialog">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="title">Explore: Options</property>
-    <property name="modal">True</property>
-    <child internal-child="hbox">
-      <widget class="GtkHBox" id="dialog-hbox3">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="spacing">2</property>
-        <child>
-          <widget class="GtkFrame" id="frame5">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <child>
-              <widget class="GtkAlignment" id="alignment5">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <widget class="GtkVBox" id="vbox4">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <child>
-                      <widget class="GtkRadioButton" id="radiobutton1">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">Exclude cases listwise</property>
-                        <property name="response_id">0</property>
-                        <property name="active">True</property>
-                        <property name="draw_indicator">True</property>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkRadioButton" id="radiobutton2">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">Exclude cases pairwise</property>
-                        <property name="response_id">0</property>
-                        <property name="active">True</property>
-                        <property name="draw_indicator">True</property>
-                        <property name="group">radiobutton1</property>
-                      </widget>
-                      <packing>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkRadioButton" id="radiobutton3">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">Repeat values</property>
-                        <property name="response_id">0</property>
-                        <property name="active">True</property>
-                        <property name="draw_indicator">True</property>
-                        <property name="group">radiobutton1</property>
-                      </widget>
-                      <packing>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                  </widget>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkLabel" id="label5">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label" translatable="yes">Missing Values</property>
-                <property name="use_markup">True</property>
-              </widget>
-              <packing>
-                <property name="type">label_item</property>
-              </packing>
-            </child>
-          </widget>
-        </child>
-        <child>
-          <widget class="PsppireVButtonBox" id="psppire-vbuttonbox2">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="border_width">5</property>
-            <property name="buttons">PSPPIRE_BUTTON_CONTINUE_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-</glade-interface>
diff --git a/src/ui/gui/examine.ui b/src/ui/gui/examine.ui
new file mode 100644 (file)
index 0000000..273c19b
--- /dev/null
@@ -0,0 +1,474 @@
+<?xml version="1.0"?>
+<interface>
+  <!-- interface-requires gtk+ 2.12 -->
+  <requires lib="psppire" version="2054.17080"/>
+  <!-- interface-naming-policy project-wide -->
+  <object class="PsppireDialog" id="examine-dialog">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="title">Explore</property>
+    <property name="modal">True</property>
+    <child internal-child="hbox">
+      <object class="GtkHBox" id="dialog-hbox1">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkVBox" id="vbox1">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="orientation">vertical</property>
+            <property name="spacing">5</property>
+            <child>
+              <object class="GtkTable" id="table1">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="n_rows">3</property>
+                <property name="n_columns">3</property>
+                <child>
+                  <object class="GtkFrame" id="frame3">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <object class="GtkAlignment" id="alignment3">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkEntry" id="entry1">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" id="label3">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="label" translatable="yes">Label Cases by:</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left_attach">2</property>
+                    <property name="right_attach">3</property>
+                    <property name="top_attach">2</property>
+                    <property name="bottom_attach">3</property>
+                    <property name="y_options">GTK_FILL</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkFrame" id="frame2">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <object class="GtkAlignment" id="alignment2">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkScrolledWindow" id="scrolledwindow3">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="hscrollbar_policy">never</property>
+                            <property name="vscrollbar_policy">automatic</property>
+                            <property name="shadow_type">etched-in</property>
+                            <child>
+                              <object class="GtkTreeView" id="treeview3">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="headers_visible">False</property>
+                              </object>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" id="label2">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="label" translatable="yes">Factor List:</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left_attach">2</property>
+                    <property name="right_attach">3</property>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkFrame" id="frame1">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <object class="GtkAlignment" id="alignment1">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkScrolledWindow" id="scrolledwindow2">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="hscrollbar_policy">never</property>
+                            <property name="vscrollbar_policy">automatic</property>
+                            <property name="shadow_type">etched-in</property>
+                            <child>
+                              <object class="GtkTreeView" id="treeview2">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="headers_visible">False</property>
+                              </object>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" id="label1">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="label" translatable="yes">Dependent List:</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left_attach">2</property>
+                    <property name="right_attach">3</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="PsppireSelector" id="psppire-selector3">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="border_width">5</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                    <property name="top_attach">2</property>
+                    <property name="bottom_attach">3</property>
+                    <property name="x_options"></property>
+                    <property name="y_options"></property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="PsppireSelector" id="psppire-selector2">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="border_width">5</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
+                    <property name="x_options"></property>
+                    <property name="y_options"></property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="PsppireSelector" id="psppire-selector1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="border_width">5</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                    <property name="x_options"></property>
+                    <property name="y_options"></property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkScrolledWindow" id="scrolledwindow1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="hscrollbar_policy">never</property>
+                    <property name="vscrollbar_policy">automatic</property>
+                    <property name="shadow_type">etched-in</property>
+                    <child>
+                      <object class="PsppireDictView" id="treeview1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="headers_visible">False</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="bottom_attach">3</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHButtonBox" id="hbuttonbox1">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="layout_style">spread</property>
+                <child>
+                  <object class="GtkButton" id="stats-button">
+                    <property name="label" translatable="yes">Statistics...</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkButton" id="opts-button">
+                    <property name="label" translatable="yes">Options...</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="padding">5</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="PsppireVButtonBox" id="psppire-vbuttonbox1">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="border_width">5</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="PsppireDialog" id="statistics-dialog">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="title">Explore: Statistics</property>
+    <property name="modal">True</property>
+    <property name="orientation">Vertical</property>
+    <child internal-child="hbox">
+      <object class="GtkVBox" id="dialog-hbox2">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkVBox" id="vbox2">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="orientation">vertical</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <object class="GtkCheckButton" id="descriptives-button">
+                <property name="label" translatable="yes">Descriptives</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="draw_indicator">True</property>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkCheckButton" id="extremes-button">
+                <property name="label" translatable="yes">Extremes</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="draw_indicator">True</property>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkCheckButton" id="percentiles-button">
+                <property name="label" translatable="yes">Percentiles</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="draw_indicator">True</property>
+              </object>
+              <packing>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="PsppireHButtonBox" id="psppire-hbuttonbox1">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="border_width">5</property>
+            <property name="layout_style">spread</property>
+            <property name="buttons">PSPPIRE_BUTTON_CONTINUE_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="PsppireDialog" id="options-dialog">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="title">Explore: Options</property>
+    <property name="modal">True</property>
+    <child internal-child="hbox">
+      <object class="GtkHBox" id="dialog-hbox3">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkFrame" id="frame5">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="label_xalign">0</property>
+            <child>
+              <object class="GtkAlignment" id="alignment5">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="vbox4">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="orientation">vertical</property>
+                    <child>
+                      <object class="GtkRadioButton" id="radiobutton1">
+                        <property name="label" translatable="yes">Exclude cases listwise</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="active">True</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkRadioButton" id="radiobutton2">
+                        <property name="label" translatable="yes">Exclude cases pairwise</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="active">True</property>
+                        <property name="draw_indicator">True</property>
+                        <property name="group">radiobutton1</property>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkRadioButton" id="radiobutton3">
+                        <property name="label" translatable="yes">Repeat values</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="active">True</property>
+                        <property name="draw_indicator">True</property>
+                        <property name="group">radiobutton1</property>
+                      </object>
+                      <packing>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="label5">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label" translatable="yes">Missing Values</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="PsppireVButtonBox" id="psppire-vbuttonbox2">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="border_width">5</property>
+            <property name="buttons">PSPPIRE_BUTTON_CONTINUE_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/src/ui/gui/find.glade b/src/ui/gui/find.glade
deleted file mode 100644 (file)
index 3ab4f4e..0000000
+++ /dev/null
@@ -1,236 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<!--*- mode: xml -*-->
-<glade-interface>
-  <requires lib="psppire"/>
-  <widget class="PsppireDialog" id="find-dialog">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="title">Find Case</property>
-    <property name="modal">True</property>
-    <child internal-child="hbox">
-      <widget class="GtkHBox" id="dialog-hbox14">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="spacing">2</property>
-        <child>
-          <widget class="GtkHBox" id="hbox10">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="border_width">5</property>
-            <property name="spacing">5</property>
-            <child>
-              <widget class="GtkScrolledWindow" id="scrolledwindow13">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-                <child>
-                  <widget class="PsppireDictView" id="find-variable-treeview">
-                    <property name="height_request">300</property>
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="headers_visible">False</property>
-                    <property name="fixed_height_mode">True</property>
-                  </widget>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkVBox" id="vbox27">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <child>
-                  <widget class="PsppireSelector" id="find-selector">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="border_width">5</property>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                  </packing>
-                </child>
-                <child>
-                  <placeholder/>
-                </child>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkVBox" id="vbox10">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <child>
-                  <widget class="GtkVBox" id="vbox11">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <child>
-                      <widget class="GtkLabel" id="label33">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="xalign">0</property>
-                        <property name="label" translatable="yes">Variable:</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="padding">5</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkEntry" id="find-variable-entry">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkVBox" id="vbox15">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <child>
-                      <widget class="GtkLabel" id="label34">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="xalign">0</property>
-                        <property name="label" translatable="yes">Value:</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="padding">5</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkEntry" id="find-value-entry">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkCheckButton" id="find-value-labels-checkbutton">
-                        <property name="visible">True</property>
-                        <property name="sensitive">False</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">Search value labels</property>
-                        <property name="response_id">0</property>
-                        <property name="draw_indicator">True</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkVButtonBox" id="bb1">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <child>
-                      <widget class="GtkCheckButton" id="find-match-regexp-checkbutton">
-                        <property name="visible">True</property>
-                        <property name="sensitive">False</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">Regular expression Match</property>
-                        <property name="response_id">0</property>
-                        <property name="draw_indicator">True</property>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkCheckButton" id="find-match-substring-checkbutton">
-                        <property name="visible">True</property>
-                        <property name="sensitive">False</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">Search substrings</property>
-                        <property name="response_id">0</property>
-                        <property name="draw_indicator">True</property>
-                      </widget>
-                      <packing>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkCheckButton" id="find-wrap">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">Wrap around</property>
-                        <property name="response_id">0</property>
-                        <property name="draw_indicator">True</property>
-                      </widget>
-                      <packing>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkCheckButton" id="find-backwards">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">Search backward</property>
-                        <property name="response_id">0</property>
-                        <property name="draw_indicator">True</property>
-                      </widget>
-                      <packing>
-                        <property name="position">3</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="position">2</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="position">3</property>
-              </packing>
-            </child>
-          </widget>
-        </child>
-        <child>
-          <widget class="PsppireVButtonBox" id="find-buttonbox">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="border_width">5</property>
-            <property name="buttons">PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK | PSPPIRE_BUTTON_RESET_MASK</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-</glade-interface>
diff --git a/src/ui/gui/find.ui b/src/ui/gui/find.ui
new file mode 100644 (file)
index 0000000..8dae0c9
--- /dev/null
@@ -0,0 +1,262 @@
+<?xml version="1.0"?>
+<interface>
+  <requires lib="psppire" version="2053.63976"/>
+  <!-- interface-requires gtk+ 2.12 -->
+  <!-- interface-naming-policy project-wide -->
+  <object class="PsppireDialog" id="find-dialog">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="title">Find Case</property>
+    <property name="modal">True</property>
+    <child internal-child="hbox">
+      <object class="GtkHBox" id="dialog-hbox14">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkHBox" id="hbox10">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="border_width">5</property>
+            <property name="spacing">5</property>
+            <child>
+              <object class="GtkScrolledWindow" id="scrolledwindow13">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="hscrollbar_policy">never</property>
+                <property name="vscrollbar_policy">automatic</property>
+                <property name="shadow_type">etched-in</property>
+                <child>
+                  <object class="PsppireDictView" id="find-variable-treeview">
+                    <property name="height_request">300</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="headers_visible">False</property>
+                    <property name="fixed_height_mode">True</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkVBox" id="vbox27">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="orientation">vertical</property>
+                <child>
+                  <object class="PsppireSelector" id="find-selector">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="border_width">5</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkVBox" id="vbox10">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="orientation">vertical</property>
+                <child>
+                  <object class="GtkVBox" id="vbox11">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <child>
+                      <object class="GtkLabel" id="label33">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Variable:</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="padding">5</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="find-variable-entry">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkVBox" id="vbox15">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="orientation">vertical</property>
+                    <child>
+                      <object class="GtkLabel" id="label34">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Value:</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="padding">5</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="find-value-entry">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCheckButton" id="find-value-labels-checkbutton">
+                        <property name="label" translatable="yes">Search value labels</property>
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkVButtonBox" id="bb1">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <child>
+                      <object class="GtkCheckButton" id="find-match-regexp-checkbutton">
+                        <property name="label" translatable="yes">Regular expression Match</property>
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCheckButton" id="find-match-substring-checkbutton">
+                        <property name="label" translatable="yes">Search substrings</property>
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCheckButton" id="find-wrap">
+                        <property name="label" translatable="yes">Wrap around</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCheckButton" id="find-backwards">
+                        <property name="label" translatable="yes">Search backward</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">3</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="position">3</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="PsppireVButtonBox" id="find-buttonbox">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="border_width">5</property>
+            <property name="buttons">PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK | PSPPIRE_BUTTON_RESET_MASK</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/src/ui/gui/frequencies.glade b/src/ui/gui/frequencies.glade
deleted file mode 100644 (file)
index 3e5e921..0000000
+++ /dev/null
@@ -1,429 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<!--Generated with glade3 3.2.2 on Fri Nov 30 15:42:55 2007 by john@marilyn-->
-<glade-interface>
-  <requires lib="psppire"/>
-  <widget class="PsppireDialog" id="frequencies-dialog">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="title">Frequencies</property>
-    <property name="modal">True</property>
-    <child internal-child="hbox">
-      <widget class="GtkHBox" id="dialog-hbox1">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="spacing">2</property>
-        <child>
-          <widget class="GtkVBox" id="vbox1">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <child>
-              <widget class="GtkHBox" id="hbox1">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <child>
-                  <widget class="GtkScrolledWindow" id="scrolledwindow1">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                    <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                    <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-                    <child>
-                      <widget class="PsppireDictView" id="dict-treeview">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="headers_visible">False</property>
-                        <property name="headers_clickable">True</property>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkAlignment" id="alignment2">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="yalign">0.05000000074505806</property>
-                    <property name="yscale">0</property>
-                    <child>
-                      <widget class="PsppireSelector" id="selector1">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="no_show_all">True</property>
-                        <property name="border_width">5</property>
-                      </widget>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkVBox" id="vbox3">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <child>
-                      <widget class="GtkFrame" id="frame1">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label_xalign">0</property>
-                        <property name="shadow_type">GTK_SHADOW_NONE</property>
-                        <child>
-                          <widget class="GtkScrolledWindow" id="scrolledwindow2">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                            <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                            <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-                            <child>
-                              <widget class="GtkTreeView" id="var-treeview">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="headers_visible">False</property>
-                                <property name="headers_clickable">True</property>
-                              </widget>
-                            </child>
-                          </widget>
-                        </child>
-                        <child>
-                          <widget class="GtkLabel" id="label1">
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">Variable(s):</property>
-                            <property name="use_markup">True</property>
-                          </widget>
-                          <packing>
-                            <property name="type">label_item</property>
-                          </packing>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkFrame" id="frame1">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label_xalign">0</property>
-                        <property name="shadow_type">GTK_SHADOW_NONE</property>
-                        <child>
-                          <widget class="GtkScrolledWindow" id="scrolledwindow3">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                            <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                            <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-                            <child>
-                              <widget class="GtkTreeView" id="stats-treeview">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="headers_visible">False</property>
-                                <property name="headers_clickable">True</property>
-                              </widget>
-                            </child>
-                          </widget>
-                        </child>
-                        <child>
-                          <widget class="GtkLabel" id="label1">
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">Statistics:</property>
-                            <property name="use_markup">True</property>
-                          </widget>
-                          <packing>
-                            <property name="type">label_item</property>
-                          </packing>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="position">2</property>
-                  </packing>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkHBox" id="hbox3">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <child>
-                  <widget class="GtkCheckButton" id="checkbutton1">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="label" translatable="yes">Display Frequency Table</property>
-                    <property name="response_id">0</property>
-                    <property name="draw_indicator">True</property>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkHBox" id="hbox2">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="spacing">5</property>
-                    <property name="homogeneous">True</property>
-                    <child>
-                      <widget class="GtkButton" id="button1">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">Format...</property>
-                        <property name="response_id">0</property>
-                      </widget>
-                    </child>
-                    <child>
-                      <placeholder/>
-                    </child>
-                    <child>
-                      <placeholder/>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="padding">5</property>
-                    <property name="pack_type">GTK_PACK_END</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="padding">5</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </widget>
-        </child>
-        <child>
-          <widget class="PsppireVButtonBox" id="psppire-vbuttonbox1">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="border_width">5</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="PsppireDialog" id="format-dialog">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="title">Frequencies: Format</property>
-    <property name="modal">True</property>
-    <child internal-child="hbox">
-      <widget class="GtkHBox" id="dialog-hbox2">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="spacing">2</property>
-        <child>
-          <widget class="GtkHBox" id="hbox4">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="spacing">5</property>
-            <child>
-              <widget class="GtkFrame" id="frame2">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label_xalign">0</property>
-                <child>
-                  <widget class="GtkAlignment" id="alignment1">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="left_padding">12</property>
-                    <child>
-                      <widget class="GtkVButtonBox" id="vbuttonbox1">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="homogeneous">True</property>
-                        <child>
-                          <widget class="GtkRadioButton" id="radiobutton1">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">Ascending Order</property>
-                            <property name="response_id">0</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                          </widget>
-                        </child>
-                        <child>
-                          <widget class="GtkRadioButton" id="radiobutton2">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">Descending Order</property>
-                            <property name="response_id">0</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <property name="group">radiobutton1</property>
-                          </widget>
-                          <packing>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkRadioButton" id="radiobutton3">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">Ascending Counts</property>
-                            <property name="response_id">0</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <property name="group">radiobutton1</property>
-                          </widget>
-                          <packing>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkRadioButton" id="radiobutton4">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">Descending Counts</property>
-                            <property name="response_id">0</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <property name="group">radiobutton1</property>
-                          </widget>
-                          <packing>
-                            <property name="position">3</property>
-                          </packing>
-                        </child>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkLabel" id="label2">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="label" translatable="yes">Order by</property>
-                    <property name="use_markup">True</property>
-                  </widget>
-                  <packing>
-                    <property name="type">label_item</property>
-                  </packing>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkAlignment" id="alignment3">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="yalign">0</property>
-                <property name="yscale">0</property>
-                <property name="top_padding">5</property>
-                <child>
-                  <widget class="GtkVBox" id="vbox2">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <child>
-                      <widget class="GtkCheckButton" id="checkbutton2">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="response_id">0</property>
-                        <property name="draw_indicator">True</property>
-                        <child>
-                          <widget class="GtkLabel" id="label4">
-                            <property name="width_request">180</property>
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">Supress tables with more than N categories</property>
-                            <property name="wrap">True</property>
-                          </widget>
-                        </child>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkHBox" id="hbox5">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <child>
-                          <widget class="GtkLabel" id="label3">
-                            <property name="width_request">120</property>
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="xalign">0</property>
-                            <property name="label" translatable="yes">Maximum no of categories</property>
-                            <property name="wrap">True</property>
-                            <property name="wrap_mode">PANGO_WRAP_WORD_CHAR</property>
-                          </widget>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkSpinButton" id="spinbutton1">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="adjustment">100 1 65536 1 10 10</property>
-                            <property name="numeric">True</property>
-                            <property name="update_policy">GTK_UPDATE_IF_VALID</property>
-                          </widget>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="padding">5</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </widget>
-                </child>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="padding">5</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </widget>
-        </child>
-        <child>
-          <widget class="PsppireVButtonBox" id="psppire-vbuttonbox2">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="border_width">5</property>
-            <property name="buttons">PSPPIRE_BUTTON_CONTINUE_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-</glade-interface>
diff --git a/src/ui/gui/frequencies.ui b/src/ui/gui/frequencies.ui
new file mode 100644 (file)
index 0000000..47e25d4
--- /dev/null
@@ -0,0 +1,464 @@
+<?xml version="1.0"?>
+<interface>
+  <requires lib="psppire" version="2054.22072"/>
+  <!-- interface-requires gtk+ 2.12 -->
+  <!-- interface-naming-policy project-wide -->
+  <object class="PsppireDialog" id="frequencies-dialog">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="title">Frequencies</property>
+    <property name="modal">True</property>
+    <child internal-child="hbox">
+      <object class="GtkHBox" id="dialog-hbox1">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkVBox" id="vbox1">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="orientation">vertical</property>
+            <child>
+              <object class="GtkHBox" id="hbox1">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <child>
+                  <object class="GtkScrolledWindow" id="scrolledwindow1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="hscrollbar_policy">never</property>
+                    <property name="vscrollbar_policy">automatic</property>
+                    <property name="shadow_type">etched-in</property>
+                    <child>
+                      <object class="PsppireDictView" id="dict-treeview">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="headers_visible">False</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkAlignment" id="alignment2">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="yalign">0.05000000074505806</property>
+                    <property name="yscale">0</property>
+                    <child>
+                      <object class="PsppireSelector" id="selector1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="no_show_all">True</property>
+                        <property name="border_width">5</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkVBox" id="vbox3">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="orientation">vertical</property>
+                    <child>
+                      <object class="GtkFrame" id="frame3">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="label_xalign">0</property>
+                        <property name="shadow_type">none</property>
+                        <child>
+                          <object class="GtkScrolledWindow" id="scrolledwindow2">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="hscrollbar_policy">never</property>
+                            <property name="vscrollbar_policy">automatic</property>
+                            <property name="shadow_type">etched-in</property>
+                            <child>
+                              <object class="GtkTreeView" id="var-treeview">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="headers_visible">False</property>
+                              </object>
+                            </child>
+                          </object>
+                        </child>
+                        <child type="label">
+                          <object class="GtkLabel" id="label3">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="label" translatable="yes">Variable(s):</property>
+                            <property name="use_markup">True</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkFrame" id="frame2">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="label_xalign">0</property>
+                        <property name="shadow_type">none</property>
+                        <child>
+                          <object class="GtkScrolledWindow" id="scrolledwindow3">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="hscrollbar_policy">never</property>
+                            <property name="vscrollbar_policy">automatic</property>
+                            <property name="shadow_type">etched-in</property>
+                            <child>
+                              <object class="GtkTreeView" id="stats-treeview">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="headers_visible">False</property>
+                              </object>
+                            </child>
+                          </object>
+                        </child>
+                        <child type="label">
+                          <object class="GtkLabel" id="label2">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="label" translatable="yes">Statistics:</property>
+                            <property name="use_markup">True</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHBox" id="hbox3">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <child>
+                  <object class="GtkCheckButton" id="checkbutton1">
+                    <property name="label" translatable="yes">Display Frequency Table</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkHBox" id="hbox2">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="spacing">5</property>
+                    <property name="homogeneous">True</property>
+                    <child>
+                      <object class="GtkButton" id="button1">
+                        <property name="label" translatable="yes">Format...</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                      </object>
+                      <packing>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="padding">5</property>
+                    <property name="pack_type">end</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="padding">5</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="PsppireVButtonBox" id="psppire-vbuttonbox1">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="border_width">5</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="PsppireDialog" id="format-dialog">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="title">Frequencies: Format</property>
+    <property name="modal">True</property>
+    <child internal-child="hbox">
+      <object class="GtkHBox" id="dialog-hbox2">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkHBox" id="hbox4">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="spacing">5</property>
+            <child>
+              <object class="GtkFrame" id="frame1">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label_xalign">0</property>
+                <child>
+                  <object class="GtkAlignment" id="alignment1">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <object class="GtkVButtonBox" id="vbuttonbox1">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="homogeneous">True</property>
+                        <child>
+                          <object class="GtkRadioButton" id="radiobutton1">
+                            <property name="label" translatable="yes">Ascending Order</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" id="radiobutton2">
+                            <property name="label" translatable="yes">Descending Order</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property name="group">radiobutton1</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" id="radiobutton3">
+                            <property name="label" translatable="yes">Ascending Counts</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property name="group">radiobutton1</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" id="radiobutton4">
+                            <property name="label" translatable="yes">Descending Counts</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property name="group">radiobutton1</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">3</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child type="label">
+                  <object class="GtkLabel" id="label1">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="label" translatable="yes">Order by</property>
+                    <property name="use_markup">True</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkAlignment" id="alignment3">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="yalign">0</property>
+                <property name="yscale">0</property>
+                <property name="top_padding">5</property>
+                <child>
+                  <object class="GtkVBox" id="vbox2">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="orientation">vertical</property>
+                    <child>
+                      <object class="GtkCheckButton" id="checkbutton2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="draw_indicator">True</property>
+                        <child>
+                          <object class="GtkLabel" id="label4">
+                            <property name="width_request">180</property>
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="label" translatable="yes">Supress tables with more than N categories</property>
+                            <property name="wrap">True</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkHBox" id="hbox5">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <child>
+                          <object class="GtkLabel" id="label5">
+                            <property name="width_request">120</property>
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Maximum no of categories</property>
+                            <property name="wrap">True</property>
+                            <property name="wrap_mode">word-char</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" id="spinbutton1">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="adjustment">adjustment1</property>
+                            <property name="numeric">True</property>
+                            <property name="update_policy">if-valid</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="padding">5</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="padding">5</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="PsppireVButtonBox" id="psppire-vbuttonbox2">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="border_width">5</property>
+            <property name="buttons">PSPPIRE_BUTTON_CONTINUE_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="GtkAdjustment" id="adjustment1">
+    <property name="value">100</property>
+    <property name="lower">1</property>
+    <property name="upper">65536</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+    <property name="page_size">10</property>
+  </object>
+</interface>
diff --git a/src/ui/gui/message-dialog.glade b/src/ui/gui/message-dialog.glade
deleted file mode 100644 (file)
index 1069fc1..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<!--Generated with glade3 3.4.5 on Thu Dec 18 20:43:13 2008 -->
-<glade-interface>
-  <widget class="GtkDialog" id="message-dialog">
-    <property name="width_request">600</property>
-    <property name="height_request">350</property>
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="border_width">12</property>
-    <property name="title" translatable="yes">Messages Reported</property>
-    <property name="modal">True</property>
-    <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
-    <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
-    <property name="has_separator">False</property>
-    <child internal-child="vbox">
-      <widget class="GtkVBox" id="dialog-vbox1">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="spacing">24</property>
-        <child>
-          <widget class="GtkHBox" id="hbox1">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="spacing">12</property>
-            <child>
-              <widget class="GtkImage" id="image1">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="yalign">0</property>
-                <property name="stock">gtk-dialog-info</property>
-                <property name="icon_size">6</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkVBox" id="vbox1">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="spacing">6</property>
-                <child>
-                  <widget class="GtkLabel" id="lead-in">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="xalign">0</property>
-                    <property name="label" translatable="yes">The PSPP processor reported # errors.  The first # and last # are shown below:</property>
-                    <property name="wrap">True</property>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkScrolledWindow" id="scrolledwindow1">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                    <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                    <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-                    <child>
-                      <widget class="GtkTextView" id="message">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="editable">False</property>
-                        <property name="wrap_mode">GTK_WRAP_WORD</property>
-                        <property name="left_margin">6</property>
-                        <property name="right_margin">6</property>
-                        <property name="cursor_visible">False</property>
-                      </widget>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child internal-child="action_area">
-          <widget class="GtkHButtonBox" id="dialog-action_area1">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="layout_style">GTK_BUTTONBOX_END</property>
-            <child>
-              <widget class="GtkButton" id="close-button">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label" translatable="yes">gtk-close</property>
-                <property name="use_stock">True</property>
-                <property name="response_id">0</property>
-              </widget>
-            </child>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-</glade-interface>
diff --git a/src/ui/gui/message-dialog.ui b/src/ui/gui/message-dialog.ui
new file mode 100644 (file)
index 0000000..540a390
--- /dev/null
@@ -0,0 +1,127 @@
+<?xml version="1.0"?>
+<interface>
+  <!-- interface-requires gtk+ 2.12 -->
+  <!-- interface-naming-policy project-wide -->
+  <object class="GtkDialog" id="message-dialog">
+    <property name="width_request">600</property>
+    <property name="height_request">350</property>
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="border_width">12</property>
+    <property name="title" translatable="yes">Messages Reported</property>
+    <property name="modal">True</property>
+    <property name="window_position">center-on-parent</property>
+    <property name="type_hint">dialog</property>
+    <property name="has_separator">False</property>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">24</property>
+        <child>
+          <object class="GtkHBox" id="hbox1">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="spacing">12</property>
+            <child>
+              <object class="GtkImage" id="image1">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="yalign">0</property>
+                <property name="stock">gtk-dialog-info</property>
+                <property name="icon-size">6</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkVBox" id="vbox1">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="orientation">vertical</property>
+                <property name="spacing">6</property>
+                <child>
+                  <object class="GtkLabel" id="lead-in">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="xalign">0</property>
+                    <property name="label" translatable="yes">The PSPP processor reported # errors.  The first # and last # are shown below:</property>
+                    <property name="wrap">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkScrolledWindow" id="scrolledwindow1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="hscrollbar_policy">automatic</property>
+                    <property name="vscrollbar_policy">automatic</property>
+                    <property name="shadow_type">etched-in</property>
+                    <child>
+                      <object class="GtkTextView" id="message">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="editable">False</property>
+                        <property name="wrap_mode">word</property>
+                        <property name="left_margin">6</property>
+                        <property name="right_margin">6</property>
+                        <property name="cursor_visible">False</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="close-button">
+                <property name="label">gtk-close</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="0">close-button</action-widget>
+    </action-widgets>
+  </object>
+</interface>
diff --git a/src/ui/gui/oneway.glade b/src/ui/gui/oneway.glade
deleted file mode 100644 (file)
index 4b12f68..0000000
+++ /dev/null
@@ -1,451 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<!--*- mode: xml -*-->
-<glade-interface>
-  <requires lib="psppire"/>
-  <widget class="PsppireDialog" id="oneway-anova-dialog">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="title">One-Way ANOVA</property>
-    <property name="modal">True</property>
-    <child internal-child="hbox">
-      <widget class="GtkHBox" id="dialog-hbox15">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="spacing">2</property>
-        <child>
-          <widget class="GtkTable" id="table4">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="n_rows">3</property>
-            <property name="n_columns">3</property>
-            <child>
-              <widget class="GtkVBox" id="vbox30">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <child>
-                  <widget class="GtkLabel" id="label36">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="xalign">0</property>
-                    <property name="label" translatable="yes">_Factor:</property>
-                    <property name="use_underline">True</property>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkEntry" id="oneway-anova-entry">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                  </widget>
-                  <packing>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="left_attach">2</property>
-                <property name="right_attach">3</property>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkVBox" id="vbox29">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <child>
-                  <widget class="GtkLabel" id="label35">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="xalign">0</property>
-                    <property name="label" translatable="yes">Dependent _Variable(s):</property>
-                    <property name="use_underline">True</property>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkScrolledWindow" id="scrolledwindow15">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                    <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                    <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-                    <child>
-                      <widget class="GtkTreeView" id="oneway-anova-treeview2">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="headers_visible">False</property>
-                      </widget>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="left_attach">2</property>
-                <property name="right_attach">3</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="PsppireSelector" id="oneway-anova-selector2">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="border_width">5</property>
-              </widget>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-                <property name="x_options"></property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="PsppireSelector" id="oneway-anova-selector1">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="border_width">5</property>
-              </widget>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="x_options"></property>
-                <property name="y_options">GTK_EXPAND</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkScrolledWindow" id="scrolledwindow2">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-                <child>
-                  <widget class="PsppireDictView" id="oneway-anova-treeview1">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="headers_visible">False</property>
-                    <property name="headers_clickable">True</property>
-                  </widget>
-                </child>
-              </widget>
-              <packing>
-                <property name="bottom_attach">3</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkHBox" id="hbox2">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="spacing">5</property>
-                <child>
-                  <widget class="GtkFrame" id="frame2">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="label_xalign">0</property>
-                    <child>
-                      <widget class="GtkAlignment" id="alignment2">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <widget class="GtkVButtonBox" id="vbuttonbox1">
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <child>
-                              <widget class="GtkCheckButton" id="checkbutton1">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="label" translatable="yes">_Descriptives</property>
-                                <property name="use_underline">True</property>
-                                <property name="response_id">0</property>
-                                <property name="draw_indicator">True</property>
-                              </widget>
-                            </child>
-                            <child>
-                              <widget class="GtkCheckButton" id="checkbutton2">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="label" translatable="yes">_Homogeneity</property>
-                                <property name="use_underline">True</property>
-                                <property name="response_id">0</property>
-                                <property name="draw_indicator">True</property>
-                              </widget>
-                              <packing>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                          </widget>
-                        </child>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkLabel" id="label1">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">Statistics</property>
-                        <property name="use_markup">True</property>
-                      </widget>
-                      <packing>
-                        <property name="type">label_item</property>
-                      </packing>
-                    </child>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkVButtonBox" id="vbuttonbox2">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <child>
-                      <widget class="GtkButton" id="contrasts-button">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">_Contrasts...</property>
-                        <property name="use_underline">True</property>
-                        <property name="response_id">0</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">3</property>
-                <property name="top_attach">2</property>
-                <property name="bottom_attach">3</property>
-                <property name="y_options"></property>
-                <property name="x_padding">5</property>
-                <property name="y_padding">5</property>
-              </packing>
-            </child>
-          </widget>
-        </child>
-        <child>
-          <widget class="PsppireVButtonBox" id="psppire-vbuttonbox2">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="border_width">5</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="PsppireDialog" id="contrasts-dialog">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="title">One-Way ANOVA: Contrasts</property>
-    <property name="modal">True</property>
-    <child internal-child="hbox">
-      <widget class="GtkHBox" id="dialog-hbox2">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <child>
-          <widget class="GtkFrame" id="frame1">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="label_xalign">0</property>
-            <child>
-              <widget class="GtkAlignment" id="alignment1">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="top_padding">5</property>
-                <property name="bottom_padding">5</property>
-                <property name="left_padding">5</property>
-                <property name="right_padding">5</property>
-                <child>
-                  <widget class="GtkVBox" id="vbox2">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="spacing">5</property>
-                    <child>
-                      <widget class="GtkHButtonBox" id="hbuttonbox1">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="homogeneous">True</property>
-                        <property name="layout_style">GTK_BUTTONBOX_EDGE</property>
-                        <child>
-                          <widget class="GtkButton" id="prev-button">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">gtk-go-back</property>
-                            <property name="use_stock">True</property>
-                            <property name="response_id">0</property>
-                          </widget>
-                        </child>
-                        <child>
-                          <widget class="GtkButton" id="next-button">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">gtk-go-forward</property>
-                            <property name="use_stock">True</property>
-                            <property name="response_id">0</property>
-                          </widget>
-                          <packing>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkHBox" id="hbox3">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <child>
-                          <widget class="GtkLabel" id="label4">
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="xalign">1</property>
-                            <property name="label" translatable="yes">_Coefficients:</property>
-                            <property name="use_underline">True</property>
-                          </widget>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkEntry" id="entry1">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                          </widget>
-                          <packing>
-                            <property name="fill">False</property>
-                            <property name="pack_type">GTK_PACK_END</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="PsppireAcr" id="psppire-acr1">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="border_width">5</property>
-                      </widget>
-                      <packing>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkHBox" id="hbox1">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <child>
-                          <widget class="GtkLabel" id="label2">
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="xalign">1</property>
-                            <property name="label" translatable="yes">Coefficient Total: </property>
-                          </widget>
-                        </child>
-                        <child>
-                          <widget class="GtkEntry" id="entry2">
-                            <property name="visible">True</property>
-                            <property name="sensitive">False</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="editable">False</property>
-                            <property name="max_length">5</property>
-                          </widget>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">3</property>
-                      </packing>
-                    </child>
-                  </widget>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkLabel" id="contrast-stack-label">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label" translatable="yes">Contrast 1 of 1</property>
-                <property name="use_markup">True</property>
-              </widget>
-              <packing>
-                <property name="type">label_item</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="padding">5</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="PsppireVButtonBox" id="psppire-vbuttonbox1">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="border_width">5</property>
-            <property name="buttons">PSPPIRE_BUTTON_CONTINUE_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-</glade-interface>
diff --git a/src/ui/gui/oneway.ui b/src/ui/gui/oneway.ui
new file mode 100644 (file)
index 0000000..6ec3120
--- /dev/null
@@ -0,0 +1,475 @@
+<?xml version="1.0"?>
+<interface>
+  <!-- interface-requires gtk+ 2.12 -->
+  <requires lib="psppire" version="2054.17080"/>
+  <!-- interface-naming-policy project-wide -->
+  <object class="PsppireDialog" id="oneway-anova-dialog">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="title">One-Way ANOVA</property>
+    <property name="modal">True</property>
+    <child internal-child="hbox">
+      <object class="GtkHBox" id="dialog-hbox15">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkTable" id="table4">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="n_rows">3</property>
+            <property name="n_columns">3</property>
+            <child>
+              <object class="GtkVBox" id="vbox30">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="orientation">vertical</property>
+                <child>
+                  <object class="GtkLabel" id="label36">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="xalign">0</property>
+                    <property name="label" translatable="yes">_Factor:</property>
+                    <property name="use_underline">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkEntry" id="oneway-anova-entry">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="left_attach">2</property>
+                <property name="right_attach">3</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkVBox" id="vbox29">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="orientation">vertical</property>
+                <child>
+                  <object class="GtkLabel" id="label35">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="xalign">0</property>
+                    <property name="label" translatable="yes">Dependent _Variable(s):</property>
+                    <property name="use_underline">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkScrolledWindow" id="scrolledwindow15">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="hscrollbar_policy">automatic</property>
+                    <property name="vscrollbar_policy">automatic</property>
+                    <property name="shadow_type">etched-in</property>
+                    <child>
+                      <object class="GtkTreeView" id="oneway-anova-treeview2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="headers_visible">False</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="left_attach">2</property>
+                <property name="right_attach">3</property>
+              </packing>
+            </child>
+            <child>
+              <object class="PsppireSelector" id="oneway-anova-selector2">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="border_width">5</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="x_options"></property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <object class="PsppireSelector" id="oneway-anova-selector1">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="border_width">5</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="x_options"></property>
+                <property name="y_options">GTK_EXPAND</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkScrolledWindow" id="scrolledwindow2">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="hscrollbar_policy">never</property>
+                <property name="vscrollbar_policy">automatic</property>
+                <property name="shadow_type">etched-in</property>
+                <child>
+                  <object class="PsppireDictView" id="oneway-anova-treeview1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="headers_visible">False</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="bottom_attach">3</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHBox" id="hbox2">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="spacing">5</property>
+                <child>
+                  <object class="GtkFrame" id="frame2">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="label_xalign">0</property>
+                    <child>
+                      <object class="GtkAlignment" id="alignment2">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkVButtonBox" id="vbuttonbox1">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <child>
+                              <object class="GtkCheckButton" id="checkbutton1">
+                                <property name="label" translatable="yes">_Descriptives</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="use_underline">True</property>
+                                <property name="draw_indicator">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkCheckButton" id="checkbutton2">
+                                <property name="label" translatable="yes">_Homogeneity</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="use_underline">True</property>
+                                <property name="draw_indicator">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" id="label1">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="label" translatable="yes">Statistics</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkVButtonBox" id="vbuttonbox2">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="orientation">vertical</property>
+                    <child>
+                      <object class="GtkButton" id="contrasts-button">
+                        <property name="label" translatable="yes">_Contrasts...</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="use_underline">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">3</property>
+                <property name="top_attach">2</property>
+                <property name="bottom_attach">3</property>
+                <property name="y_options"></property>
+                <property name="x_padding">5</property>
+                <property name="y_padding">5</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="PsppireVButtonBox" id="psppire-vbuttonbox2">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="border_width">5</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="PsppireDialog" id="contrasts-dialog">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="title">One-Way ANOVA: Contrasts</property>
+    <property name="modal">True</property>
+    <child internal-child="hbox">
+      <object class="GtkHBox" id="dialog-hbox2">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <child>
+          <object class="GtkFrame" id="frame1">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="label_xalign">0</property>
+            <child>
+              <object class="GtkAlignment" id="alignment1">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="top_padding">5</property>
+                <property name="bottom_padding">5</property>
+                <property name="left_padding">5</property>
+                <property name="right_padding">5</property>
+                <child>
+                  <object class="GtkVBox" id="vbox2">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="orientation">vertical</property>
+                    <property name="spacing">5</property>
+                    <child>
+                      <object class="GtkHButtonBox" id="hbuttonbox1">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="homogeneous">True</property>
+                        <property name="layout_style">edge</property>
+                        <child>
+                          <object class="GtkButton" id="prev-button">
+                            <property name="label">gtk-go-back</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="use_stock">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkButton" id="next-button">
+                            <property name="label">gtk-go-forward</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="use_stock">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkHBox" id="hbox3">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <child>
+                          <object class="GtkLabel" id="label4">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="xalign">1</property>
+                            <property name="label" translatable="yes">_Coefficients:</property>
+                            <property name="use_underline">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkEntry" id="entry1">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                          </object>
+                          <packing>
+                            <property name="fill">False</property>
+                            <property name="pack_type">end</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="PsppireAcr" id="psppire-acr1">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="border_width">5</property>
+                      </object>
+                      <packing>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkHBox" id="hbox1">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <child>
+                          <object class="GtkLabel" id="label2">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="xalign">1</property>
+                            <property name="label" translatable="yes">Coefficient Total: </property>
+                          </object>
+                          <packing>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkEntry" id="entry2">
+                            <property name="visible">True</property>
+                            <property name="sensitive">False</property>
+                            <property name="can_focus">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="editable">False</property>
+                            <property name="max_length">5</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">3</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="contrast-stack-label">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label" translatable="yes">Contrast 1 of 1</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="padding">5</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="PsppireVButtonBox" id="psppire-vbuttonbox1">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="border_width">5</property>
+            <property name="orientation">vertical</property>
+            <property name="buttons">PSPPIRE_BUTTON_CONTINUE_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>
index ffa9482eb0f4b766c391e32ac7c3ecac9dca3087..2707498c7929038cafc9d55f1e85f0ad93ad0272 100644 (file)
@@ -1247,7 +1247,6 @@ psppire_data_window_init (PsppireDataWindow *de)
       resolve_action (de->builder, "file_save_as", NULL);
 
     g_object_set (action_data_save_as,
-                 "label", _("Save As"),
                  "tooltip", _("Save data to file"),
                  "stock-id", "gtk-save-as",
                  NULL);
index 928a1c92886f46030460947d0cc7c2b5a30b9501..961998d9266a8ab4da61fd4f102109606c46cc6d 100644 (file)
@@ -89,7 +89,6 @@ initialize (struct command_line_processor *clp, int argc, char **argv)
 {
   PsppireDict *dictionary = 0;
 
-
   i18n_init ();
 
   preregister_widgets ();
diff --git a/src/ui/gui/psppire.glade b/src/ui/gui/psppire.glade
deleted file mode 100644 (file)
index a096752..0000000
+++ /dev/null
@@ -1,2316 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<!--*- mode: xml -*-->
-<glade-interface>
-  <requires lib="psppire"/>
-  <widget class="PsppireDialog" id="weight-cases-dialog">
-    <property name="title">Weight Cases</property>
-    <property name="modal">True</property>
-    <child internal-child="hbox">
-      <widget class="GtkHBox" id="dialog-hbox1">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_ENTER_NOTIFY_MASK</property>
-        <property name="spacing">2</property>
-        <child>
-          <widget class="GtkHBox" id="hbox1">
-            <property name="visible">True</property>
-            <child>
-              <widget class="GtkScrolledWindow" id="scrolledwindow1">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-                <child>
-                  <widget class="PsppireDictView" id="weight-cases-treeview">
-                    <property name="visible">True</property>
-                    <property name="headers_visible">False</property>
-                    <property name="fixed_height_mode">True</property>
-                  </widget>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkVBox" id="vbox1">
-                <property name="visible">True</property>
-                <child>
-                  <widget class="GtkFrame" id="frame1">
-                    <property name="visible">True</property>
-                    <property name="border_width">5</property>
-                    <child>
-                      <widget class="GtkVBox" id="vbox2">
-                        <property name="visible">True</property>
-                        <property name="border_width">5</property>
-                        <child>
-                          <widget class="GtkRadioButton" id="weight-cases-radiobutton1">
-                            <property name="visible">True</property>
-                            <property name="label" translatable="yes">Do not weight cases</property>
-                            <property name="focus_on_click">False</property>
-                            <property name="response_id">0</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                          </widget>
-                        </child>
-                        <child>
-                          <widget class="GtkRadioButton" id="radiobutton2">
-                            <property name="visible">True</property>
-                            <property name="sensitive">False</property>
-                            <property name="label" translatable="yes">Weight cases by</property>
-                            <property name="focus_on_click">False</property>
-                            <property name="response_id">0</property>
-                            <property name="draw_indicator">True</property>
-                            <property name="group">weight-cases-radiobutton1</property>
-                          </widget>
-                          <packing>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkHBox" id="hbox3">
-                            <property name="visible">True</property>
-                            <child>
-                              <widget class="PsppireSelector" id="weight-cases-selector">
-                                <property name="visible">True</property>
-                                <property name="border_width">5</property>
-                              </widget>
-                            </child>
-                            <child>
-                              <widget class="GtkVBox" id="vbox3">
-                                <property name="visible">True</property>
-                                <child>
-                                  <widget class="GtkLabel" id="label1">
-                                    <property name="visible">True</property>
-                                    <property name="label" translatable="yes">Frequency Variable</property>
-                                  </widget>
-                                </child>
-                                <child>
-                                  <widget class="GtkEntry" id="weight-cases-entry">
-                                    <property name="visible">True</property>
-                                  </widget>
-                                  <packing>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                              </widget>
-                              <packing>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                          </widget>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                      </widget>
-                    </child>
-                    <child>
-                      <placeholder/>
-                      <packing>
-                        <property name="type">label_item</property>
-                      </packing>
-                    </child>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkHBox" id="hbox2">
-                    <property name="visible">True</property>
-                    <child>
-                      <widget class="GtkLabel" id="label3">
-                        <property name="visible">True</property>
-                        <property name="xalign">1</property>
-                        <property name="label" translatable="yes">Current Status: </property>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkLabel" id="weight-status-label">
-                        <property name="visible">True</property>
-                        <property name="xalign">0</property>
-                        <property name="label" translatable="yes">Do not weight cases</property>
-                      </widget>
-                      <packing>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="padding">5</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="PsppireVButtonBox" id="psppire-buttonbox1">
-            <property name="visible">True</property>
-            <property name="border_width">5</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="PsppireDialog" id="transpose-dialog">
-    <property name="title">Transpose</property>
-    <property name="modal">True</property>
-    <child internal-child="hbox">
-      <widget class="GtkHBox" id="dialog-hbox2">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_ENTER_NOTIFY_MASK</property>
-        <property name="spacing">2</property>
-        <child>
-          <widget class="GtkHBox" id="hbox4">
-            <property name="visible">True</property>
-            <child>
-              <widget class="GtkFrame" id="frame3">
-                <property name="visible">True</property>
-                <property name="shadow_type">GTK_SHADOW_IN</property>
-                <child>
-                  <widget class="GtkScrolledWindow" id="scrolledwindow1">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                    <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                    <child>
-                      <widget class="PsppireDictView" id="source-treeview">
-                        <property name="visible">True</property>
-                        <property name="headers_visible">False</property>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-                <child>
-                  <placeholder/>
-                  <packing>
-                    <property name="type">label_item</property>
-                  </packing>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkTable" id="table1">
-                <property name="visible">True</property>
-                <property name="n_rows">2</property>
-                <property name="n_columns">2</property>
-                <property name="column_spacing">5</property>
-                <property name="row_spacing">5</property>
-                <child>
-                  <widget class="GtkVBox" id="vbox5">
-                    <property name="visible">True</property>
-                    <child>
-                      <widget class="GtkLabel" id="label4">
-                        <property name="visible">True</property>
-                        <property name="xalign">0</property>
-                        <property name="label" translatable="yes">Name Variable:</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkEntry" id="new-name-entry">
-                        <property name="visible">True</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                    <property name="y_options"></property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkVBox" id="vbox4">
-                    <property name="visible">True</property>
-                    <child>
-                      <widget class="GtkLabel" id="label2">
-                        <property name="visible">True</property>
-                        <property name="xalign">0</property>
-                        <property name="label" translatable="yes">Variable(s):</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkFrame" id="frame2">
-                        <property name="visible">True</property>
-                        <property name="shadow_type">GTK_SHADOW_IN</property>
-                        <child>
-                          <widget class="GtkScrolledWindow" id="scrolledwindow2">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                            <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                            <child>
-                              <widget class="GtkTreeView" id="variables-treeview">
-                                <property name="visible">True</property>
-                                <property name="headers_visible">False</property>
-                              </widget>
-                            </child>
-                          </widget>
-                        </child>
-                        <child>
-                          <placeholder/>
-                          <packing>
-                            <property name="type">label_item</property>
-                          </packing>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="PsppireSelector" id="psppire-selector3">
-                    <property name="visible">True</property>
-                    <property name="border_width">5</property>
-                  </widget>
-                  <packing>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                    <property name="x_options"></property>
-                    <property name="y_options">GTK_FILL</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="PsppireSelector" id="psppire-selector2">
-                    <property name="visible">True</property>
-                    <property name="border_width">5</property>
-                  </widget>
-                  <packing>
-                    <property name="x_options"></property>
-                    <property name="y_options"></property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="padding">5</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="padding">5</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="PsppireVButtonBox" id="psppire-buttonbox2">
-            <property name="visible">True</property>
-            <property name="border_width">5</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="PsppireDialog" id="split-file-dialog">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="title">Split File</property>
-    <property name="modal">True</property>
-    <child internal-child="hbox">
-      <widget class="GtkHBox" id="dialog-hbox3">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="spacing">2</property>
-        <child>
-          <widget class="GtkVBox" id="vbox6">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <child>
-              <widget class="GtkHBox" id="hbox5">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <child>
-                  <widget class="GtkFrame" id="frame5">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="shadow_type">GTK_SHADOW_IN</property>
-                    <child>
-                      <widget class="GtkScrolledWindow" id="scrolledwindow3">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                        <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                        <child>
-                          <widget class="PsppireDictView" id="split-file-dict-treeview">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="headers_visible">False</property>
-                            <property name="fixed_height_mode">True</property>
-                          </widget>
-                        </child>
-                      </widget>
-                    </child>
-                    <child>
-                      <placeholder/>
-                      <packing>
-                        <property name="type">label_item</property>
-                      </packing>
-                    </child>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkVBox" id="vbox7">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <child>
-                      <widget class="GtkVButtonBox" id="vbuttonbox2">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="layout_style">GTK_BUTTONBOX_SPREAD</property>
-                        <child>
-                          <widget class="GtkRadioButton" id="split-radiobutton0">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">Analyze all cases.  Do not create groups.</property>
-                            <property name="response_id">0</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                          </widget>
-                        </child>
-                        <child>
-                          <widget class="GtkRadioButton" id="split-radiobutton1">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">Compare groups.</property>
-                            <property name="response_id">0</property>
-                            <property name="draw_indicator">True</property>
-                            <property name="group">split-radiobutton0</property>
-                          </widget>
-                          <packing>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkRadioButton" id="split-radiobutton2">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">Organize output by groups.</property>
-                            <property name="response_id">0</property>
-                            <property name="draw_indicator">True</property>
-                            <property name="group">split-radiobutton0</property>
-                          </widget>
-                          <packing>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkHBox" id="hbox6">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <child>
-                          <widget class="GtkAlignment" id="alignment1">
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="yscale">0.5</property>
-                            <child>
-                              <widget class="PsppireSelector" id="split-file-selector">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="receives_default">True</property>
-                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="border_width">5</property>
-                              </widget>
-                            </child>
-                          </widget>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">18</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkVBox" id="vbox8">
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <child>
-                              <widget class="GtkLabel" id="label5">
-                                <property name="visible">True</property>
-                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="xalign">0</property>
-                                <property name="label" translatable="yes">Groups based on:</property>
-                              </widget>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <widget class="GtkFrame" id="frame4">
-                                <property name="visible">True</property>
-                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="label_yalign">0</property>
-                                <property name="shadow_type">GTK_SHADOW_IN</property>
-                                <child>
-                                  <widget class="GtkScrolledWindow" id="scrolledwindow4">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                    <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                                    <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                                    <child>
-                                      <widget class="GtkTreeView" id="split-file-grouping-vars">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                        <property name="headers_visible">False</property>
-                                        <property name="fixed_height_mode">True</property>
-                                      </widget>
-                                    </child>
-                                  </widget>
-                                </child>
-                                <child>
-                                  <placeholder/>
-                                  <packing>
-                                    <property name="type">label_item</property>
-                                  </packing>
-                                </child>
-                              </widget>
-                              <packing>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                          </widget>
-                          <packing>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkVButtonBox" id="vbuttonbox1">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="homogeneous">True</property>
-                        <property name="layout_style">GTK_BUTTONBOX_SPREAD</property>
-                        <child>
-                          <widget class="GtkRadioButton" id="split-radiobutton3">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">Sort the file by grouping variables.</property>
-                            <property name="use_underline">True</property>
-                            <property name="response_id">0</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                          </widget>
-                        </child>
-                        <child>
-                          <widget class="GtkRadioButton" id="split-radiobutton4">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">File is already sorted.</property>
-                            <property name="use_underline">True</property>
-                            <property name="response_id">0</property>
-                            <property name="draw_indicator">True</property>
-                            <property name="group">split-radiobutton3</property>
-                          </widget>
-                          <packing>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="padding">5</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkHSeparator" id="hseparator1">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkHBox" id="hbox7">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <child>
-                  <widget class="GtkLabel" id="label6">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="xalign">1</property>
-                    <property name="label" translatable="yes">Current Status : </property>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkLabel" id="label7">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="xalign">0</property>
-                    <property name="label" translatable="yes">Analysis by groups is off</property>
-                  </widget>
-                  <packing>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">2</property>
-              </packing>
-            </child>
-          </widget>
-        </child>
-        <child>
-          <widget class="PsppireVButtonBox" id="psppire-buttonbox3">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="border_width">5</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="PsppireDialog" id="sort-cases-dialog">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="title">Sort Cases</property>
-    <property name="modal">True</property>
-    <child internal-child="hbox">
-      <widget class="GtkHBox" id="dialog-hbox4">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="spacing">2</property>
-        <child>
-          <widget class="GtkHBox" id="hbox14">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <child>
-              <widget class="GtkScrolledWindow" id="scrolledwindow6">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-                <child>
-                  <widget class="PsppireDictView" id="sort-cases-treeview1">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="headers_visible">False</property>
-                    <property name="headers_clickable">True</property>
-                  </widget>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkAlignment" id="alignment6">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="yalign">0.25</property>
-                <property name="xscale">0</property>
-                <property name="yscale">0</property>
-                <child>
-                  <widget class="PsppireSelector" id="sort-cases-selector">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="border_width">5</property>
-                  </widget>
-                </child>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkVBox" id="vbox12">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <child>
-                  <widget class="GtkVBox" id="vbox16">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <child>
-                      <widget class="GtkLabel" id="label18">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="xalign">0</property>
-                        <property name="label" translatable="yes">Sort by:</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkScrolledWindow" id="scrolledwindow7">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                        <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                        <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-                        <child>
-                          <widget class="GtkTreeView" id="sort-cases-treeview2">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="headers_visible">False</property>
-                            <property name="headers_clickable">True</property>
-                          </widget>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="padding">5</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkFrame" id="frame9">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <child>
-                      <widget class="GtkAlignment" id="alignment5">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <widget class="GtkVButtonBox" id="vbuttonbox4">
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="layout_style">GTK_BUTTONBOX_SPREAD</property>
-                            <child>
-                              <widget class="GtkRadioButton" id="sort-cases-radiobutton0">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="label" translatable="yes">Ascending</property>
-                                <property name="response_id">0</property>
-                                <property name="active">True</property>
-                                <property name="draw_indicator">True</property>
-                              </widget>
-                            </child>
-                            <child>
-                              <widget class="GtkRadioButton" id="sort-cases-radiobutton1">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="label" translatable="yes">Descending</property>
-                                <property name="response_id">0</property>
-                                <property name="draw_indicator">True</property>
-                                <property name="group">sort-cases-radiobutton0</property>
-                              </widget>
-                              <packing>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                          </widget>
-                        </child>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkLabel" id="label17">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">Sort Order</property>
-                        <property name="use_markup">True</property>
-                      </widget>
-                      <packing>
-                        <property name="type">label_item</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="padding">5</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="position">2</property>
-              </packing>
-            </child>
-          </widget>
-        </child>
-        <child>
-          <widget class="PsppireVButtonBox" id="psppire-buttonbox4">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="border_width">5</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="PsppireDialog" id="compute-variable-dialog">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="title">Compute Variable</property>
-    <property name="modal">True</property>
-    <child internal-child="hbox">
-      <widget class="GtkHBox" id="dialog-hbox5">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="spacing">2</property>
-        <child>
-          <widget class="GtkAlignment" id="alignment8">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="bottom_padding">5</property>
-            <property name="left_padding">5</property>
-            <child>
-              <widget class="GtkHBox" id="hbox15">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <child>
-                  <widget class="GtkVBox" id="vbox19">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="spacing">5</property>
-                    <child>
-                      <widget class="GtkVBox" id="vbox20">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <child>
-                          <widget class="GtkLabel" id="label20">
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="xalign">0</property>
-                            <property name="label" translatable="yes">Target Variable:</property>
-                          </widget>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkEntry" id="compute-entry1">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                          </widget>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkButton" id="compute-button1">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">Type &amp; Label</property>
-                        <property name="response_id">0</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkScrolledWindow" id="scrolledwindow9">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                        <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                        <property name="shadow_type">GTK_SHADOW_IN</property>
-                        <child>
-                          <widget class="PsppireDictView" id="compute-treeview1">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="headers_visible">False</property>
-                          </widget>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkVBox" id="vbox21">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <child>
-                      <widget class="GtkLabel" id="label21">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">=</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="PsppireSelector" id="compute-selector1">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="border_width">5</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </widget>
-            </child>
-          </widget>
-        </child>
-        <child>
-          <widget class="GtkVBox" id="vbox17">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="spacing">5</property>
-            <child>
-              <widget class="GtkVBox" id="vbox18">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <child>
-                  <widget class="GtkLabel" id="label19">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="xalign">0</property>
-                    <property name="label" translatable="yes">Numeric Expressions:</property>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkScrolledWindow" id="scrolledwindow8">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                    <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                    <property name="shadow_type">GTK_SHADOW_IN</property>
-                    <child>
-                      <widget class="GtkTextView" id="compute-textview1">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                      </widget>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkHBox" id="hbox16">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="spacing">5</property>
-                <child>
-                  <widget class="PsppireKeypad" id="psppire-keypad1">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_RELEASE_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_FOCUS_CHANGE_MASK</property>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkVBox" id="vbox22">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <child>
-                      <widget class="GtkHBox" id="hbox17">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <child>
-                          <widget class="GtkLabel" id="label22">
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="xalign">0</property>
-                            <property name="label" translatable="yes">Functions:</property>
-                          </widget>
-                        </child>
-                        <child>
-                          <widget class="PsppireSelector" id="compute-selector2">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="border_width">5</property>
-                            <property name="orientation">PSPPIRE_SELECT_SOURCE_BELOW_DEST</property>
-                          </widget>
-                          <packing>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkScrolledWindow" id="scrolledwindow10">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                        <property name="shadow_type">GTK_SHADOW_IN</property>
-                        <child>
-                          <widget class="GtkTreeView" id="compute-treeview2">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="headers_visible">False</property>
-                          </widget>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkHBox" id="hbox18">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <child>
-                  <widget class="GtkButton" id="button4">
-                    <property name="sensitive">False</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="label" translatable="yes">If...</property>
-                    <property name="response_id">0</property>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkLabel" id="label23">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                  </widget>
-                  <packing>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">2</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="PsppireHButtonBox" id="psppire-hbuttonbox2">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="border_width">5</property>
-                <property name="layout_style">GTK_BUTTONBOX_SPREAD</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="pack_type">GTK_PACK_END</property>
-                <property name="position">3</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="padding">5</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="PsppireDialog" id="select-cases-dialog">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="title">Select Cases</property>
-    <property name="modal">True</property>
-    <property name="orientation">PSPPIRE_VERTICAL</property>
-    <child internal-child="hbox">
-      <widget class="GtkVBox" id="dialog-hbox6">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="spacing">2</property>
-        <child>
-          <widget class="GtkAlignment" id="alignment2">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="top_padding">5</property>
-            <property name="left_padding">5</property>
-            <property name="right_padding">5</property>
-            <child>
-              <widget class="GtkHBox" id="hbox8">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="spacing">5</property>
-                <child>
-                  <widget class="GtkScrolledWindow" id="scrolledwindow5">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                    <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                    <property name="shadow_type">GTK_SHADOW_IN</property>
-                    <child>
-                      <widget class="PsppireDictView" id="select-cases-treeview">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="headers_visible">False</property>
-                        <property name="fixed_height_mode">True</property>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkVBox" id="vbox13">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <child>
-                      <widget class="GtkFrame" id="Select5">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <child>
-                          <widget class="GtkAlignment" id="alignment11">
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="xscale">0</property>
-                            <property name="left_padding">12</property>
-                            <property name="right_padding">5</property>
-                            <child>
-                              <widget class="GtkTable" id="table2">
-                                <property name="visible">True</property>
-                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="n_rows">5</property>
-                                <property name="n_columns">2</property>
-                                <property name="row_spacing">5</property>
-                                <child>
-                                  <widget class="GtkRadioButton" id="radiobutton-all">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                    <property name="response_id">0</property>
-                                    <property name="active">True</property>
-                                    <property name="draw_indicator">True</property>
-                                  </widget>
-                                </child>
-                                <child>
-                                  <widget class="GtkAlignment" id="alignment18">
-                                    <property name="visible">True</property>
-                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                    <property name="xalign">0</property>
-                                    <property name="yalign">0</property>
-                                    <property name="xscale">0</property>
-                                    <property name="yscale">0</property>
-                                    <child>
-                                      <widget class="GtkRadioButton" id="radiobutton-filter-variable">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                        <property name="response_id">0</property>
-                                        <property name="active">True</property>
-                                        <property name="draw_indicator">True</property>
-                                        <property name="group">radiobutton-all</property>
-                                      </widget>
-                                    </child>
-                                  </widget>
-                                  <packing>
-                                    <property name="top_attach">4</property>
-                                    <property name="bottom_attach">5</property>
-                                    <property name="x_options"></property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <widget class="GtkAlignment" id="alignment17">
-                                    <property name="visible">True</property>
-                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                    <property name="xalign">0</property>
-                                    <property name="yalign">0</property>
-                                    <property name="xscale">0</property>
-                                    <property name="yscale">0</property>
-                                    <child>
-                                      <widget class="GtkRadioButton" id="radiobutton-range">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                        <property name="response_id">0</property>
-                                        <property name="active">True</property>
-                                        <property name="draw_indicator">True</property>
-                                        <property name="group">radiobutton-all</property>
-                                      </widget>
-                                    </child>
-                                  </widget>
-                                  <packing>
-                                    <property name="top_attach">3</property>
-                                    <property name="bottom_attach">4</property>
-                                    <property name="x_options"></property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <widget class="GtkAlignment" id="alignment16">
-                                    <property name="visible">True</property>
-                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                    <property name="xalign">0</property>
-                                    <property name="yalign">0</property>
-                                    <property name="xscale">0</property>
-                                    <property name="yscale">0</property>
-                                    <child>
-                                      <widget class="GtkRadioButton" id="radiobutton-sample">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                        <property name="response_id">0</property>
-                                        <property name="active">True</property>
-                                        <property name="draw_indicator">True</property>
-                                        <property name="group">radiobutton-all</property>
-                                      </widget>
-                                    </child>
-                                  </widget>
-                                  <packing>
-                                    <property name="top_attach">2</property>
-                                    <property name="bottom_attach">3</property>
-                                    <property name="x_options"></property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <widget class="GtkAlignment" id="alignment13">
-                                    <property name="visible">True</property>
-                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                    <property name="xalign">0</property>
-                                    <property name="yalign">0</property>
-                                    <property name="xscale">0</property>
-                                    <property name="yscale">0</property>
-                                    <child>
-                                      <widget class="GtkRadioButton" id="radiobutton-if">
-                                        <property name="sensitive">False</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                        <property name="response_id">0</property>
-                                        <property name="active">True</property>
-                                        <property name="draw_indicator">True</property>
-                                        <property name="group">radiobutton-all</property>
-                                      </widget>
-                                    </child>
-                                  </widget>
-                                  <packing>
-                                    <property name="top_attach">1</property>
-                                    <property name="bottom_attach">2</property>
-                                    <property name="x_options"></property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <widget class="GtkVBox" id="vbox26">
-                                    <property name="visible">True</property>
-                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                    <child>
-                                      <widget class="GtkLabel" id="label25">
-                                        <property name="visible">True</property>
-                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                        <property name="xalign">0</property>
-                                        <property name="label" translatable="yes">Use filter variable</property>
-                                      </widget>
-                                    </child>
-                                    <child>
-                                      <widget class="GtkHBox" id="hbox19">
-                                        <property name="visible">True</property>
-                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                        <child>
-                                          <widget class="PsppireSelector" id="psppire-selector-filter">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">True</property>
-                                            <property name="receives_default">True</property>
-                                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                            <property name="border_width">5</property>
-                                          </widget>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <widget class="GtkEntry" id="filter-variable-entry">
-                                            <property name="visible">True</property>
-                                            <property name="sensitive">False</property>
-                                            <property name="can_focus">True</property>
-                                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                          </widget>
-                                          <packing>
-                                            <property name="position">1</property>
-                                          </packing>
-                                        </child>
-                                      </widget>
-                                      <packing>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </widget>
-                                  <packing>
-                                    <property name="left_attach">1</property>
-                                    <property name="right_attach">2</property>
-                                    <property name="top_attach">4</property>
-                                    <property name="bottom_attach">5</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <widget class="GtkVBox" id="vbox25">
-                                    <property name="visible">True</property>
-                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                    <child>
-                                      <widget class="GtkLabel" id="label15">
-                                        <property name="visible">True</property>
-                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                        <property name="xalign">0</property>
-                                        <property name="label" translatable="yes">Based on time or case range</property>
-                                      </widget>
-                                    </child>
-                                    <child>
-                                      <widget class="GtkHBox" id="hbox12">
-                                        <property name="visible">True</property>
-                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                        <child>
-                                          <widget class="GtkButton" id="button-range">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">True</property>
-                                            <property name="receives_default">True</property>
-                                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                            <property name="label" translatable="yes">Range...</property>
-                                            <property name="response_id">0</property>
-                                          </widget>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <widget class="GtkLabel" id="range-sample-label">
-                                            <property name="visible">True</property>
-                                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                          </widget>
-                                          <packing>
-                                            <property name="position">1</property>
-                                          </packing>
-                                        </child>
-                                      </widget>
-                                      <packing>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </widget>
-                                  <packing>
-                                    <property name="left_attach">1</property>
-                                    <property name="right_attach">2</property>
-                                    <property name="top_attach">3</property>
-                                    <property name="bottom_attach">4</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <widget class="GtkVBox" id="vbox24">
-                                    <property name="visible">True</property>
-                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                    <child>
-                                      <widget class="GtkLabel" id="label13">
-                                        <property name="visible">True</property>
-                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                        <property name="xalign">0</property>
-                                        <property name="label" translatable="yes">Random sample of cases</property>
-                                      </widget>
-                                    </child>
-                                    <child>
-                                      <widget class="GtkHBox" id="hbox11">
-                                        <property name="visible">True</property>
-                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                        <property name="spacing">5</property>
-                                        <child>
-                                          <widget class="GtkButton" id="button-sample">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">True</property>
-                                            <property name="receives_default">True</property>
-                                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                            <property name="label" translatable="yes">Sample...</property>
-                                            <property name="response_id">0</property>
-                                          </widget>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <widget class="GtkLabel" id="random-sample-label">
-                                            <property name="visible">True</property>
-                                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                          </widget>
-                                          <packing>
-                                            <property name="position">1</property>
-                                          </packing>
-                                        </child>
-                                      </widget>
-                                      <packing>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </widget>
-                                  <packing>
-                                    <property name="left_attach">1</property>
-                                    <property name="right_attach">2</property>
-                                    <property name="top_attach">2</property>
-                                    <property name="bottom_attach">3</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <widget class="GtkVBox" id="vbox14">
-                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                    <child>
-                                      <widget class="GtkLabel" id="label11">
-                                        <property name="visible">True</property>
-                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                        <property name="xalign">0</property>
-                                        <property name="label" translatable="yes">If condition is satisfied</property>
-                                      </widget>
-                                    </child>
-                                    <child>
-                                      <widget class="GtkHBox" id="hbox9">
-                                        <property name="visible">True</property>
-                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                        <child>
-                                          <widget class="GtkButton" id="button-if">
-                                            <property name="visible">True</property>
-                                            <property name="sensitive">False</property>
-                                            <property name="can_focus">True</property>
-                                            <property name="receives_default">True</property>
-                                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                            <property name="label" translatable="yes">If...</property>
-                                            <property name="response_id">0</property>
-                                          </widget>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <widget class="GtkLabel" id="label26">
-                                            <property name="visible">True</property>
-                                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                          </widget>
-                                          <packing>
-                                            <property name="position">1</property>
-                                          </packing>
-                                        </child>
-                                      </widget>
-                                      <packing>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </widget>
-                                  <packing>
-                                    <property name="left_attach">1</property>
-                                    <property name="right_attach">2</property>
-                                    <property name="top_attach">1</property>
-                                    <property name="bottom_attach">2</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <widget class="GtkLabel" id="label10">
-                                    <property name="visible">True</property>
-                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                    <property name="xalign">0</property>
-                                    <property name="label" translatable="yes">All Cases</property>
-                                  </widget>
-                                  <packing>
-                                    <property name="left_attach">1</property>
-                                    <property name="right_attach">2</property>
-                                  </packing>
-                                </child>
-                              </widget>
-                            </child>
-                          </widget>
-                        </child>
-                        <child>
-                          <widget class="GtkLabel" id="Select6">
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">Select</property>
-                            <property name="use_markup">True</property>
-                          </widget>
-                          <packing>
-                            <property name="type">label_item</property>
-                          </packing>
-                        </child>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkFrame" id="frame8">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <child>
-                          <widget class="GtkAlignment" id="alignment12">
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="left_padding">12</property>
-                            <child>
-                              <widget class="GtkHButtonBox" id="filter-delete-button-box">
-                                <property name="visible">True</property>
-                                <property name="sensitive">False</property>
-                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="layout_style">GTK_BUTTONBOX_SPREAD</property>
-                                <child>
-                                  <widget class="GtkRadioButton" id="radiobutton-filter">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                    <property name="label" translatable="yes">Filtered</property>
-                                    <property name="response_id">0</property>
-                                    <property name="active">True</property>
-                                    <property name="draw_indicator">True</property>
-                                  </widget>
-                                </child>
-                                <child>
-                                  <widget class="GtkRadioButton" id="radiobutton-delete">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                    <property name="label" translatable="yes">Deleted</property>
-                                    <property name="response_id">0</property>
-                                    <property name="active">True</property>
-                                    <property name="draw_indicator">True</property>
-                                    <property name="group">radiobutton-filter</property>
-                                  </widget>
-                                  <packing>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                              </widget>
-                            </child>
-                          </widget>
-                        </child>
-                        <child>
-                          <widget class="GtkLabel" id="label9">
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">Unselected Cases Are</property>
-                            <property name="use_markup">True</property>
-                          </widget>
-                          <packing>
-                            <property name="type">label_item</property>
-                          </packing>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="pack_type">GTK_PACK_END</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </widget>
-            </child>
-          </widget>
-        </child>
-        <child>
-          <widget class="PsppireHButtonBox" id="psppire-hbuttonbox3">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="border_width">5</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="PsppireDialog" id="comments-dialog">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="title">Data File Comments</property>
-    <property name="modal">True</property>
-    <property name="orientation">PSPPIRE_VERTICAL</property>
-    <child internal-child="hbox">
-      <widget class="GtkVBox" id="dialog-hbox7">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="spacing">2</property>
-        <child>
-          <widget class="GtkAlignment" id="alignment7">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="left_padding">5</property>
-            <property name="right_padding">5</property>
-            <child>
-              <widget class="GtkVBox" id="vbox9">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <child>
-                  <widget class="GtkLabel" id="label16">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="xalign">0</property>
-                    <property name="label" translatable="yes">Comments:</property>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkScrolledWindow" id="scrolledwindow11">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                    <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                    <property name="shadow_type">GTK_SHADOW_IN</property>
-                    <child>
-                      <widget class="GtkTextView" id="comments-textview1">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                      </widget>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </widget>
-            </child>
-          </widget>
-          <packing>
-            <property name="padding">5</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkHBox" id="hbox13">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <child>
-              <widget class="GtkCheckButton" id="comments-checkbutton1">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label" translatable="yes">Display comments in output</property>
-                <property name="response_id">0</property>
-                <property name="draw_indicator">True</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="padding">5</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkLabel" id="column-number-label">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="xalign">1</property>
-                <property name="label" translatable="yes">Column Number: 0</property>
-              </widget>
-              <packing>
-                <property name="padding">5</property>
-                <property name="pack_type">GTK_PACK_END</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-            <property name="position">2</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="PsppireHButtonBox" id="psppire-hbuttonbox1">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="border_width">5</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="PsppireDialog" id="select-cases-range-dialog">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="title">Select Cases: Range</property>
-    <property name="modal">True</property>
-    <property name="orientation">PSPPIRE_VERTICAL</property>
-    <child internal-child="hbox">
-      <widget class="GtkVBox" id="dialog-hbox10">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="spacing">2</property>
-        <child>
-          <widget class="GtkTable" id="table3">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="n_rows">2</property>
-            <property name="n_columns">3</property>
-            <property name="column_spacing">5</property>
-            <child>
-              <widget class="GtkSpinButton" id="range-dialog-last">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="truncate_multiline">True</property>
-                <property name="adjustment">1 1 100 1 10 10</property>
-              </widget>
-              <packing>
-                <property name="left_attach">2</property>
-                <property name="right_attach">3</property>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkSpinButton" id="range-dialog-first">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="truncate_multiline">True</property>
-                <property name="adjustment">0 1 0 1 10 10</property>
-              </widget>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkLabel" id="label8">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label" translatable="yes">First case</property>
-              </widget>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="x_options"></property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkLabel" id="label12">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label" translatable="yes">Last case</property>
-              </widget>
-              <packing>
-                <property name="left_attach">2</property>
-                <property name="right_attach">3</property>
-                <property name="x_options"></property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkLabel" id="label14">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label" translatable="yes">Observation</property>
-              </widget>
-              <packing>
-                <property name="bottom_attach">2</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="fill">False</property>
-            <property name="padding">5</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="PsppireHButtonBox" id="psppire-hbuttonbox4">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="border_width">5</property>
-            <property name="buttons">PSPPIRE_BUTTON_CONTINUE_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="PsppireDialog" id="type-and-label-dialog">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="title">Compute Variable: Type and Label</property>
-    <property name="modal">True</property>
-    <child internal-child="hbox">
-      <widget class="GtkHBox" id="dialog-hbox9">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="spacing">2</property>
-        <child>
-          <widget class="GtkVBox" id="vbox24">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <child>
-              <widget class="GtkFrame" id="Label">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="border_width">5</property>
-                <child>
-                  <widget class="GtkAlignment" id="alignment11">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="left_padding">12</property>
-                    <child>
-                      <widget class="GtkTable" id="table2">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="border_width">5</property>
-                        <property name="n_rows">2</property>
-                        <property name="n_columns">2</property>
-                        <child>
-                          <widget class="GtkLabel" id="label27">
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="xalign">0</property>
-                            <property name="label" translatable="yes">Use expression as label</property>
-                          </widget>
-                          <packing>
-                            <property name="left_attach">1</property>
-                            <property name="right_attach">2</property>
-                            <property name="top_attach">1</property>
-                            <property name="bottom_attach">2</property>
-                            <property name="y_options"></property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkHBox" id="hbox19">
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="spacing">5</property>
-                            <child>
-                              <widget class="GtkLabel" id="label26">
-                                <property name="visible">True</property>
-                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="label" translatable="yes">Label:</property>
-                              </widget>
-                              <packing>
-                                <property name="expand">False</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <widget class="GtkEntry" id="type-and-label-label-entry">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                              </widget>
-                              <packing>
-                                <property name="pack_type">GTK_PACK_END</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                          </widget>
-                          <packing>
-                            <property name="left_attach">1</property>
-                            <property name="right_attach">2</property>
-                            <property name="y_options"></property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkRadioButton" id="radio-button-expression-label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="response_id">0</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <property name="group">radio-button-user-label</property>
-                          </widget>
-                          <packing>
-                            <property name="top_attach">1</property>
-                            <property name="bottom_attach">2</property>
-                            <property name="x_options"></property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkRadioButton" id="radio-button-user-label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="response_id">0</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                          </widget>
-                          <packing>
-                            <property name="x_options"></property>
-                          </packing>
-                        </child>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkLabel" id="label25">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="label" translatable="yes">Label</property>
-                    <property name="use_markup">True</property>
-                  </widget>
-                  <packing>
-                    <property name="type">label_item</property>
-                  </packing>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkFrame" id="frame7">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="border_width">5</property>
-                <child>
-                  <widget class="GtkAlignment" id="alignment10">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="left_padding">12</property>
-                    <child>
-                      <widget class="GtkTable" id="table3">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="border_width">5</property>
-                        <property name="n_rows">2</property>
-                        <property name="n_columns">2</property>
-                        <child>
-                          <widget class="GtkHBox" id="hbox20">
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <child>
-                              <widget class="GtkLabel" id="label29">
-                                <property name="visible">True</property>
-                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="xalign">0</property>
-                                <property name="label" translatable="yes">String</property>
-                              </widget>
-                            </child>
-                            <child>
-                              <widget class="GtkHBox" id="hbox21">
-                                <property name="visible">True</property>
-                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <child>
-                                  <widget class="GtkLabel" id="label30">
-                                    <property name="visible">True</property>
-                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                    <property name="label" translatable="yes">Width</property>
-                                  </widget>
-                                </child>
-                                <child>
-                                  <widget class="GtkSpinButton" id="type-and-label-width">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                    <property name="adjustment">8 1 32767 1 10 10</property>
-                                  </widget>
-                                  <packing>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                              </widget>
-                              <packing>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                          </widget>
-                          <packing>
-                            <property name="left_attach">1</property>
-                            <property name="right_attach">2</property>
-                            <property name="top_attach">1</property>
-                            <property name="bottom_attach">2</property>
-                            <property name="x_options">GTK_FILL</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkRadioButton" id="radio-button-string">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="response_id">0</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                          </widget>
-                          <packing>
-                            <property name="top_attach">1</property>
-                            <property name="bottom_attach">2</property>
-                            <property name="x_options"></property>
-                            <property name="y_options"></property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkRadioButton" id="radio-button-numeric">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="response_id">0</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <property name="group">radio-button-string</property>
-                          </widget>
-                          <packing>
-                            <property name="x_options"></property>
-                            <property name="y_options"></property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkLabel" id="label28">
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="xalign">0</property>
-                            <property name="label" translatable="yes">Numeric</property>
-                          </widget>
-                          <packing>
-                            <property name="left_attach">1</property>
-                            <property name="right_attach">2</property>
-                          </packing>
-                        </child>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkLabel" id="label15">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="label" translatable="yes">Type</property>
-                    <property name="use_markup">True</property>
-                  </widget>
-                  <packing>
-                    <property name="type">label_item</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </widget>
-        </child>
-        <child>
-          <widget class="PsppireVButtonBox" id="psppire-vbuttonbox1">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="border_width">5</property>
-            <property name="buttons">PSPPIRE_BUTTON_CONTINUE_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="PsppireDialog" id="goto-case-dialog">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="title">Goto Case</property>
-    <property name="modal">True</property>
-    <property name="orientation">PSPPIRE_VERTICAL</property>
-    <child internal-child="hbox">
-      <widget class="GtkVBox" id="dialog-hbox10">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="spacing">5</property>
-        <child>
-          <widget class="GtkHBox" id="hbox22">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="spacing">5</property>
-            <child>
-              <widget class="GtkLabel" id="label31">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="xalign">1</property>
-                <property name="label" translatable="yes">Goto Case Number:</property>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkSpinButton" id="goto-case-case-num-entry">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="adjustment">1 1 100 1 10 10</property>
-              </widget>
-              <packing>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="fill">False</property>
-            <property name="padding">5</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="PsppireHButtonBox" id="psppire-hbuttonbox4">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="border_width">5</property>
-            <property name="layout_style">GTK_BUTTONBOX_SPREAD</property>
-            <property name="buttons">PSPPIRE_BUTTON_GOTO_MASK | PSPPIRE_BUTTON_CANCEL_MASK</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="PsppireDialog" id="select-cases-random-sample-dialog">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="title">Select Cases: Random Sample</property>
-    <property name="modal">True</property>
-    <property name="orientation">PSPPIRE_VERTICAL</property>
-    <child internal-child="hbox">
-      <widget class="GtkVBox" id="dialog-hbox13">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="spacing">2</property>
-        <child>
-          <widget class="GtkFrame" id="frame6">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <child>
-              <widget class="GtkAlignment" id="alignment3">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="top_padding">5</property>
-                <property name="bottom_padding">5</property>
-                <property name="left_padding">5</property>
-                <property name="right_padding">5</property>
-                <child>
-                  <widget class="GtkTable" id="select-cases-random-sample-table">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="n_rows">2</property>
-                    <property name="n_columns">2</property>
-                    <property name="column_spacing">5</property>
-                    <property name="row_spacing">5</property>
-                    <child>
-                      <widget class="GtkRadioButton" id="radiobutton-sample-percent">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="response_id">0</property>
-                        <property name="active">True</property>
-                        <property name="draw_indicator">True</property>
-                      </widget>
-                      <packing>
-                        <property name="x_options"></property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkRadioButton" id="radiobutton-sample-n-cases">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="response_id">0</property>
-                        <property name="active">True</property>
-                        <property name="draw_indicator">True</property>
-                        <property name="group">radiobutton-sample-percent</property>
-                      </widget>
-                      <packing>
-                        <property name="top_attach">1</property>
-                        <property name="bottom_attach">2</property>
-                        <property name="x_options"></property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkAlignment" id="alignment4">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="xalign">0</property>
-                        <property name="xscale">0</property>
-                        <child>
-                          <placeholder/>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkAlignment" id="alignment9">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="xalign">0</property>
-                        <property name="xscale">0</property>
-                        <child>
-                          <placeholder/>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                        <property name="top_attach">1</property>
-                        <property name="bottom_attach">2</property>
-                      </packing>
-                    </child>
-                  </widget>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkLabel" id="label32">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label" translatable="yes">Sample Size</property>
-                <property name="use_markup">True</property>
-              </widget>
-              <packing>
-                <property name="type">label_item</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="padding">5</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="PsppireHButtonBox" id="psppire-hbuttonbox5">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="border_width">5</property>
-            <property name="buttons">PSPPIRE_BUTTON_CONTINUE_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-</glade-interface>
index cfe49e9182aaa0f374eaec352e50e7c652d80cac..27a633f2ecf35c57cd30dc01ac85aa4a61db28a9 100644 (file)
@@ -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
@@ -24,9 +24,9 @@ extern const struct argp non_option_argp ;
 
 void initialize (struct command_line_processor *, int argc, char **argv);
 void de_initialize (void);
+
 void psppire_quit (void);
 
 const char * output_file_name (void);
 
-
 #endif /* PSPPIRE_H */
diff --git a/src/ui/gui/psppire.ui b/src/ui/gui/psppire.ui
new file mode 100644 (file)
index 0000000..baff30f
--- /dev/null
@@ -0,0 +1,2489 @@
+<?xml version="1.0"?>
+<interface>
+  <requires lib="psppire" version="2054.17080"/>
+  <!-- interface-requires gtk+ 2.12 -->
+  <!-- interface-naming-policy project-wide -->
+  <object class="PsppireDialog" id="weight-cases-dialog">
+    <property name="title">Weight Cases</property>
+    <property name="modal">True</property>
+    <child internal-child="hbox">
+      <object class="GtkHBox" id="dialog-hbox2">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_ENTER_NOTIFY_MASK</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkHBox" id="hbox4">
+            <property name="visible">True</property>
+            <child>
+              <object class="GtkScrolledWindow" id="scrolledwindow1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="hscrollbar_policy">never</property>
+                <property name="vscrollbar_policy">automatic</property>
+                <property name="shadow_type">etched-in</property>
+                <child>
+                  <object class="PsppireDictView" id="weight-cases-treeview">
+                    <property name="visible">True</property>
+                    <property name="headers_visible">False</property>
+                    <property name="fixed_height_mode">True</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkVBox" id="vbox4">
+                <property name="visible">True</property>
+                <property name="orientation">vertical</property>
+                <child>
+                  <object class="GtkFrame" id="frame1">
+                    <property name="visible">True</property>
+                    <property name="border_width">5</property>
+                    <property name="label_xalign">0</property>
+                    <child>
+                      <object class="GtkVBox" id="vbox2">
+                        <property name="visible">True</property>
+                        <property name="border_width">5</property>
+                        <property name="orientation">vertical</property>
+                        <child>
+                          <object class="GtkRadioButton" id="weight-cases-radiobutton1">
+                            <property name="label" translatable="yes">Do not weight cases</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="receives_default">False</property>
+                            <property name="focus_on_click">False</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" id="radiobutton2">
+                            <property name="label" translatable="yes">Weight cases by</property>
+                            <property name="visible">True</property>
+                            <property name="sensitive">False</property>
+                            <property name="can_focus">False</property>
+                            <property name="receives_default">False</property>
+                            <property name="focus_on_click">False</property>
+                            <property name="draw_indicator">True</property>
+                            <property name="group">weight-cases-radiobutton1</property>
+                          </object>
+                          <packing>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkHBox" id="hbox3">
+                            <property name="visible">True</property>
+                            <child>
+                              <object class="PsppireSelector" id="weight-cases-selector">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="receives_default">False</property>
+                                <property name="border_width">5</property>
+                              </object>
+                              <packing>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkVBox" id="vbox3">
+                                <property name="visible">True</property>
+                                <property name="orientation">vertical</property>
+                                <child>
+                                  <object class="GtkLabel" id="label3">
+                                    <property name="visible">True</property>
+                                    <property name="label" translatable="yes">Frequency Variable</property>
+                                  </object>
+                                  <packing>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkEntry" id="weight-cases-entry">
+                                    <property name="visible">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label_item">
+                      <placeholder/>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkHBox" id="hbox2">
+                    <property name="visible">True</property>
+                    <child>
+                      <object class="GtkLabel" id="label2">
+                        <property name="visible">True</property>
+                        <property name="xalign">1</property>
+                        <property name="label" translatable="yes">Current Status: </property>
+                      </object>
+                      <packing>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="weight-status-label">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Do not weight cases</property>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="padding">5</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="PsppireVButtonBox" id="psppire-buttonbox1">
+            <property name="visible">True</property>
+            <property name="border_width">5</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="PsppireDialog" id="transpose-dialog">
+    <property name="title">Transpose</property>
+    <property name="modal">True</property>
+    <child internal-child="hbox">
+      <object class="GtkHBox" id="dialog-hbox1">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_ENTER_NOTIFY_MASK</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkHBox" id="hbox1">
+            <property name="visible">True</property>
+            <child>
+              <object class="GtkFrame" id="frame3">
+                <property name="visible">True</property>
+                <property name="label_xalign">0</property>
+                <property name="shadow_type">in</property>
+                <child>
+                  <object class="GtkScrolledWindow" id="scrolledwindow3">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="hscrollbar_policy">never</property>
+                    <property name="vscrollbar_policy">automatic</property>
+                    <child>
+                      <object class="PsppireDictView" id="source-treeview">
+                        <property name="visible">True</property>
+                        <property name="headers_visible">False</property>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child type="label_item">
+                  <placeholder/>
+                </child>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkTable" id="table2">
+                <property name="visible">True</property>
+                <property name="n_rows">2</property>
+                <property name="n_columns">2</property>
+                <property name="column_spacing">5</property>
+                <property name="row_spacing">5</property>
+                <child>
+                  <object class="GtkVBox" id="vbox5">
+                    <property name="visible">True</property>
+                    <property name="orientation">vertical</property>
+                    <child>
+                      <object class="GtkLabel" id="label4">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Name Variable:</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="new-name-entry">
+                        <property name="visible">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
+                    <property name="y_options"></property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkVBox" id="vbox1">
+                    <property name="visible">True</property>
+                    <property name="orientation">vertical</property>
+                    <child>
+                      <object class="GtkLabel" id="label1">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Variable(s):</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkFrame" id="frame2">
+                        <property name="visible">True</property>
+                        <property name="label_xalign">0</property>
+                        <property name="shadow_type">in</property>
+                        <child>
+                          <object class="GtkScrolledWindow" id="scrolledwindow2">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="hscrollbar_policy">never</property>
+                            <property name="vscrollbar_policy">automatic</property>
+                            <child>
+                              <object class="GtkTreeView" id="variables-treeview">
+                                <property name="visible">True</property>
+                                <property name="headers_visible">False</property>
+                              </object>
+                            </child>
+                          </object>
+                        </child>
+                        <child type="label_item">
+                          <placeholder/>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="PsppireSelector" id="psppire-selector3">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="receives_default">False</property>
+                    <property name="border_width">5</property>
+                  </object>
+                  <packing>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
+                    <property name="x_options"></property>
+                    <property name="y_options">GTK_FILL</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="PsppireSelector" id="psppire-selector2">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="receives_default">False</property>
+                    <property name="border_width">5</property>
+                  </object>
+                  <packing>
+                    <property name="x_options"></property>
+                    <property name="y_options"></property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="padding">5</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="padding">5</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="PsppireVButtonBox" id="psppire-buttonbox2">
+            <property name="visible">True</property>
+            <property name="border_width">5</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="PsppireDialog" id="split-file-dialog">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="title">Split File</property>
+    <property name="modal">True</property>
+    <child internal-child="hbox">
+      <object class="GtkHBox" id="dialog-hbox3">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkVBox" id="vbox6">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="orientation">vertical</property>
+            <child>
+              <object class="GtkHBox" id="hbox5">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <child>
+                  <object class="GtkFrame" id="frame5">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">in</property>
+                    <child>
+                      <object class="GtkScrolledWindow" id="scrolledwindow4">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="hscrollbar_policy">never</property>
+                        <property name="vscrollbar_policy">automatic</property>
+                        <child>
+                          <object class="PsppireDictView" id="split-file-dict-treeview">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="headers_visible">False</property>
+                            <property name="fixed_height_mode">True</property>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label_item">
+                      <placeholder/>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkVBox" id="vbox7">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="orientation">vertical</property>
+                    <child>
+                      <object class="GtkVButtonBox" id="vbuttonbox2">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="layout_style">spread</property>
+                        <child>
+                          <object class="GtkRadioButton" id="split-radiobutton0">
+                            <property name="label" translatable="yes">Analyze all cases.  Do not create groups.</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" id="split-radiobutton1">
+                            <property name="label" translatable="yes">Compare groups.</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="draw_indicator">True</property>
+                            <property name="group">split-radiobutton0</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" id="split-radiobutton2">
+                            <property name="label" translatable="yes">Organize output by groups.</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="draw_indicator">True</property>
+                            <property name="group">split-radiobutton0</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkHBox" id="hbox6">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <child>
+                          <object class="GtkAlignment" id="alignment2">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="yscale">0.5</property>
+                            <child>
+                              <object class="PsppireSelector" id="split-file-selector">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">True</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="border_width">5</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">18</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkVBox" id="vbox8">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="orientation">vertical</property>
+                            <child>
+                              <object class="GtkLabel" id="label5">
+                                <property name="visible">True</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">Groups based on:</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkFrame" id="frame4">
+                                <property name="visible">True</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="label_xalign">0</property>
+                                <property name="label_yalign">0</property>
+                                <property name="shadow_type">in</property>
+                                <child>
+                                  <object class="GtkScrolledWindow" id="scrolledwindow5">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                    <property name="hscrollbar_policy">never</property>
+                                    <property name="vscrollbar_policy">automatic</property>
+                                    <child>
+                                      <object class="GtkTreeView" id="split-file-grouping-vars">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                        <property name="headers_visible">False</property>
+                                        <property name="fixed_height_mode">True</property>
+                                      </object>
+                                    </child>
+                                  </object>
+                                </child>
+                                <child type="label_item">
+                                  <placeholder/>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkVButtonBox" id="vbuttonbox1">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="homogeneous">True</property>
+                        <property name="layout_style">spread</property>
+                        <child>
+                          <object class="GtkRadioButton" id="split-radiobutton3">
+                            <property name="label" translatable="yes">Sort the file by grouping variables.</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="use_underline">True</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" id="split-radiobutton4">
+                            <property name="label" translatable="yes">File is already sorted.</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="use_underline">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property name="group">split-radiobutton3</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="padding">5</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHSeparator" id="hseparator1">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHBox" id="hbox7">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <child>
+                  <object class="GtkLabel" id="label6">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="xalign">1</property>
+                    <property name="label" translatable="yes">Current Status : </property>
+                  </object>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="label7">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="xalign">0</property>
+                    <property name="label" translatable="yes">Analysis by groups is off</property>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="PsppireVButtonBox" id="psppire-buttonbox3">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="border_width">5</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="PsppireDialog" id="sort-cases-dialog">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="title">Sort Cases</property>
+    <property name="modal">True</property>
+    <child internal-child="hbox">
+      <object class="GtkHBox" id="dialog-hbox4">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkHBox" id="hbox14">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <child>
+              <object class="GtkScrolledWindow" id="scrolledwindow6">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="hscrollbar_policy">never</property>
+                <property name="vscrollbar_policy">automatic</property>
+                <property name="shadow_type">etched-in</property>
+                <child>
+                  <object class="PsppireDictView" id="sort-cases-treeview1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="headers_visible">False</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkAlignment" id="alignment6">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="yalign">0.25</property>
+                <property name="xscale">0</property>
+                <property name="yscale">0</property>
+                <child>
+                  <object class="PsppireSelector" id="sort-cases-selector">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="border_width">5</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkVBox" id="vbox12">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <child>
+                  <object class="GtkVBox" id="vbox16">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="orientation">vertical</property>
+                    <child>
+                      <object class="GtkLabel" id="label18">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Sort by:</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkScrolledWindow" id="scrolledwindow7">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="hscrollbar_policy">never</property>
+                        <property name="vscrollbar_policy">automatic</property>
+                        <property name="shadow_type">etched-in</property>
+                        <child>
+                          <object class="GtkTreeView" id="sort-cases-treeview2">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="headers_visible">False</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="padding">5</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkFrame" id="frame9">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="label_xalign">0</property>
+                    <child>
+                      <object class="GtkAlignment" id="alignment5">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkVButtonBox" id="vbuttonbox4">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="layout_style">spread</property>
+                            <child>
+                              <object class="GtkRadioButton" id="sort-cases-radiobutton0">
+                                <property name="label" translatable="yes">Ascending</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="active">True</property>
+                                <property name="draw_indicator">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkRadioButton" id="sort-cases-radiobutton1">
+                                <property name="label" translatable="yes">Descending</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="draw_indicator">True</property>
+                                <property name="group">sort-cases-radiobutton0</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" id="label17">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="label" translatable="yes">Sort Order</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="padding">5</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="PsppireVButtonBox" id="psppire-buttonbox4">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="border_width">5</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="PsppireDialog" id="compute-variable-dialog">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="title">Compute Variable</property>
+    <property name="modal">True</property>
+    <child internal-child="hbox">
+      <object class="GtkHBox" id="dialog-hbox5">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkAlignment" id="alignment8">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="bottom_padding">5</property>
+            <property name="left_padding">5</property>
+            <child>
+              <object class="GtkHBox" id="hbox15">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <child>
+                  <object class="GtkVBox" id="vbox19">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="orientation">vertical</property>
+                    <property name="spacing">5</property>
+                    <child>
+                      <object class="GtkVBox" id="vbox20">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="orientation">vertical</property>
+                        <child>
+                          <object class="GtkLabel" id="label20">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Target Variable:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkEntry" id="compute-entry1">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkButton" id="compute-button1">
+                        <property name="label" translatable="yes">Type &amp; Label</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkScrolledWindow" id="scrolledwindow9">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="hscrollbar_policy">automatic</property>
+                        <property name="vscrollbar_policy">automatic</property>
+                        <property name="shadow_type">in</property>
+                        <child>
+                          <object class="PsppireDictView" id="compute-treeview1">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="headers_visible">False</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkVBox" id="vbox21">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="orientation">vertical</property>
+                    <child>
+                      <object class="GtkLabel" id="label21">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="label" translatable="yes">=</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="PsppireSelector" id="compute-selector1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="border_width">5</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkVBox" id="vbox17">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="orientation">vertical</property>
+            <property name="spacing">5</property>
+            <child>
+              <object class="GtkVBox" id="vbox18">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="orientation">vertical</property>
+                <child>
+                  <object class="GtkLabel" id="label19">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="xalign">0</property>
+                    <property name="label" translatable="yes">Numeric Expressions:</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkScrolledWindow" id="scrolledwindow8">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="hscrollbar_policy">automatic</property>
+                    <property name="vscrollbar_policy">automatic</property>
+                    <property name="shadow_type">in</property>
+                    <child>
+                      <object class="GtkTextView" id="compute-textview1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHBox" id="hbox16">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="spacing">5</property>
+                <child>
+                  <object class="PsppireKeypad" id="psppire-keypad1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_RELEASE_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_FOCUS_CHANGE_MASK</property>
+                  </object>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkVBox" id="vbox22">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="orientation">vertical</property>
+                    <child>
+                      <object class="GtkHBox" id="hbox17">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <child>
+                          <object class="GtkLabel" id="label22">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Functions:</property>
+                          </object>
+                          <packing>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="PsppireSelector" id="compute-selector2">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="border_width">5</property>
+                            <property name="orientation">source below destination</property>
+                          </object>
+                          <packing>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkScrolledWindow" id="scrolledwindow10">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="hscrollbar_policy">never</property>
+                        <property name="shadow_type">in</property>
+                        <child>
+                          <object class="GtkTreeView" id="compute-treeview2">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="headers_visible">False</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHBox" id="hbox18">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <child>
+                  <object class="GtkButton" id="button4">
+                    <property name="label" translatable="yes">If...</property>
+                    <property name="sensitive">False</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="label23">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="PsppireHButtonBox" id="psppire-hbuttonbox1">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="border_width">5</property>
+                <property name="layout_style">spread</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="pack_type">end</property>
+                <property name="position">3</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="padding">5</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="PsppireDialog" id="select-cases-dialog">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="title">Select Cases</property>
+    <property name="modal">True</property>
+    <property name="orientation">Vertical</property>
+    <child internal-child="hbox">
+      <object class="GtkVBox" id="dialog-hbox6">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkAlignment" id="alignment1">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="top_padding">5</property>
+            <property name="left_padding">5</property>
+            <property name="right_padding">5</property>
+            <child>
+              <object class="GtkHBox" id="hbox8">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="spacing">5</property>
+                <child>
+                  <object class="GtkScrolledWindow" id="scrolledwindow11">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="hscrollbar_policy">automatic</property>
+                    <property name="vscrollbar_policy">automatic</property>
+                    <property name="shadow_type">in</property>
+                    <child>
+                      <object class="PsppireDictView" id="select-cases-treeview">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="headers_visible">False</property>
+                        <property name="fixed_height_mode">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkVBox" id="vbox13">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <child>
+                      <object class="GtkFrame" id="Select5">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="label_xalign">0</property>
+                        <child>
+                          <object class="GtkAlignment" id="alignment11">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="xscale">0</property>
+                            <property name="left_padding">12</property>
+                            <property name="right_padding">5</property>
+                            <child>
+                              <object class="GtkTable" id="table1">
+                                <property name="visible">True</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="n_rows">5</property>
+                                <property name="n_columns">2</property>
+                                <property name="row_spacing">5</property>
+                                <child>
+                                  <object class="GtkRadioButton" id="radiobutton-all">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                    <property name="active">True</property>
+                                    <property name="draw_indicator">True</property>
+                                  </object>
+                                </child>
+                                <child>
+                                  <object class="GtkAlignment" id="alignment18">
+                                    <property name="visible">True</property>
+                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                    <property name="xalign">0</property>
+                                    <property name="yalign">0</property>
+                                    <property name="xscale">0</property>
+                                    <property name="yscale">0</property>
+                                    <child>
+                                      <object class="GtkRadioButton" id="radiobutton-filter-variable">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="receives_default">False</property>
+                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                        <property name="active">True</property>
+                                        <property name="draw_indicator">True</property>
+                                        <property name="group">radiobutton-all</property>
+                                      </object>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="top_attach">4</property>
+                                    <property name="bottom_attach">5</property>
+                                    <property name="x_options"></property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkAlignment" id="alignment17">
+                                    <property name="visible">True</property>
+                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                    <property name="xalign">0</property>
+                                    <property name="yalign">0</property>
+                                    <property name="xscale">0</property>
+                                    <property name="yscale">0</property>
+                                    <child>
+                                      <object class="GtkRadioButton" id="radiobutton-range">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="receives_default">False</property>
+                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                        <property name="active">True</property>
+                                        <property name="draw_indicator">True</property>
+                                        <property name="group">radiobutton-all</property>
+                                      </object>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="top_attach">3</property>
+                                    <property name="bottom_attach">4</property>
+                                    <property name="x_options"></property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkAlignment" id="alignment16">
+                                    <property name="visible">True</property>
+                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                    <property name="xalign">0</property>
+                                    <property name="yalign">0</property>
+                                    <property name="xscale">0</property>
+                                    <property name="yscale">0</property>
+                                    <child>
+                                      <object class="GtkRadioButton" id="radiobutton-sample">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="receives_default">False</property>
+                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                        <property name="active">True</property>
+                                        <property name="draw_indicator">True</property>
+                                        <property name="group">radiobutton-all</property>
+                                      </object>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="top_attach">2</property>
+                                    <property name="bottom_attach">3</property>
+                                    <property name="x_options"></property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkAlignment" id="alignment13">
+                                    <property name="visible">True</property>
+                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                    <property name="xalign">0</property>
+                                    <property name="yalign">0</property>
+                                    <property name="xscale">0</property>
+                                    <property name="yscale">0</property>
+                                    <child>
+                                      <object class="GtkRadioButton" id="radiobutton-if">
+                                        <property name="sensitive">False</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="receives_default">False</property>
+                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                        <property name="active">True</property>
+                                        <property name="draw_indicator">True</property>
+                                        <property name="group">radiobutton-all</property>
+                                      </object>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="top_attach">1</property>
+                                    <property name="bottom_attach">2</property>
+                                    <property name="x_options"></property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkVBox" id="vbox26">
+                                    <property name="visible">True</property>
+                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                    <child>
+                                      <object class="GtkLabel" id="label25">
+                                        <property name="visible">True</property>
+                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                        <property name="xalign">0</property>
+                                        <property name="label" translatable="yes">Use filter variable</property>
+                                      </object>
+                                      <packing>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkHBox" id="hbox19">
+                                        <property name="visible">True</property>
+                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                        <child>
+                                          <object class="PsppireSelector" id="psppire-selector-filter">
+                                            <property name="visible">True</property>
+                                            <property name="can_focus">True</property>
+                                            <property name="receives_default">True</property>
+                                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                            <property name="border_width">5</property>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">False</property>
+                                            <property name="position">0</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkEntry" id="filter-variable-entry">
+                                            <property name="visible">True</property>
+                                            <property name="sensitive">False</property>
+                                            <property name="can_focus">True</property>
+                                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                          </object>
+                                          <packing>
+                                            <property name="position">1</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                      <packing>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="left_attach">1</property>
+                                    <property name="right_attach">2</property>
+                                    <property name="top_attach">4</property>
+                                    <property name="bottom_attach">5</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkVBox" id="vbox25">
+                                    <property name="visible">True</property>
+                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                    <child>
+                                      <object class="GtkLabel" id="label15">
+                                        <property name="visible">True</property>
+                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                        <property name="xalign">0</property>
+                                        <property name="label" translatable="yes">Based on time or case range</property>
+                                      </object>
+                                      <packing>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkHBox" id="hbox12">
+                                        <property name="visible">True</property>
+                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                        <child>
+                                          <object class="GtkButton" id="button-range">
+                                            <property name="label" translatable="yes">Range...</property>
+                                            <property name="visible">True</property>
+                                            <property name="can_focus">True</property>
+                                            <property name="receives_default">True</property>
+                                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">False</property>
+                                            <property name="position">0</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkLabel" id="range-sample-label">
+                                            <property name="visible">True</property>
+                                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                          </object>
+                                          <packing>
+                                            <property name="position">1</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                      <packing>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="left_attach">1</property>
+                                    <property name="right_attach">2</property>
+                                    <property name="top_attach">3</property>
+                                    <property name="bottom_attach">4</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkVBox" id="vbox24">
+                                    <property name="visible">True</property>
+                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                    <property name="orientation">vertical</property>
+                                    <child>
+                                      <object class="GtkLabel" id="label13">
+                                        <property name="visible">True</property>
+                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                        <property name="xalign">0</property>
+                                        <property name="label" translatable="yes">Random sample of cases</property>
+                                      </object>
+                                      <packing>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkHBox" id="hbox11">
+                                        <property name="visible">True</property>
+                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                        <property name="spacing">5</property>
+                                        <child>
+                                          <object class="GtkButton" id="button-sample">
+                                            <property name="label" translatable="yes">Sample...</property>
+                                            <property name="visible">True</property>
+                                            <property name="can_focus">True</property>
+                                            <property name="receives_default">True</property>
+                                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">False</property>
+                                            <property name="position">0</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkLabel" id="random-sample-label">
+                                            <property name="visible">True</property>
+                                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                          </object>
+                                          <packing>
+                                            <property name="position">1</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                      <packing>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="left_attach">1</property>
+                                    <property name="right_attach">2</property>
+                                    <property name="top_attach">2</property>
+                                    <property name="bottom_attach">3</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkVBox" id="vbox14">
+                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                    <child>
+                                      <object class="GtkLabel" id="label11">
+                                        <property name="visible">True</property>
+                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                        <property name="xalign">0</property>
+                                        <property name="label" translatable="yes">If condition is satisfied</property>
+                                      </object>
+                                      <packing>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkHBox" id="hbox9">
+                                        <property name="visible">True</property>
+                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                        <child>
+                                          <object class="GtkButton" id="button-if">
+                                            <property name="label" translatable="yes">If...</property>
+                                            <property name="visible">True</property>
+                                            <property name="sensitive">False</property>
+                                            <property name="can_focus">True</property>
+                                            <property name="receives_default">True</property>
+                                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">False</property>
+                                            <property name="position">0</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkLabel" id="label26">
+                                            <property name="visible">True</property>
+                                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                          </object>
+                                          <packing>
+                                            <property name="position">1</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                      <packing>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="left_attach">1</property>
+                                    <property name="right_attach">2</property>
+                                    <property name="top_attach">1</property>
+                                    <property name="bottom_attach">2</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkLabel" id="label10">
+                                    <property name="visible">True</property>
+                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">All Cases</property>
+                                  </object>
+                                  <packing>
+                                    <property name="left_attach">1</property>
+                                    <property name="right_attach">2</property>
+                                  </packing>
+                                </child>
+                              </object>
+                            </child>
+                          </object>
+                        </child>
+                        <child type="label">
+                          <object class="GtkLabel" id="Select6">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="label" translatable="yes">Select</property>
+                            <property name="use_markup">True</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkFrame" id="frame8">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="label_xalign">0</property>
+                        <child>
+                          <object class="GtkAlignment" id="alignment12">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="left_padding">12</property>
+                            <child>
+                              <object class="GtkHButtonBox" id="filter-delete-button-box">
+                                <property name="visible">True</property>
+                                <property name="sensitive">False</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="layout_style">spread</property>
+                                <child>
+                                  <object class="GtkRadioButton" id="radiobutton-filter">
+                                    <property name="label" translatable="yes">Filtered</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                    <property name="active">True</property>
+                                    <property name="draw_indicator">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkRadioButton" id="radiobutton-delete">
+                                    <property name="label" translatable="yes">Deleted</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                    <property name="active">True</property>
+                                    <property name="draw_indicator">True</property>
+                                    <property name="group">radiobutton-filter</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </object>
+                            </child>
+                          </object>
+                        </child>
+                        <child type="label">
+                          <object class="GtkLabel" id="label9">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="label" translatable="yes">Unselected Cases Are</property>
+                            <property name="use_markup">True</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="pack_type">end</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="PsppireHButtonBox" id="psppire-hbuttonbox3">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="border_width">5</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="PsppireDialog" id="comments-dialog">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="title">Data File Comments</property>
+    <property name="modal">True</property>
+    <property name="orientation">Vertical</property>
+    <child internal-child="hbox">
+      <object class="GtkVBox" id="dialog-hbox7">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkAlignment" id="alignment7">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="left_padding">5</property>
+            <property name="right_padding">5</property>
+            <child>
+              <object class="GtkVBox" id="vbox9">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="orientation">vertical</property>
+                <child>
+                  <object class="GtkLabel" id="label16">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="xalign">0</property>
+                    <property name="label" translatable="yes">Comments:</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkScrolledWindow" id="scrolledwindow12">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="hscrollbar_policy">automatic</property>
+                    <property name="vscrollbar_policy">automatic</property>
+                    <property name="shadow_type">in</property>
+                    <child>
+                      <object class="GtkTextView" id="comments-textview1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="padding">5</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkHBox" id="hbox13">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <child>
+              <object class="GtkCheckButton" id="comments-checkbutton1">
+                <property name="label" translatable="yes">Display comments in output</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="draw_indicator">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="padding">5</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="column-number-label">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="xalign">1</property>
+                <property name="label" translatable="yes">Column Number: 0</property>
+              </object>
+              <packing>
+                <property name="padding">5</property>
+                <property name="pack_type">end</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <object class="PsppireHButtonBox" id="psppire-hbuttonbox2">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="border_width">5</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="PsppireDialog" id="select-cases-range-dialog">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="title">Select Cases: Range</property>
+    <property name="modal">True</property>
+    <property name="orientation">Vertical</property>
+    <child internal-child="hbox">
+      <object class="GtkVBox" id="dialog-hbox10">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkTable" id="table3">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="n_rows">2</property>
+            <property name="n_columns">3</property>
+            <property name="column_spacing">5</property>
+            <child>
+              <object class="GtkSpinButton" id="range-dialog-last">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="truncate_multiline">True</property>
+                <property name="adjustment">adjustment4</property>
+              </object>
+              <packing>
+                <property name="left_attach">2</property>
+                <property name="right_attach">3</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkSpinButton" id="range-dialog-first">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="truncate_multiline">True</property>
+                <property name="adjustment">adjustment3</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label8">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label" translatable="yes">First case</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="x_options"></property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label12">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label" translatable="yes">Last case</property>
+              </object>
+              <packing>
+                <property name="left_attach">2</property>
+                <property name="right_attach">3</property>
+                <property name="x_options"></property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label14">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label" translatable="yes">Observation</property>
+              </object>
+              <packing>
+                <property name="bottom_attach">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="fill">False</property>
+            <property name="padding">5</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="PsppireHButtonBox" id="psppire-hbuttonbox4">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="border_width">5</property>
+            <property name="buttons">PSPPIRE_BUTTON_CONTINUE_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="PsppireDialog" id="type-and-label-dialog">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="title">Compute Variable: Type and Label</property>
+    <property name="modal">True</property>
+    <child internal-child="hbox">
+      <object class="GtkHBox" id="dialog-hbox9">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkVBox" id="vbox10">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="orientation">vertical</property>
+            <child>
+              <object class="GtkFrame" id="Label">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="border_width">5</property>
+                <property name="label_xalign">0</property>
+                <child>
+                  <object class="GtkAlignment" id="alignment3">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <object class="GtkTable" id="table4">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="border_width">5</property>
+                        <property name="n_rows">2</property>
+                        <property name="n_columns">2</property>
+                        <child>
+                          <object class="GtkLabel" id="label27">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Use expression as label</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="top_attach">1</property>
+                            <property name="bottom_attach">2</property>
+                            <property name="y_options"></property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkHBox" id="hbox10">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="spacing">5</property>
+                            <child>
+                              <object class="GtkLabel" id="label24">
+                                <property name="visible">True</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="label" translatable="yes">Label:</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkEntry" id="type-and-label-label-entry">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                              </object>
+                              <packing>
+                                <property name="pack_type">end</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="y_options"></property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" id="radio-button-expression-label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property name="group">radio-button-user-label</property>
+                          </object>
+                          <packing>
+                            <property name="top_attach">1</property>
+                            <property name="bottom_attach">2</property>
+                            <property name="x_options"></property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" id="radio-button-user-label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="x_options"></property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child type="label">
+                  <object class="GtkLabel" id="label28">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="label" translatable="yes">Label</property>
+                    <property name="use_markup">True</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkFrame" id="frame7">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="border_width">5</property>
+                <property name="label_xalign">0</property>
+                <child>
+                  <object class="GtkAlignment" id="alignment10">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <object class="GtkTable" id="table5">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="border_width">5</property>
+                        <property name="n_rows">2</property>
+                        <property name="n_columns">2</property>
+                        <child>
+                          <object class="GtkHBox" id="hbox20">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <child>
+                              <object class="GtkLabel" id="label29">
+                                <property name="visible">True</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">String</property>
+                              </object>
+                              <packing>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkHBox" id="hbox21">
+                                <property name="visible">True</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <child>
+                                  <object class="GtkLabel" id="label30">
+                                    <property name="visible">True</property>
+                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                    <property name="label" translatable="yes">Width</property>
+                                  </object>
+                                  <packing>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkSpinButton" id="type-and-label-width">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                    <property name="adjustment">adjustment2</property>
+                                  </object>
+                                  <packing>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="top_attach">1</property>
+                            <property name="bottom_attach">2</property>
+                            <property name="x_options">GTK_FILL</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" id="radio-button-string">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="top_attach">1</property>
+                            <property name="bottom_attach">2</property>
+                            <property name="x_options"></property>
+                            <property name="y_options"></property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" id="radio-button-numeric">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property name="group">radio-button-string</property>
+                          </object>
+                          <packing>
+                            <property name="x_options"></property>
+                            <property name="y_options"></property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label31">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Numeric</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child type="label">
+                  <object class="GtkLabel" id="label32">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="label" translatable="yes">Type</property>
+                    <property name="use_markup">True</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="PsppireVButtonBox" id="psppire-vbuttonbox1">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="border_width">5</property>
+            <property name="buttons">PSPPIRE_BUTTON_CONTINUE_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="PsppireDialog" id="goto-case-dialog">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="title">Goto Case</property>
+    <property name="modal">True</property>
+    <property name="orientation">Vertical</property>
+    <child internal-child="hbox">
+      <object class="GtkVBox" id="dialog-hbox8">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="spacing">5</property>
+        <child>
+          <object class="GtkHBox" id="hbox22">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="spacing">5</property>
+            <child>
+              <object class="GtkLabel" id="label33">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="xalign">1</property>
+                <property name="label" translatable="yes">Goto Case Number:</property>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkSpinButton" id="goto-case-case-num-entry">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="adjustment">adjustment1</property>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="fill">False</property>
+            <property name="padding">5</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="PsppireHButtonBox" id="psppire-hbuttonbox5">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="border_width">5</property>
+            <property name="layout_style">spread</property>
+            <property name="buttons">PSPPIRE_BUTTON_GOTO_MASK | PSPPIRE_BUTTON_CANCEL_MASK</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="PsppireDialog" id="select-cases-random-sample-dialog">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="title">Select Cases: Random Sample</property>
+    <property name="modal">True</property>
+    <property name="orientation">Vertical</property>
+    <child internal-child="hbox">
+      <object class="GtkVBox" id="dialog-hbox13">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkFrame" id="frame6">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="label_xalign">0</property>
+            <child>
+              <object class="GtkAlignment" id="alignment4">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="top_padding">5</property>
+                <property name="bottom_padding">5</property>
+                <property name="left_padding">5</property>
+                <property name="right_padding">5</property>
+                <child>
+                  <object class="GtkTable" id="select-cases-random-sample-table">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="n_rows">2</property>
+                    <property name="n_columns">2</property>
+                    <property name="column_spacing">5</property>
+                    <property name="row_spacing">5</property>
+                    <child>
+                      <object class="GtkRadioButton" id="radiobutton-sample-percent">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="active">True</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="x_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkRadioButton" id="radiobutton-sample-n-cases">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="active">True</property>
+                        <property name="draw_indicator">True</property>
+                        <property name="group">radiobutton-sample-percent</property>
+                      </object>
+                      <packing>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
+                        <property name="x_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkAlignment" id="alignment9">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="xalign">0</property>
+                        <property name="xscale">0</property>
+                        <child>
+                          <placeholder/>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkAlignment" id="alignment14">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="xalign">0</property>
+                        <property name="xscale">0</property>
+                        <child>
+                          <placeholder/>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="label34">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label" translatable="yes">Sample Size</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="padding">5</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="PsppireHButtonBox" id="psppire-hbuttonbox6">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="border_width">5</property>
+            <property name="buttons">PSPPIRE_BUTTON_CONTINUE_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="GtkAdjustment" id="adjustment1">
+    <property name="value">1</property>
+    <property name="lower">1</property>
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+    <property name="page_size">10</property>
+  </object>
+  <object class="GtkAdjustment" id="adjustment2">
+    <property name="value">8</property>
+    <property name="lower">1</property>
+    <property name="upper">32767</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+    <property name="page_size">10</property>
+  </object>
+  <object class="GtkAdjustment" id="adjustment3">
+    <property name="lower">1</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+    <property name="page_size">10</property>
+  </object>
+  <object class="GtkAdjustment" id="adjustment4">
+    <property name="value">1</property>
+    <property name="lower">1</property>
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+    <property name="page_size">10</property>
+  </object>
+</interface>
diff --git a/src/ui/gui/rank.glade b/src/ui/gui/rank.glade
deleted file mode 100644 (file)
index fd412df..0000000
+++ /dev/null
@@ -1,707 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<!--Generated with glade3 3.2.2 on Mon Dec 15 06:55:22 2008 by john@marilyn-->
-<glade-interface>
-  <requires lib="psppire"/>
-  <widget class="PsppireDialog" id="rank-dialog">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="title">Rank Cases</property>
-    <property name="modal">True</property>
-    <child internal-child="hbox">
-      <widget class="GtkHBox" id="dialog-hbox1">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="spacing">2</property>
-        <child>
-          <widget class="GtkVBox" id="vbox1">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="spacing">5</property>
-            <child>
-              <widget class="GtkTable" id="table1">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="n_rows">2</property>
-                <property name="n_columns">3</property>
-                <child>
-                  <widget class="GtkScrolledWindow" id="scrolledwindow5">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                    <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                    <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-                    <child>
-                      <widget class="PsppireDictView" id="dict-treeview">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="headers_visible">False</property>
-                        <property name="headers_clickable">True</property>
-                      </widget>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="bottom_attach">2</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkVBox" id="vbox4">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <child>
-                      <widget class="GtkLabel" id="label3">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="xalign">0</property>
-                        <property name="label" translatable="yes">By:</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkScrolledWindow" id="scrolledwindow3">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                        <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                        <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-                        <child>
-                          <widget class="GtkTreeView" id="group-vars-treeview">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="headers_visible">False</property>
-                            <property name="headers_clickable">True</property>
-                          </widget>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="left_attach">2</property>
-                    <property name="right_attach">3</property>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkVBox" id="vbox2">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <child>
-                      <widget class="GtkLabel" id="label1">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="xalign">0</property>
-                        <property name="label" translatable="yes">Variable(s):</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkScrolledWindow" id="scrolledwindow1">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                        <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                        <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-                        <child>
-                          <widget class="GtkTreeView" id="variables-treeview">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="headers_visible">False</property>
-                            <property name="headers_clickable">True</property>
-                          </widget>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="left_attach">2</property>
-                    <property name="right_attach">3</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="PsppireSelector" id="psppire-selector2">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="border_width">5</property>
-                  </widget>
-                  <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                    <property name="x_options"></property>
-                    <property name="y_options"></property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="PsppireSelector" id="psppire-selector1">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="border_width">5</property>
-                  </widget>
-                  <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
-                    <property name="x_options"></property>
-                    <property name="y_options"></property>
-                  </packing>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkHBox" id="hbox1">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="spacing">5</property>
-                <child>
-                  <widget class="GtkFrame" id="frame1">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <child>
-                      <widget class="GtkAlignment" id="alignment1">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <widget class="GtkVButtonBox" id="vbuttonbox1">
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="homogeneous">True</property>
-                            <child>
-                              <widget class="GtkRadioButton" id="radiobutton1">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="label" translatable="yes">_Smallest Value</property>
-                                <property name="use_underline">True</property>
-                                <property name="response_id">0</property>
-                                <property name="active">True</property>
-                                <property name="draw_indicator">True</property>
-                              </widget>
-                            </child>
-                            <child>
-                              <widget class="GtkRadioButton" id="radiobutton2">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="label" translatable="yes">_Largest Value</property>
-                                <property name="use_underline">True</property>
-                                <property name="response_id">0</property>
-                                <property name="active">True</property>
-                                <property name="draw_indicator">True</property>
-                                <property name="group">radiobutton1</property>
-                              </widget>
-                              <packing>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                          </widget>
-                        </child>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkLabel" id="label4">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">Assign rank 1 to:</property>
-                        <property name="use_markup">True</property>
-                      </widget>
-                      <packing>
-                        <property name="type">label_item</property>
-                      </packing>
-                    </child>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkVBox" id="vbox5">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <child>
-                      <widget class="GtkCheckButton" id="summary-checkbutton">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">_Display summary tables</property>
-                        <property name="use_underline">True</property>
-                        <property name="response_id">0</property>
-                        <property name="draw_indicator">True</property>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkHButtonBox" id="hbuttonbox1">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <child>
-                          <widget class="GtkButton" id="button1">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">Rank T_ypes</property>
-                            <property name="use_underline">True</property>
-                            <property name="response_id">0</property>
-                          </widget>
-                        </child>
-                        <child>
-                          <widget class="GtkButton" id="button2">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">_Ties...</property>
-                            <property name="use_underline">True</property>
-                            <property name="response_id">0</property>
-                          </widget>
-                          <packing>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </widget>
-        </child>
-        <child>
-          <widget class="PsppireVButtonBox" id="psppire-vbuttonbox1">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="border_width">5</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="PsppireDialog" id="rank-types-dialog">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="title">Rank Cases: Types</property>
-    <property name="modal">True</property>
-    <child internal-child="hbox">
-      <widget class="GtkHBox" id="dialog-hbox2">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="spacing">2</property>
-        <child>
-          <widget class="GtkVBox" id="vbox3">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="spacing">5</property>
-            <child>
-              <widget class="GtkTable" id="table2">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="n_rows">3</property>
-                <property name="n_columns">2</property>
-                <child>
-                  <widget class="GtkCheckButton" id="sum-checkbutton">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="label" translatable="yes">Sum of case weights</property>
-                    <property name="response_id">0</property>
-                    <property name="draw_indicator">True</property>
-                  </widget>
-                  <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkCheckButton" id="percent-checkbutton">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="label" translatable="yes">Fractional rank as %</property>
-                    <property name="response_id">0</property>
-                    <property name="draw_indicator">True</property>
-                  </widget>
-                  <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkCheckButton" id="rfrac-checkbutton">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="label" translatable="yes">Fractional rank</property>
-                    <property name="response_id">0</property>
-                    <property name="draw_indicator">True</property>
-                  </widget>
-                  <packing>
-                    <property name="top_attach">2</property>
-                    <property name="bottom_attach">3</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkCheckButton" id="savage-checkbutton">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="label" translatable="yes">Savage score</property>
-                    <property name="response_id">0</property>
-                    <property name="draw_indicator">True</property>
-                  </widget>
-                  <packing>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkCheckButton" id="rank-checkbutton">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="label" translatable="yes">Rank</property>
-                    <property name="response_id">0</property>
-                    <property name="draw_indicator">True</property>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkHBox" id="hbox2">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <child>
-                      <widget class="GtkCheckButton" id="ntiles-checkbutton">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">Ntiles</property>
-                        <property name="response_id">0</property>
-                        <property name="draw_indicator">True</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkSpinButton" id="ntiles-entry">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="adjustment">0 0 100 1 10 10</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
-                    <property name="top_attach">2</property>
-                    <property name="bottom_attach">3</property>
-                  </packing>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkHBox" id="hbbox3">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <child>
-                  <widget class="GtkCheckButton" id="prop-checkbutton">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="label" translatable="yes">Proportion Estimates</property>
-                    <property name="response_id">0</property>
-                    <property name="draw_indicator">True</property>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkCheckButton" id="normal-checkbutton">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="label" translatable="yes">Normal Scores</property>
-                    <property name="response_id">0</property>
-                    <property name="draw_indicator">True</property>
-                  </widget>
-                  <packing>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkFrame" id="formula-frame">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <child>
-                  <widget class="GtkAlignment" id="alignment2">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="left_padding">12</property>
-                    <child>
-                      <widget class="GtkHBox" id="hbbox2">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="spacing">5</property>
-                        <child>
-                          <widget class="GtkRadioButton" id="blom-button">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">Blom</property>
-                            <property name="response_id">0</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                          </widget>
-                        </child>
-                        <child>
-                          <widget class="GtkRadioButton" id="tukey-button">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">Tukey</property>
-                            <property name="response_id">0</property>
-                            <property name="draw_indicator">True</property>
-                            <property name="group">blom-button</property>
-                          </widget>
-                          <packing>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkRadioButton" id="rankit-button">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">Rankit</property>
-                            <property name="response_id">0</property>
-                            <property name="draw_indicator">True</property>
-                            <property name="group">blom-button</property>
-                          </widget>
-                          <packing>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkRadioButton" id="vw-button">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">Van der Wärden</property>
-                            <property name="response_id">0</property>
-                            <property name="draw_indicator">True</property>
-                            <property name="group">blom-button</property>
-                          </widget>
-                          <packing>
-                            <property name="position">3</property>
-                          </packing>
-                        </child>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkLabel" id="label2">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="label" translatable="yes">Proportion Estimation Formula</property>
-                    <property name="use_markup">True</property>
-                    <property name="justify">GTK_JUSTIFY_FILL</property>
-                  </widget>
-                  <packing>
-                    <property name="type">label_item</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="position">2</property>
-              </packing>
-            </child>
-          </widget>
-        </child>
-        <child>
-          <widget class="PsppireVButtonBox" id="psppire-vbuttonbox2">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="border_width">5</property>
-            <property name="buttons">PSPPIRE_BUTTON_CONTINUE_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="PsppireDialog" id="ties-dialog">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="title">Rank Cases: Ties</property>
-    <property name="modal">True</property>
-    <child internal-child="hbox">
-      <widget class="GtkHBox" id="dialog-hbox3">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <child>
-          <widget class="GtkFrame" id="frame2">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <child>
-              <widget class="GtkAlignment" id="alignment3">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <widget class="GtkVBox" id="vbox6">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <child>
-                      <widget class="GtkHButtonBox" id="hbuttonbox2">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <child>
-                          <widget class="GtkRadioButton" id="mean-button">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">_Mean</property>
-                            <property name="use_underline">True</property>
-                            <property name="response_id">0</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                          </widget>
-                        </child>
-                        <child>
-                          <widget class="GtkRadioButton" id="low-button">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">_Low</property>
-                            <property name="use_underline">True</property>
-                            <property name="response_id">0</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <property name="group">mean-button</property>
-                          </widget>
-                          <packing>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkRadioButton" id="high-button">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">_High</property>
-                            <property name="use_underline">True</property>
-                            <property name="response_id">0</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <property name="group">mean-button</property>
-                          </widget>
-                          <packing>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkRadioButton" id="condense-button">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">_Sequential ranks to unique values</property>
-                        <property name="use_underline">True</property>
-                        <property name="response_id">0</property>
-                        <property name="active">True</property>
-                        <property name="draw_indicator">True</property>
-                        <property name="group">mean-button</property>
-                      </widget>
-                      <packing>
-                        <property name="fill">False</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </widget>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkLabel" id="label5">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label" translatable="yes">Rank Assigned to Ties</property>
-                <property name="use_markup">True</property>
-              </widget>
-              <packing>
-                <property name="type">label_item</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="padding">5</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="PsppireVButtonBox" id="psppire-vbuttonbox3">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="border_width">5</property>
-            <property name="buttons">PSPPIRE_BUTTON_CONTINUE_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-</glade-interface>
diff --git a/src/ui/gui/rank.ui b/src/ui/gui/rank.ui
new file mode 100644 (file)
index 0000000..5b7d6f4
--- /dev/null
@@ -0,0 +1,760 @@
+<?xml version="1.0"?>
+<interface>
+  <requires lib="psppire" version="2053.63976"/>
+  <!-- interface-requires gtk+ 2.12 -->
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="PsppireDialog" id="rank-dialog">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="title">Rank Cases</property>
+    <property name="modal">True</property>
+    <child internal-child="hbox">
+      <object class="GtkHBox" id="dialog-hbox1">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkVBox" id="vbox1">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="orientation">vertical</property>
+            <property name="spacing">5</property>
+            <child>
+              <object class="GtkTable" id="table1">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="n_rows">2</property>
+                <property name="n_columns">3</property>
+                <child>
+                  <object class="GtkScrolledWindow" id="scrolledwindow5">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="hscrollbar_policy">never</property>
+                    <property name="vscrollbar_policy">automatic</property>
+                    <property name="shadow_type">etched-in</property>
+                    <child>
+                      <object class="PsppireDictView" id="dict-treeview">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="headers_visible">False</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="bottom_attach">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkVBox" id="vbox4">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="orientation">vertical</property>
+                    <child>
+                      <object class="GtkLabel" id="label3">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">By:</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkScrolledWindow" id="scrolledwindow3">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="hscrollbar_policy">never</property>
+                        <property name="vscrollbar_policy">automatic</property>
+                        <property name="shadow_type">etched-in</property>
+                        <child>
+                          <object class="GtkTreeView" id="group-vars-treeview">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="headers_visible">False</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left_attach">2</property>
+                    <property name="right_attach">3</property>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkVBox" id="vbox2">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="orientation">vertical</property>
+                    <child>
+                      <object class="GtkLabel" id="label1">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Variable(s):</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkScrolledWindow" id="scrolledwindow1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="hscrollbar_policy">never</property>
+                        <property name="vscrollbar_policy">automatic</property>
+                        <property name="shadow_type">etched-in</property>
+                        <child>
+                          <object class="GtkTreeView" id="variables-treeview">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="headers_visible">False</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left_attach">2</property>
+                    <property name="right_attach">3</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="PsppireSelector" id="psppire-selector2">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="border_width">5</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
+                    <property name="x_options"></property>
+                    <property name="y_options"></property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="PsppireSelector" id="psppire-selector1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="border_width">5</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                    <property name="x_options"></property>
+                    <property name="y_options"></property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHBox" id="hbox1">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="spacing">5</property>
+                <child>
+                  <object class="GtkFrame" id="frame1">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="label_xalign">0</property>
+                    <child>
+                      <object class="GtkAlignment" id="alignment1">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkVButtonBox" id="vbuttonbox1">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="homogeneous">True</property>
+                            <child>
+                              <object class="GtkRadioButton" id="radiobutton1">
+                                <property name="label" translatable="yes">_Smallest Value</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="use_underline">True</property>
+                                <property name="active">True</property>
+                                <property name="draw_indicator">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkRadioButton" id="radiobutton2">
+                                <property name="label" translatable="yes">_Largest Value</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="use_underline">True</property>
+                                <property name="active">True</property>
+                                <property name="draw_indicator">True</property>
+                                <property name="group">radiobutton1</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" id="label4">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="label" translatable="yes">Assign rank 1 to:</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkVBox" id="vbox5">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="orientation">vertical</property>
+                    <child>
+                      <object class="GtkCheckButton" id="summary-checkbutton">
+                        <property name="label" translatable="yes">_Display summary tables</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="use_underline">True</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkHButtonBox" id="hbuttonbox1">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <child>
+                          <object class="GtkButton" id="button1">
+                            <property name="label" translatable="yes">Rank T_ypes</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="use_underline">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkButton" id="button2">
+                            <property name="label" translatable="yes">_Ties...</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="use_underline">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="PsppireVButtonBox" id="psppire-vbuttonbox1">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="border_width">5</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="PsppireDialog" id="rank-types-dialog">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="title">Rank Cases: Types</property>
+    <property name="modal">True</property>
+    <child internal-child="hbox">
+      <object class="GtkHBox" id="dialog-hbox2">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkVBox" id="vbox3">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="spacing">5</property>
+            <child>
+              <object class="GtkTable" id="table2">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="n_rows">3</property>
+                <property name="n_columns">2</property>
+                <child>
+                  <object class="GtkCheckButton" id="sum-checkbutton">
+                    <property name="label" translatable="yes">Sum of case weights</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkCheckButton" id="percent-checkbutton">
+                    <property name="label" translatable="yes">Fractional rank as %</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkCheckButton" id="rfrac-checkbutton">
+                    <property name="label" translatable="yes">Fractional rank</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="top_attach">2</property>
+                    <property name="bottom_attach">3</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkCheckButton" id="savage-checkbutton">
+                    <property name="label" translatable="yes">Savage score</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkCheckButton" id="rank-checkbutton">
+                    <property name="label" translatable="yes">Rank</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkHBox" id="hbox2">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <child>
+                      <object class="GtkCheckButton" id="ntiles-checkbutton">
+                        <property name="label" translatable="yes">Ntiles</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkSpinButton" id="ntiles-entry">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="adjustment">adjustment1</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                    <property name="top_attach">2</property>
+                    <property name="bottom_attach">3</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHBox" id="hbbox3">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <child>
+                  <object class="GtkCheckButton" id="prop-checkbutton">
+                    <property name="label" translatable="yes">Proportion Estimates</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkCheckButton" id="normal-checkbutton">
+                    <property name="label" translatable="yes">Normal Scores</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkFrame" id="formula-frame">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label_xalign">0</property>
+                <child>
+                  <object class="GtkAlignment" id="alignment2">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <object class="GtkHBox" id="hbbox2">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="spacing">5</property>
+                        <child>
+                          <object class="GtkRadioButton" id="blom-button">
+                            <property name="label" translatable="yes">Blom</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" id="tukey-button">
+                            <property name="label" translatable="yes">Tukey</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="draw_indicator">True</property>
+                            <property name="group">blom-button</property>
+                          </object>
+                          <packing>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" id="rankit-button">
+                            <property name="label" translatable="yes">Rankit</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="draw_indicator">True</property>
+                            <property name="group">blom-button</property>
+                          </object>
+                          <packing>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" id="vw-button">
+                            <property name="label" translatable="yes">Van der W&#xE4;rden</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="draw_indicator">True</property>
+                            <property name="group">blom-button</property>
+                          </object>
+                          <packing>
+                            <property name="position">3</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child type="label">
+                  <object class="GtkLabel" id="label2">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="label" translatable="yes">Proportion Estimation Formula</property>
+                    <property name="use_markup">True</property>
+                    <property name="justify">fill</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="PsppireVButtonBox" id="psppire-vbuttonbox2">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="border_width">5</property>
+            <property name="buttons">PSPPIRE_BUTTON_CONTINUE_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="PsppireDialog" id="ties-dialog">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="title">Rank Cases: Ties</property>
+    <property name="modal">True</property>
+    <child internal-child="hbox">
+      <object class="GtkHBox" id="dialog-hbox3">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <child>
+          <object class="GtkFrame" id="frame2">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="label_xalign">0</property>
+            <child>
+              <object class="GtkAlignment" id="alignment3">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="vbox6">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <child>
+                      <object class="GtkHButtonBox" id="hbuttonbox2">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <child>
+                          <object class="GtkRadioButton" id="mean-button">
+                            <property name="label" translatable="yes">_Mean</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="use_underline">True</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" id="low-button">
+                            <property name="label" translatable="yes">_Low</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="use_underline">True</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property name="group">mean-button</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" id="high-button">
+                            <property name="label" translatable="yes">_High</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="use_underline">True</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property name="group">mean-button</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkRadioButton" id="condense-button">
+                        <property name="label" translatable="yes">_Sequential ranks to unique values</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="use_underline">True</property>
+                        <property name="active">True</property>
+                        <property name="draw_indicator">True</property>
+                        <property name="group">mean-button</property>
+                      </object>
+                      <packing>
+                        <property name="fill">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="label5">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label" translatable="yes">Rank Assigned to Ties</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="padding">5</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="PsppireVButtonBox" id="psppire-vbuttonbox3">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="border_width">5</property>
+            <property name="buttons">PSPPIRE_BUTTON_CONTINUE_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="GtkAdjustment" id="adjustment1">
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+    <property name="page_size">10</property>
+  </object>
+</interface>
diff --git a/src/ui/gui/recode.glade b/src/ui/gui/recode.glade
deleted file mode 100644 (file)
index 6edcc0a..0000000
+++ /dev/null
@@ -1,988 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<!--Generated with glade3 3.2.2 on Sat Nov 10 12:40:56 2007 by john@marilyn-->
-<glade-interface>
-  <requires lib="psppire"/>
-  <widget class="PsppireDialog" id="old-new-values-dialog">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="modal">True</property>
-    <child internal-child="hbox">
-      <widget class="GtkHBox" id="dialog-hbox1">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="spacing">5</property>
-        <child>
-          <widget class="GtkFrame" id="frame2">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="label_xalign">0</property>
-            <child>
-              <widget class="GtkAlignment" id="alignment3">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="left_padding">12</property>
-                <property name="right_padding">5</property>
-                <child>
-                  <widget class="GtkTable" id="table2">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="n_rows">11</property>
-                    <property name="n_columns">2</property>
-                    <child>
-                      <placeholder/>
-                    </child>
-                    <child>
-                      <placeholder/>
-                    </child>
-                    <child>
-                      <placeholder/>
-                    </child>
-                    <child>
-                      <placeholder/>
-                    </child>
-                    <child>
-                      <widget class="GtkAlignment" id="alignment11">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="xalign">0</property>
-                        <property name="xscale">0</property>
-                        <child>
-                          <widget class="GtkEntry" id="entry7">
-                            <property name="visible">True</property>
-                            <property name="sensitive">False</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                          </widget>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                        <property name="top_attach">9</property>
-                        <property name="bottom_attach">10</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkAlignment" id="alignment10">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="xalign">0</property>
-                        <property name="xscale">0</property>
-                        <child>
-                          <widget class="GtkEntry" id="entry6">
-                            <property name="visible">True</property>
-                            <property name="sensitive">False</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                          </widget>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                        <property name="top_attach">7</property>
-                        <property name="bottom_attach">8</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkRadioButton" id="radiobutton4">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="response_id">0</property>
-                        <property name="active">True</property>
-                        <property name="draw_indicator">True</property>
-                      </widget>
-                      <packing>
-                        <property name="x_options"></property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkRadioButton" id="radiobutton6">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="response_id">0</property>
-                        <property name="active">True</property>
-                        <property name="draw_indicator">True</property>
-                        <property name="group">radiobutton4</property>
-                      </widget>
-                      <packing>
-                        <property name="top_attach">2</property>
-                        <property name="bottom_attach">3</property>
-                        <property name="x_options"></property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkRadioButton" id="radiobutton7">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="response_id">0</property>
-                        <property name="active">True</property>
-                        <property name="draw_indicator">True</property>
-                        <property name="group">radiobutton4</property>
-                      </widget>
-                      <packing>
-                        <property name="top_attach">3</property>
-                        <property name="bottom_attach">4</property>
-                        <property name="x_options"></property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkRadioButton" id="radiobutton8">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="response_id">0</property>
-                        <property name="active">True</property>
-                        <property name="draw_indicator">True</property>
-                        <property name="group">radiobutton4</property>
-                      </widget>
-                      <packing>
-                        <property name="top_attach">4</property>
-                        <property name="bottom_attach">5</property>
-                        <property name="x_options"></property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkRadioButton" id="radiobutton10">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="response_id">0</property>
-                        <property name="active">True</property>
-                        <property name="draw_indicator">True</property>
-                        <property name="group">radiobutton4</property>
-                      </widget>
-                      <packing>
-                        <property name="top_attach">6</property>
-                        <property name="bottom_attach">7</property>
-                        <property name="x_options"></property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkRadioButton" id="radiobutton5">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="response_id">0</property>
-                        <property name="active">True</property>
-                        <property name="draw_indicator">True</property>
-                        <property name="group">radiobutton4</property>
-                      </widget>
-                      <packing>
-                        <property name="top_attach">8</property>
-                        <property name="bottom_attach">9</property>
-                        <property name="x_options"></property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkLabel" id="label6">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="xalign">0</property>
-                        <property name="label" translatable="yes">Value:</property>
-                      </widget>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkLabel" id="label7">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="xalign">0</property>
-                        <property name="label" translatable="yes">System-Missing</property>
-                      </widget>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                        <property name="top_attach">2</property>
-                        <property name="bottom_attach">3</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkLabel" id="label8">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="xalign">0</property>
-                        <property name="label" translatable="yes">System-or user-missing</property>
-                      </widget>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                        <property name="top_attach">3</property>
-                        <property name="bottom_attach">4</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkVBox" id="vbox2">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <child>
-                          <widget class="GtkAlignment" id="alignment9">
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="xalign">0</property>
-                            <property name="xscale">0</property>
-                            <child>
-                              <widget class="GtkEntry" id="entry5">
-                                <property name="visible">True</property>
-                                <property name="sensitive">False</property>
-                                <property name="can_focus">True</property>
-                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                              </widget>
-                            </child>
-                          </widget>
-                        </child>
-                        <child>
-                          <widget class="GtkLabel" id="label9">
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="xalign">0</property>
-                            <property name="label" translatable="yes">through</property>
-                          </widget>
-                          <packing>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkAlignment" id="alignment7">
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="xalign">0</property>
-                            <property name="xscale">0</property>
-                            <child>
-                              <widget class="GtkEntry" id="entry3">
-                                <property name="visible">True</property>
-                                <property name="sensitive">False</property>
-                                <property name="can_focus">True</property>
-                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                              </widget>
-                            </child>
-                          </widget>
-                          <packing>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                        <property name="top_attach">5</property>
-                        <property name="bottom_attach">6</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkLabel" id="label11">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="xalign">0</property>
-                        <property name="label" translatable="yes">Range, LOWEST thru value</property>
-                      </widget>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                        <property name="top_attach">6</property>
-                        <property name="bottom_attach">7</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkLabel" id="label12">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="xalign">0</property>
-                        <property name="label" translatable="yes">Range, value thru HIGHEST</property>
-                      </widget>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                        <property name="top_attach">8</property>
-                        <property name="bottom_attach">9</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkRadioButton" id="radiobutton11">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="response_id">0</property>
-                        <property name="active">True</property>
-                        <property name="draw_indicator">True</property>
-                        <property name="group">radiobutton4</property>
-                      </widget>
-                      <packing>
-                        <property name="top_attach">10</property>
-                        <property name="bottom_attach">11</property>
-                        <property name="x_options"></property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkLabel" id="label13">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="xalign">0</property>
-                        <property name="label" translatable="yes">All other values</property>
-                      </widget>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                        <property name="top_attach">10</property>
-                        <property name="bottom_attach">11</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkAlignment" id="alignment6">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="xalign">0</property>
-                        <property name="xscale">0</property>
-                        <child>
-                          <widget class="GtkEntry" id="entry2">
-                            <property name="visible">True</property>
-                            <property name="sensitive">False</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                          </widget>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                        <property name="top_attach">1</property>
-                        <property name="bottom_attach">2</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkLabel" id="label10">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="xalign">0</property>
-                        <property name="label" translatable="yes">Range:</property>
-                      </widget>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                        <property name="top_attach">4</property>
-                        <property name="bottom_attach">5</property>
-                      </packing>
-                    </child>
-                  </widget>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkLabel" id="label5">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label" translatable="yes">Old Value</property>
-                <property name="use_markup">True</property>
-              </widget>
-              <packing>
-                <property name="type">label_item</property>
-              </packing>
-            </child>
-          </widget>
-        </child>
-        <child>
-          <widget class="GtkVBox" id="vbox1">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <child>
-              <widget class="GtkFrame" id="frame1">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label_xalign">0</property>
-                <child>
-                  <widget class="GtkAlignment" id="alignment1">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="left_padding">12</property>
-                    <child>
-                      <widget class="GtkTable" id="table1">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="n_rows">3</property>
-                        <property name="n_columns">2</property>
-                        <child>
-                          <widget class="GtkRadioButton" id="radiobutton1">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="response_id">0</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                          </widget>
-                          <packing>
-                            <property name="x_options"></property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkRadioButton" id="radiobutton2">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="response_id">0</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <property name="group">radiobutton1</property>
-                          </widget>
-                          <packing>
-                            <property name="top_attach">1</property>
-                            <property name="bottom_attach">2</property>
-                            <property name="x_options"></property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkRadioButton" id="radiobutton3">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="response_id">0</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <property name="group">radiobutton1</property>
-                            <child>
-                              <placeholder/>
-                            </child>
-                          </widget>
-                          <packing>
-                            <property name="top_attach">2</property>
-                            <property name="bottom_attach">3</property>
-                            <property name="x_options"></property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkLabel" id="label2">
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="xalign">0</property>
-                            <property name="label" translatable="yes">System Missing</property>
-                          </widget>
-                          <packing>
-                            <property name="left_attach">1</property>
-                            <property name="right_attach">2</property>
-                            <property name="top_attach">1</property>
-                            <property name="bottom_attach">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkLabel" id="label3">
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="xalign">0</property>
-                            <property name="label" translatable="yes">Copy old values</property>
-                          </widget>
-                          <packing>
-                            <property name="left_attach">1</property>
-                            <property name="right_attach">2</property>
-                            <property name="top_attach">2</property>
-                            <property name="bottom_attach">3</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkAlignment" id="alignment2">
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="xalign">0</property>
-                            <property name="xscale">0</property>
-                            <child>
-                              <widget class="GtkHBox" id="hbox1">
-                                <property name="visible">True</property>
-                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <child>
-                                  <widget class="GtkLabel" id="label4">
-                                    <property name="visible">True</property>
-                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                    <property name="xalign">1</property>
-                                    <property name="label" translatable="yes">Value: </property>
-                                  </widget>
-                                </child>
-                                <child>
-                                  <widget class="GtkEntry" id="entry1">
-                                    <property name="visible">True</property>
-                                    <property name="sensitive">False</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                  </widget>
-                                  <packing>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                              </widget>
-                            </child>
-                          </widget>
-                          <packing>
-                            <property name="left_attach">1</property>
-                            <property name="right_attach">2</property>
-                          </packing>
-                        </child>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkLabel" id="label1">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="label" translatable="yes">New Value</property>
-                    <property name="use_markup">True</property>
-                  </widget>
-                  <packing>
-                    <property name="type">label_item</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="PsppireAcr" id="psppire-acr1">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="border_width">5</property>
-              </widget>
-              <packing>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkTable" id="table3">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="n_rows">2</property>
-                <property name="n_columns">2</property>
-                <child>
-                  <widget class="GtkCheckButton" id="checkbutton1">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="response_id">0</property>
-                    <property name="draw_indicator">True</property>
-                  </widget>
-                  <packing>
-                    <property name="x_options"></property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkCheckButton" id="checkbutton2">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="response_id">0</property>
-                    <property name="draw_indicator">True</property>
-                  </widget>
-                  <packing>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                    <property name="x_options"></property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkLabel" id="label14">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="xalign">0</property>
-                    <property name="label" translatable="yes">Convert numeric strings to numbers ('5' -&gt; 5)</property>
-                  </widget>
-                  <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkHBox" id="hbox2">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <child>
-                      <widget class="GtkLabel" id="label15">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="xalign">0</property>
-                        <property name="label" translatable="yes">Output variables are strings</property>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkHBox" id="hbox3">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <child>
-                          <widget class="GtkLabel" id="label16">
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="xalign">1</property>
-                            <property name="label" translatable="yes">Width: </property>
-                          </widget>
-                        </child>
-                        <child>
-                          <widget class="GtkSpinButton" id="spinbutton1">
-                            <property name="visible">True</property>
-                            <property name="sensitive">False</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="adjustment">8 1 255 1 8 0</property>
-                            <property name="numeric">True</property>
-                            <property name="update_policy">GTK_UPDATE_IF_VALID</property>
-                          </widget>
-                          <packing>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="fill">False</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">2</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="PsppireHButtonBox" id="psppire-hbuttonbox1">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="border_width">10</property>
-                <property name="buttons">PSPPIRE_BUTTON_CONTINUE_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="pack_type">GTK_PACK_END</property>
-                <property name="position">3</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="PsppireDialog" id="recode-dialog">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="title">Recode into Same Variables</property>
-    <property name="modal">True</property>
-    <property name="orientation">PSPPIRE_TABULAR</property>
-    <child internal-child="hbox">
-      <widget class="GtkTable" id="dialog-hbox3">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="n_rows">3</property>
-        <property name="n_columns">4</property>
-        <property name="column_spacing">5</property>
-        <property name="row_spacing">5</property>
-        <child>
-          <widget class="GtkLabel" id="label22">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-          </widget>
-          <packing>
-            <property name="left_attach">1</property>
-            <property name="right_attach">2</property>
-            <property name="top_attach">2</property>
-            <property name="bottom_attach">3</property>
-            <property name="y_options"></property>
-          </packing>
-        </child>
-        <child>
-          <widget class="PsppireSelector" id="psppire-selector1">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="receives_default">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="border_width">5</property>
-          </widget>
-          <packing>
-            <property name="left_attach">1</property>
-            <property name="right_attach">2</property>
-            <property name="x_options"></property>
-            <property name="y_options"></property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkHBox" id="hbox4">
-            <property name="visible">False</property>
-            <property name="sensitive">False</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="spacing">5</property>
-            <child>
-              <widget class="GtkButton" id="button2">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label" translatable="yes">If...</property>
-                <property name="response_id">0</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkLabel" id="label18">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label" translatable="yes">(optional case selection condition)</property>
-              </widget>
-              <packing>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="left_attach">2</property>
-            <property name="right_attach">4</property>
-            <property name="top_attach">2</property>
-            <property name="bottom_attach">3</property>
-            <property name="y_options"></property>
-          </packing>
-        </child>
-        <child>
-          <widget class="PsppireVButtonBox" id="psppire-vbuttonbox2">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="border_width">5</property>
-          </widget>
-          <packing>
-            <property name="left_attach">3</property>
-            <property name="right_attach">4</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkScrolledWindow" id="scrolledwindow2">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-            <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-            <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-            <child>
-              <widget class="PsppireDictView" id="treeview1">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="headers_visible">False</property>
-              </widget>
-            </child>
-          </widget>
-          <packing>
-            <property name="bottom_attach">3</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkLabel" id="label23">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-          </widget>
-          <packing>
-            <property name="left_attach">1</property>
-            <property name="right_attach">2</property>
-            <property name="top_attach">1</property>
-            <property name="bottom_attach">2</property>
-            <property name="x_options"></property>
-            <property name="y_options"></property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkFrame" id="frame4">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="label_xalign">0</property>
-            <child>
-              <widget class="GtkAlignment" id="alignment8">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <widget class="GtkVBox" id="vbox3">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <child>
-                      <widget class="GtkLabel" id="label20">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="xalign">0</property>
-                        <property name="label" translatable="yes">Name:</property>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkEntry" id="dest-name-entry">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                      </widget>
-                      <packing>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkLabel" id="label21">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="xalign">0</property>
-                        <property name="label" translatable="yes">Label:</property>
-                      </widget>
-                      <packing>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkEntry" id="dest-label-entry">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                      </widget>
-                      <packing>
-                        <property name="position">3</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkHButtonBox" id="hbuttonbox3">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <child>
-                          <widget class="GtkButton" id="change-button">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">Change</property>
-                            <property name="response_id">0</property>
-                          </widget>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="padding">5</property>
-                        <property name="position">4</property>
-                      </packing>
-                    </child>
-                  </widget>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkLabel" id="label19">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label" translatable="yes">Output Variable</property>
-                <property name="use_markup">True</property>
-              </widget>
-              <packing>
-                <property name="type">label_item</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="left_attach">3</property>
-            <property name="right_attach">4</property>
-            <property name="top_attach">1</property>
-            <property name="bottom_attach">2</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkVBox" id="vbox4">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="spacing">5</property>
-            <child>
-              <widget class="GtkFrame" id="frame3">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label_xalign">0</property>
-                <property name="shadow_type">GTK_SHADOW_NONE</property>
-                <child>
-                  <widget class="GtkAlignment" id="alignment4">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="left_padding">12</property>
-                    <child>
-                      <widget class="GtkScrolledWindow" id="scrolledwindow1">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                        <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                        <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-                        <child>
-                          <widget class="GtkTreeView" id="treeview2">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="headers_visible">False</property>
-                          </widget>
-                        </child>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkLabel" id="label17">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="label" translatable="yes">Variables:</property>
-                    <property name="use_markup">True</property>
-                  </widget>
-                  <packing>
-                    <property name="type">label_item</property>
-                  </packing>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkAlignment" id="alignment5">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="xalign">0</property>
-                <property name="xscale">0</property>
-                <child>
-                  <widget class="GtkHButtonBox" id="hbuttonbox1">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <child>
-                      <widget class="GtkButton" id="button1">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">Old and New Values</property>
-                        <property name="response_id">0</property>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="left_attach">2</property>
-            <property name="right_attach">3</property>
-            <property name="bottom_attach">2</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-</glade-interface>
diff --git a/src/ui/gui/recode.ui b/src/ui/gui/recode.ui
new file mode 100644 (file)
index 0000000..4acd7fc
--- /dev/null
@@ -0,0 +1,1017 @@
+<?xml version="1.0"?>
+<interface>
+  <!-- interface-requires gtk+ 2.12 -->
+  <requires lib="psppire" version="2054.17080"/>
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="PsppireDialog" id="old-new-values-dialog">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="modal">True</property>
+    <child internal-child="hbox">
+      <object class="GtkHBox" id="dialog-hbox1">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="spacing">5</property>
+        <child>
+          <object class="GtkFrame" id="frame2">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="label_xalign">0</property>
+            <child>
+              <object class="GtkAlignment" id="alignment3">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="left_padding">12</property>
+                <property name="right_padding">5</property>
+                <child>
+                  <object class="GtkTable" id="table2">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="n_rows">11</property>
+                    <property name="n_columns">2</property>
+                    <child>
+                      <object class="GtkAlignment" id="alignment11">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="xalign">0</property>
+                        <property name="xscale">0</property>
+                        <child>
+                          <object class="GtkEntry" id="entry7">
+                            <property name="visible">True</property>
+                            <property name="sensitive">False</property>
+                            <property name="can_focus">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">9</property>
+                        <property name="bottom_attach">10</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkAlignment" id="alignment10">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="xalign">0</property>
+                        <property name="xscale">0</property>
+                        <child>
+                          <object class="GtkEntry" id="entry6">
+                            <property name="visible">True</property>
+                            <property name="sensitive">False</property>
+                            <property name="can_focus">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">7</property>
+                        <property name="bottom_attach">8</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkRadioButton" id="radiobutton4">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="active">True</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="x_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkRadioButton" id="radiobutton6">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="active">True</property>
+                        <property name="draw_indicator">True</property>
+                        <property name="group">radiobutton4</property>
+                      </object>
+                      <packing>
+                        <property name="top_attach">2</property>
+                        <property name="bottom_attach">3</property>
+                        <property name="x_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkRadioButton" id="radiobutton7">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="active">True</property>
+                        <property name="draw_indicator">True</property>
+                        <property name="group">radiobutton4</property>
+                      </object>
+                      <packing>
+                        <property name="top_attach">3</property>
+                        <property name="bottom_attach">4</property>
+                        <property name="x_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkRadioButton" id="radiobutton8">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="active">True</property>
+                        <property name="draw_indicator">True</property>
+                        <property name="group">radiobutton4</property>
+                      </object>
+                      <packing>
+                        <property name="top_attach">4</property>
+                        <property name="bottom_attach">5</property>
+                        <property name="x_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkRadioButton" id="radiobutton10">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="active">True</property>
+                        <property name="draw_indicator">True</property>
+                        <property name="group">radiobutton4</property>
+                      </object>
+                      <packing>
+                        <property name="top_attach">6</property>
+                        <property name="bottom_attach">7</property>
+                        <property name="x_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkRadioButton" id="radiobutton5">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="active">True</property>
+                        <property name="draw_indicator">True</property>
+                        <property name="group">radiobutton4</property>
+                      </object>
+                      <packing>
+                        <property name="top_attach">8</property>
+                        <property name="bottom_attach">9</property>
+                        <property name="x_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label6">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Value:</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label7">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">System Missing</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">2</property>
+                        <property name="bottom_attach">3</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label8">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">System or User Missing</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">3</property>
+                        <property name="bottom_attach">4</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkVBox" id="vbox2">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="orientation">vertical</property>
+                        <child>
+                          <object class="GtkAlignment" id="alignment9">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="xalign">0</property>
+                            <property name="xscale">0</property>
+                            <child>
+                              <object class="GtkEntry" id="entry5">
+                                <property name="visible">True</property>
+                                <property name="sensitive">False</property>
+                                <property name="can_focus">True</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label9">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">through</property>
+                          </object>
+                          <packing>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkAlignment" id="alignment7">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="xalign">0</property>
+                            <property name="xscale">0</property>
+                            <child>
+                              <object class="GtkEntry" id="entry3">
+                                <property name="visible">True</property>
+                                <property name="sensitive">False</property>
+                                <property name="can_focus">True</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">5</property>
+                        <property name="bottom_attach">6</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label11">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Range, LOWEST thru value</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">6</property>
+                        <property name="bottom_attach">7</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label12">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Range, value thru HIGHEST</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">8</property>
+                        <property name="bottom_attach">9</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkRadioButton" id="radiobutton11">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="active">True</property>
+                        <property name="draw_indicator">True</property>
+                        <property name="group">radiobutton4</property>
+                      </object>
+                      <packing>
+                        <property name="top_attach">10</property>
+                        <property name="bottom_attach">11</property>
+                        <property name="x_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label13">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">All other values</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">10</property>
+                        <property name="bottom_attach">11</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkAlignment" id="alignment6">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="xalign">0</property>
+                        <property name="xscale">0</property>
+                        <child>
+                          <object class="GtkEntry" id="entry2">
+                            <property name="visible">True</property>
+                            <property name="sensitive">False</property>
+                            <property name="can_focus">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label10">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Range:</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">4</property>
+                        <property name="bottom_attach">5</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="label5">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label" translatable="yes">Old Value</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkVBox" id="vbox1">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="orientation">vertical</property>
+            <child>
+              <object class="GtkFrame" id="frame1">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label_xalign">0</property>
+                <child>
+                  <object class="GtkAlignment" id="alignment1">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <object class="GtkTable" id="table1">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="n_rows">3</property>
+                        <property name="n_columns">2</property>
+                        <child>
+                          <object class="GtkRadioButton" id="radiobutton1">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="x_options"></property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" id="radiobutton2">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property name="group">radiobutton1</property>
+                          </object>
+                          <packing>
+                            <property name="top_attach">1</property>
+                            <property name="bottom_attach">2</property>
+                            <property name="x_options"></property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" id="radiobutton3">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property name="group">radiobutton1</property>
+                            <child>
+                              <placeholder/>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="top_attach">2</property>
+                            <property name="bottom_attach">3</property>
+                            <property name="x_options"></property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label2">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">System Missing</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="top_attach">1</property>
+                            <property name="bottom_attach">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label3">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Copy old values</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="top_attach">2</property>
+                            <property name="bottom_attach">3</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkAlignment" id="alignment2">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="xalign">0</property>
+                            <property name="xscale">0</property>
+                            <child>
+                              <object class="GtkHBox" id="hbox1">
+                                <property name="visible">True</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <child>
+                                  <object class="GtkLabel" id="label4">
+                                    <property name="visible">True</property>
+                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                    <property name="xalign">1</property>
+                                    <property name="label" translatable="yes">Value: </property>
+                                  </object>
+                                  <packing>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkEntry" id="entry1">
+                                    <property name="visible">True</property>
+                                    <property name="sensitive">False</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                  </object>
+                                  <packing>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child type="label">
+                  <object class="GtkLabel" id="label1">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="label" translatable="yes">New Value</property>
+                    <property name="use_markup">True</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="PsppireAcr" id="psppire-acr1">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="border_width">5</property>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkTable" id="table3">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="n_rows">2</property>
+                <property name="n_columns">2</property>
+                <child>
+                  <object class="GtkCheckButton" id="checkbutton1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="x_options"></property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkCheckButton" id="checkbutton2">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
+                    <property name="x_options"></property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="label14">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="xalign">0</property>
+                    <property name="label" translatable="yes">Convert numeric strings to numbers ('5' -&gt; 5)</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkHBox" id="hbox2">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <child>
+                      <object class="GtkLabel" id="label15">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Output variables are strings</property>
+                      </object>
+                      <packing>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkHBox" id="hbox3">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <child>
+                          <object class="GtkLabel" id="label16">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="xalign">1</property>
+                            <property name="label" translatable="yes">Width: </property>
+                          </object>
+                          <packing>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" id="spinbutton1">
+                            <property name="visible">True</property>
+                            <property name="sensitive">False</property>
+                            <property name="can_focus">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="adjustment">adjustment1</property>
+                            <property name="numeric">True</property>
+                            <property name="update_policy">if-valid</property>
+                          </object>
+                          <packing>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="fill">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="PsppireHButtonBox" id="psppire-hbuttonbox1">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="border_width">10</property>
+                <property name="buttons">PSPPIRE_BUTTON_CONTINUE_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="pack_type">end</property>
+                <property name="position">3</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="PsppireDialog" id="recode-dialog">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="title">Recode into Same Variables</property>
+    <property name="modal">True</property>
+    <property name="orientation">Tabular</property>
+    <child internal-child="hbox">
+      <object class="GtkTable" id="dialog-hbox3">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="n_rows">3</property>
+        <property name="n_columns">4</property>
+        <property name="column_spacing">5</property>
+        <property name="row_spacing">5</property>
+        <child>
+          <object class="GtkLabel" id="label22">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+          </object>
+          <packing>
+            <property name="left_attach">1</property>
+            <property name="right_attach">2</property>
+            <property name="top_attach">2</property>
+            <property name="bottom_attach">3</property>
+            <property name="y_options"></property>
+          </packing>
+        </child>
+        <child>
+          <object class="PsppireSelector" id="psppire-selector1">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="border_width">5</property>
+          </object>
+          <packing>
+            <property name="left_attach">1</property>
+            <property name="right_attach">2</property>
+            <property name="x_options"></property>
+            <property name="y_options"></property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkHBox" id="hbox4">
+            <property name="sensitive">False</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="orientation">vertical</property>
+            <property name="spacing">5</property>
+            <child>
+              <object class="GtkButton" id="button2">
+                <property name="label" translatable="yes">If...</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label18">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label" translatable="yes">(optional case selection condition)</property>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="right_attach">4</property>
+            <property name="top_attach">2</property>
+            <property name="bottom_attach">3</property>
+            <property name="y_options"></property>
+          </packing>
+        </child>
+        <child>
+          <object class="PsppireVButtonBox" id="psppire-vbuttonbox2">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="border_width">5</property>
+          </object>
+          <packing>
+            <property name="left_attach">3</property>
+            <property name="right_attach">4</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkScrolledWindow" id="scrolledwindow2">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="hscrollbar_policy">never</property>
+            <property name="vscrollbar_policy">automatic</property>
+            <property name="shadow_type">etched-in</property>
+            <child>
+              <object class="PsppireDictView" id="treeview1">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="headers_visible">False</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="bottom_attach">3</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkLabel" id="label23">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+          </object>
+          <packing>
+            <property name="left_attach">1</property>
+            <property name="right_attach">2</property>
+            <property name="top_attach">1</property>
+            <property name="bottom_attach">2</property>
+            <property name="x_options"></property>
+            <property name="y_options"></property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="frame4">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="label_xalign">0</property>
+            <child>
+              <object class="GtkAlignment" id="alignment8">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="vbox3">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="orientation">vertical</property>
+                    <child>
+                      <object class="GtkLabel" id="label20">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Name:</property>
+                      </object>
+                      <packing>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="dest-name-entry">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label21">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Label:</property>
+                      </object>
+                      <packing>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="dest-label-entry">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                      </object>
+                      <packing>
+                        <property name="position">3</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkHButtonBox" id="hbuttonbox3">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <child>
+                          <object class="GtkButton" id="change-button">
+                            <property name="label" translatable="yes">Change</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="padding">5</property>
+                        <property name="position">4</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="label19">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label" translatable="yes">Output Variable</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="left_attach">3</property>
+            <property name="right_attach">4</property>
+            <property name="top_attach">1</property>
+            <property name="bottom_attach">2</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkVBox" id="vbox4">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="orientation">vertical</property>
+            <property name="spacing">5</property>
+            <child>
+              <object class="GtkFrame" id="frame3">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label_xalign">0</property>
+                <property name="shadow_type">none</property>
+                <child>
+                  <object class="GtkAlignment" id="alignment4">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <object class="GtkScrolledWindow" id="scrolledwindow1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="hscrollbar_policy">never</property>
+                        <property name="vscrollbar_policy">automatic</property>
+                        <property name="shadow_type">etched-in</property>
+                        <child>
+                          <object class="GtkTreeView" id="treeview2">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="headers_visible">False</property>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child type="label">
+                  <object class="GtkLabel" id="label17">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="label" translatable="yes">Variables:</property>
+                    <property name="use_markup">True</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkAlignment" id="alignment5">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="xalign">0</property>
+                <property name="xscale">0</property>
+                <child>
+                  <object class="GtkHButtonBox" id="hbuttonbox1">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <child>
+                      <object class="GtkButton" id="button1">
+                        <property name="label" translatable="yes">Old and New Values</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="right_attach">3</property>
+            <property name="bottom_attach">2</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="GtkAdjustment" id="adjustment1">
+    <property name="value">8</property>
+    <property name="lower">1</property>
+    <property name="upper">255</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">8</property>
+  </object>
+</interface>
diff --git a/src/ui/gui/regression.glade b/src/ui/gui/regression.glade
deleted file mode 100644 (file)
index e6bac4d..0000000
+++ /dev/null
@@ -1,348 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<!--Generated with glade3 3.2.0 on Sat Mar  1 12:42:34 2008 by john@marilyn-->
-<glade-interface>
-  <requires lib="psppire"/>
-  <widget class="PsppireDialog" id="regression-dialog">
-    <property name="title">Regression</property>
-    <property name="modal">True</property>
-    <child internal-child="hbox">
-      <widget class="GtkHBox" id="dialog-hbox1">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="spacing">2</property>
-        <child>
-          <widget class="GtkTable" id="table1">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="n_rows">3</property>
-            <property name="n_columns">3</property>
-            <child>
-              <widget class="GtkHButtonBox" id="hbuttonbox1">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="layout_style">GTK_BUTTONBOX_SPREAD</property>
-                <child>
-                  <widget class="GtkButton" id="stat-button">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="label" translatable="yes">Statistics...</property>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkButton" id="save-button">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="label" translatable="yes">Save...</property>
-                  </widget>
-                  <packing>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="right_attach">3</property>
-                <property name="top_attach">2</property>
-                <property name="bottom_attach">3</property>
-                <property name="y_options"></property>
-                <property name="y_padding">5</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="PsppireSelector" id="dep-selector">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="no_show_all">True</property>
-                <property name="border_width">5</property>
-              </widget>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="x_options"></property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="PsppireSelector" id="indep-selector">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="no_show_all">True</property>
-                <property name="border_width">5</property>
-              </widget>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-                <property name="x_options"></property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkScrolledWindow" id="variables">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-                <child>
-                  <widget class="PsppireDictView" id="dict-view">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="headers_visible">False</property>
-                  </widget>
-                </child>
-              </widget>
-              <packing>
-                <property name="bottom_attach">2</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkFrame" id="frame2">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="shadow_type">GTK_SHADOW_NONE</property>
-                <child>
-                  <widget class="GtkAlignment" id="alignment1">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="left_padding">12</property>
-                    <child>
-                      <widget class="GtkScrolledWindow" id="scrolledwindow1">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                        <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                        <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-                        <child>
-                          <widget class="GtkTreeView" id="dep-view">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="headers_visible">False</property>
-                            <property name="headers_clickable">True</property>
-                          </widget>
-                        </child>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkLabel" id="label1">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="label" translatable="yes">Dependent</property>
-                    <property name="use_markup">True</property>
-                  </widget>
-                  <packing>
-                    <property name="type">label_item</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="left_attach">2</property>
-                <property name="right_attach">3</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkFrame" id="frame3">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="shadow_type">GTK_SHADOW_NONE</property>
-                <child>
-                  <widget class="GtkAlignment" id="alignment2">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="left_padding">12</property>
-                    <child>
-                      <widget class="GtkScrolledWindow" id="scrolledwindow2">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                        <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                        <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-                        <child>
-                          <widget class="GtkTreeView" id="indep-view">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="headers_visible">False</property>
-                            <property name="headers_clickable">True</property>
-                          </widget>
-                        </child>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkLabel" id="label3">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="label" translatable="yes">Independent</property>
-                    <property name="use_markup">True</property>
-                  </widget>
-                  <packing>
-                    <property name="type">label_item</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="left_attach">2</property>
-                <property name="right_attach">3</property>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-              </packing>
-            </child>
-          </widget>
-        </child>
-        <child>
-          <widget class="PsppireVButtonBox" id="psppire-vbuttonbox1">
-            <property name="visible">True</property>
-            <property name="border_width">5</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="PsppireDialog" id="save-dialog">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="title">Regression: Save</property>
-    <property name="modal">True</property>
-    <child internal-child="hbox">
-      <widget class="GtkHBox" id="dialog-hbox2">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="spacing">2</property>
-        <child>
-          <widget class="GtkVBox" id="vbox5">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <child>
-              <widget class="GtkCheckButton" id="pred-button">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label" translatable="yes">Predicted values</property>
-                <property name="draw_indicator">True</property>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkCheckButton" id="resid-button">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label" translatable="yes">Residuals</property>
-                <property name="draw_indicator">True</property>
-              </widget>
-              <packing>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </widget>
-        </child>
-        <child>
-          <widget class="PsppireVButtonBox" id="psppire-vbuttonbox2">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="border_width">5</property>
-            <property name="buttons">PSPPIRE_BUTTON_CONTINUE_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="PsppireDialog" id="statistics-dialog">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="title">Regression: Statistics</property>
-    <property name="modal">True</property>
-    <child internal-child="hbox">
-      <widget class="GtkHBox" id="dialog-hbox3">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="spacing">2</property>
-        <child>
-          <widget class="GtkFrame" id="frame1">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="shadow_type">GTK_SHADOW_NONE</property>
-            <child>
-              <widget class="GtkAlignment" id="alignment3">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <widget class="GtkScrolledWindow" id="scrolledwindow4">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                    <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                    <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-                    <child>
-                      <widget class="GtkTreeView" id="stat-view">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="headers_visible">False</property>
-                        <property name="headers_clickable">True</property>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkLabel" id="label2">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label" translatable="yes">Statistics</property>
-                <property name="use_markup">True</property>
-              </widget>
-              <packing>
-                <property name="type">label_item</property>
-              </packing>
-            </child>
-          </widget>
-        </child>
-        <child>
-          <widget class="PsppireVButtonBox" id="psppire-vbuttonbox3">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="border_width">5</property>
-            <property name="buttons">PSPPIRE_BUTTON_CONTINUE_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-</glade-interface>
diff --git a/src/ui/gui/regression.ui b/src/ui/gui/regression.ui
new file mode 100644 (file)
index 0000000..190e686
--- /dev/null
@@ -0,0 +1,363 @@
+<?xml version="1.0"?>
+<interface>
+  <!-- interface-requires gtk+ 2.12 -->
+  <requires lib="psppire" version="2054.17080"/>
+  <!-- interface-naming-policy project-wide -->
+  <object class="PsppireDialog" id="regression-dialog">
+    <property name="title">Regression</property>
+    <property name="modal">True</property>
+    <child internal-child="hbox">
+      <object class="GtkHBox" id="dialog-hbox1">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkTable" id="table1">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="n_rows">3</property>
+            <property name="n_columns">3</property>
+            <child>
+              <object class="GtkHButtonBox" id="hbuttonbox1">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="layout_style">spread</property>
+                <child>
+                  <object class="GtkButton" id="stat-button">
+                    <property name="label" translatable="yes">Statistics...</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkButton" id="save-button">
+                    <property name="label" translatable="yes">Save...</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="right_attach">3</property>
+                <property name="top_attach">2</property>
+                <property name="bottom_attach">3</property>
+                <property name="y_options"></property>
+                <property name="y_padding">5</property>
+              </packing>
+            </child>
+            <child>
+              <object class="PsppireSelector" id="dep-selector">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="no_show_all">True</property>
+                <property name="border_width">5</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="x_options"></property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <object class="PsppireSelector" id="indep-selector">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="no_show_all">True</property>
+                <property name="border_width">5</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="x_options"></property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkScrolledWindow" id="variables">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="hscrollbar_policy">never</property>
+                <property name="vscrollbar_policy">automatic</property>
+                <property name="shadow_type">etched-in</property>
+                <child>
+                  <object class="PsppireDictView" id="dict-view">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="headers_visible">False</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="bottom_attach">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkFrame" id="frame2">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label_xalign">0</property>
+                <property name="shadow_type">none</property>
+                <child>
+                  <object class="GtkAlignment" id="alignment1">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <object class="GtkScrolledWindow" id="scrolledwindow1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="hscrollbar_policy">never</property>
+                        <property name="vscrollbar_policy">automatic</property>
+                        <property name="shadow_type">etched-in</property>
+                        <child>
+                          <object class="GtkTreeView" id="dep-view">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="headers_visible">False</property>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child type="label">
+                  <object class="GtkLabel" id="label1">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="label" translatable="yes">Dependent</property>
+                    <property name="use_markup">True</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="left_attach">2</property>
+                <property name="right_attach">3</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkFrame" id="frame3">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label_xalign">0</property>
+                <property name="shadow_type">none</property>
+                <child>
+                  <object class="GtkAlignment" id="alignment2">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <object class="GtkScrolledWindow" id="scrolledwindow2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="hscrollbar_policy">never</property>
+                        <property name="vscrollbar_policy">automatic</property>
+                        <property name="shadow_type">etched-in</property>
+                        <child>
+                          <object class="GtkTreeView" id="indep-view">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="headers_visible">False</property>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child type="label">
+                  <object class="GtkLabel" id="label3">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="label" translatable="yes">Independent</property>
+                    <property name="use_markup">True</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="left_attach">2</property>
+                <property name="right_attach">3</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="PsppireVButtonBox" id="psppire-vbuttonbox1">
+            <property name="visible">True</property>
+            <property name="border_width">5</property>
+            <property name="orientation">vertical</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="PsppireDialog" id="save-dialog">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="title">Regression: Save</property>
+    <property name="modal">True</property>
+    <child internal-child="hbox">
+      <object class="GtkHBox" id="dialog-hbox2">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkVBox" id="vbox5">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="orientation">vertical</property>
+            <child>
+              <object class="GtkCheckButton" id="pred-button">
+                <property name="label" translatable="yes">Predicted values</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="draw_indicator">True</property>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkCheckButton" id="resid-button">
+                <property name="label" translatable="yes">Residuals</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="draw_indicator">True</property>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="PsppireVButtonBox" id="psppire-vbuttonbox2">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="border_width">5</property>
+            <property name="buttons">PSPPIRE_BUTTON_CONTINUE_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="PsppireDialog" id="statistics-dialog">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="title">Regression: Statistics</property>
+    <property name="modal">True</property>
+    <child internal-child="hbox">
+      <object class="GtkHBox" id="dialog-hbox3">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkFrame" id="frame1">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="alignment3">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkScrolledWindow" id="scrolledwindow4">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="hscrollbar_policy">never</property>
+                    <property name="vscrollbar_policy">automatic</property>
+                    <property name="shadow_type">etched-in</property>
+                    <child>
+                      <object class="GtkTreeView" id="stat-view">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="headers_visible">False</property>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="label2">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label" translatable="yes">Statistics</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="PsppireVButtonBox" id="psppire-vbuttonbox3">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="border_width">5</property>
+            <property name="orientation">vertical</property>
+            <property name="buttons">PSPPIRE_BUTTON_CONTINUE_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/src/ui/gui/reliability.glade b/src/ui/gui/reliability.glade
deleted file mode 100644 (file)
index fd10686..0000000
+++ /dev/null
@@ -1,184 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<!--Generated with glade3 3.4.5 on Fri Apr  3 12:11:45 2009 -->
-<glade-interface>
-  <requires lib="psppire"/>
-  <widget class="PsppireDialog" id="reliability-dialog">
-    <property name="title" translatable="yes">Reliability Analysis</property>
-    <property name="modal">True</property>
-    <child internal-child="hbox">
-      <widget class="GtkHBox" id="dialog-hbox1">
-        <property name="visible">True</property>
-        <child>
-          <widget class="GtkVBox" id="vbox1">
-            <property name="visible">True</property>
-            <property name="spacing">12</property>
-            <child>
-              <widget class="GtkHBox" id="hbox1">
-                <property name="visible">True</property>
-                <child>
-                  <widget class="GtkScrolledWindow" id="scrolledwindow1">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                    <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                    <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-                    <child>
-                      <widget class="PsppireDictView" id="dict-view">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="has_tooltip">True</property>
-                        <property name="border_width">5</property>
-                        <property name="headers_visible">False</property>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkAlignment" id="alignment2">
-                    <property name="visible">True</property>
-                    <property name="xscale">0</property>
-                    <property name="yscale">0</property>
-                    <child>
-                      <widget class="PsppireSelector" id="psppire-selector1">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">True</property>
-                        <property name="no_show_all">True</property>
-                        <property name="border_width">5</property>
-                        <property name="response_id">0</property>
-                      </widget>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkFrame" id="frame1">
-                    <property name="visible">True</property>
-                    <property name="label_xalign">0</property>
-                    <property name="shadow_type">GTK_SHADOW_NONE</property>
-                    <child>
-                      <widget class="GtkAlignment" id="alignment1">
-                        <property name="visible">True</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <widget class="GtkScrolledWindow" id="scrolledwindow2">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                            <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                            <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-                            <child>
-                              <widget class="GtkTreeView" id="treeview2">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="headers_visible">False</property>
-                              </widget>
-                            </child>
-                          </widget>
-                        </child>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkLabel" id="label1">
-                        <property name="visible">True</property>
-                        <property name="label" translatable="yes">_Items:</property>
-                        <property name="use_markup">True</property>
-                        <property name="use_underline">True</property>
-                      </widget>
-                      <packing>
-                        <property name="type">label_item</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="position">2</property>
-                  </packing>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkHBox" id="hbox2">
-                <property name="visible">True</property>
-                <child>
-                  <widget class="GtkLabel" id="">
-                    <property name="visible">True</property>
-                    <property name="xalign">1</property>
-                    <property name="label" translatable="yes">Model:   </property>
-                    <property name="justify">GTK_JUSTIFY_RIGHT</property>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkComboBox" id="combobox1">
-                    <property name="visible">True</property>
-                    <property name="items" translatable="yes">Alpha
-Split</property>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkHBox" id="split-point-hbox">
-                <property name="visible">True</property>
-                <property name="sensitive">False</property>
-                <property name="spacing">5</property>
-                <child>
-                  <widget class="GtkLabel" id="label2">
-                    <property name="visible">True</property>
-                    <property name="label" translatable="yes">Variables in first split:</property>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkSpinButton" id="spinbutton1">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="adjustment">0 0 100 1 10 10</property>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="position">2</property>
-              </packing>
-            </child>
-          </widget>
-        </child>
-        <child>
-          <widget class="PsppireVButtonBox" id="psppire-vbuttonbox1">
-            <property name="visible">True</property>
-            <property name="border_width">5</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-</glade-interface>
diff --git a/src/ui/gui/reliability.ui b/src/ui/gui/reliability.ui
new file mode 100644 (file)
index 0000000..c63cb5c
--- /dev/null
@@ -0,0 +1,217 @@
+<?xml version="1.0"?>
+<interface>
+  <!-- interface-requires gtk+ 2.12 -->
+  <!-- interface-requires psppire 0.0 -->
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="GtkAdjustment" id="adjustment1">
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+    <property name="page_size">10</property>
+  </object>
+  <object class="GtkListStore" id="model1">
+    <columns>
+      <!-- column-name gchararray -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0" translatable="yes">Alpha</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Split</col>
+      </row>
+    </data>
+  </object>
+  <object class="PsppireDialog" id="reliability-dialog">
+    <property name="title" translatable="yes">Reliability Analysis</property>
+    <property name="modal">True</property>
+    <child internal-child="hbox">
+      <object class="GtkHBox" id="dialog-hbox1">
+        <property name="visible">True</property>
+        <child>
+          <object class="GtkVBox" id="vbox1">
+            <property name="visible">True</property>
+            <property name="orientation">vertical</property>
+            <property name="spacing">12</property>
+            <child>
+              <object class="GtkHBox" id="hbox1">
+                <property name="visible">True</property>
+                <child>
+                  <object class="GtkScrolledWindow" id="scrolledwindow1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="hscrollbar_policy">automatic</property>
+                    <property name="vscrollbar_policy">automatic</property>
+                    <property name="shadow_type">etched-in</property>
+                    <child>
+                      <object class="PsppireDictView" id="dict-view">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="has_tooltip">True</property>
+                        <property name="border_width">5</property>
+                        <property name="headers_visible">False</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkAlignment" id="alignment2">
+                    <property name="visible">True</property>
+                    <property name="xscale">0</property>
+                    <property name="yscale">0</property>
+                    <child>
+                      <object class="PsppireSelector" id="psppire-selector1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <property name="no_show_all">True</property>
+                        <property name="border_width">5</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkFrame" id="frame1">
+                    <property name="visible">True</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <object class="GtkAlignment" id="alignment1">
+                        <property name="visible">True</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkScrolledWindow" id="scrolledwindow2">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="hscrollbar_policy">automatic</property>
+                            <property name="vscrollbar_policy">automatic</property>
+                            <property name="shadow_type">etched-in</property>
+                            <child>
+                              <object class="GtkTreeView" id="treeview2">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="headers_visible">False</property>
+                              </object>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" id="label1">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">_Items:</property>
+                        <property name="use_markup">True</property>
+                        <property name="use_underline">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHBox" id="hbox2">
+                <property name="visible">True</property>
+                <child>
+                  <object class="GtkLabel">
+                    <property name="visible">True</property>
+                    <property name="xalign">1</property>
+                    <property name="label" translatable="yes">Model:   </property>
+                    <property name="justify">right</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkComboBox" id="combobox1">
+                    <property name="visible">True</property>
+                    <property name="model">model1</property>
+                    <child>
+                      <object class="GtkCellRendererText" id="renderer1"/>
+                      <attributes>
+                        <attribute name="text">0</attribute>
+                      </attributes>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHBox" id="split-point-hbox">
+                <property name="visible">True</property>
+                <property name="sensitive">False</property>
+                <property name="spacing">5</property>
+                <child>
+                  <object class="GtkLabel" id="label2">
+                    <property name="visible">True</property>
+                    <property name="label" translatable="yes">Variables in first split:</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkSpinButton" id="spinbutton1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="adjustment">adjustment1</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="PsppireVButtonBox" id="psppire-vbuttonbox1">
+            <property name="visible">True</property>
+            <property name="border_width">5</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/src/ui/gui/t-test.glade b/src/ui/gui/t-test.glade
deleted file mode 100644 (file)
index 040a99e..0000000
+++ /dev/null
@@ -1,813 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<!--*- mode: xml -*-->
-<glade-interface>
-  <requires lib="psppire"/>
-  <widget class="PsppireDialog" id="t-test-independent-samples-dialog">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="title">Independent-Samples T Test</property>
-    <property name="modal">True</property>
-    <child internal-child="hbox">
-      <widget class="GtkHBox" id="dialog-hbox15">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="spacing">2</property>
-        <child>
-          <widget class="GtkHBox" id="hbox23">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="spacing">5</property>
-            <child>
-              <widget class="GtkScrolledWindow" id="scrolledwindow14">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-                <child>
-                  <widget class="PsppireDictView" id="indep-samples-t-test-treeview1">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="headers_visible">False</property>
-                    <property name="headers_clickable">True</property>
-                  </widget>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkTable" id="table4">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="n_rows">3</property>
-                <property name="n_columns">2</property>
-                <child>
-                  <widget class="GtkHButtonBox" id="hbuttonbox1">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="layout_style">GTK_BUTTONBOX_SPREAD</property>
-                    <child>
-                      <widget class="GtkButton" id="define-groups-button">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">Define Groups</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkButton" id="indep-samples-t-test-options-button">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">Options...</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="right_attach">2</property>
-                    <property name="top_attach">2</property>
-                    <property name="bottom_attach">3</property>
-                    <property name="y_options">GTK_FILL</property>
-                    <property name="y_padding">5</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="PsppireSelector" id="indep-samples-t-test-selector1">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="border_width">5</property>
-                  </widget>
-                  <packing>
-                    <property name="x_options"></property>
-                    <property name="y_options">GTK_EXPAND</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="PsppireSelector" id="indep-samples-t-test-selector2">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="border_width">5</property>
-                  </widget>
-                  <packing>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                    <property name="x_options"></property>
-                    <property name="y_options"></property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkVBox" id="vbox29">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <child>
-                      <widget class="GtkLabel" id="label35">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="xalign">0</property>
-                        <property name="label" translatable="yes">Test Variable(s):</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkScrolledWindow" id="scrolledwindow15">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                        <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                        <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-                        <child>
-                          <widget class="GtkTreeView" id="indep-samples-t-test-treeview2">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="headers_visible">False</property>
-                          </widget>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkVBox" id="vbox30">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <child>
-                      <widget class="GtkLabel" id="label36">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">Define Groups</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkEntry" id="indep-samples-t-test-entry">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                      </widget>
-                      <packing>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                    <property name="y_options"></property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </widget>
-        </child>
-        <child>
-          <widget class="PsppireVButtonBox" id="psppire-vbuttonbox2">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="border_width">5</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="PsppireDialog" id="define-groups-dialog">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="title">Define Groups</property>
-    <property name="modal">True</property>
-    <child internal-child="hbox">
-      <widget class="GtkHBox" id="dialog-hbox2">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="spacing">2</property>
-        <child>
-          <widget class="GtkTable" id="table1">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="n_rows">3</property>
-            <property name="n_columns">2</property>
-            <property name="column_spacing">5</property>
-            <property name="row_spacing">5</property>
-            <child>
-              <placeholder/>
-            </child>
-            <child>
-              <widget class="GtkRadioButton" id="radiobutton3">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="active">True</property>
-                <property name="draw_indicator">True</property>
-              </widget>
-              <packing>
-                <property name="x_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkTable" id="table2">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="n_rows">2</property>
-                <property name="n_columns">2</property>
-                <property name="column_spacing">5</property>
-                <property name="row_spacing">5</property>
-                <child>
-                  <widget class="GtkLabel" id="label2">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="label" translatable="yes">Group_2 value:</property>
-                    <property name="use_underline">True</property>
-                  </widget>
-                  <packing>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                    <property name="x_options"></property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkLabel" id="label1">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="label" translatable="yes">Group_1 value:</property>
-                    <property name="use_underline">True</property>
-                  </widget>
-                  <packing>
-                    <property name="x_options"></property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkEntry" id="group2-entry">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                  </widget>
-                  <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkEntry" id="group1-entry">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                  </widget>
-                  <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-                <property name="y_options">GTK_EXPAND</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkHBox" id="hbox1">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <child>
-                  <widget class="GtkLabel" id="label5">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="xalign">0</property>
-                    <property name="label" translatable="yes">_Cut point:</property>
-                    <property name="use_underline">True</property>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkEntry" id="cut-point-entry">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                  </widget>
-                  <packing>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="top_attach">2</property>
-                <property name="bottom_attach">3</property>
-                <property name="y_options"></property>
-                <property name="y_padding">5</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkLabel" id="label4">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes">_Use specified values:</property>
-                <property name="use_underline">True</property>
-              </widget>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkRadioButton" id="radiobutton4">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="active">True</property>
-                <property name="draw_indicator">True</property>
-                <property name="group">radiobutton3</property>
-              </widget>
-              <packing>
-                <property name="top_attach">2</property>
-                <property name="bottom_attach">3</property>
-                <property name="x_options"></property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="padding">5</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="PsppireVButtonBox" id="psppire-vbuttonbox1">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="border_width">5</property>
-            <property name="buttons">PSPPIRE_BUTTON_CONTINUE_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="PsppireDialog" id="options-dialog">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="title">Options</property>
-    <property name="modal">True</property>
-    <child internal-child="hbox">
-      <widget class="GtkHBox" id="dialog-hbox3">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="spacing">2</property>
-        <child>
-          <widget class="GtkVBox" id="vbox1">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <child>
-              <placeholder/>
-            </child>
-            <child>
-              <widget class="GtkFrame" id="frame1">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <child>
-                  <widget class="GtkAlignment" id="alignment1">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="left_padding">12</property>
-                    <child>
-                      <widget class="GtkVButtonBox" id="vbuttonbox1">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="layout_style">GTK_BUTTONBOX_SPREAD</property>
-                        <child>
-                          <widget class="GtkRadioButton" id="radiobutton1">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">Exclude cases _analysis by analysis</property>
-                            <property name="use_underline">True</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                          </widget>
-                        </child>
-                        <child>
-                          <widget class="GtkRadioButton" id="radiobutton2">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">Exclude cases _listwise</property>
-                            <property name="use_underline">True</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <property name="group">radiobutton1</property>
-                          </widget>
-                          <packing>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkLabel" id="label3">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="label" translatable="yes">Missing Values</property>
-                    <property name="use_markup">True</property>
-                  </widget>
-                  <packing>
-                    <property name="type">label_item</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="pack_type">GTK_PACK_END</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </widget>
-        </child>
-        <child>
-          <widget class="PsppireVButtonBox" id="psppire-vbuttonbox3">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="border_width">5</property>
-            <property name="homogeneous">True</property>
-            <property name="buttons">PSPPIRE_BUTTON_CONTINUE_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="PsppireDialog" id="t-test-one-sample-dialog">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="title">One - Sample T Test</property>
-    <property name="modal">True</property>
-    <property name="orientation">PSPPIRE_TABULAR</property>
-    <child internal-child="hbox">
-      <widget class="GtkTable" id="dialog-hbox5">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="n_rows">2</property>
-        <property name="n_columns">4</property>
-        <child>
-          <widget class="PsppireVButtonBox" id="psppire-vbuttonbox5">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="border_width">5</property>
-          </widget>
-          <packing>
-            <property name="left_attach">3</property>
-            <property name="right_attach">4</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkFrame" id="frame2">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="shadow_type">GTK_SHADOW_NONE</property>
-            <child>
-              <widget class="GtkAlignment" id="alignment2">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <widget class="GtkScrolledWindow" id="scrolledwindow3">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                    <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                    <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-                    <child>
-                      <widget class="GtkTreeView" id="one-sample-t-test-treeview1">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="headers_visible">False</property>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkLabel" id="label6">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label" translatable="yes">Test Variable(s):</property>
-                <property name="use_markup">True</property>
-              </widget>
-              <packing>
-                <property name="type">label_item</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="left_attach">2</property>
-            <property name="right_attach">3</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkScrolledWindow" id="scrolledwindow4">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-            <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-            <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-            <child>
-              <widget class="PsppireDictView" id="one-sample-t-test-treeview2">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="headers_visible">False</property>
-              </widget>
-            </child>
-          </widget>
-          <packing>
-            <property name="bottom_attach">2</property>
-            <property name="x_padding">5</property>
-            <property name="y_padding">5</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkHBox" id="hbox2">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <child>
-              <widget class="GtkLabel" id="label7">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes">Test Value: </property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkEntry" id="test-value-entry">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="padding">5</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="left_attach">2</property>
-            <property name="right_attach">3</property>
-            <property name="top_attach">1</property>
-            <property name="bottom_attach">2</property>
-            <property name="y_options"></property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkButton" id="button1">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="receives_default">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="label" translatable="yes">Options...</property>
-          </widget>
-          <packing>
-            <property name="left_attach">3</property>
-            <property name="right_attach">4</property>
-            <property name="top_attach">1</property>
-            <property name="bottom_attach">2</property>
-            <property name="y_options"></property>
-            <property name="x_padding">5</property>
-            <property name="y_padding">5</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkAlignment" id="alignment3">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="yalign">0.059999998658895493</property>
-            <property name="yscale">0</property>
-            <child>
-              <widget class="PsppireSelector" id="psppire-selector1">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="no_show_all">True</property>
-                <property name="border_width">5</property>
-              </widget>
-            </child>
-          </widget>
-          <packing>
-            <property name="left_attach">1</property>
-            <property name="right_attach">2</property>
-            <property name="bottom_attach">2</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="PsppireDialog" id="t-test-paired-samples-dialog">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="title">Paired Samples T Test</property>
-    <property name="modal">True</property>
-    <child internal-child="hbox">
-      <widget class="GtkHBox" id="dialog-hbox6">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="spacing">2</property>
-        <child>
-          <widget class="GtkHBox" id="hbox3">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <child>
-              <widget class="GtkScrolledWindow" id="scrolledwindow2">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-                <child>
-                  <widget class="PsppireDictView" id="paired-samples-t-test-treeview1">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="headers_visible">False</property>
-                    <property name="headers_clickable">True</property>
-                  </widget>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkAlignment" id="alignment5">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="yalign">0.059999998658895493</property>
-                <property name="yscale">0</property>
-                <child>
-                  <widget class="PsppireSelector" id="psppire-selector3">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="no_show_all">True</property>
-                    <property name="border_width">5</property>
-                  </widget>
-                </child>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkVBox" id="vbox3">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="spacing">5</property>
-                <child>
-                  <widget class="GtkFrame" id="frame4">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="shadow_type">GTK_SHADOW_NONE</property>
-                    <child>
-                      <widget class="GtkAlignment" id="alignment6">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <widget class="GtkScrolledWindow" id="scrolledwindow1">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                            <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                            <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-                            <child>
-                              <widget class="GtkTreeView" id="paired-samples-t-test-treeview2">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="enable_search">False</property>
-                              </widget>
-                            </child>
-                          </widget>
-                        </child>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkLabel" id="label13">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">Test Variable(s):</property>
-                        <property name="use_markup">True</property>
-                      </widget>
-                      <packing>
-                        <property name="type">label_item</property>
-                      </packing>
-                    </child>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkVButtonBox" id="vbuttonbox2">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <child>
-                      <widget class="GtkButton" id="paired-samples-t-test-options-button">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">Options...</property>
-                      </widget>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="position">2</property>
-              </packing>
-            </child>
-          </widget>
-        </child>
-        <child>
-          <widget class="PsppireVButtonBox" id="psppire-vbuttonbox4">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="border_width">5</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-</glade-interface>
diff --git a/src/ui/gui/t-test.ui b/src/ui/gui/t-test.ui
new file mode 100644 (file)
index 0000000..74d8d06
--- /dev/null
@@ -0,0 +1,856 @@
+<?xml version="1.0"?>
+<interface>
+  <requires lib="psppire" version="2054.17080"/>
+  <!-- interface-requires gtk+ 2.12 -->
+  <!-- interface-naming-policy project-wide -->
+  <object class="PsppireDialog" id="t-test-independent-samples-dialog">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="title">Independent-Samples T Test</property>
+    <property name="modal">True</property>
+    <child internal-child="hbox">
+      <object class="GtkHBox" id="dialog-hbox15">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkHBox" id="hbox23">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="spacing">5</property>
+            <child>
+              <object class="GtkScrolledWindow" id="scrolledwindow14">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="hscrollbar_policy">never</property>
+                <property name="vscrollbar_policy">automatic</property>
+                <property name="shadow_type">etched-in</property>
+                <child>
+                  <object class="PsppireDictView" id="indep-samples-t-test-treeview1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="headers_visible">False</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkTable" id="table4">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="n_rows">3</property>
+                <property name="n_columns">2</property>
+                <child>
+                  <object class="GtkHButtonBox" id="hbuttonbox1">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="layout_style">spread</property>
+                    <child>
+                      <object class="GtkButton" id="define-groups-button">
+                        <property name="label" translatable="yes">Define Groups</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkButton" id="indep-samples-t-test-options-button">
+                        <property name="label" translatable="yes">Options...</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="right_attach">2</property>
+                    <property name="top_attach">2</property>
+                    <property name="bottom_attach">3</property>
+                    <property name="y_options">GTK_FILL</property>
+                    <property name="y_padding">5</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="PsppireSelector" id="indep-samples-t-test-selector1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="border_width">5</property>
+                  </object>
+                  <packing>
+                    <property name="x_options"></property>
+                    <property name="y_options">GTK_EXPAND</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="PsppireSelector" id="indep-samples-t-test-selector2">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="border_width">5</property>
+                  </object>
+                  <packing>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
+                    <property name="x_options"></property>
+                    <property name="y_options"></property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkVBox" id="vbox29">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="orientation">vertical</property>
+                    <child>
+                      <object class="GtkLabel" id="label35">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Test Variable(s):</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkScrolledWindow" id="scrolledwindow15">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="hscrollbar_policy">automatic</property>
+                        <property name="vscrollbar_policy">automatic</property>
+                        <property name="shadow_type">etched-in</property>
+                        <child>
+                          <object class="GtkTreeView" id="indep-samples-t-test-treeview2">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="headers_visible">False</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkVBox" id="vbox30">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="orientation">vertical</property>
+                    <child>
+                      <object class="GtkLabel" id="label36">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="label" translatable="yes">Define Groups</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="indep-samples-t-test-entry">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
+                    <property name="y_options"></property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="PsppireVButtonBox" id="psppire-vbuttonbox2">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="border_width">5</property>
+            <property name="orientation">vertical</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="PsppireDialog" id="define-groups-dialog">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="title">Define Groups</property>
+    <property name="modal">True</property>
+    <child internal-child="hbox">
+      <object class="GtkHBox" id="dialog-hbox2">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkTable" id="table1">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="n_rows">3</property>
+            <property name="n_columns">2</property>
+            <property name="column_spacing">5</property>
+            <property name="row_spacing">5</property>
+            <child>
+              <object class="GtkRadioButton" id="radiobutton3">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="active">True</property>
+                <property name="draw_indicator">True</property>
+              </object>
+              <packing>
+                <property name="x_options"></property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkTable" id="table2">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="n_rows">2</property>
+                <property name="n_columns">2</property>
+                <property name="column_spacing">5</property>
+                <property name="row_spacing">5</property>
+                <child>
+                  <object class="GtkLabel" id="label2">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="label" translatable="yes">Group_2 value:</property>
+                    <property name="use_underline">True</property>
+                  </object>
+                  <packing>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
+                    <property name="x_options"></property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="label1">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="label" translatable="yes">Group_1 value:</property>
+                    <property name="use_underline">True</property>
+                  </object>
+                  <packing>
+                    <property name="x_options"></property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkEntry" id="group2-entry">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkEntry" id="group1-entry">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="y_options">GTK_EXPAND</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHBox" id="hbox1">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <child>
+                  <object class="GtkLabel" id="label5">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="xalign">0</property>
+                    <property name="label" translatable="yes">_Cut point:</property>
+                    <property name="use_underline">True</property>
+                  </object>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkEntry" id="cut-point-entry">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">2</property>
+                <property name="bottom_attach">3</property>
+                <property name="y_options"></property>
+                <property name="y_padding">5</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label4">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes">_Use specified values:</property>
+                <property name="use_underline">True</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkRadioButton" id="radiobutton4">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="active">True</property>
+                <property name="draw_indicator">True</property>
+                <property name="group">radiobutton3</property>
+              </object>
+              <packing>
+                <property name="top_attach">2</property>
+                <property name="bottom_attach">3</property>
+                <property name="x_options"></property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <placeholder/>
+            </child>
+          </object>
+          <packing>
+            <property name="padding">5</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="PsppireVButtonBox" id="psppire-vbuttonbox1">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="border_width">5</property>
+            <property name="orientation">vertical</property>
+            <property name="buttons">PSPPIRE_BUTTON_CONTINUE_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="PsppireDialog" id="options-dialog">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="title">Options</property>
+    <property name="modal">True</property>
+    <child internal-child="hbox">
+      <object class="GtkHBox" id="dialog-hbox3">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkVBox" id="vbox1">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="orientation">vertical</property>
+            <child>
+              <placeholder/>
+            </child>
+            <child>
+              <object class="GtkFrame" id="frame1">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label_xalign">0</property>
+                <child>
+                  <object class="GtkAlignment" id="alignment1">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <object class="GtkVButtonBox" id="vbuttonbox1">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="layout_style">spread</property>
+                        <child>
+                          <object class="GtkRadioButton" id="radiobutton1">
+                            <property name="label" translatable="yes">Exclude cases _analysis by analysis</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="use_underline">True</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" id="radiobutton2">
+                            <property name="label" translatable="yes">Exclude cases _listwise</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="use_underline">True</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property name="group">radiobutton1</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child type="label">
+                  <object class="GtkLabel" id="label3">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="label" translatable="yes">Missing Values</property>
+                    <property name="use_markup">True</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="pack_type">end</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="PsppireVButtonBox" id="psppire-vbuttonbox3">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="border_width">5</property>
+            <property name="orientation">vertical</property>
+            <property name="homogeneous">True</property>
+            <property name="buttons">PSPPIRE_BUTTON_CONTINUE_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="PsppireDialog" id="t-test-one-sample-dialog">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="title">One - Sample T Test</property>
+    <property name="modal">True</property>
+    <property name="orientation">Tabular</property>
+    <child internal-child="hbox">
+      <object class="GtkTable" id="dialog-hbox5">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="n_rows">2</property>
+        <property name="n_columns">4</property>
+        <child>
+          <object class="PsppireVButtonBox" id="psppire-vbuttonbox5">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="border_width">5</property>
+          </object>
+          <packing>
+            <property name="left_attach">3</property>
+            <property name="right_attach">4</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="frame2">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="alignment2">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkScrolledWindow" id="scrolledwindow3">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="hscrollbar_policy">never</property>
+                    <property name="vscrollbar_policy">automatic</property>
+                    <property name="shadow_type">etched-in</property>
+                    <child>
+                      <object class="GtkTreeView" id="one-sample-t-test-treeview1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="headers_visible">False</property>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="label6">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label" translatable="yes">Test Variable(s):</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="right_attach">3</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkScrolledWindow" id="scrolledwindow4">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="hscrollbar_policy">never</property>
+            <property name="vscrollbar_policy">automatic</property>
+            <property name="shadow_type">etched-in</property>
+            <child>
+              <object class="PsppireDictView" id="one-sample-t-test-treeview2">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="headers_visible">False</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="bottom_attach">2</property>
+            <property name="x_padding">5</property>
+            <property name="y_padding">5</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkHBox" id="hbox2">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <child>
+              <object class="GtkLabel" id="label7">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes">Test Value: </property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkEntry" id="test-value-entry">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="padding">5</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="right_attach">3</property>
+            <property name="top_attach">1</property>
+            <property name="bottom_attach">2</property>
+            <property name="y_options"></property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkButton" id="button1">
+            <property name="label" translatable="yes">Options...</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+          </object>
+          <packing>
+            <property name="left_attach">3</property>
+            <property name="right_attach">4</property>
+            <property name="top_attach">1</property>
+            <property name="bottom_attach">2</property>
+            <property name="y_options"></property>
+            <property name="x_padding">5</property>
+            <property name="y_padding">5</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkAlignment" id="alignment3">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="yalign">0.059999998658895493</property>
+            <property name="yscale">0</property>
+            <child>
+              <object class="PsppireSelector" id="psppire-selector1">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="no_show_all">True</property>
+                <property name="border_width">5</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="left_attach">1</property>
+            <property name="right_attach">2</property>
+            <property name="bottom_attach">2</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="PsppireDialog" id="t-test-paired-samples-dialog">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="title">Paired Samples T Test</property>
+    <property name="modal">True</property>
+    <child internal-child="hbox">
+      <object class="GtkHBox" id="dialog-hbox6">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkHBox" id="hbox3">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <child>
+              <object class="GtkScrolledWindow" id="scrolledwindow2">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="hscrollbar_policy">never</property>
+                <property name="vscrollbar_policy">automatic</property>
+                <property name="shadow_type">etched-in</property>
+                <child>
+                  <object class="PsppireDictView" id="paired-samples-t-test-treeview1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="headers_visible">False</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkAlignment" id="alignment5">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="yalign">0.059999998658895493</property>
+                <property name="yscale">0</property>
+                <child>
+                  <object class="PsppireSelector" id="psppire-selector3">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="no_show_all">True</property>
+                    <property name="border_width">5</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkVBox" id="vbox3">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="orientation">vertical</property>
+                <property name="spacing">5</property>
+                <child>
+                  <object class="GtkFrame" id="frame4">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <object class="GtkAlignment" id="alignment6">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkScrolledWindow" id="scrolledwindow1">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="hscrollbar_policy">never</property>
+                            <property name="vscrollbar_policy">automatic</property>
+                            <property name="shadow_type">etched-in</property>
+                            <child>
+                              <object class="GtkTreeView" id="paired-samples-t-test-treeview2">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="enable_search">False</property>
+                              </object>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" id="label13">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="label" translatable="yes">Test Variable(s):</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkVButtonBox" id="vbuttonbox2">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="orientation">vertical</property>
+                    <child>
+                      <object class="GtkButton" id="paired-samples-t-test-options-button">
+                        <property name="label" translatable="yes">Options...</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="PsppireVButtonBox" id="psppire-vbuttonbox4">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="border_width">5</property>
+            <property name="orientation">vertical</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/src/ui/gui/text-data-import.glade b/src/ui/gui/text-data-import.glade
deleted file mode 100644 (file)
index 3b74c8c..0000000
+++ /dev/null
@@ -1,733 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<!--Generated with glade3 3.4.5 on Thu Dec 18 20:39:52 2008 -->
-<glade-interface>
-  <widget class="GtkWindow" id="Intro">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="border_width">12</property>
-    <property name="title" translatable="yes">Importing Textual Data</property>
-    <child>
-      <widget class="GtkVBox" id="vbox3">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="spacing">12</property>
-        <child>
-          <widget class="GtkLabel" id="intro-label">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="label" translatable="yes">This assistant will guide you through the process of importing data into PSPP from a text file with one line per case,  in which fields are separated by tabs, commas, or other delimiters.
-
-The selected file contains N lines of text.  Only the first M of these will be shown for preview purposes in the following screens.  You may choose below how much of the file should actually be imported.</property>
-            <property name="wrap">True</property>
-          </widget>
-        </child>
-        <child>
-          <widget class="GtkAlignment" id="alignment10">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="xscale">0</property>
-            <child>
-              <widget class="GtkFrame" id="frame7">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label_xalign">0</property>
-                <property name="shadow_type">GTK_SHADOW_NONE</property>
-                <child>
-                  <widget class="GtkAlignment" id="alignment11">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="left_padding">12</property>
-                    <child>
-                      <widget class="GtkVBox" id="vbox1">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="spacing">6</property>
-                        <child>
-                          <widget class="GtkRadioButton" id="import-all-cases">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">All cases</property>
-                            <property name="response_id">0</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                          </widget>
-                        </child>
-                        <child>
-                          <widget class="GtkHBox" id="hbox1">
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="spacing">6</property>
-                            <child>
-                              <widget class="GtkRadioButton" id="import-n-cases">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="label" translatable="yes">Only first </property>
-                                <property name="response_id">0</property>
-                                <property name="active">True</property>
-                                <property name="draw_indicator">True</property>
-                                <property name="group">import-all-cases</property>
-                              </widget>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <widget class="GtkSpinButton" id="n-cases-spin">
-                                <property name="visible">True</property>
-                                <property name="sensitive">False</property>
-                                <property name="can_focus">True</property>
-                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="adjustment">1000 0 100000000 1 10 10</property>
-                                <property name="climb_rate">10</property>
-                                <property name="snap_to_ticks">True</property>
-                              </widget>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <widget class="GtkLabel" id="label1">
-                                <property name="visible">True</property>
-                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="label" translatable="yes"> cases</property>
-                              </widget>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">2</property>
-                              </packing>
-                            </child>
-                          </widget>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkHBox" id="hbox3">
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="spacing">6</property>
-                            <child>
-                              <widget class="GtkRadioButton" id="import-percent">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="label" translatable="yes">Only first </property>
-                                <property name="response_id">0</property>
-                                <property name="active">True</property>
-                                <property name="draw_indicator">True</property>
-                                <property name="group">import-all-cases</property>
-                              </widget>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <widget class="GtkSpinButton" id="percent-spin">
-                                <property name="visible">True</property>
-                                <property name="sensitive">False</property>
-                                <property name="can_focus">True</property>
-                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="adjustment">100 1 100 1 10 10</property>
-                                <property name="snap_to_ticks">True</property>
-                              </widget>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <widget class="GtkLabel" id="label2">
-                                <property name="visible">True</property>
-                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="label" translatable="yes">% of file (approximately)</property>
-                              </widget>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">2</property>
-                              </packing>
-                            </child>
-                          </widget>
-                          <packing>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkLabel" id="label8">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="label" translatable="yes">&lt;b&gt;Amount to Import&lt;/b&gt;</property>
-                    <property name="use_markup">True</property>
-                  </widget>
-                  <packing>
-                    <property name="type">label_item</property>
-                  </packing>
-                </child>
-              </widget>
-            </child>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="GtkWindow" id="FirstLine">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="border_width">12</property>
-    <property name="title" translatable="yes">Select Data to Import</property>
-    <child>
-      <widget class="GtkVBox" id="vbox2">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="spacing">6</property>
-        <child>
-          <widget class="GtkLabel" id="label3">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="label" translatable="yes">Select the first line of the data file that contains data.</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkScrolledWindow" id="first-line-scroller">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-            <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-            <child>
-              <widget class="GtkTreeView" id="first-line">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="headers_clickable">True</property>
-              </widget>
-            </child>
-          </widget>
-          <packing>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkCheckButton" id="variable-names">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="label" translatable="yes">Line above selected line contains variable names</property>
-            <property name="response_id">0</property>
-            <property name="draw_indicator">True</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="position">2</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="GtkWindow" id="Separators">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="border_width">12</property>
-    <property name="title" translatable="yes">Choose Separators</property>
-    <child>
-      <widget class="GtkVBox" id="vbox4">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="spacing">12</property>
-        <child>
-          <widget class="GtkHBox" id="hbox2">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="spacing">12</property>
-            <child>
-              <widget class="GtkFrame" id="foo">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label_xalign">0</property>
-                <property name="shadow_type">GTK_SHADOW_NONE</property>
-                <child>
-                  <widget class="GtkAlignment" id="alignment1">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="left_padding">12</property>
-                    <child>
-                      <widget class="GtkTable" id="table1">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="n_rows">4</property>
-                        <property name="n_columns">3</property>
-                        <property name="column_spacing">6</property>
-                        <property name="row_spacing">6</property>
-                        <child>
-                          <widget class="GtkEntry" id="custom-entry">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                          </widget>
-                          <packing>
-                            <property name="left_attach">1</property>
-                            <property name="right_attach">3</property>
-                            <property name="top_attach">3</property>
-                            <property name="bottom_attach">4</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkCheckButton" id="custom-cb">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">C_ustom</property>
-                            <property name="use_underline">True</property>
-                            <property name="response_id">0</property>
-                            <property name="draw_indicator">True</property>
-                          </widget>
-                          <packing>
-                            <property name="top_attach">3</property>
-                            <property name="bottom_attach">4</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkCheckButton" id="slash">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">Slas_h (/)</property>
-                            <property name="use_underline">True</property>
-                            <property name="response_id">0</property>
-                            <property name="draw_indicator">True</property>
-                          </widget>
-                          <packing>
-                            <property name="left_attach">2</property>
-                            <property name="right_attach">3</property>
-                            <property name="top_attach">2</property>
-                            <property name="bottom_attach">3</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkCheckButton" id="semicolon">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">Semicolo_n (;)</property>
-                            <property name="use_underline">True</property>
-                            <property name="response_id">0</property>
-                            <property name="draw_indicator">True</property>
-                          </widget>
-                          <packing>
-                            <property name="left_attach">1</property>
-                            <property name="right_attach">2</property>
-                            <property name="top_attach">2</property>
-                            <property name="bottom_attach">3</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkCheckButton" id="pipe">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">P_ipe (|)</property>
-                            <property name="use_underline">True</property>
-                            <property name="response_id">0</property>
-                            <property name="draw_indicator">True</property>
-                          </widget>
-                          <packing>
-                            <property name="top_attach">2</property>
-                            <property name="bottom_attach">3</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkCheckButton" id="hyphen">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">H_yphen (-)</property>
-                            <property name="use_underline">True</property>
-                            <property name="response_id">0</property>
-                            <property name="draw_indicator">True</property>
-                          </widget>
-                          <packing>
-                            <property name="left_attach">2</property>
-                            <property name="right_attach">3</property>
-                            <property name="top_attach">1</property>
-                            <property name="bottom_attach">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkCheckButton" id="comma">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">Co_mma (,)</property>
-                            <property name="use_underline">True</property>
-                            <property name="response_id">0</property>
-                            <property name="draw_indicator">True</property>
-                          </widget>
-                          <packing>
-                            <property name="left_attach">1</property>
-                            <property name="right_attach">2</property>
-                            <property name="top_attach">1</property>
-                            <property name="bottom_attach">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkCheckButton" id="colon">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">_Colon (:)</property>
-                            <property name="use_underline">True</property>
-                            <property name="response_id">0</property>
-                            <property name="draw_indicator">True</property>
-                          </widget>
-                          <packing>
-                            <property name="top_attach">1</property>
-                            <property name="bottom_attach">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkCheckButton" id="bang">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">Ban_g (!)</property>
-                            <property name="use_underline">True</property>
-                            <property name="response_id">0</property>
-                            <property name="draw_indicator">True</property>
-                          </widget>
-                          <packing>
-                            <property name="left_attach">2</property>
-                            <property name="right_attach">3</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkCheckButton" id="tab">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">Ta_b</property>
-                            <property name="use_underline">True</property>
-                            <property name="response_id">0</property>
-                            <property name="draw_indicator">True</property>
-                          </widget>
-                          <packing>
-                            <property name="left_attach">1</property>
-                            <property name="right_attach">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkCheckButton" id="space">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">_Space</property>
-                            <property name="use_underline">True</property>
-                            <property name="response_id">0</property>
-                            <property name="draw_indicator">True</property>
-                          </widget>
-                        </child>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkLabel" id="label5">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="label" translatable="yes">&lt;b&gt;Separators&lt;/b&gt;</property>
-                    <property name="use_markup">True</property>
-                  </widget>
-                  <packing>
-                    <property name="type">label_item</property>
-                  </packing>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkFrame" id="frame2">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label_xalign">0</property>
-                <property name="shadow_type">GTK_SHADOW_NONE</property>
-                <child>
-                  <widget class="GtkAlignment" id="alignment2">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="left_padding">12</property>
-                    <child>
-                      <widget class="GtkTable" id="table2">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="n_rows">2</property>
-                        <property name="n_columns">2</property>
-                        <property name="column_spacing">6</property>
-                        <property name="row_spacing">6</property>
-                        <child>
-                          <widget class="GtkCheckButton" id="escape">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">Doubled quote mark treated as escape</property>
-                            <property name="response_id">0</property>
-                            <property name="draw_indicator">True</property>
-                          </widget>
-                          <packing>
-                            <property name="right_attach">2</property>
-                            <property name="top_attach">1</property>
-                            <property name="bottom_attach">2</property>
-                            <property name="y_options"></property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkComboBoxEntry" id="quote-combo">
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="has_frame">False</property>
-                            <child internal-child="entry">
-                              <widget class="GtkEntry" id="quote">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="width_chars">2</property>
-                              </widget>
-                            </child>
-                          </widget>
-                          <packing>
-                            <property name="left_attach">1</property>
-                            <property name="right_attach">2</property>
-                            <property name="x_options"></property>
-                            <property name="y_options"></property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkCheckButton" id="quote-cb">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">Quote separator characters with</property>
-                            <property name="response_id">0</property>
-                            <property name="draw_indicator">True</property>
-                          </widget>
-                          <packing>
-                            <property name="x_options"></property>
-                            <property name="y_options">GTK_FILL</property>
-                          </packing>
-                        </child>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkLabel" id="label7">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="label" translatable="yes">&lt;b&gt;Quoting&lt;/b&gt;</property>
-                    <property name="use_markup">True</property>
-                  </widget>
-                  <packing>
-                    <property name="type">label_item</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkFrame" id="frame3">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">GTK_SHADOW_NONE</property>
-            <child>
-              <widget class="GtkAlignment" id="alignment3">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <widget class="GtkScrolledWindow" id="fields-scroller">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                    <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                    <child>
-                      <widget class="GtkTreeView" id="fields">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="headers_clickable">True</property>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkLabel" id="label9">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label" translatable="yes">&lt;b&gt;Fields Preview&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </widget>
-              <packing>
-                <property name="type">label_item</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="GtkWindow" id="Formats">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="border_width">12</property>
-    <property name="title" translatable="yes">Adjust Variable Formats</property>
-    <child>
-      <widget class="GtkVBox" id="vbox5">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="spacing">12</property>
-        <child>
-          <widget class="GtkLabel" id="label12">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="label" translatable="yes">Check the data formats displayed below and fix any that are incorrect.  You may set other variable properties now or later.</property>
-            <property name="wrap">True</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkVPaned" id="vpaned1">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="position">94</property>
-            <child>
-              <widget class="GtkFrame" id="frame4">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label_xalign">0</property>
-                <property name="shadow_type">GTK_SHADOW_NONE</property>
-                <child>
-                  <widget class="GtkAlignment" id="alignment5">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="left_padding">12</property>
-                    <child>
-                      <widget class="GtkScrolledWindow" id="vars-scroller">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                        <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                        <child>
-                          <placeholder/>
-                        </child>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkLabel" id="label10">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="label" translatable="yes">&lt;b&gt;Variables&lt;/b&gt;</property>
-                    <property name="use_markup">True</property>
-                  </widget>
-                  <packing>
-                    <property name="type">label_item</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="resize">False</property>
-                <property name="shrink">True</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkFrame" id="frame5">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label_xalign">0</property>
-                <property name="shadow_type">GTK_SHADOW_NONE</property>
-                <child>
-                  <widget class="GtkAlignment" id="alignment6">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="left_padding">12</property>
-                    <child>
-                      <widget class="GtkScrolledWindow" id="data-scroller">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                        <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                        <child>
-                          <widget class="GtkTreeView" id="data">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="headers_clickable">True</property>
-                          </widget>
-                        </child>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkLabel" id="label11">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="label" translatable="yes">&lt;b&gt;Data Preview&lt;/b&gt;</property>
-                    <property name="use_markup">True</property>
-                  </widget>
-                  <packing>
-                    <property name="type">label_item</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="resize">True</property>
-                <property name="shrink">True</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-</glade-interface>
diff --git a/src/ui/gui/text-data-import.ui b/src/ui/gui/text-data-import.ui
new file mode 100644 (file)
index 0000000..4b4a24b
--- /dev/null
@@ -0,0 +1,738 @@
+<?xml version="1.0"?>
+<interface>
+  <!-- interface-requires gtk+ 2.12 -->
+  <!-- interface-naming-policy project-wide -->
+  <object class="GtkWindow" id="Intro">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="border_width">12</property>
+    <property name="title" translatable="yes">Importing Textual Data</property>
+    <child>
+      <object class="GtkVBox" id="vbox3">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">12</property>
+        <child>
+          <object class="GtkLabel" id="intro-label">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="label" translatable="yes">This assistant will guide you through the process of importing data into PSPP from a text file with one line per case,  in which fields are separated by tabs, commas, or other delimiters.
+
+The selected file contains N lines of text.  Only the first M of these will be shown for preview purposes in the following screens.  You may choose below how much of the file should actually be imported.</property>
+            <property name="wrap">True</property>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkAlignment" id="alignment10">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="xscale">0</property>
+            <child>
+              <object class="GtkFrame" id="frame7">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label_xalign">0</property>
+                <property name="shadow_type">none</property>
+                <child>
+                  <object class="GtkAlignment" id="alignment11">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <object class="GtkVBox" id="vbox1">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="orientation">vertical</property>
+                        <property name="spacing">6</property>
+                        <child>
+                          <object class="GtkRadioButton" id="import-all-cases">
+                            <property name="label" translatable="yes">All cases</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkHBox" id="hbox1">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="spacing">6</property>
+                            <child>
+                              <object class="GtkRadioButton" id="import-n-cases">
+                                <property name="label" translatable="yes">Only first </property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="active">True</property>
+                                <property name="draw_indicator">True</property>
+                                <property name="group">import-all-cases</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkSpinButton" id="n-cases-spin">
+                                <property name="visible">True</property>
+                                <property name="sensitive">False</property>
+                                <property name="can_focus">True</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="adjustment">adjustment2</property>
+                                <property name="climb_rate">10</property>
+                                <property name="snap_to_ticks">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label1">
+                                <property name="visible">True</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="label" translatable="yes"> cases</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">2</property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkHBox" id="hbox3">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="spacing">6</property>
+                            <child>
+                              <object class="GtkRadioButton" id="import-percent">
+                                <property name="label" translatable="yes">Only first </property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="active">True</property>
+                                <property name="draw_indicator">True</property>
+                                <property name="group">import-all-cases</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkSpinButton" id="percent-spin">
+                                <property name="visible">True</property>
+                                <property name="sensitive">False</property>
+                                <property name="can_focus">True</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="adjustment">adjustment1</property>
+                                <property name="snap_to_ticks">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label2">
+                                <property name="visible">True</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="label" translatable="yes">% of file (approximately)</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">2</property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child type="label">
+                  <object class="GtkLabel" id="label8">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="label" translatable="yes">&lt;b&gt;Amount to Import&lt;/b&gt;</property>
+                    <property name="use_markup">True</property>
+                  </object>
+                </child>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="GtkWindow" id="FirstLine">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="border_width">12</property>
+    <property name="title" translatable="yes">Select Data to Import</property>
+    <child>
+      <object class="GtkVBox" id="vbox2">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">6</property>
+        <child>
+          <object class="GtkLabel" id="label3">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="label" translatable="yes">Select the first line of the data file that contains data.</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkScrolledWindow" id="first-line-scroller">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="hscrollbar_policy">automatic</property>
+            <property name="vscrollbar_policy">automatic</property>
+            <child>
+              <object class="GtkTreeView" id="first-line">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkCheckButton" id="variable-names">
+            <property name="label" translatable="yes">Line above selected line contains variable names</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">False</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="draw_indicator">True</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="GtkWindow" id="Separators">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="border_width">12</property>
+    <property name="title" translatable="yes">Choose Separators</property>
+    <child>
+      <object class="GtkVBox" id="vbox4">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">12</property>
+        <child>
+          <object class="GtkHBox" id="hbox2">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="spacing">12</property>
+            <child>
+              <object class="GtkFrame" id="foo">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label_xalign">0</property>
+                <property name="shadow_type">none</property>
+                <child>
+                  <object class="GtkAlignment" id="alignment1">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <object class="GtkTable" id="table1">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="n_rows">4</property>
+                        <property name="n_columns">3</property>
+                        <property name="column_spacing">6</property>
+                        <property name="row_spacing">6</property>
+                        <child>
+                          <object class="GtkEntry" id="custom-entry">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">3</property>
+                            <property name="top_attach">3</property>
+                            <property name="bottom_attach">4</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkCheckButton" id="custom-cb">
+                            <property name="label" translatable="yes">C_ustom</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="use_underline">True</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="top_attach">3</property>
+                            <property name="bottom_attach">4</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkCheckButton" id="slash">
+                            <property name="label" translatable="yes">Slas_h (/)</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="use_underline">True</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">2</property>
+                            <property name="right_attach">3</property>
+                            <property name="top_attach">2</property>
+                            <property name="bottom_attach">3</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkCheckButton" id="semicolon">
+                            <property name="label" translatable="yes">Semicolo_n (;)</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="use_underline">True</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="top_attach">2</property>
+                            <property name="bottom_attach">3</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkCheckButton" id="pipe">
+                            <property name="label" translatable="yes">P_ipe (|)</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="use_underline">True</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="top_attach">2</property>
+                            <property name="bottom_attach">3</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkCheckButton" id="hyphen">
+                            <property name="label" translatable="yes">H_yphen (-)</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="use_underline">True</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">2</property>
+                            <property name="right_attach">3</property>
+                            <property name="top_attach">1</property>
+                            <property name="bottom_attach">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkCheckButton" id="comma">
+                            <property name="label" translatable="yes">Co_mma (,)</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="use_underline">True</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="top_attach">1</property>
+                            <property name="bottom_attach">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkCheckButton" id="colon">
+                            <property name="label" translatable="yes">_Colon (:)</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="use_underline">True</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="top_attach">1</property>
+                            <property name="bottom_attach">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkCheckButton" id="bang">
+                            <property name="label" translatable="yes">Ban_g (!)</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="use_underline">True</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">2</property>
+                            <property name="right_attach">3</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkCheckButton" id="tab">
+                            <property name="label" translatable="yes">Ta_b</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="use_underline">True</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkCheckButton" id="space">
+                            <property name="label" translatable="yes">_Space</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="use_underline">True</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child type="label">
+                  <object class="GtkLabel" id="label5">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="label" translatable="yes">&lt;b&gt;Separators&lt;/b&gt;</property>
+                    <property name="use_markup">True</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkFrame" id="frame2">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label_xalign">0</property>
+                <property name="shadow_type">none</property>
+                <child>
+                  <object class="GtkAlignment" id="alignment2">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <object class="GtkTable" id="table2">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="n_rows">2</property>
+                        <property name="n_columns">2</property>
+                        <property name="column_spacing">6</property>
+                        <property name="row_spacing">6</property>
+                        <child>
+                          <object class="GtkCheckButton" id="escape">
+                            <property name="label" translatable="yes">Doubled quote mark treated as escape</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="right_attach">2</property>
+                            <property name="top_attach">1</property>
+                            <property name="bottom_attach">2</property>
+                            <property name="y_options"></property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkComboBoxEntry" id="quote-combo">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="has_frame">False</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="x_options"></property>
+                            <property name="y_options"></property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkCheckButton" id="quote-cb">
+                            <property name="label" translatable="yes">Quote separator characters with</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="x_options"></property>
+                            <property name="y_options">GTK_FILL</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child type="label">
+                  <object class="GtkLabel" id="label7">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="label" translatable="yes">&lt;b&gt;Quoting&lt;/b&gt;</property>
+                    <property name="use_markup">True</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="frame3">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="alignment3">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkScrolledWindow" id="fields-scroller">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="hscrollbar_policy">automatic</property>
+                    <property name="vscrollbar_policy">automatic</property>
+                    <child>
+                      <object class="GtkTreeView" id="fields">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="label9">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label" translatable="yes">&lt;b&gt;Fields Preview&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="GtkWindow" id="Formats">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="border_width">12</property>
+    <property name="title" translatable="yes">Adjust Variable Formats</property>
+    <child>
+      <object class="GtkVBox" id="vbox5">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">12</property>
+        <child>
+          <object class="GtkLabel" id="label12">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="label" translatable="yes">Check the data formats displayed below and fix any that are incorrect.  You may set other variable properties now or later.</property>
+            <property name="wrap">True</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkVPaned" id="vpaned1">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="position">94</property>
+            <child>
+              <object class="GtkFrame" id="frame4">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label_xalign">0</property>
+                <property name="shadow_type">none</property>
+                <child>
+                  <object class="GtkAlignment" id="alignment5">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <object class="GtkScrolledWindow" id="vars-scroller">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="hscrollbar_policy">automatic</property>
+                        <property name="vscrollbar_policy">automatic</property>
+                        <child>
+                          <placeholder/>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child type="label">
+                  <object class="GtkLabel" id="label10">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="label" translatable="yes">&lt;b&gt;Variables&lt;/b&gt;</property>
+                    <property name="use_markup">True</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="resize">False</property>
+                <property name="shrink">True</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkFrame" id="frame5">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label_xalign">0</property>
+                <property name="shadow_type">none</property>
+                <child>
+                  <object class="GtkAlignment" id="alignment6">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <object class="GtkScrolledWindow" id="data-scroller">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="hscrollbar_policy">automatic</property>
+                        <property name="vscrollbar_policy">automatic</property>
+                        <child>
+                          <object class="GtkTreeView" id="data">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child type="label">
+                  <object class="GtkLabel" id="label11">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="label" translatable="yes">&lt;b&gt;Data Preview&lt;/b&gt;</property>
+                    <property name="use_markup">True</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="resize">True</property>
+                <property name="shrink">True</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="GtkAdjustment" id="adjustment1">
+    <property name="value">100</property>
+    <property name="lower">1</property>
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+    <property name="page_size">10</property>
+  </object>
+  <object class="GtkAdjustment" id="adjustment2">
+    <property name="value">1000</property>
+    <property name="upper">100000000</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+    <property name="page_size">10</property>
+  </object>
+</interface>
diff --git a/src/ui/gui/var-sheet-dialogs.glade b/src/ui/gui/var-sheet-dialogs.glade
deleted file mode 100644 (file)
index 658ca0a..0000000
+++ /dev/null
@@ -1,921 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<!--*- mode: xml -*-->
-<glade-interface>
-  <widget class="GtkWindow" id="var_type_dialog">
-    <property name="border_width">6</property>
-    <property name="title" translatable="yes">Variable Type</property>
-    <property name="resizable">False</property>
-    <property name="modal">True</property>
-    <property name="default_width">485</property>
-    <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
-    <property name="skip_taskbar_hint">True</property>
-    <property name="skip_pager_hint">True</property>
-    <child>
-      <widget class="GtkHBox" id="hbox1">
-        <property name="visible">True</property>
-        <property name="border_width">5</property>
-        <property name="spacing">5</property>
-        <child>
-          <widget class="GtkVBox" id="vbox2">
-            <property name="visible">True</property>
-            <property name="border_width">13</property>
-            <property name="homogeneous">True</property>
-            <child>
-              <widget class="GtkRadioButton" id="radiobutton1">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="label" translatable="yes">Numeric</property>
-                <property name="use_underline">True</property>
-                <property name="response_id">0</property>
-                <property name="active">True</property>
-                <property name="draw_indicator">True</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkRadioButton" id="radiobutton2">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="label" translatable="yes">Comma</property>
-                <property name="use_underline">True</property>
-                <property name="response_id">0</property>
-                <property name="draw_indicator">True</property>
-                <property name="group">radiobutton1</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkRadioButton" id="radiobutton3">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="label" translatable="yes">Dot</property>
-                <property name="use_underline">True</property>
-                <property name="response_id">0</property>
-                <property name="draw_indicator">True</property>
-                <property name="group">radiobutton1</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">2</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkRadioButton" id="radiobutton4">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="label" translatable="yes">Scientific notation</property>
-                <property name="use_underline">True</property>
-                <property name="response_id">0</property>
-                <property name="draw_indicator">True</property>
-                <property name="group">radiobutton1</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">3</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkRadioButton" id="radiobutton5">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="label" translatable="yes">Date</property>
-                <property name="use_underline">True</property>
-                <property name="response_id">0</property>
-                <property name="draw_indicator">True</property>
-                <property name="group">radiobutton1</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">4</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkRadioButton" id="radiobutton6">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="label" translatable="yes">Dollar</property>
-                <property name="use_underline">True</property>
-                <property name="response_id">0</property>
-                <property name="draw_indicator">True</property>
-                <property name="group">radiobutton1</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">5</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkRadioButton" id="radiobutton7">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="label" translatable="yes">Custom currency</property>
-                <property name="use_underline">True</property>
-                <property name="response_id">0</property>
-                <property name="draw_indicator">True</property>
-                <property name="group">radiobutton1</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">6</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkRadioButton" id="radiobutton8">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="label" translatable="yes">String</property>
-                <property name="use_underline">True</property>
-                <property name="response_id">0</property>
-                <property name="draw_indicator">True</property>
-                <property name="group">radiobutton1</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">7</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkVBox" id="middle_box">
-            <property name="visible">True</property>
-            <property name="spacing">10</property>
-            <child>
-              <widget class="GtkScrolledWindow" id="scrolledwindow4">
-                <property name="width_request">20</property>
-                <property name="height_request">194</property>
-                <property name="can_focus">True</property>
-                <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                <property name="shadow_type">GTK_SHADOW_IN</property>
-                <child>
-                  <widget class="GtkTreeView" id="date_format_list_view">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="headers_visible">False</property>
-                  </widget>
-                </child>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkHBox" id="custom_currency_hbox">
-                <property name="spacing">15</property>
-                <child>
-                  <widget class="GtkScrolledWindow" id="scrolledwindow5">
-                    <property name="width_request">1</property>
-                    <property name="height_request">120</property>
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                    <property name="vscrollbar_policy">GTK_POLICY_NEVER</property>
-                    <property name="shadow_type">GTK_SHADOW_IN</property>
-                    <child>
-                      <widget class="GtkTreeView" id="custom_treeview">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="headers_visible">False</property>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkFrame" id="Sample">
-                    <property name="visible">True</property>
-                    <property name="label_xalign">0</property>
-                    <child>
-                      <widget class="GtkAlignment" id="alignment2">
-                        <property name="visible">True</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <widget class="GtkVBox" id="vbox10">
-                            <property name="visible">True</property>
-                            <property name="homogeneous">True</property>
-                            <child>
-                              <widget class="GtkLabel" id="psample_label">
-                                <property name="visible">True</property>
-                                <property name="label" translatable="yes">positive</property>
-                              </widget>
-                            </child>
-                            <child>
-                              <widget class="GtkLabel" id="nsample_label">
-                                <property name="visible">True</property>
-                                <property name="label" translatable="yes">negative</property>
-                              </widget>
-                              <packing>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                          </widget>
-                        </child>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkLabel" id="label13">
-                        <property name="visible">True</property>
-                        <property name="label" translatable="yes">Sample</property>
-                        <property name="use_markup">True</property>
-                      </widget>
-                      <packing>
-                        <property name="type">label_item</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="pack_type">GTK_PACK_END</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkScrolledWindow" id="dollar_window">
-                <property name="can_focus">True</property>
-                <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                <property name="shadow_type">GTK_SHADOW_IN</property>
-                <child>
-                  <widget class="GtkTreeView" id="dollar_treeview">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="headers_visible">False</property>
-                  </widget>
-                </child>
-              </widget>
-              <packing>
-                <property name="position">2</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkTable" id="width_decimals">
-                <property name="width_request">100</property>
-                <property name="height_request">50</property>
-                <property name="visible">True</property>
-                <property name="n_rows">2</property>
-                <property name="n_columns">2</property>
-                <property name="column_spacing">2</property>
-                <property name="row_spacing">1</property>
-                <child>
-                  <widget class="GtkHBox" id="hbox2">
-                    <property name="visible">True</property>
-                    <child>
-                      <widget class="GtkLabel" id="width_label">
-                        <property name="visible">True</property>
-                        <property name="label" translatable="yes">Width:</property>
-                        <property name="justify">GTK_JUSTIFY_RIGHT</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="pack_type">GTK_PACK_END</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="x_options">GTK_FILL</property>
-                    <property name="y_options">GTK_FILL</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkEntry" id="decimals_entry">
-                    <property name="width_request">25</property>
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                  </widget>
-                  <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                    <property name="y_options"></property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkEntry" id="width_entry">
-                    <property name="width_request">25</property>
-                    <property name="can_focus">True</property>
-                  </widget>
-                  <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
-                    <property name="y_options"></property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkLabel" id="decimals_label">
-                    <property name="visible">True</property>
-                    <property name="xalign">0</property>
-                    <property name="label" translatable="yes">Decimal Places:</property>
-                    <property name="justify">GTK_JUSTIFY_RIGHT</property>
-                  </widget>
-                  <packing>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                    <property name="x_options">GTK_FILL</property>
-                    <property name="y_options"></property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="position">3</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="fill">False</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkVButtonBox" id="vbuttonbox6">
-            <property name="visible">True</property>
-            <property name="spacing">5</property>
-            <property name="layout_style">GTK_BUTTONBOX_START</property>
-            <child>
-              <widget class="GtkButton" id="var_type_ok">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="label">gtk-ok</property>
-                <property name="use_stock">True</property>
-                <property name="response_id">0</property>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkButton" id="var_type_cancel">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="label">gtk-cancel</property>
-                <property name="use_stock">True</property>
-                <property name="response_id">0</property>
-              </widget>
-              <packing>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkButton" id="help_button_variable_type">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="label">gtk-help</property>
-                <property name="use_stock">True</property>
-                <property name="response_id">0</property>
-              </widget>
-              <packing>
-                <property name="position">2</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="position">2</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="GtkWindow" id="val_labs_dialog">
-    <property name="title" translatable="yes">Value Labels</property>
-    <property name="resizable">False</property>
-    <property name="modal">True</property>
-    <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
-    <property name="skip_taskbar_hint">True</property>
-    <property name="skip_pager_hint">True</property>
-    <child>
-      <widget class="GtkHBox" id="hbox3">
-        <property name="visible">True</property>
-        <property name="border_width">5</property>
-        <child>
-          <widget class="GtkFrame" id="frame1">
-            <property name="visible">True</property>
-            <property name="label_xalign">0</property>
-            <child>
-              <widget class="GtkAlignment" id="alignment1">
-                <property name="visible">True</property>
-                <property name="border_width">8</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <widget class="GtkTable" id="table3">
-                    <property name="visible">True</property>
-                    <property name="n_rows">2</property>
-                    <property name="n_columns">2</property>
-                    <property name="row_spacing">5</property>
-                    <child>
-                      <widget class="GtkScrolledWindow" id="scrolledwindow3">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                        <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                        <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-                        <child>
-                          <widget class="GtkTreeView" id="treeview1">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="headers_visible">False</property>
-                            <property name="enable_search">False</property>
-                          </widget>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                        <property name="top_attach">1</property>
-                        <property name="bottom_attach">2</property>
-                        <property name="x_options">GTK_FILL</property>
-                        <property name="y_options">GTK_FILL</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkTable" id="table4">
-                        <property name="visible">True</property>
-                        <property name="border_width">5</property>
-                        <property name="n_rows">2</property>
-                        <property name="n_columns">2</property>
-                        <property name="column_spacing">5</property>
-                        <property name="row_spacing">4</property>
-                        <child>
-                          <widget class="GtkHBox" id="hbox4">
-                            <property name="visible">True</property>
-                            <child>
-                              <widget class="GtkEntry" id="value_entry">
-                                <property name="width_request">85</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                              </widget>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="padding">1</property>
-                              </packing>
-                            </child>
-                          </widget>
-                          <packing>
-                            <property name="left_attach">1</property>
-                            <property name="right_attach">2</property>
-                            <property name="x_options">GTK_FILL</property>
-                            <property name="y_options">GTK_FILL</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkEntry" id="label_entry">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                          </widget>
-                          <packing>
-                            <property name="left_attach">1</property>
-                            <property name="right_attach">2</property>
-                            <property name="top_attach">1</property>
-                            <property name="bottom_attach">2</property>
-                            <property name="y_options"></property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkLabel" id="label6">
-                            <property name="visible">True</property>
-                            <property name="xalign">0</property>
-                            <property name="label" translatable="yes">Value Label:</property>
-                          </widget>
-                          <packing>
-                            <property name="top_attach">1</property>
-                            <property name="bottom_attach">2</property>
-                            <property name="x_options">GTK_FILL</property>
-                            <property name="y_options"></property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkLabel" id="label5">
-                            <property name="visible">True</property>
-                            <property name="xalign">0</property>
-                            <property name="label" translatable="yes">Value:</property>
-                          </widget>
-                          <packing>
-                            <property name="x_options">GTK_FILL</property>
-                            <property name="y_options"></property>
-                          </packing>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="right_attach">2</property>
-                        <property name="x_options">GTK_FILL</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkVButtonBox" id="vbuttonbox2">
-                        <property name="visible">True</property>
-                        <property name="border_width">5</property>
-                        <child>
-                          <widget class="GtkButton" id="val_labs_add">
-                            <property name="visible">True</property>
-                            <property name="sensitive">False</property>
-                            <property name="can_focus">True</property>
-                            <property name="can_default">True</property>
-                            <property name="label">gtk-add</property>
-                            <property name="use_stock">True</property>
-                            <property name="response_id">0</property>
-                          </widget>
-                        </child>
-                        <child>
-                          <widget class="GtkButton" id="val_labs_change">
-                            <property name="visible">True</property>
-                            <property name="sensitive">False</property>
-                            <property name="can_focus">True</property>
-                            <property name="can_default">True</property>
-                            <property name="label">gtk-apply</property>
-                            <property name="use_stock">True</property>
-                            <property name="response_id">0</property>
-                          </widget>
-                          <packing>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkButton" id="val_labs_remove">
-                            <property name="visible">True</property>
-                            <property name="sensitive">False</property>
-                            <property name="can_focus">True</property>
-                            <property name="can_default">True</property>
-                            <property name="label">gtk-remove</property>
-                            <property name="use_stock">True</property>
-                            <property name="response_id">0</property>
-                          </widget>
-                          <packing>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="top_attach">1</property>
-                        <property name="bottom_attach">2</property>
-                        <property name="x_options">GTK_FILL</property>
-                      </packing>
-                    </child>
-                  </widget>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkLabel" id="label7">
-                <property name="visible">True</property>
-                <property name="label" translatable="yes">Value Labels</property>
-                <property name="use_markup">True</property>
-              </widget>
-              <packing>
-                <property name="type">label_item</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="padding">10</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkVButtonBox" id="vbuttonbox3">
-            <property name="visible">True</property>
-            <property name="border_width">5</property>
-            <property name="spacing">5</property>
-            <property name="layout_style">GTK_BUTTONBOX_START</property>
-            <child>
-              <widget class="GtkButton" id="val_labs_ok">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="label">gtk-ok</property>
-                <property name="use_stock">True</property>
-                <property name="response_id">0</property>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkButton" id="val_labs_cancel">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="label">gtk-cancel</property>
-                <property name="use_stock">True</property>
-                <property name="response_id">0</property>
-              </widget>
-              <packing>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkButton" id="help_button_value_labels">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="label">gtk-help</property>
-                <property name="use_stock">True</property>
-                <property name="response_id">0</property>
-              </widget>
-              <packing>
-                <property name="position">2</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="GtkWindow" id="missing_values_dialog">
-    <property name="border_width">12</property>
-    <property name="title" translatable="yes">Missing Values</property>
-    <property name="resizable">False</property>
-    <property name="modal">True</property>
-    <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
-    <property name="skip_taskbar_hint">True</property>
-    <property name="skip_pager_hint">True</property>
-    <child>
-      <widget class="GtkVBox" id="vbox3">
-        <property name="visible">True</property>
-        <property name="spacing">12</property>
-        <child>
-          <widget class="GtkFrame" id="frame9">
-            <property name="visible">True</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">GTK_SHADOW_NONE</property>
-            <child>
-              <widget class="GtkAlignment" id="alignment4">
-                <property name="visible">True</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <placeholder/>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkRadioButton" id="no_missing">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="label" translatable="yes">_No missing values</property>
-                <property name="use_underline">True</property>
-                <property name="response_id">0</property>
-                <property name="active">True</property>
-                <property name="draw_indicator">True</property>
-              </widget>
-              <packing>
-                <property name="type">label_item</property>
-              </packing>
-            </child>
-          </widget>
-        </child>
-        <child>
-          <widget class="GtkFrame" id="frame4">
-            <property name="visible">True</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">GTK_SHADOW_NONE</property>
-            <child>
-              <widget class="GtkAlignment" id="alignment3">
-                <property name="visible">True</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <widget class="GtkHBox" id="hbox5">
-                    <property name="visible">True</property>
-                    <property name="border_width">5</property>
-                    <property name="spacing">6</property>
-                    <property name="homogeneous">True</property>
-                    <child>
-                      <widget class="GtkEntry" id="mv0">
-                        <property name="width_request">75</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkEntry" id="mv1">
-                        <property name="width_request">75</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkEntry" id="mv2">
-                        <property name="width_request">75</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                  </widget>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkRadioButton" id="discrete_missing">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="label" translatable="yes">_Discrete missing values</property>
-                <property name="use_underline">True</property>
-                <property name="focus_on_click">False</property>
-                <property name="response_id">0</property>
-                <property name="draw_indicator">True</property>
-                <property name="group">no_missing</property>
-              </widget>
-              <packing>
-                <property name="type">label_item</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkFrame" id="frame10">
-            <property name="visible">True</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">GTK_SHADOW_NONE</property>
-            <child>
-              <widget class="GtkAlignment" id="alignment5">
-                <property name="visible">True</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <widget class="GtkTable" id="table1">
-                    <property name="visible">True</property>
-                    <property name="n_rows">3</property>
-                    <property name="n_columns">2</property>
-                    <property name="column_spacing">6</property>
-                    <property name="row_spacing">6</property>
-                    <child>
-                      <widget class="GtkLabel" id="label11">
-                        <property name="visible">True</property>
-                        <property name="label" translatable="yes">_Low:</property>
-                        <property name="use_underline">True</property>
-                        <property name="mnemonic_widget">mv-low</property>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkEntry" id="mv-low">
-                        <property name="width_request">75</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                      </widget>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkLabel" id="label12">
-                        <property name="visible">True</property>
-                        <property name="label" translatable="yes">_High:</property>
-                        <property name="use_underline">True</property>
-                        <property name="mnemonic_widget">mv-high</property>
-                      </widget>
-                      <packing>
-                        <property name="top_attach">1</property>
-                        <property name="bottom_attach">2</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkEntry" id="mv-high">
-                        <property name="width_request">75</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                      </widget>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                        <property name="top_attach">1</property>
-                        <property name="bottom_attach">2</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkLabel" id="label10">
-                        <property name="visible">True</property>
-                        <property name="label" translatable="yes">Di_screte value:</property>
-                        <property name="use_underline">True</property>
-                        <property name="mnemonic_widget">mv-discrete</property>
-                      </widget>
-                      <packing>
-                        <property name="top_attach">2</property>
-                        <property name="bottom_attach">3</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkEntry" id="mv-discrete">
-                        <property name="width_request">75</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                      </widget>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                        <property name="top_attach">2</property>
-                        <property name="bottom_attach">3</property>
-                      </packing>
-                    </child>
-                  </widget>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkRadioButton" id="range_missing">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="label" translatable="yes">_Range plus one optional discrete missing value</property>
-                <property name="use_underline">True</property>
-                <property name="focus_on_click">False</property>
-                <property name="response_id">0</property>
-                <property name="draw_indicator">True</property>
-                <property name="group">no_missing</property>
-              </widget>
-              <packing>
-                <property name="type">label_item</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="position">2</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkHButtonBox" id="hbuttonbox1">
-            <property name="visible">True</property>
-            <property name="spacing">6</property>
-            <property name="layout_style">GTK_BUTTONBOX_END</property>
-            <child>
-              <widget class="GtkButton" id="missing_val_cancel">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="label">gtk-cancel</property>
-                <property name="use_stock">True</property>
-                <property name="response_id">0</property>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkButton" id="help_button_missing_values">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="label">gtk-help</property>
-                <property name="use_stock">True</property>
-                <property name="response_id">0</property>
-              </widget>
-              <packing>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkButton" id="missing_val_ok">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="label">gtk-ok</property>
-                <property name="use_stock">True</property>
-                <property name="response_id">0</property>
-              </widget>
-              <packing>
-                <property name="position">2</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="position">3</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-</glade-interface>
diff --git a/src/ui/gui/var-sheet-dialogs.ui b/src/ui/gui/var-sheet-dialogs.ui
new file mode 100644 (file)
index 0000000..fdc8171
--- /dev/null
@@ -0,0 +1,961 @@
+<?xml version="1.0"?>
+<interface>
+  <!-- interface-requires gtk+ 2.12 -->
+  <!-- interface-naming-policy project-wide -->
+  <object class="GtkWindow" id="var_type_dialog">
+    <property name="border_width">6</property>
+    <property name="title" translatable="yes">Variable Type</property>
+    <property name="resizable">False</property>
+    <property name="modal">True</property>
+    <property name="default_width">485</property>
+    <property name="type_hint">dialog</property>
+    <property name="skip_taskbar_hint">True</property>
+    <property name="skip_pager_hint">True</property>
+    <child>
+      <object class="GtkHBox" id="hbox1">
+        <property name="visible">True</property>
+        <property name="border_width">5</property>
+        <property name="spacing">5</property>
+        <child>
+          <object class="GtkVBox" id="vbox2">
+            <property name="visible">True</property>
+            <property name="border_width">13</property>
+            <property name="orientation">vertical</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <object class="GtkRadioButton" id="radiobutton1">
+                <property name="label" translatable="yes">Numeric</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_underline">True</property>
+                <property name="active">True</property>
+                <property name="draw_indicator">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkRadioButton" id="radiobutton2">
+                <property name="label" translatable="yes">Comma</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_underline">True</property>
+                <property name="draw_indicator">True</property>
+                <property name="group">radiobutton1</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkRadioButton" id="radiobutton3">
+                <property name="label" translatable="yes">Dot</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_underline">True</property>
+                <property name="draw_indicator">True</property>
+                <property name="group">radiobutton1</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkRadioButton" id="radiobutton4">
+                <property name="label" translatable="yes">Scientific notation</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_underline">True</property>
+                <property name="draw_indicator">True</property>
+                <property name="group">radiobutton1</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">3</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkRadioButton" id="radiobutton5">
+                <property name="label" translatable="yes">Date</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_underline">True</property>
+                <property name="draw_indicator">True</property>
+                <property name="group">radiobutton1</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">4</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkRadioButton" id="radiobutton6">
+                <property name="label" translatable="yes">Dollar</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_underline">True</property>
+                <property name="draw_indicator">True</property>
+                <property name="group">radiobutton1</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">5</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkRadioButton" id="radiobutton7">
+                <property name="label" translatable="yes">Custom currency</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_underline">True</property>
+                <property name="draw_indicator">True</property>
+                <property name="group">radiobutton1</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">6</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkRadioButton" id="radiobutton8">
+                <property name="label" translatable="yes">String</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_underline">True</property>
+                <property name="draw_indicator">True</property>
+                <property name="group">radiobutton1</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">7</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkVBox" id="middle_box">
+            <property name="visible">True</property>
+            <property name="spacing">10</property>
+            <child>
+              <object class="GtkScrolledWindow" id="scrolledwindow4">
+                <property name="width_request">20</property>
+                <property name="height_request">194</property>
+                <property name="can_focus">True</property>
+                <property name="hscrollbar_policy">never</property>
+                <property name="shadow_type">in</property>
+                <child>
+                  <object class="GtkTreeView" id="date_format_list_view">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="headers_visible">False</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHBox" id="custom_currency_hbox">
+                <property name="spacing">15</property>
+                <child>
+                  <object class="GtkScrolledWindow" id="scrolledwindow5">
+                    <property name="width_request">1</property>
+                    <property name="height_request">120</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="hscrollbar_policy">never</property>
+                    <property name="vscrollbar_policy">never</property>
+                    <property name="shadow_type">in</property>
+                    <child>
+                      <object class="GtkTreeView" id="custom_treeview">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="headers_visible">False</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkFrame" id="Sample">
+                    <property name="visible">True</property>
+                    <property name="label_xalign">0</property>
+                    <child>
+                      <object class="GtkAlignment" id="alignment2">
+                        <property name="visible">True</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkVBox" id="vbox10">
+                            <property name="visible">True</property>
+                            <property name="orientation">vertical</property>
+                            <property name="homogeneous">True</property>
+                            <child>
+                              <object class="GtkLabel" id="psample_label">
+                                <property name="visible">True</property>
+                                <property name="label" translatable="yes">positive</property>
+                              </object>
+                              <packing>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="nsample_label">
+                                <property name="visible">True</property>
+                                <property name="label" translatable="yes">negative</property>
+                              </object>
+                              <packing>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" id="label13">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">Sample</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="pack_type">end</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkScrolledWindow" id="dollar_window">
+                <property name="can_focus">True</property>
+                <property name="hscrollbar_policy">never</property>
+                <property name="shadow_type">in</property>
+                <child>
+                  <object class="GtkTreeView" id="dollar_treeview">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="headers_visible">False</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkTable" id="width_decimals">
+                <property name="width_request">100</property>
+                <property name="height_request">50</property>
+                <property name="visible">True</property>
+                <property name="n_rows">2</property>
+                <property name="n_columns">2</property>
+                <property name="column_spacing">2</property>
+                <property name="row_spacing">1</property>
+                <child>
+                  <object class="GtkHBox" id="hbox2">
+                    <property name="visible">True</property>
+                    <child>
+                      <object class="GtkLabel" id="width_label">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">Width:</property>
+                        <property name="justify">right</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="pack_type">end</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="x_options">GTK_FILL</property>
+                    <property name="y_options">GTK_FILL</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkEntry" id="decimals_entry">
+                    <property name="width_request">25</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
+                    <property name="y_options"></property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkEntry" id="width_entry">
+                    <property name="width_request">25</property>
+                    <property name="can_focus">True</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                    <property name="y_options"></property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="decimals_label">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="label" translatable="yes">Decimal Places:</property>
+                    <property name="justify">right</property>
+                  </object>
+                  <packing>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
+                    <property name="x_options">GTK_FILL</property>
+                    <property name="y_options"></property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">3</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="fill">False</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkVButtonBox" id="vbuttonbox6">
+            <property name="visible">True</property>
+            <property name="spacing">5</property>
+            <property name="layout_style">start</property>
+            <child>
+              <object class="GtkButton" id="var_type_ok">
+                <property name="label">gtk-ok</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="var_type_cancel">
+                <property name="label">gtk-cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="help_button_variable_type">
+                <property name="label">gtk-help</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">2</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="GtkWindow" id="val_labs_dialog">
+    <property name="title" translatable="yes">Value Labels</property>
+    <property name="resizable">False</property>
+    <property name="modal">True</property>
+    <property name="type_hint">dialog</property>
+    <property name="skip_taskbar_hint">True</property>
+    <property name="skip_pager_hint">True</property>
+    <child>
+      <object class="GtkHBox" id="hbox3">
+        <property name="visible">True</property>
+        <property name="border_width">5</property>
+        <child>
+          <object class="GtkFrame" id="frame1">
+            <property name="visible">True</property>
+            <property name="label_xalign">0</property>
+            <child>
+              <object class="GtkAlignment" id="alignment1">
+                <property name="visible">True</property>
+                <property name="border_width">8</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkTable" id="table3">
+                    <property name="visible">True</property>
+                    <property name="n_rows">2</property>
+                    <property name="n_columns">2</property>
+                    <property name="row_spacing">5</property>
+                    <child>
+                      <object class="GtkScrolledWindow" id="scrolledwindow3">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="hscrollbar_policy">automatic</property>
+                        <property name="vscrollbar_policy">automatic</property>
+                        <property name="shadow_type">etched-in</property>
+                        <child>
+                          <object class="GtkTreeView" id="treeview1">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="headers_visible">False</property>
+                            <property name="enable_search">False</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
+                        <property name="x_options">GTK_FILL</property>
+                        <property name="y_options">GTK_FILL</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkTable" id="table4">
+                        <property name="visible">True</property>
+                        <property name="border_width">5</property>
+                        <property name="n_rows">2</property>
+                        <property name="n_columns">2</property>
+                        <property name="column_spacing">5</property>
+                        <property name="row_spacing">4</property>
+                        <child>
+                          <object class="GtkHBox" id="hbox4">
+                            <property name="visible">True</property>
+                            <child>
+                              <object class="GtkEntry" id="value_entry">
+                                <property name="width_request">85</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="padding">1</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options">GTK_FILL</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkEntry" id="label_entry">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="top_attach">1</property>
+                            <property name="bottom_attach">2</property>
+                            <property name="y_options"></property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label6">
+                            <property name="visible">True</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Value Label:</property>
+                          </object>
+                          <packing>
+                            <property name="top_attach">1</property>
+                            <property name="bottom_attach">2</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"></property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label5">
+                            <property name="visible">True</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Value:</property>
+                          </object>
+                          <packing>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"></property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="right_attach">2</property>
+                        <property name="x_options">GTK_FILL</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkVButtonBox" id="vbuttonbox2">
+                        <property name="visible">True</property>
+                        <property name="border_width">5</property>
+                        <child>
+                          <object class="GtkButton" id="val_labs_add">
+                            <property name="label">gtk-add</property>
+                            <property name="visible">True</property>
+                            <property name="sensitive">False</property>
+                            <property name="can_focus">True</property>
+                            <property name="can_default">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="use_stock">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkButton" id="val_labs_change">
+                            <property name="label">gtk-apply</property>
+                            <property name="visible">True</property>
+                            <property name="sensitive">False</property>
+                            <property name="can_focus">True</property>
+                            <property name="can_default">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="use_stock">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkButton" id="val_labs_remove">
+                            <property name="label">gtk-remove</property>
+                            <property name="visible">True</property>
+                            <property name="sensitive">False</property>
+                            <property name="can_focus">True</property>
+                            <property name="can_default">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="use_stock">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
+                        <property name="x_options">GTK_FILL</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="label7">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">Value Labels</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="padding">10</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkVButtonBox" id="vbuttonbox3">
+            <property name="visible">True</property>
+            <property name="border_width">5</property>
+            <property name="spacing">5</property>
+            <property name="layout_style">start</property>
+            <child>
+              <object class="GtkButton" id="val_labs_ok">
+                <property name="label">gtk-ok</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="val_labs_cancel">
+                <property name="label">gtk-cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="help_button_value_labels">
+                <property name="label">gtk-help</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="GtkWindow" id="missing_values_dialog">
+    <property name="border_width">12</property>
+    <property name="title" translatable="yes">Missing Values</property>
+    <property name="resizable">False</property>
+    <property name="modal">True</property>
+    <property name="type_hint">dialog</property>
+    <property name="skip_taskbar_hint">True</property>
+    <property name="skip_pager_hint">True</property>
+    <child>
+      <object class="GtkVBox" id="vbox3">
+        <property name="visible">True</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">12</property>
+        <child>
+          <object class="GtkFrame" id="frame9">
+            <property name="visible">True</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="alignment4">
+                <property name="visible">True</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <placeholder/>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkRadioButton" id="no_missing">
+                <property name="label" translatable="yes">_No missing values</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_underline">True</property>
+                <property name="active">True</property>
+                <property name="draw_indicator">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="frame4">
+            <property name="visible">True</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="alignment3">
+                <property name="visible">True</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkHBox" id="hbox5">
+                    <property name="visible">True</property>
+                    <property name="border_width">5</property>
+                    <property name="spacing">6</property>
+                    <property name="homogeneous">True</property>
+                    <child>
+                      <object class="GtkEntry" id="mv0">
+                        <property name="width_request">75</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="mv1">
+                        <property name="width_request">75</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="mv2">
+                        <property name="width_request">75</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkRadioButton" id="discrete_missing">
+                <property name="label" translatable="yes">_Discrete missing values</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_underline">True</property>
+                <property name="focus_on_click">False</property>
+                <property name="draw_indicator">True</property>
+                <property name="group">no_missing</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="frame10">
+            <property name="visible">True</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="alignment5">
+                <property name="visible">True</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkTable" id="table1">
+                    <property name="visible">True</property>
+                    <property name="n_rows">3</property>
+                    <property name="n_columns">2</property>
+                    <property name="column_spacing">6</property>
+                    <property name="row_spacing">6</property>
+                    <child>
+                      <object class="GtkLabel" id="label11">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">_Low:</property>
+                        <property name="use_underline">True</property>
+                        <property name="mnemonic_widget">mv-low</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="mv-low">
+                        <property name="width_request">75</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label12">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">_High:</property>
+                        <property name="use_underline">True</property>
+                        <property name="mnemonic_widget">mv-high</property>
+                      </object>
+                      <packing>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="mv-high">
+                        <property name="width_request">75</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label10">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">Di_screte value:</property>
+                        <property name="use_underline">True</property>
+                        <property name="mnemonic_widget">mv-discrete</property>
+                      </object>
+                      <packing>
+                        <property name="top_attach">2</property>
+                        <property name="bottom_attach">3</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="mv-discrete">
+                        <property name="width_request">75</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">2</property>
+                        <property name="bottom_attach">3</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkRadioButton" id="range_missing">
+                <property name="label" translatable="yes">_Range plus one optional discrete missing value</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_underline">True</property>
+                <property name="focus_on_click">False</property>
+                <property name="draw_indicator">True</property>
+                <property name="group">no_missing</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkHButtonBox" id="hbuttonbox1">
+            <property name="visible">True</property>
+            <property name="spacing">6</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="missing_val_cancel">
+                <property name="label">gtk-cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="help_button_missing_values">
+                <property name="label">gtk-help</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="missing_val_ok">
+                <property name="label">gtk-ok</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">3</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>
index 2fdf2df87440ce8beec883aa65aab02dce988123..11cee3e5d78a84b73d4e6ff63f5e85d9eed89cf3 100644 (file)
@@ -151,7 +151,7 @@ variable_info_dialog (GObject *o, gpointer data)
 
   gint response ;
 
-  GtkBuilder *xml = builder_new ("variable-info-dialog.ui");
+  GtkBuilder *xml = builder_new ("variable-info.ui");
 
   GtkWidget *dialog = get_widget_assert (xml, "variable-info-dialog");
   GtkWidget *treeview = get_widget_assert (xml, "treeview2");
diff --git a/src/ui/gui/variable-info-dialog.glade b/src/ui/gui/variable-info-dialog.glade
deleted file mode 100644 (file)
index 1acb84e..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<!--*- mode: xml -*-->
-<glade-interface>
-  <requires lib="psppire"/>
-  <widget class="PsppireDialog" id="variable-info-dialog">
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="title">Variables</property>
-    <property name="modal">True</property>
-    <property name="slidable">True</property>
-    <child internal-child="hbox">
-      <widget class="GtkHPaned" id="dialog-hbox2">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <child>
-          <widget class="GtkScrolledWindow" id="scrolledwindow13">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-            <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-            <property name="shadow_type">GTK_SHADOW_IN</property>
-            <child>
-              <widget class="PsppireDictView" id="treeview2">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="headers_visible">False</property>
-                <property name="reorderable">True</property>
-                <property name="fixed_height_mode">True</property>
-              </widget>
-            </child>
-          </widget>
-          <packing>
-            <property name="resize">False</property>
-            <property name="shrink">True</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkVBox" id="vbox23">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="spacing">5</property>
-            <child>
-              <widget class="GtkLabel" id="label24">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes">Variable Information:</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="padding">5</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkScrolledWindow" id="scrolledwindow14">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                <property name="shadow_type">GTK_SHADOW_IN</property>
-                <child>
-                  <widget class="GtkTextView" id="textview1">
-                    <property name="height_request">200</property>
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="editable">False</property>
-                    <property name="wrap_mode">GTK_WRAP_WORD_CHAR</property>
-                    <property name="left_margin">3</property>
-                    <property name="cursor_visible">False</property>
-                    <property name="accepts_tab">False</property>
-                  </widget>
-                </child>
-              </widget>
-              <packing>
-                <property name="padding">5</property>
-                <property name="position">2</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="PsppireHButtonBox" id="psppire-hbuttonbox4">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="border_width">5</property>
-                <property name="homogeneous">True</property>
-                <property name="buttons">PSPPIRE_BUTTON_GOTO_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK | PSPPIRE_BUTTON_PASTE_MASK</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="pack_type">GTK_PACK_END</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="resize">True</property>
-            <property name="shrink">True</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-</glade-interface>
diff --git a/src/ui/gui/variable-info.ui b/src/ui/gui/variable-info.ui
new file mode 100644 (file)
index 0000000..c0f038c
--- /dev/null
@@ -0,0 +1,109 @@
+<?xml version="1.0"?>
+<interface>
+  <requires lib="psppire" version="2054.22072"/>
+  <!-- interface-requires gtk+ 2.12 -->
+  <!-- interface-naming-policy project-wide -->
+  <object class="PsppireDialog" id="variable-info-dialog">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="title">Variables</property>
+    <property name="modal">True</property>
+    <property name="slidable">True</property>
+    <child internal-child="hbox">
+      <object class="GtkHPaned" id="dialog-hbox2">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <child>
+          <object class="GtkScrolledWindow" id="scrolledwindow13">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="hscrollbar_policy">never</property>
+            <property name="vscrollbar_policy">automatic</property>
+            <property name="shadow_type">in</property>
+            <child>
+              <object class="PsppireDictView" id="treeview2">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="headers_visible">False</property>
+                <property name="reorderable">True</property>
+                <property name="fixed_height_mode">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="resize">False</property>
+            <property name="shrink">True</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkVBox" id="vbox23">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="orientation">vertical</property>
+            <property name="spacing">5</property>
+            <child>
+              <object class="GtkLabel" id="label24">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes">Variable Information:</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="padding">5</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkScrolledWindow" id="scrolledwindow14">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="hscrollbar_policy">never</property>
+                <property name="vscrollbar_policy">automatic</property>
+                <property name="shadow_type">in</property>
+                <child>
+                  <object class="GtkTextView" id="textview1">
+                    <property name="height_request">200</property>
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="editable">False</property>
+                    <property name="wrap_mode">word-char</property>
+                    <property name="left_margin">3</property>
+                    <property name="cursor_visible">False</property>
+                    <property name="accepts_tab">False</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="padding">5</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="PsppireHButtonBox" id="psppire-hbuttonbox4">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="border_width">5</property>
+                <property name="homogeneous">True</property>
+                <property name="buttons">PSPPIRE_BUTTON_GOTO_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK | PSPPIRE_BUTTON_PASTE_MASK</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="pack_type">end</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="resize">True</property>
+            <property name="shrink">True</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>
index 63b83384ada6a75162df9e8e867fc1a11896a904..81b896dc878839d44590f9e3205ebc53d5e07fb0 100644 (file)
@@ -14,7 +14,7 @@ src_ui_terminal_libui_la_SOURCES = \
        src/ui/terminal/terminal-opts.h 
 
 
-src_ui_terminal_libui_la_CFLAGS = -DINSTALLDIR=\"$(bindir)\" $(NCURSES_CFLAGS)
+src_ui_terminal_libui_la_CFLAGS = $(NCURSES_CFLAGS)
 
 bin_PROGRAMS += src/ui/terminal/pspp
 
@@ -28,7 +28,7 @@ src_ui_terminal_pspp_LDADD = \
        $(CAIRO_LIBS) \
        $(NCURSES_LIBS) \
        $(LIBICONV) \
-       @LIBINTL@ @LIBREADLINE@
+       $(LIBINTL) $(LIBREADLINE)
 
 
 src_ui_terminal_pspp_LDFLAGS = $(PSPP_LDFLAGS) $(PG_LDFLAGS)
index af8f7f2dd4df9828361a1dccfdb54d09473875b9..7ad162fca6d40b746a0155d891d8e08784e2e4df 100644 (file)
@@ -57,6 +57,7 @@
 
 #include "fatal-signal.h"
 #include "progname.h"
+#include "relocatable.h"
 
 #include "gettext.h"
 #define _(msgid) gettext (msgid)
@@ -166,6 +167,7 @@ main (int argc, char **argv)
   return any_errors ();
 }
 \f
+
 static void
 fpu_init (void)
 {
index 15e297a0150209c1586636de126a7a92a5d8defe..8a974a32f7033545d91cd075b8c879180a7c7eed 100644 (file)
@@ -1,7 +1,7 @@
 ## Process this file with automake to produce Makefile.in  -*- makefile -*-
 
 TESTS_ENVIRONMENT = top_srcdir='$(top_srcdir)' top_builddir='$(top_builddir)'
-TESTS_ENVIRONMENT += PERL='@PERL@' PG_CONFIG='@PG_CONFIG@'
+TESTS_ENVIRONMENT += PERL='$(PERL)' PG_CONFIG='$(PG_CONFIG)'
 
 # Allow locale_charset to find charset.alias before running "make install".
 TESTS_ENVIRONMENT += CHARSETALIASDIR='$(abs_top_builddir)/gl'
@@ -16,6 +16,7 @@ dist_TESTS = \
        tests/command/beg-data.sh \
        tests/command/bignum.sh \
        tests/command/count.sh \
+       tests/command/correlation.sh \
        tests/command/data-list.sh \
        tests/command/do-if.sh \
        tests/command/do-repeat.sh \
@@ -205,13 +206,14 @@ check_PROGRAMS += \
 
 tests_data_datasheet_test_SOURCES = \
        tests/data/datasheet-test.c
-tests_data_datasheet_test_LDADD = src/libpspp-core.la @LIBINTL@ 
+tests_data_datasheet_test_LDADD = gl/libgl.la src/libpspp-core.la $(LIBINTL) 
+tests_data_datasheet_test_CFLAGS = $(AM_CFLAGS)
 
 tests_libpspp_ll_test_SOURCES = \
        src/libpspp/ll.c \
        src/libpspp/ll.h \
        tests/libpspp/ll-test.c
-tests_libpspp_ll_test_LDADD = gl/libgl.la @LIBINTL@
+tests_libpspp_ll_test_LDADD = gl/libgl.la $(LIBINTL)
 tests_libpspp_ll_test_CFLAGS = $(AM_CFLAGS)
 
 tests_libpspp_llx_test_SOURCES = \
@@ -220,7 +222,7 @@ tests_libpspp_llx_test_SOURCES = \
        src/libpspp/llx.c \
        src/libpspp/llx.h \
        tests/libpspp/llx-test.c
-tests_libpspp_llx_test_LDADD = gl/libgl.la @LIBINTL@
+tests_libpspp_llx_test_LDADD = gl/libgl.la $(LIBINTL)
 tests_libpspp_llx_test_CFLAGS = $(AM_CFLAGS)
 
 tests_libpspp_heap_test_SOURCES = \
@@ -229,14 +231,14 @@ tests_libpspp_heap_test_SOURCES = \
        src/libpspp/pool.c \
        src/libpspp/pool.h \
        tests/libpspp/heap-test.c
-tests_libpspp_heap_test_LDADD = gl/libgl.la @LIBINTL@ 
+tests_libpspp_heap_test_LDADD = gl/libgl.la $(LIBINTL) 
 tests_libpspp_heap_test_CPPFLAGS = $(AM_CPPFLAGS) -DASSERT_LEVEL=10
 
 tests_libpspp_hmap_test_SOURCES = \
        src/libpspp/hmap.c \
        src/libpspp/hmap.h \
        tests/libpspp/hmap-test.c
-tests_libpspp_hmap_test_LDADD = gl/libgl.la @LIBINTL@
+tests_libpspp_hmap_test_LDADD = gl/libgl.la $(LIBINTL)
 tests_libpspp_hmap_test_CPPFLAGS = $(AM_CPPFLAGS) -DASSERT_LEVEL=10
 
 tests_libpspp_hmapx_test_SOURCES = \
@@ -245,14 +247,14 @@ tests_libpspp_hmapx_test_SOURCES = \
        src/libpspp/hmapx.c \
        src/libpspp/hmapx.h \
        tests/libpspp/hmapx-test.c
-tests_libpspp_hmapx_test_LDADD = gl/libgl.la @LIBINTL@
+tests_libpspp_hmapx_test_LDADD = gl/libgl.la $(LIBINTL)
 tests_libpspp_hmapx_test_CPPFLAGS = $(AM_CPPFLAGS) -DASSERT_LEVEL=10
 
 tests_libpspp_abt_test_SOURCES = \
        src/libpspp/abt.c \
        src/libpspp/abt.h \
        tests/libpspp/abt-test.c
-tests_libpspp_abt_test_LDADD = gl/libgl.la @LIBINTL@
+tests_libpspp_abt_test_LDADD = gl/libgl.la $(LIBINTL)
 tests_libpspp_abt_test_CPPFLAGS = $(AM_CPPFLAGS) -DASSERT_LEVEL=10
 
 tests_libpspp_bt_test_SOURCES = \
@@ -268,7 +270,7 @@ tests_libpspp_range_map_test_SOURCES = \
        src/libpspp/range-map.c \
        src/libpspp/range-map.h \
        tests/libpspp/range-map-test.c
-tests_libpspp_range_map_test_LDADD = gl/libgl.la @LIBINTL@
+tests_libpspp_range_map_test_LDADD = gl/libgl.la $(LIBINTL)
 tests_libpspp_range_map_test_CPPFLAGS = $(AM_CPPFLAGS) -DASSERT_LEVEL=10
 
 tests_libpspp_range_set_test_SOURCES = \
@@ -279,12 +281,12 @@ tests_libpspp_range_set_test_SOURCES = \
        src/libpspp/range-set.c \
        src/libpspp/range-set.h \
        tests/libpspp/range-set-test.c
-tests_libpspp_range_set_test_LDADD = gl/libgl.la @LIBINTL@ 
+tests_libpspp_range_set_test_LDADD = gl/libgl.la $(LIBINTL) 
 tests_libpspp_range_set_test_CPPFLAGS = $(AM_CPPFLAGS) -DASSERT_LEVEL=10
 
 tests_libpspp_str_test_SOURCES = \
        tests/libpspp/str-test.c
-tests_libpspp_str_test_LDADD = src/libpspp/libpspp.la gl/libgl.la @LIBINTL@ 
+tests_libpspp_str_test_LDADD = src/libpspp/libpspp.la gl/libgl.la $(LIBINTL) 
 
 tests_libpspp_tower_test_SOURCES = \
        src/libpspp/abt.c \
@@ -294,7 +296,7 @@ tests_libpspp_tower_test_SOURCES = \
        src/libpspp/tower.c \
        src/libpspp/tower.h \
        tests/libpspp/tower-test.c
-tests_libpspp_tower_test_LDADD = gl/libgl.la @LIBINTL@ 
+tests_libpspp_tower_test_LDADD = gl/libgl.la $(LIBINTL) 
 tests_libpspp_tower_test_CPPFLAGS = $(AM_CPPFLAGS) -DASSERT_LEVEL=10
 
 tests_libpspp_sparse_array_test_SOURCES = \
@@ -303,7 +305,7 @@ tests_libpspp_sparse_array_test_SOURCES = \
        src/libpspp/pool.c \
        src/libpspp/pool.h \
        tests/libpspp/sparse-array-test.c
-tests_libpspp_sparse_array_test_LDADD = gl/libgl.la @LIBINTL@ 
+tests_libpspp_sparse_array_test_LDADD = gl/libgl.la $(LIBINTL) 
 tests_libpspp_sparse_array_test_CPPFLAGS = $(AM_CPPFLAGS) -DASSERT_LEVEL=10
 
 tests_libpspp_sparse_xarray_test_SOURCES = \
@@ -318,7 +320,7 @@ tests_libpspp_sparse_xarray_test_SOURCES = \
        src/libpspp/pool.c \
        src/libpspp/tmpfile.c \
        tests/libpspp/sparse-xarray-test.c
-tests_libpspp_sparse_xarray_test_LDADD = gl/libgl.la @LIBINTL@ 
+tests_libpspp_sparse_xarray_test_LDADD = gl/libgl.la $(LIBINTL) 
 tests_libpspp_sparse_xarray_test_CPPFLAGS = $(AM_CPPFLAGS) -DASSERT_LEVEL=10
 
 tests_formats_inexactify_SOURCES = tests/formats/inexactify.c
@@ -328,7 +330,7 @@ tests_dissect_sysfile_SOURCES = \
        src/libpspp/integer-format.c \
        src/libpspp/float-format.c \
        tests/dissect-sysfile.c
-tests_dissect_sysfile_LDADD = gl/libgl.la @LIBINTL@ 
+tests_dissect_sysfile_LDADD = gl/libgl.la $(LIBINTL) 
 tests_dissect_sysfile_CPPFLAGS = $(AM_CPPFLAGS) -DINSTALLDIR=\"$(bindir)\"
 
 EXTRA_DIST += \
index 7a614b091787b427776fcdbd4c7250ee05c35402..5565d31ad4b5faf6ca12db873d1d933e7fb72c12 100755 (executable)
@@ -98,14 +98,14 @@ diff  -b $TEMPDIR/pspp.list - <<EOF
 |DEP2    |F8.0  |
 +--------+------+
 2.1 T-TEST.  Group Statistics
-#==========#=#====#==============#========#
-#     INDEP|N|Mean|Std. Deviation|SE. Mean#
-#==========#=#====#==============#========#
-#DEP1 a    |5|2.00|           .71|     .32#
-#     b    |5|4.00|           .71|     .32#
-#DEP2 a    |5|4.00|           .71|     .32#
-#     b    |5|2.00|           .71|     .32#
-#==========#=#====#==============#========#
+#==========#=#====#==============#=========#
+#     INDEP|N|Mean|Std. Deviation|S.E. Mean#
+#==========#=#====#==============#=========#
+#DEP1 a    |5|2.00|           .71|      .32#
+#     b    |5|4.00|           .71|      .32#
+#DEP2 a    |5|4.00|           .71|      .32#
+#     b    |5|2.00|           .71|      .32#
+#==========#=#====#==============#=========#
 2.2 T-TEST.  Independent Samples Test
 #===============================#========#============================================================================#
 #                               #Levene's|                        t-test for Equality of Means                        #
index 9a437efb8a466246a09859dc110d102c7dfc739a..c54bba3cf541a1ce7c738487e88ec6db09bb7a1e 100755 (executable)
@@ -94,12 +94,12 @@ diff  -b  $TEMPDIR/pspp.list - << EOF
 |gv      |A8    |
 +--------+------+
 2.1 T-TEST.  Group Statistics
-#==========#=#====#==============#========#
-#     gv   |N|Mean|Std. Deviation|SE. Mean#
-#==========#=#====#==============#========#
-#x One     |5|2.60|           .55|     .24#
-#  Two     |3|3.50|           .50|     .29#
-#==========#=#====#==============#========#
+#==========#=#====#==============#=========#
+#     gv   |N|Mean|Std. Deviation|S.E. Mean#
+#==========#=#====#==============#=========#
+#x One     |5|2.60|           .55|      .24#
+#  Two     |3|3.50|           .50|      .29#
+#==========#=#====#==============#=========#
 2.2 T-TEST.  Independent Samples Test
 #============================#=========#============================================================================#
 #                            # Levene's|                        t-test for Equality of Means                        #
index f722f614fcbd9042e1b5fae340fc69ceacba17cf..a9a311b7cc63290d4377f2c49e7208cbf741586e 100755 (executable)
@@ -88,12 +88,12 @@ diff  -b  $TEMPDIR/pspp.list - << EOF
 |B       |F8.0  |
 +--------+------+
 2.1 T-TEST.  Paired Sample Statistics
-#========#=====#=#==============#========#
-#        # Mean|N|Std. Deviation|SE. Mean#
-#========#=====#=#==============#========#
-#Pair 0 A#4.333|3|         5.774|   3.333#
-#       B#1.333|3|          .577|    .333#
-#========#=====#=#==============#========#
+#========#=====#=#==============#=========#
+#        # Mean|N|Std. Deviation|S.E. Mean#
+#========#=====#=#==============#=========#
+#Pair 0 A#4.333|3|         5.774|    3.333#
+#       B#1.333|3|          .577|     .333#
+#========#=====#=#==============#=========#
 2.2 T-TEST.  Paired Samples Correlations
 #======#=====#=#===========#====#
 #      |     #N|Correlation|Sig.#
index 4f96916f76d0a6bd304d66e742af7c932872cbe9..6168f4bb86fa6149a72062c363e848ff8485798b 100755 (executable)
@@ -96,17 +96,16 @@ diff -b  -w $TEMPDIR/pspp.list - << EOF
 |X       |F8.0  |
 +--------+------+
 2.1 FREQUENCIES.  X
-+-----------+--------+---------+--------+--------+--------+
-|           |        |         |        |  Valid |   Cum  |
-|Value Label|  Value |Frequency| Percent| Percent| Percent|
-#===========#========#=========#========#========#========#
-|           |   12.00|        1|   25.00|   25.00|   25.00|
-|           |   13.00|        1|   25.00|   25.00|   50.00|
-|           |   21.00|        1|   25.00|   25.00|   75.00|
-|           |   31.00|        1|   25.00|   25.00|  100.00|
-#===========#========#=========#========#========#========#
-|               Total|        4|   100.0|   100.0|        |
-+--------------------+---------+--------+--------+--------+
++-----------+--------+---------+--------+-------------+-----------+
+|Value Label|  Value |Frequency| Percent|Valid Percent|Cum Percent|
+#===========#========#=========#========#=============#===========#
+|           |   12.00|        1|   25.00|        25.00|      25.00|
+|           |   13.00|        1|   25.00|        25.00|      50.00|
+|           |   21.00|        1|   25.00|        25.00|      75.00|
+|           |   31.00|        1|   25.00|        25.00|     100.00|
+#===========#========#=========#========#=============#===========#
+|               Total|        4|   100.0|        100.0|           |
++--------------------+---------+--------+-------------+-----------+
 +---------------+-----+
 |N       Valid  |    4|
 |        Missing|    0|
diff --git a/tests/command/correlation.sh b/tests/command/correlation.sh
new file mode 100755 (executable)
index 0000000..d8fcb1c
--- /dev/null
@@ -0,0 +1,221 @@
+#!/bin/sh
+
+# This program tests the CORRELATIONS command
+
+TEMPDIR=/tmp/pspp-tst-$$
+TESTFILE=$TEMPDIR/`basename $0`.sps
+
+# ensure that top_srcdir and top_builddir  are absolute
+if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
+if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
+top_srcdir=`cd $top_srcdir; pwd`
+top_builddir=`cd $top_builddir; pwd`
+
+PSPP=$top_builddir/src/ui/terminal/pspp
+
+STAT_CONFIG_PATH=$top_srcdir/config
+export STAT_CONFIG_PATH
+
+LANG=C
+export LANG
+
+
+cleanup()
+{
+     if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then 
+       echo "NOT cleaning $TEMPDIR"
+       return ; 
+     fi
+     rm -rf $TEMPDIR
+}
+
+
+fail()
+{
+    echo $activity
+    echo FAILED
+    cleanup;
+    exit 1;
+}
+
+
+no_result()
+{
+    echo $activity
+    echo NO RESULT;
+    cleanup;
+    exit 2;
+}
+
+pass()
+{
+    cleanup;
+    exit 0;
+}
+
+mkdir -p $TEMPDIR
+
+cd $TEMPDIR
+
+activity="create program 1"
+cat << EOF > $TESTFILE
+set format = F11.3.
+data list notable list /foo * bar * wiz * bang *.
+begin data.
+1   0   3   1
+3   9 -50   5
+3   4   3 203
+4  -9   0  -4
+98 78 104   2
+3  50 -49 200
+.   4   4   4
+5   3   0   .
+end data.
+
+correlations 
+       variables = foo bar wiz bang
+       /print nosig
+       /missing = listwise
+       .
+
+correlations 
+       variables = bar wiz
+       /print nosig
+       /missing = listwise
+       .
+
+correlations 
+       variables = foo bar wiz bang
+       /print nosig
+       /missing = pairwise
+       .
+EOF
+if [ $? -ne 0 ] ; then no_result ; fi
+
+
+activity="run program 1"
+$SUPERVISOR $PSPP --testing-mode -o raw-ascii $TESTFILE
+if [ $? -ne 0 ] ; then no_result ; fi
+
+activity="compare results 1"
+perl -pi -e 's/^\s*$//g' $TEMPDIR/pspp.list
+diff -b  $TEMPDIR/pspp.list - << EOF
+1.1 CORRELATIONS.  Correlations
+#========================#=====#=====#=====#=====#
+#                        #foo  |bar  |wiz  |bang #
+#----+-------------------#-----+-----+-----+-----#
+#foo |Pearson Correlation#1.000| .802| .890|-.308#
+#    |Sig. (2-tailed)    #     | .055| .017| .553#
+#----+-------------------#-----+-----+-----+-----#
+#bar |Pearson Correlation# .802|1.000| .519| .118#
+#    |Sig. (2-tailed)    # .055|     | .291| .824#
+#----+-------------------#-----+-----+-----+-----#
+#wiz |Pearson Correlation# .890| .519|1.000|-.344#
+#    |Sig. (2-tailed)    # .017| .291|     | .505#
+#----+-------------------#-----+-----+-----+-----#
+#bang|Pearson Correlation#-.308| .118|-.344|1.000#
+#    |Sig. (2-tailed)    # .553| .824| .505|     #
+#====#===================#=====#=====#=====#=====#
+2.1 CORRELATIONS.  Correlations
+#=======================#=====#=====#
+#                       #bar  |wiz  #
+#---+-------------------#-----+-----#
+#bar|Pearson Correlation#1.000| .497#
+#   |Sig. (2-tailed)    #     | .210#
+#---+-------------------#-----+-----#
+#wiz|Pearson Correlation# .497|1.000#
+#   |Sig. (2-tailed)    # .210|     #
+#===#===================#=====#=====#
+3.1 CORRELATIONS.  Correlations
+#========================#=====#=====#=====#=====#
+#                        #foo  |bar  |wiz  |bang #
+#----+-------------------#-----+-----+-----+-----#
+#foo |Pearson Correlation#1.000| .805| .883|-.308#
+#    |Sig. (2-tailed)    #     | .029| .008| .553#
+#    |N                  #    7|    7|    7|    6#
+#----+-------------------#-----+-----+-----+-----#
+#bar |Pearson Correlation# .805|1.000| .497| .164#
+#    |Sig. (2-tailed)    # .029|     | .210| .725#
+#    |N                  #    7|    8|    8|    7#
+#----+-------------------#-----+-----+-----+-----#
+#wiz |Pearson Correlation# .883| .497|1.000|-.337#
+#    |Sig. (2-tailed)    # .008| .210|     | .460#
+#    |N                  #    7|    8|    8|    7#
+#----+-------------------#-----+-----+-----+-----#
+#bang|Pearson Correlation#-.308| .164|-.337|1.000#
+#    |Sig. (2-tailed)    # .553| .725| .460|     #
+#    |N                  #    6|    7|    7|    7#
+#====#===================#=====#=====#=====#=====#
+EOF
+if [ $? -ne 0 ] ; then fail ; fi
+
+
+# Now test that weights are properly handled.
+
+activity="create program 2"
+cat << EOF > $TESTFILE
+set format = F11.3.
+data list notable list /foo * bar * wiz * bang * w *.
+begin data.
+1   0   3   1  1
+3   9 -50   5  2
+3   4   3 203  1
+4  -9   0  -4  1
+98 78 104   2  3
+3  50 -49 200  1
+end data.
+
+weight by w.
+
+correlations 
+       variables = foo bar wiz bang
+       /statistics=descriptives xprod
+       .
+
+EOF
+if [ $? -ne 0 ] ; then no_result ; fi
+
+
+activity="run program 2"
+$SUPERVISOR $PSPP --testing-mode -o raw-ascii $TESTFILE
+if [ $? -ne 0 ] ; then no_result ; fi
+
+activity="copy results"
+cp $TEMPDIR/pspp.list $TEMPDIR/weighted
+if [ $? -ne 0 ] ; then no_result ; fi
+
+activity="create program 3"
+cat << EOF > $TESTFILE
+set format = F11.3.
+data list notable list /foo * bar * wiz * bang * w *.
+begin data.
+1   0   3   1  1
+3   9 -50   5  1
+3   9 -50   5  1
+3   4   3 203  1
+4  -9   0  -4  1
+98 78 104   2  1
+98 78 104   2  1
+98 78 104   2  1
+3  50 -49 200  1
+end data.
+
+weight by w.
+
+correlations 
+       variables = foo bar wiz bang
+       /statistics=descriptives xprod
+       .
+
+EOF
+if [ $? -ne 0 ] ; then no_result ; fi
+
+activity="run program 3"
+$SUPERVISOR $PSPP --testing-mode -o raw-ascii $TESTFILE
+if [ $? -ne 0 ] ; then no_result ; fi
+
+activity="Compare weighted and unweighted results"
+diff $TEMPDIR/pspp.list $TEMPDIR/weighted
+if [ $? -ne 0 ] ; then fail ; fi
+
+pass;
index bc11fa3a20ad6120b45901fd57d79995c7255158..d8f8ae3647ffe306e531c945184190eb9d0478a8 100755 (executable)
@@ -96,7 +96,7 @@ File:           pro.sav
 Label:          No label.
 Variables:      2
 Cases:          3
-Type:           System File.
+Type:           System File
 Weight:         Not weighted.
 Mode:           Compression on.
 Charset:        Unknown
index d1272a3db32e7dd3feccdfe3a344b3ee51da03bd..ba3e5c5f4e15aabccc4e8c96da676f4327e29da7 100755 (executable)
@@ -105,12 +105,12 @@ diff  -b $TEMPDIR/pspp.list - <<EOF
 |DEP     |F8.0  |
 +--------+------+
 2.1 T-TEST.  Group Statistics
-#===========#==#====#==============#========#
-#     INDEP | N|Mean|Std. Deviation|SE. Mean#
-#===========#==#====#==============#========#
-#DEP >=1.514|11|9.00|          3.82|    1.15#
-#    <1.514 |11|8.00|          2.86|     .86#
-#===========#==#====#==============#========#
+#===========#==#====#==============#=========#
+#     INDEP | N|Mean|Std. Deviation|S.E. Mean#
+#===========#==#====#==============#=========#
+#DEP >=1.514|11|9.00|          3.82|     1.15#
+#    <1.514 |11|8.00|          2.86|      .86#
+#===========#==#====#==============#=========#
 2.2 T-TEST.  Independent Samples Test
 #==============================#========#============================================================================#
 #                              #Levene's|                        t-test for Equality of Means                        #
index 2b45701c97ff3385433901b1b59b1703e80dae67..843698182f461315511502fd77861d7c725237b2 100755 (executable)
@@ -88,11 +88,11 @@ diff  -b $TEMPDIR/pspp.list - <<EOF
 |ABC     |F8.0  |
 +--------+------+
 2.1 T-TEST.  One-Sample Statistics
-#===#=#====#==============#========#
-#   #N|Mean|Std. Deviation|SE. Mean#
-#===#=#====#==============#========#
-#ABC#6|3.00|           .84|     .34#
-#===#=#====#==============#========#
+#===#=#====#==============#=========#
+#   #N|Mean|Std. Deviation|S.E. Mean#
+#===#=#====#==============#=========#
+#ABC#6|3.00|           .84|      .34#
+#===#=#====#==============#=========#
 2.2 T-TEST.  One-Sample Test
 #===#===================================================#
 #   #               Test Value = 2.000000               #
index 3ba90f14b2d80c7cbfa673b237814de7e5ce738e..37f833049b0842adb2d2fc83216c571070809d59 100755 (executable)
@@ -88,12 +88,12 @@ diff  -b $TEMPDIR/pspp.list - <<EOF
 |B       |F8.0  |
 +--------+------+
 2.1 T-TEST.  Paired Sample Statistics
-#========#====#=#==============#========#
-#        #Mean|N|Std. Deviation|SE. Mean#
-#========#====#=#==============#========#
-#Pair 0 A#2.00|5|           .71|     .32#
-#       B#4.00|5|          1.54|     .69#
-#========#====#=#==============#========#
+#========#====#=#==============#=========#
+#        #Mean|N|Std. Deviation|S.E. Mean#
+#========#====#=#==============#=========#
+#Pair 0 A#2.00|5|           .71|      .32#
+#       B#4.00|5|          1.54|      .69#
+#========#====#=#==============#=========#
 2.2 T-TEST.  Paired Samples Correlations
 #======#=====#=#===========#====#
 #      |     #N|Correlation|Sig.#
index 5da366d9968d9941f34eb5561a7538eaf031dc0a..0d4fb3970b21fc685f0c059d72651ff177a75b46 100755 (executable)
@@ -87,11 +87,11 @@ diff  -b $TEMPDIR/pspp.list - <<EOF
 |BVAR    |     1|  6- 10|F5.0  |
 +--------+------+-------+------+
 2.1 DESCRIPTIVES.  Valid cases = 730; cases with missing value(s) = 0.
-+--------#-------+---------+------+--------+-------+--------+--------+--------+--------+--------+------+-------+-------+--------+
-|Variable#Valid N|Missing N| Mean |S E Mean|Std Dev|Variance|Kurtosis|S E Kurt|Skewness|S E Skew| Range|Minimum|Maximum|   Sum  |
-#========#=======#=========#======#========#=======#========#========#========#========#========#======#=======#=======#========#
-|AVAR    #    730|        0|31.515|    .405| 10.937| 119.608|   2.411|    .181|   1.345|    .090|76.000| 18.000| 94.000|23006.00|
-+--------#-------+---------+------+--------+-------+--------+--------+--------+--------+--------+------+-------+-------+--------+
++--------#-------+---------+------+---------+-------+--------+--------+---------+--------+---------+------+-------+-------+--------+
+|Variable#Valid N|Missing N| Mean |S.E. Mean|Std Dev|Variance|Kurtosis|S.E. Kurt|Skewness|S.E. Skew| Range|Minimum|Maximum|   Sum  |
+#========#=======#=========#======#=========#=======#========#========#=========#========#=========#======#=======#=======#========#
+|AVAR    #    730|        0|31.515|     .405| 10.937| 119.608|   2.411|     .181|   1.345|     .090|76.000| 18.000| 94.000|23006.00|
++--------#-------+---------+------+---------+-------+--------+--------+---------+--------+---------+------+-------+-------+--------+
 3.1 FREQUENCIES.  AVAR
 +--------+--------+---+---+
 |        |        |   |Cum|
index 85f3644211d3171423239c59b14ab7136f28b36a..8bab745f3ab23a52ca566b4e75b2c8001d194e30 100644 (file)
@@ -45,8 +45,14 @@ struct sfm_reader
 
     int n_variable_records, n_variables;
 
+    int *var_widths;
+    size_t n_var_widths, allocated_var_widths;
+
     enum integer_format integer_format;
     enum float_format float_format;
+
+    bool compressed;
+    double bias;
   };
 
 static void read_header (struct sfm_reader *);
@@ -72,6 +78,7 @@ static void read_character_encoding (struct sfm_reader *r,
                                       size_t size, size_t count);
 static void read_long_string_value_labels (struct sfm_reader *r,
                                            size_t size, size_t count);
+static void read_compressed_data (struct sfm_reader *);
 
 static struct text_record *open_text_record (
   struct sfm_reader *, size_t size);
@@ -115,6 +122,10 @@ main (int argc, char *argv[])
         error (EXIT_FAILURE, errno, "error opening \"%s\"", r.file_name);
       r.n_variable_records = 0;
       r.n_variables = 0;
+      r.n_var_widths = 0;
+      r.allocated_var_widths = 0;
+      r.var_widths = 0;
+      r.compressed = false;
 
       if (argc > 2)
         printf ("Reading \"%s\":\n", r.file_name);
@@ -151,6 +162,9 @@ main (int argc, char *argv[])
               "(first byte of data at %08lx)\n",
               ftell (r.file), ftell (r.file) + 4);
 
+      if (r.compressed)
+        read_compressed_data (&r);
+
       fclose (r.file);
     }
   
@@ -169,7 +183,6 @@ read_header (struct sfm_reader *r)
   int32_t weight_index;
   int32_t ncases;
   uint8_t raw_bias[8];
-  double bias;
   char creation_date[10];
   char creation_time[9];
   char file_label[65];
@@ -193,10 +206,12 @@ read_header (struct sfm_reader *r)
                              raw_layout_code, sizeof raw_layout_code);
 
   nominal_case_size = read_int (r);
-  compressed = read_int (r) != 0;
+  compressed = read_int (r);
   weight_index = read_int (r);
   ncases = read_int (r);
 
+  r->compressed = compressed != 0;
+
   /* Identify floating-point format and obtain compression bias. */
   read_bytes (r, raw_bias, sizeof raw_bias);
   if (float_identify (100.0, raw_bias, sizeof raw_bias, &r->float_format) == 0)
@@ -209,7 +224,7 @@ read_header (struct sfm_reader *r)
       else
         r->float_format = FLOAT_IEEE_DOUBLE_LE;
     }
-  bias = float_get_double (r->float_format, raw_bias);
+  r->bias = float_get_double (r->float_format, raw_bias);
 
   read_string (r, creation_date, sizeof creation_date);
   read_string (r, creation_time, sizeof creation_time);
@@ -223,7 +238,7 @@ read_header (struct sfm_reader *r)
   printf ("\t%17s: %"PRId32"\n", "Compressed", compressed);
   printf ("\t%17s: %"PRId32"\n", "Weight index", weight_index);
   printf ("\t%17s: %"PRId32"\n", "Number of cases", ncases);
-  printf ("\t%17s: %g\n", "Compression bias", bias);
+  printf ("\t%17s: %g\n", "Compression bias", r->bias);
   printf ("\t%17s: %s\n", "Creation date", creation_date);
   printf ("\t%17s: %s\n", "Creation time", creation_time);
   printf ("\t%17s: \"%s\"\n", "File label", file_label);
@@ -301,6 +316,11 @@ read_variable_record (struct sfm_reader *r)
   if (width >= 0)
     r->n_variables++;
 
+  if (r->n_var_widths >= r->allocated_var_widths)
+    r->var_widths = x2nrealloc (r->var_widths, &r->allocated_var_widths,
+                                sizeof *r->var_widths);
+  r->var_widths[r->n_var_widths++] = width;
+
   printf ("\tWidth: %d (%s)\n",
           width,
           width > 0 ? "string"
@@ -380,6 +400,20 @@ read_variable_record (struct sfm_reader *r)
     }
 }
 
+static void
+print_untyped_value (struct sfm_reader *r, char raw_value[8])
+{
+  int n_printable;
+  double value;
+
+  value = float_get_double (r->float_format, raw_value);
+  for (n_printable = 0; n_printable < sizeof raw_value; n_printable++)
+    if (!isprint (raw_value[n_printable]))
+      break;
+
+  printf ("%g/\"%.*s\"", value, n_printable, raw_value);
+}
+
 /* Reads value labels from sysfile R and inserts them into the
    associated dictionary. */
 static void
@@ -395,17 +429,11 @@ read_value_label_record (struct sfm_reader *r)
   for (i = 0; i < label_cnt; i++)
     {
       char raw_value[8];
-      double value;
-      int n_printable;
       unsigned char label_len;
       size_t padded_len;
       char label[256];
 
       read_bytes (r, raw_value, sizeof raw_value);
-      value = float_get_double (r->float_format, raw_value);
-      for (n_printable = 0; n_printable < sizeof raw_value; n_printable++)
-        if (!isprint (raw_value[n_printable]))
-          break;
 
       /* Read label length. */
       read_bytes (r, &label_len, sizeof label_len);
@@ -415,7 +443,9 @@ read_value_label_record (struct sfm_reader *r)
       read_bytes (r, label, padded_len - 1);
       label[label_len] = 0;
 
-      printf ("\t%g/\"%.*s\": \"%s\"\n", value, n_printable, raw_value, label);
+      printf ("\t");
+      print_untyped_value (r, raw_value);
+      printf (": \"%s\"\n", label);
     }
 
   /* Now, read the type 4 record that has the list of variables
@@ -816,6 +846,82 @@ read_variable_attributes (struct sfm_reader *r, size_t size, size_t count)
     }
   close_text_record (text);
 }
+
+static void
+read_compressed_data (struct sfm_reader *r)
+{
+  enum { N_OPCODES = 8 };
+  uint8_t opcodes[N_OPCODES];
+  long int opcode_ofs;
+  int opcode_idx;
+  int case_num;
+  int i;
+
+  read_int (r);
+  printf ("\n%08lx: compressed data:\n", ftell (r->file));
+
+  opcode_idx = N_OPCODES;
+  case_num = 0;
+  for (case_num = 0; ; case_num++)
+    {
+      printf ("%08lx: case %d's uncompressible data begins\n",
+              ftell (r->file), case_num);
+      for (i = 0; i < r->n_var_widths; i++)
+        {
+          int width = r->var_widths[i];
+          char raw_value[8];
+          int opcode;
+
+          if (opcode_idx >= N_OPCODES)
+            {
+              opcode_ofs = ftell (r->file);
+              read_bytes (r, opcodes, 8);
+              opcode_idx = 0;
+            }
+          opcode = opcodes[opcode_idx];
+          printf ("%08lx: variable %d: opcode %d: ",
+                  opcode_ofs + opcode_idx, i, opcode);
+
+          switch (opcode)
+            {
+            default:
+              printf ("%g", opcode - r->bias);
+              if (width != 0)
+                printf (", but this is a string variable (width=%d)", width);
+              printf ("\n");
+              break;
+
+            case 252:
+              printf ("end of data\n");
+              return;
+
+            case 253:
+              read_bytes (r, raw_value, 8);
+              printf ("uncompressible data: ");
+              print_untyped_value (r, raw_value);
+              printf ("\n");
+              break;
+
+            case 254:
+              printf ("spaces");
+              if (width == 0)
+                printf (", but this is a numeric variable");
+              printf ("\n");
+              break;
+
+            case 255:
+              printf ("SYSMIS");
+              if (width != 0)
+                printf (", but this is a string variable (width=%d)", width);
+
+              printf ("\n");
+              break;
+            }
+
+          opcode_idx++;
+        }
+    }
+}
 \f
 /* Helpers for reading records that consist of structured text
    strings. */
index e59ea464f92cd2c6297980bc103c76e87ffec636..4ca7f92fd73f48316bcc53c1f388bfab69427a11 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPP - a program for statistical analysis.
-   Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+   Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
 
    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
    "valgrind --leak-check=yes --show-reachable=yes" should give a
    clean report. */
 
-/* Warning:
-
-   GCC 4.3 will miscompile this test program, specifically
-   test_moved(), given small changes.  This is a bug in GCC
-   triggered by the test program, not by the library under test,
-   so you may safely ignore it.  To avoid miscompilation, compile
-   this file with GCC 4.2 or earlier or GCC 4.4 or later.
+/* GCC 4.3 miscompiles some of the tests below, so we do not run
+   these tests on GCC 4.3.  This is a bug in GCC 4.3 triggered by
+   the test program, not a bug in the library under test.  GCC
+   4.2 or earlier and GCC 4.4 or later do not have this bug.
 
    Here is a minimal test program that demonstrates the same or a
    similar bug in GCC 4.3:
@@ -741,6 +738,10 @@ test_moved (int max_elems, hash_function *hash)
   struct hmap hmap;
   int i, j;
 
+#if __GNUC__ == 4 && __GNUC_MINOR__ == 3
+  return;
+#endif  /* GCC 4.3 */
+
   hmap_init (&hmap);
   e[0] = xnmalloc (max_elems, sizeof *e[0]);
   e[1] = xnmalloc (max_elems, sizeof *e[1]);
@@ -876,6 +877,10 @@ test_swap (int max_elems, hash_function *hash)
   struct hmap *working, *empty;
   int i;
 
+#if __GNUC__ == 4 && __GNUC_MINOR__ == 3
+  return;
+#endif  /* GCC 4.3 */
+
   hmap_init (&a);
   hmap_init (&b);
   working = &a;
@@ -995,5 +1000,12 @@ main (void)
 
   putchar ('\n');
 
+#if __GNUC__ == 4 && __GNUC_MINOR__ == 3
+  /* We skipped some of the tests, so return a value that
+     Automake will interpret as "skipped", instead of one that
+     means success. */
+  return 77;
+#else
   return 0;
+#endif
 }
index dd5a2a99307d2dee4c60cf524c9d8c63ac73d14e..279863e9baac10713ed6560222f68093f27924fe 100644 (file)
@@ -182,7 +182,7 @@ check_state (struct mc *mc, struct test_state *ts, const struct test_model *tm)
           for (col = 0; col < params->n_columns; col++)
             if (data[col] != model->data[row][col])
               {
-                mc_error (mc, "xarray %d: element %zu,%zu (of %zu,%zu) "
+                mc_error (mc, "xarray %d: element %d,%d (of %d,%d) "
                           "differs: %d should be %d",
                           i, row, col, n_rows, n_columns, data[col],
                           model->data[row][col]);
@@ -201,7 +201,7 @@ check_state (struct mc *mc, struct test_state *ts, const struct test_model *tm)
               ds_clear (&ds);
               for (col = 0; col < n_columns; col++)
                 ds_put_format (&ds, " %d", model->data[row][col]);
-              mc_error (mc, "xarray %d: row %zu:%s", i, row, ds_cstr (&ds));
+              mc_error (mc, "xarray %d: row %d:%s", i, row, ds_cstr (&ds));
             }
 
           mc_error (mc, "xarray %d: actual:", i);
@@ -216,7 +216,7 @@ check_state (struct mc *mc, struct test_state *ts, const struct test_model *tm)
               ds_clear (&ds);
               for (col = 0; col < n_columns; col++)
                 ds_put_format (&ds, " %d", data[col]);
-              mc_error (mc, "xarray %d: row %zu:%s", i, row, ds_cstr (&ds));
+              mc_error (mc, "xarray %d: row %d:%s", i, row, ds_cstr (&ds));
             }
 
           ds_destroy (&ds);
@@ -273,8 +273,8 @@ sparse_xarray_mc_init (struct mc *mc)
   struct test_model tm;
   int i;
 
-  mc_name_operation (mc, "empty sparse_xarray with n_columns=%zu, "
-                     "max_memory_rows=%zu",
+  mc_name_operation (mc, "empty sparse_xarray with n_columns=%d, "
+                     "max_memory_rows=%d",
                      params->n_columns, params->max_memory_rows);
   ts = xmalloc (sizeof *ts);
   for (i = 0; i < params->n_xarrays; i++)
index ab9618fc0b87a7590e251b8471f9ad75020f0d8f..a1f4a64e6aaf18d52fae489164f38f56e1c250c1 100755 (executable)
@@ -111,27 +111,27 @@ diff -b $TEMPDIR/pspp.list - <<EOF
 |V16     |     1| 17- 17|F1.0  |
 +--------+------+-------+------+
 2.1 DESCRIPTIVES.  Valid cases = 10; cases with missing value(s) = 0.
-+--------#-------+---------+----+--------+-------+--------+--------+--------+--------+--------+-----+-------+-------+-----+
-|Variable#Valid N|Missing N|Mean|S E Mean|Std Dev|Variance|Kurtosis|S E Kurt|Skewness|S E Skew|Range|Minimum|Maximum| Sum |
-#========#=======#=========#====#========#=======#========#========#========#========#========#=====#=======#=======#=====#
-|V0      #     10|        0|3.80|     .84|   2.66|    7.07|    -.03|    1.33|     .89|     .69| 8.00|   1.00|   9.00|38.00|
-|V1      #     10|        0|4.60|     .96|   3.03|    9.16|   -1.39|    1.33|    -.03|     .69| 9.00|    .00|   9.00|46.00|
-|V2      #     10|        0|4.10|    1.16|   3.67|   13.43|   -2.02|    1.33|     .48|     .69| 8.00|   1.00|   9.00|41.00|
-|V3      #     10|        0|4.10|     .87|   2.77|    7.66|   -2.05|    1.33|     .42|     .69| 7.00|   1.00|   8.00|41.00|
-|V4      #     10|        0|7.00|     .47|   1.49|    2.22|    7.15|    1.33|   -2.52|     .69| 5.00|   3.00|   8.00|70.00|
-|V5      #     10|        0|4.90|    1.03|   3.25|   10.54|   -1.40|    1.33|    -.20|     .69| 9.00|    .00|   9.00|49.00|
-|V6      #     10|        0|5.90|     .80|   2.51|    6.32|    -.29|    1.33|    -.96|     .69| 7.00|   1.00|   8.00|59.00|
-|V7      #     10|        0|4.70|    1.10|   3.47|   12.01|   -1.99|    1.33|    -.16|     .69| 9.00|    .00|   9.00|47.00|
-|V8      #     10|        0|4.10|    1.10|   3.48|   12.10|   -1.93|    1.33|     .37|     .69| 9.00|    .00|   9.00|41.00|
-|V9      #     10|        0|4.30|     .87|   2.75|    7.57|    -.87|    1.33|     .73|     .69| 8.00|   1.00|   9.00|43.00|
-|V10     #     10|        0|5.50|     .85|   2.68|    7.17|   -1.84|    1.33|    -.33|     .69| 7.00|   2.00|   9.00|55.00|
-|V11     #     10|        0|6.50|     .78|   2.46|    6.06|   -1.28|    1.33|    -.89|     .69| 6.00|   3.00|   9.00|65.00|
-|V12     #     10|        0|7.90|     .60|   1.91|    3.66|    5.24|    1.33|   -2.21|     .69| 6.00|   3.00|   9.00|79.00|
-|V13     #     10|        0|4.30|     .99|   3.13|    9.79|   -1.25|    1.33|     .33|     .69| 9.00|    .00|   9.00|43.00|
-|V14     #     10|        0|3.60|    1.01|   3.20|   10.27|    -.96|    1.33|     .81|     .69| 9.00|    .00|   9.00|36.00|
-|V15     #     10|        0|3.70|     .92|   2.91|    8.46|   -1.35|    1.33|     .71|     .69| 7.00|   1.00|   8.00|37.00|
-|V16     #     10|        0|6.40|     .91|   2.88|    8.27|   -1.14|    1.33|    -.92|     .69| 7.00|   2.00|   9.00|64.00|
-+--------#-------+---------+----+--------+-------+--------+--------+--------+--------+--------+-----+-------+-------+-----+
++--------#-------+---------+----+---------+-------+--------+--------+---------+--------+---------+-----+-------+-------+-----+
+|Variable#Valid N|Missing N|Mean|S.E. Mean|Std Dev|Variance|Kurtosis|S.E. Kurt|Skewness|S.E. Skew|Range|Minimum|Maximum| Sum |
+#========#=======#=========#====#=========#=======#========#========#=========#========#=========#=====#=======#=======#=====#
+|V0      #     10|        0|3.80|      .84|   2.66|    7.07|    -.03|     1.33|     .89|      .69| 8.00|   1.00|   9.00|38.00|
+|V1      #     10|        0|4.60|      .96|   3.03|    9.16|   -1.39|     1.33|    -.03|      .69| 9.00|    .00|   9.00|46.00|
+|V2      #     10|        0|4.10|     1.16|   3.67|   13.43|   -2.02|     1.33|     .48|      .69| 8.00|   1.00|   9.00|41.00|
+|V3      #     10|        0|4.10|      .87|   2.77|    7.66|   -2.05|     1.33|     .42|      .69| 7.00|   1.00|   8.00|41.00|
+|V4      #     10|        0|7.00|      .47|   1.49|    2.22|    7.15|     1.33|   -2.52|      .69| 5.00|   3.00|   8.00|70.00|
+|V5      #     10|        0|4.90|     1.03|   3.25|   10.54|   -1.40|     1.33|    -.20|      .69| 9.00|    .00|   9.00|49.00|
+|V6      #     10|        0|5.90|      .80|   2.51|    6.32|    -.29|     1.33|    -.96|      .69| 7.00|   1.00|   8.00|59.00|
+|V7      #     10|        0|4.70|     1.10|   3.47|   12.01|   -1.99|     1.33|    -.16|      .69| 9.00|    .00|   9.00|47.00|
+|V8      #     10|        0|4.10|     1.10|   3.48|   12.10|   -1.93|     1.33|     .37|      .69| 9.00|    .00|   9.00|41.00|
+|V9      #     10|        0|4.30|      .87|   2.75|    7.57|    -.87|     1.33|     .73|      .69| 8.00|   1.00|   9.00|43.00|
+|V10     #     10|        0|5.50|      .85|   2.68|    7.17|   -1.84|     1.33|    -.33|      .69| 7.00|   2.00|   9.00|55.00|
+|V11     #     10|        0|6.50|      .78|   2.46|    6.06|   -1.28|     1.33|    -.89|      .69| 6.00|   3.00|   9.00|65.00|
+|V12     #     10|        0|7.90|      .60|   1.91|    3.66|    5.24|     1.33|   -2.21|      .69| 6.00|   3.00|   9.00|79.00|
+|V13     #     10|        0|4.30|      .99|   3.13|    9.79|   -1.25|     1.33|     .33|      .69| 9.00|    .00|   9.00|43.00|
+|V14     #     10|        0|3.60|     1.01|   3.20|   10.27|    -.96|     1.33|     .81|      .69| 9.00|    .00|   9.00|36.00|
+|V15     #     10|        0|3.70|      .92|   2.91|    8.46|   -1.35|     1.33|     .71|      .69| 7.00|   1.00|   8.00|37.00|
+|V16     #     10|        0|6.40|      .91|   2.88|    8.27|   -1.14|     1.33|    -.92|      .69| 7.00|   2.00|   9.00|64.00|
++--------#-------+---------+----+---------+-------+--------+--------+---------+--------+---------+-----+-------+-------+-----+
 EOF
 if [ $? -ne 0 ] ; then fail ; fi
 
index dacd35824c4ba6072da097f6872a530d3b687e92..9de2770e1e5ae3bf1007636d84db803278926f19 100755 (executable)
@@ -98,37 +98,37 @@ diff -b $TEMPDIR/pspp.list - <<EOF
 |V3      |     1|  3-  3|F1.0  |
 +--------+------+-------+------+
 2.1 DESCRIPTIVES.  Valid cases = 7; cases with missing value(s) = 6.
-+--------#-------+---------+----+--------+-------+--------+--------+--------+--------+--------+-----+-------+-------+----+
-|Variable#Valid N|Missing N|Mean|S E Mean|Std Dev|Variance|Kurtosis|S E Kurt|Skewness|S E Skew|Range|Minimum|Maximum| Sum|
-#========#=======#=========#====#========#=======#========#========#========#========#========#=====#=======#=======#====#
-|V1      #      1|        6|2.00|     .  |    .  |     .  |     .  |     .  |     .  |     .  |  .00|   2.00|   2.00|2.00|
-|V2      #      2|        5|2.50|     .50|    .71|     .50|     .  |     .  |     .  |     .  | 1.00|   2.00|   3.00|5.00|
-|V3      #      3|        4|3.00|     .58|   1.00|    1.00|     .  |     .  |     .00|    1.22| 2.00|   2.00|   4.00|9.00|
-+--------#-------+---------+----+--------+-------+--------+--------+--------+--------+--------+-----+-------+-------+----+
++--------#-------+---------+----+---------+-------+--------+--------+---------+--------+---------+-----+-------+-------+----+
+|Variable#Valid N|Missing N|Mean|S.E. Mean|Std Dev|Variance|Kurtosis|S.E. Kurt|Skewness|S.E. Skew|Range|Minimum|Maximum| Sum|
+#========#=======#=========#====#=========#=======#========#========#=========#========#=========#=====#=======#=======#====#
+|V1      #      1|        6|2.00|      .  |    .  |     .  |     .  |      .  |     .  |      .  |  .00|   2.00|   2.00|2.00|
+|V2      #      2|        5|2.50|      .50|    .71|     .50|     .  |      .  |     .  |      .  | 1.00|   2.00|   3.00|5.00|
+|V3      #      3|        4|3.00|      .58|   1.00|    1.00|     .  |      .  |     .00|     1.22| 2.00|   2.00|   4.00|9.00|
++--------#-------+---------+----+---------+-------+--------+--------+---------+--------+---------+-----+-------+-------+----+
 3.1 DESCRIPTIVES.  Valid cases = 7; cases with missing value(s) = 3.
-+--------#-------+---------+----+--------+-------+--------+--------+--------+--------+--------+-----+-------+-------+-----+
-|Variable#Valid N|Missing N|Mean|S E Mean|Std Dev|Variance|Kurtosis|S E Kurt|Skewness|S E Skew|Range|Minimum|Maximum| Sum |
-#========#=======#=========#====#========#=======#========#========#========#========#========#=====#=======#=======#=====#
-|V1      #      5|        2|1.20|     .20|    .45|     .20|    5.00|    2.00|    2.24|     .91| 1.00|   1.00|   2.00| 6.00|
-|V2      #      5|        2|1.60|     .40|    .89|     .80|     .31|    2.00|    1.26|     .91| 2.00|   1.00|   3.00| 8.00|
-|V3      #      5|        2|2.20|     .58|   1.30|    1.70|   -1.49|    2.00|     .54|     .91| 3.00|   1.00|   4.00|11.00|
-+--------#-------+---------+----+--------+-------+--------+--------+--------+--------+--------+-----+-------+-------+-----+
++--------#-------+---------+----+---------+-------+--------+--------+---------+--------+---------+-----+-------+-------+-----+
+|Variable#Valid N|Missing N|Mean|S.E. Mean|Std Dev|Variance|Kurtosis|S.E. Kurt|Skewness|S.E. Skew|Range|Minimum|Maximum| Sum |
+#========#=======#=========#====#=========#=======#========#========#=========#========#=========#=====#=======#=======#=====#
+|V1      #      5|        2|1.20|      .20|    .45|     .20|    5.00|     2.00|    2.24|      .91| 1.00|   1.00|   2.00| 6.00|
+|V2      #      5|        2|1.60|      .40|    .89|     .80|     .31|     2.00|    1.26|      .91| 2.00|   1.00|   3.00| 8.00|
+|V3      #      5|        2|2.20|      .58|   1.30|    1.70|   -1.49|     2.00|     .54|      .91| 3.00|   1.00|   4.00|11.00|
++--------#-------+---------+----+---------+-------+--------+--------+---------+--------+---------+-----+-------+-------+-----+
 4.1 DESCRIPTIVES.  Valid cases = 1; cases with missing value(s) = 6.
-+--------#-------+---------+----+--------+-------+--------+--------+--------+--------+--------+-----+-------+-------+----+
-|Variable#Valid N|Missing N|Mean|S E Mean|Std Dev|Variance|Kurtosis|S E Kurt|Skewness|S E Skew|Range|Minimum|Maximum| Sum|
-#========#=======#=========#====#========#=======#========#========#========#========#========#=====#=======#=======#====#
-|V1      #      1|        0|2.00|     .  |    .  |     .  |     .  |     .  |     .  |     .  |  .00|   2.00|   2.00|2.00|
-|V2      #      1|        0|3.00|     .  |    .  |     .  |     .  |     .  |     .  |     .  |  .00|   3.00|   3.00|3.00|
-|V3      #      1|        0|4.00|     .  |    .  |     .  |     .  |     .  |     .  |     .  |  .00|   4.00|   4.00|4.00|
-+--------#-------+---------+----+--------+-------+--------+--------+--------+--------+--------+-----+-------+-------+----+
++--------#-------+---------+----+---------+-------+--------+--------+---------+--------+---------+-----+-------+-------+----+
+|Variable#Valid N|Missing N|Mean|S.E. Mean|Std Dev|Variance|Kurtosis|S.E. Kurt|Skewness|S.E. Skew|Range|Minimum|Maximum| Sum|
+#========#=======#=========#====#=========#=======#========#========#=========#========#=========#=====#=======#=======#====#
+|V1      #      1|        0|2.00|      .  |    .  |     .  |     .  |      .  |     .  |      .  |  .00|   2.00|   2.00|2.00|
+|V2      #      1|        0|3.00|      .  |    .  |     .  |     .  |      .  |     .  |      .  |  .00|   3.00|   3.00|3.00|
+|V3      #      1|        0|4.00|      .  |    .  |     .  |     .  |      .  |     .  |      .  |  .00|   4.00|   4.00|4.00|
++--------#-------+---------+----+---------+-------+--------+--------+---------+--------+---------+-----+-------+-------+----+
 5.1 DESCRIPTIVES.  Valid cases = 4; cases with missing value(s) = 3.
-+--------#-------+---------+----+--------+-------+--------+--------+--------+--------+--------+-----+-------+-------+-----+
-|Variable#Valid N|Missing N|Mean|S E Mean|Std Dev|Variance|Kurtosis|S E Kurt|Skewness|S E Skew|Range|Minimum|Maximum| Sum |
-#========#=======#=========#====#========#=======#========#========#========#========#========#=====#=======#=======#=====#
-|V1      #      4|        0|1.25|     .25|    .50|     .25|    4.00|    2.62|    2.00|    1.01| 1.00|   1.00|   2.00| 5.00|
-|V2      #      4|        0|1.75|     .48|    .96|     .92|   -1.29|    2.62|     .85|    1.01| 2.00|   1.00|   3.00| 7.00|
-|V3      #      4|        0|2.50|     .65|   1.29|    1.67|   -1.20|    2.62|     .00|    1.01| 3.00|   1.00|   4.00|10.00|
-+--------#-------+---------+----+--------+-------+--------+--------+--------+--------+--------+-----+-------+-------+-----+
++--------#-------+---------+----+---------+-------+--------+--------+---------+--------+---------+-----+-------+-------+-----+
+|Variable#Valid N|Missing N|Mean|S.E. Mean|Std Dev|Variance|Kurtosis|S.E. Kurt|Skewness|S.E. Skew|Range|Minimum|Maximum| Sum |
+#========#=======#=========#====#=========#=======#========#========#=========#========#=========#=====#=======#=======#=====#
+|V1      #      4|        0|1.25|      .25|    .50|     .25|    4.00|     2.62|    2.00|     1.01| 1.00|   1.00|   2.00| 5.00|
+|V2      #      4|        0|1.75|      .48|    .96|     .92|   -1.29|     2.62|     .85|     1.01| 2.00|   1.00|   3.00| 7.00|
+|V3      #      4|        0|2.50|      .65|   1.29|    1.67|   -1.20|     2.62|     .00|     1.01| 3.00|   1.00|   4.00|10.00|
++--------#-------+---------+----+---------+-------+--------+--------+---------+--------+---------+-----+-------+-------+-----+
 EOF
 if [ $? -ne 0 ] ; then fail ; fi
 
index 8ac4c772a410bf8b6de9308de1ac4e30af7651f1..9b170240538561a34803fbe91e38f093356081cf 100755 (executable)
@@ -89,18 +89,17 @@ activity="compare output $i"
 perl -pi -e 's/^\s*$//g' $TEMPDIR/pspp.list
 diff  -b $TEMPDIR/pspp.list - <<EOF
 1.1 FREQUENCIES.  X
-+-----------+--------+---------+--------+--------+--------+
-|           |        |         |        |  Valid |   Cum  |
-|Value Label|  Value |Frequency| Percent| Percent| Percent|
-#===========#========#=========#========#========#========#
-|           |    1.00|        1|   20.00|   20.00|   20.00|
-|           |    2.00|        1|   20.00|   20.00|   40.00|
-|           |    3.00|        1|   20.00|   20.00|   60.00|
-|           |    4.00|        1|   20.00|   20.00|   80.00|
-|           |    5.00|        1|   20.00|   20.00|  100.00|
-#===========#========#=========#========#========#========#
-|               Total|        5|   100.0|   100.0|        |
-+--------------------+---------+--------+--------+--------+
++-----------+--------+---------+--------+-------------+-----------+
+|Value Label|  Value |Frequency| Percent|Valid Percent|Cum Percent|
+#===========#========#=========#========#=============#===========#
+|           |    1.00|        1|   20.00|        20.00|      20.00|
+|           |    2.00|        1|   20.00|        20.00|      40.00|
+|           |    3.00|        1|   20.00|        20.00|      60.00|
+|           |    4.00|        1|   20.00|        20.00|      80.00|
+|           |    5.00|        1|   20.00|        20.00|     100.00|
+#===========#========#=========#========#=============#===========#
+|               Total|        5|   100.0|        100.0|           |
++--------------------+---------+--------+-------------+-----------+
 +-----------------------+----+
 |N           Valid      |   5|
 |            Missing    |   0|
index 4e30d20b8dddb2931df44031fc3438ccfeeb01b5..9ee5a8c9b7d084a74055e099afc61a97e457db5f 100755 (executable)
@@ -88,18 +88,17 @@ activity="compare output $i"
 perl -pi -e 's/^\s*$//g' $TEMPDIR/pspp.list
 diff  -b $TEMPDIR/pspp.list - <<EOF
 1.1 FREQUENCIES.  X
-+-----------+--------+---------+--------+--------+--------+
-|           |        |         |        |  Valid |   Cum  |
-|Value Label|  Value |Frequency| Percent| Percent| Percent|
-#===========#========#=========#========#========#========#
-|           |    1.00|        1|   20.00|   20.00|   20.00|
-|           |    2.00|        1|   20.00|   20.00|   40.00|
-|           |    3.00|        1|   20.00|   20.00|   60.00|
-|           |    4.00|        1|   20.00|   20.00|   80.00|
-|           |    5.00|        1|   20.00|   20.00|  100.00|
-#===========#========#=========#========#========#========#
-|               Total|        5|   100.0|   100.0|        |
-+--------------------+---------+--------+--------+--------+
++-----------+--------+---------+--------+-------------+-----------+
+|Value Label|  Value |Frequency| Percent|Valid Percent|Cum Percent|
+#===========#========#=========#========#=============#===========#
+|           |    1.00|        1|   20.00|        20.00|      20.00|
+|           |    2.00|        1|   20.00|        20.00|      40.00|
+|           |    3.00|        1|   20.00|        20.00|      60.00|
+|           |    4.00|        1|   20.00|        20.00|      80.00|
+|           |    5.00|        1|   20.00|        20.00|     100.00|
+#===========#========#=========#========#=============#===========#
+|               Total|        5|   100.0|        100.0|           |
++--------------------+---------+--------+-------------+-----------+
 +-----------------------+----+
 |N           Valid      |   5|
 |            Missing    |   0|
@@ -151,18 +150,17 @@ activity="compare output $i"
 perl -pi -e 's/^\s*$//g' $TEMPDIR/pspp.list
 diff  -b $TEMPDIR/pspp.list - <<EOF
 1.1 FREQUENCIES.  X
-+-----------+--------+---------+--------+--------+--------+
-|           |        |         |        |  Valid |   Cum  |
-|Value Label|  Value |Frequency| Percent| Percent| Percent|
-#===========#========#=========#========#========#========#
-|           |    1.00|     2.00|   20.00|   20.00|   20.00|
-|           |    2.00|     2.00|   20.00|   20.00|   40.00|
-|           |    3.00|     2.00|   20.00|   20.00|   60.00|
-|           |    4.00|     2.00|   20.00|   20.00|   80.00|
-|           |    5.00|     2.00|   20.00|   20.00|  100.00|
-#===========#========#=========#========#========#========#
-|               Total|    10.00|   100.0|   100.0|        |
-+--------------------+---------+--------+--------+--------+
++-----------+--------+---------+--------+-------------+-----------+
+|Value Label|  Value |Frequency| Percent|Valid Percent|Cum Percent|
+#===========#========#=========#========#=============#===========#
+|           |    1.00|     2.00|   20.00|        20.00|      20.00|
+|           |    2.00|     2.00|   20.00|        20.00|      40.00|
+|           |    3.00|     2.00|   20.00|        20.00|      60.00|
+|           |    4.00|     2.00|   20.00|        20.00|      80.00|
+|           |    5.00|     2.00|   20.00|        20.00|     100.00|
+#===========#========#=========#========#=============#===========#
+|               Total|    10.00|   100.0|        100.0|           |
++--------------------+---------+--------+-------------+-----------+
 +-----------------------+-----+
 |N           Valid      |10.00|
 |            Missing    |  .00|
@@ -212,17 +210,16 @@ activity="compare output $i"
 perl -pi -e 's/^\s*$//g' $TEMPDIR/pspp.list
 diff  -b $TEMPDIR/pspp.list - <<EOF
 1.1 FREQUENCIES.  X
-+-----------+--------+---------+--------+--------+--------+
-|           |        |         |        |  Valid |   Cum  |
-|Value Label|  Value |Frequency| Percent| Percent| Percent|
-#===========#========#=========#========#========#========#
-|           |    1.00|     1.00|   16.67|   16.67|   16.67|
-|           |    3.00|     2.00|   33.33|   33.33|   50.00|
-|           |    4.00|     1.00|   16.67|   16.67|   66.67|
-|           |    5.00|     2.00|   33.33|   33.33|  100.00|
-#===========#========#=========#========#========#========#
-|               Total|     6.00|   100.0|   100.0|        |
-+--------------------+---------+--------+--------+--------+
++-----------+--------+---------+--------+-------------+-----------+
+|Value Label|  Value |Frequency| Percent|Valid Percent|Cum Percent|
+#===========#========#=========#========#=============#===========#
+|           |    1.00|     1.00|   16.67|        16.67|      16.67|
+|           |    3.00|     2.00|   33.33|        33.33|      50.00|
+|           |    4.00|     1.00|   16.67|        16.67|      66.67|
+|           |    5.00|     2.00|   33.33|        33.33|     100.00|
+#===========#========#=========#========#=============#===========#
+|               Total|     6.00|   100.0|        100.0|           |
++--------------------+---------+--------+-------------+-----------+
 +-----------------------+----+
 |N           Valid      |6.00|
 |            Missing    | .00|
@@ -272,18 +269,17 @@ activity="compare output $i"
 perl -pi -e 's/^\s*$//g' $TEMPDIR/pspp.list
 diff -b $TEMPDIR/pspp.list - <<EOF
 1.1 FREQUENCIES.  X
-+-----------+--------+---------+--------+--------+--------+
-|           |        |         |        |  Valid |   Cum  |
-|Value Label|  Value |Frequency| Percent| Percent| Percent|
-#===========#========#=========#========#========#========#
-|           |    1.00|     1.00|   10.00|   16.67|   16.67|
-|           |    3.00|     2.00|   20.00|   33.33|   50.00|
-|           |    4.00|     1.00|   10.00|   16.67|   66.67|
-|           |    5.00|     2.00|   20.00|   33.33|  100.00|
-|           |   99.00|     4.00|   40.00| Missing|        |
-#===========#========#=========#========#========#========#
-|               Total|    10.00|   100.0|   100.0|        |
-+--------------------+---------+--------+--------+--------+
++-----------+--------+---------+--------+-------------+-----------+
+|Value Label|  Value |Frequency| Percent|Valid Percent|Cum Percent|
+#===========#========#=========#========#=============#===========#
+|           |    1.00|     1.00|   10.00|        16.67|      16.67|
+|           |    3.00|     2.00|   20.00|        33.33|      50.00|
+|           |    4.00|     1.00|   10.00|        16.67|      66.67|
+|           |    5.00|     2.00|   20.00|        33.33|     100.00|
+|           |   99.00|     4.00|   40.00|      Missing|           |
+#===========#========#=========#========#=============#===========#
+|               Total|    10.00|   100.0|        100.0|           |
++--------------------+---------+--------+-------------+-----------+
 +-----------------------+----+
 |N           Valid      |6.00|
 |            Missing    |4.00|
diff --git a/texinfo.tex b/texinfo.tex
new file mode 100644 (file)
index 0000000..3569bd5
--- /dev/null
@@ -0,0 +1,9153 @@
+% texinfo.tex -- TeX macros to handle Texinfo files.
+%
+% Load plain if necessary, i.e., if running under initex.
+\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
+%
+\def\texinfoversion{2008-11-17.21}
+%
+% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
+% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+% 2007, 2008 Free Software Foundation, Inc.
+%
+% This texinfo.tex file is free software: you can redistribute it and/or
+% modify it under the terms of the GNU General Public License as
+% published by the Free Software Foundation, either version 3 of the
+% License, or (at your option) any later version.
+%
+% This texinfo.tex file is distributed in the hope that it will be
+% useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+% of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+% General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program.  If not, see <http://www.gnu.org/licenses/>.
+%
+% As a special exception, when this file is read by TeX when processing
+% a Texinfo source document, you may use the result without
+% restriction.  (This has been our intent since Texinfo was invented.)
+%
+% Please try the latest version of texinfo.tex before submitting bug
+% reports; you can get the latest version from:
+%   http://www.gnu.org/software/texinfo/ (the Texinfo home page), or
+%   ftp://tug.org/tex/texinfo.tex
+%     (and all CTAN mirrors, see http://www.ctan.org).
+% The texinfo.tex in any given distribution could well be out
+% of date, so if that's what you're using, please check.
+%
+% Send bug reports to bug-texinfo@gnu.org.  Please include including a
+% complete document in each bug report with which we can reproduce the
+% problem.  Patches are, of course, greatly appreciated.
+%
+% To process a Texinfo manual with TeX, it's most reliable to use the
+% texi2dvi shell script that comes with the distribution.  For a simple
+% manual foo.texi, however, you can get away with this:
+%   tex foo.texi
+%   texindex foo.??
+%   tex foo.texi
+%   tex foo.texi
+%   dvips foo.dvi -o  # or whatever; this makes foo.ps.
+% The extra TeX runs get the cross-reference information correct.
+% Sometimes one run after texindex suffices, and sometimes you need more
+% than two; texi2dvi does it as many times as necessary.
+%
+% It is possible to adapt texinfo.tex for other languages, to some
+% extent.  You can get the existing language-specific files from the
+% full Texinfo distribution.
+%
+% The GNU Texinfo home page is http://www.gnu.org/software/texinfo.
+
+
+\message{Loading texinfo [version \texinfoversion]:}
+
+% If in a .fmt file, print the version number
+% and turn on active characters that we couldn't do earlier because
+% they might have appeared in the input file name.
+\everyjob{\message{[Texinfo version \texinfoversion]}%
+  \catcode`+=\active \catcode`\_=\active}
+
+
+\chardef\other=12
+
+% We never want plain's \outer definition of \+ in Texinfo.
+% For @tex, we can use \tabalign.
+\let\+ = \relax
+
+% Save some plain tex macros whose names we will redefine.
+\let\ptexb=\b
+\let\ptexbullet=\bullet
+\let\ptexc=\c
+\let\ptexcomma=\,
+\let\ptexdot=\.
+\let\ptexdots=\dots
+\let\ptexend=\end
+\let\ptexequiv=\equiv
+\let\ptexexclam=\!
+\let\ptexfootnote=\footnote
+\let\ptexgtr=>
+\let\ptexhat=^
+\let\ptexi=\i
+\let\ptexindent=\indent
+\let\ptexinsert=\insert
+\let\ptexlbrace=\{
+\let\ptexless=<
+\let\ptexnewwrite\newwrite
+\let\ptexnoindent=\noindent
+\let\ptexplus=+
+\let\ptexrbrace=\}
+\let\ptexslash=\/
+\let\ptexstar=\*
+\let\ptext=\t
+\let\ptextop=\top
+{\catcode`\'=\active
+\global\let\ptexquoteright'}% Math-mode def from plain.tex.
+
+% If this character appears in an error message or help string, it
+% starts a new line in the output.
+\newlinechar = `^^J
+
+% Use TeX 3.0's \inputlineno to get the line number, for better error
+% messages, but if we're using an old version of TeX, don't do anything.
+%
+\ifx\inputlineno\thisisundefined
+  \let\linenumber = \empty % Pre-3.0.
+\else
+  \def\linenumber{l.\the\inputlineno:\space}
+\fi
+
+% Set up fixed words for English if not already set.
+\ifx\putwordAppendix\undefined  \gdef\putwordAppendix{Appendix}\fi
+\ifx\putwordChapter\undefined   \gdef\putwordChapter{Chapter}\fi
+\ifx\putwordfile\undefined      \gdef\putwordfile{file}\fi
+\ifx\putwordin\undefined        \gdef\putwordin{in}\fi
+\ifx\putwordIndexIsEmpty\undefined     \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
+\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
+\ifx\putwordInfo\undefined      \gdef\putwordInfo{Info}\fi
+\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi
+\ifx\putwordMethodon\undefined  \gdef\putwordMethodon{Method on}\fi
+\ifx\putwordNoTitle\undefined   \gdef\putwordNoTitle{No Title}\fi
+\ifx\putwordof\undefined        \gdef\putwordof{of}\fi
+\ifx\putwordon\undefined        \gdef\putwordon{on}\fi
+\ifx\putwordpage\undefined      \gdef\putwordpage{page}\fi
+\ifx\putwordsection\undefined   \gdef\putwordsection{section}\fi
+\ifx\putwordSection\undefined   \gdef\putwordSection{Section}\fi
+\ifx\putwordsee\undefined       \gdef\putwordsee{see}\fi
+\ifx\putwordSee\undefined       \gdef\putwordSee{See}\fi
+\ifx\putwordShortTOC\undefined  \gdef\putwordShortTOC{Short Contents}\fi
+\ifx\putwordTOC\undefined       \gdef\putwordTOC{Table of Contents}\fi
+%
+\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi
+\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi
+\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi
+\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi
+\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi
+\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi
+\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi
+\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi
+\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi
+\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi
+\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi
+\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi
+%
+\ifx\putwordDefmac\undefined    \gdef\putwordDefmac{Macro}\fi
+\ifx\putwordDefspec\undefined   \gdef\putwordDefspec{Special Form}\fi
+\ifx\putwordDefvar\undefined    \gdef\putwordDefvar{Variable}\fi
+\ifx\putwordDefopt\undefined    \gdef\putwordDefopt{User Option}\fi
+\ifx\putwordDeffunc\undefined   \gdef\putwordDeffunc{Function}\fi
+
+% Since the category of space is not known, we have to be careful.
+\chardef\spacecat = 10
+\def\spaceisspace{\catcode`\ =\spacecat}
+
+% sometimes characters are active, so we need control sequences.
+\chardef\colonChar = `\:
+\chardef\commaChar = `\,
+\chardef\dashChar  = `\-
+\chardef\dotChar   = `\.
+\chardef\exclamChar= `\!
+\chardef\lquoteChar= `\`
+\chardef\questChar = `\?
+\chardef\rquoteChar= `\'
+\chardef\semiChar  = `\;
+\chardef\underChar = `\_
+
+% Ignore a token.
+%
+\def\gobble#1{}
+
+% The following is used inside several \edef's.
+\def\makecsname#1{\expandafter\noexpand\csname#1\endcsname}
+
+% Hyphenation fixes.
+\hyphenation{
+  Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script
+  ap-pen-dix bit-map bit-maps
+  data-base data-bases eshell fall-ing half-way long-est man-u-script
+  man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm
+  par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces
+  spell-ing spell-ings
+  stand-alone strong-est time-stamp time-stamps which-ever white-space
+  wide-spread wrap-around
+}
+
+% Margin to add to right of even pages, to left of odd pages.
+\newdimen\bindingoffset
+\newdimen\normaloffset
+\newdimen\pagewidth \newdimen\pageheight
+
+% For a final copy, take out the rectangles
+% that mark overfull boxes (in case you have decided
+% that the text looks ok even though it passes the margin).
+%
+\def\finalout{\overfullrule=0pt}
+
+% @| inserts a changebar to the left of the current line.  It should
+% surround any changed text.  This approach does *not* work if the
+% change spans more than two lines of output.  To handle that, we would
+% have adopt a much more difficult approach (putting marks into the main
+% vertical list for the beginning and end of each change).
+%
+\def\|{%
+  % \vadjust can only be used in horizontal mode.
+  \leavevmode
+  %
+  % Append this vertical mode material after the current line in the output.
+  \vadjust{%
+    % We want to insert a rule with the height and depth of the current
+    % leading; that is exactly what \strutbox is supposed to record.
+    \vskip-\baselineskip
+    %
+    % \vadjust-items are inserted at the left edge of the type.  So
+    % the \llap here moves out into the left-hand margin.
+    \llap{%
+      %
+      % For a thicker or thinner bar, change the `1pt'.
+      \vrule height\baselineskip width1pt
+      %
+      % This is the space between the bar and the text.
+      \hskip 12pt
+    }%
+  }%
+}
+
+% Sometimes it is convenient to have everything in the transcript file
+% and nothing on the terminal.  We don't just call \tracingall here,
+% since that produces some useless output on the terminal.  We also make
+% some effort to order the tracing commands to reduce output in the log
+% file; cf. trace.sty in LaTeX.
+%
+\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}%
+\def\loggingall{%
+  \tracingstats2
+  \tracingpages1
+  \tracinglostchars2  % 2 gives us more in etex
+  \tracingparagraphs1
+  \tracingoutput1
+  \tracingmacros2
+  \tracingrestores1
+  \showboxbreadth\maxdimen \showboxdepth\maxdimen
+  \ifx\eTeXversion\undefined\else % etex gives us more logging
+    \tracingscantokens1
+    \tracingifs1
+    \tracinggroups1
+    \tracingnesting2
+    \tracingassigns1
+  \fi
+  \tracingcommands3  % 3 gives us more in etex
+  \errorcontextlines16
+}%
+
+% add check for \lastpenalty to plain's definitions.  If the last thing
+% we did was a \nobreak, we don't want to insert more space.
+%
+\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount
+  \removelastskip\penalty-50\smallskip\fi\fi}
+\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount
+  \removelastskip\penalty-100\medskip\fi\fi}
+\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount
+  \removelastskip\penalty-200\bigskip\fi\fi}
+
+% For @cropmarks command.
+% Do @cropmarks to get crop marks.
+%
+\newif\ifcropmarks
+\let\cropmarks = \cropmarkstrue
+%
+% Dimensions to add cropmarks at corners.
+% Added by P. A. MacKay, 12 Nov. 1986
+%
+\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines
+\newdimen\cornerlong  \cornerlong=1pc
+\newdimen\cornerthick \cornerthick=.3pt
+\newdimen\topandbottommargin \topandbottommargin=.75in
+
+% Output a mark which sets \thischapter, \thissection and \thiscolor.
+% We dump everything together because we only have one kind of mark.
+% This works because we only use \botmark / \topmark, not \firstmark.
+%
+% A mark contains a subexpression of the \ifcase ... \fi construct.
+% \get*marks macros below extract the needed part using \ifcase.
+%
+% Another complication is to let the user choose whether \thischapter
+% (\thissection) refers to the chapter (section) in effect at the top
+% of a page, or that at the bottom of a page.  The solution is
+% described on page 260 of The TeXbook.  It involves outputting two
+% marks for the sectioning macros, one before the section break, and
+% one after.  I won't pretend I can describe this better than DEK...
+\def\domark{%
+  \toks0=\expandafter{\lastchapterdefs}%
+  \toks2=\expandafter{\lastsectiondefs}%
+  \toks4=\expandafter{\prevchapterdefs}%
+  \toks6=\expandafter{\prevsectiondefs}%
+  \toks8=\expandafter{\lastcolordefs}%
+  \mark{%
+                   \the\toks0 \the\toks2
+      \noexpand\or \the\toks4 \the\toks6
+    \noexpand\else \the\toks8
+  }%
+}
+% \topmark doesn't work for the very first chapter (after the title
+% page or the contents), so we use \firstmark there -- this gets us
+% the mark with the chapter defs, unless the user sneaks in, e.g.,
+% @setcolor (or @url, or @link, etc.) between @contents and the very
+% first @chapter.
+\def\gettopheadingmarks{%
+  \ifcase0\topmark\fi
+  \ifx\thischapter\empty \ifcase0\firstmark\fi \fi
+}
+\def\getbottomheadingmarks{\ifcase1\botmark\fi}
+\def\getcolormarks{\ifcase2\topmark\fi}
+
+% Avoid "undefined control sequence" errors.
+\def\lastchapterdefs{}
+\def\lastsectiondefs{}
+\def\prevchapterdefs{}
+\def\prevsectiondefs{}
+\def\lastcolordefs{}
+
+% Main output routine.
+\chardef\PAGE = 255
+\output = {\onepageout{\pagecontents\PAGE}}
+
+\newbox\headlinebox
+\newbox\footlinebox
+
+% \onepageout takes a vbox as an argument.  Note that \pagecontents
+% does insertions, but you have to call it yourself.
+\def\onepageout#1{%
+  \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi
+  %
+  \ifodd\pageno  \advance\hoffset by \bindingoffset
+  \else \advance\hoffset by -\bindingoffset\fi
+  %
+  % Do this outside of the \shipout so @code etc. will be expanded in
+  % the headline as they should be, not taken literally (outputting ''code).
+  \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi
+  \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}%
+  \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi
+  \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}%
+  %
+  {%
+    % Have to do this stuff outside the \shipout because we want it to
+    % take effect in \write's, yet the group defined by the \vbox ends
+    % before the \shipout runs.
+    %
+    \indexdummies         % don't expand commands in the output.
+    \normalturnoffactive  % \ in index entries must not stay \, e.g., if
+               % the page break happens to be in the middle of an example.
+               % We don't want .vr (or whatever) entries like this:
+               % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}}
+               % "\acronym" won't work when it's read back in;
+               % it needs to be 
+               % {\code {{\tt \backslashcurfont }acronym}
+    \shipout\vbox{%
+      % Do this early so pdf references go to the beginning of the page.
+      \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi
+      %
+      \ifcropmarks \vbox to \outervsize\bgroup
+        \hsize = \outerhsize
+        \vskip-\topandbottommargin
+        \vtop to0pt{%
+          \line{\ewtop\hfil\ewtop}%
+          \nointerlineskip
+          \line{%
+            \vbox{\moveleft\cornerthick\nstop}%
+            \hfill
+            \vbox{\moveright\cornerthick\nstop}%
+          }%
+          \vss}%
+        \vskip\topandbottommargin
+        \line\bgroup
+          \hfil % center the page within the outer (page) hsize.
+          \ifodd\pageno\hskip\bindingoffset\fi
+          \vbox\bgroup
+      \fi
+      %
+      \unvbox\headlinebox
+      \pagebody{#1}%
+      \ifdim\ht\footlinebox > 0pt
+        % Only leave this space if the footline is nonempty.
+        % (We lessened \vsize for it in \oddfootingyyy.)
+        % The \baselineskip=24pt in plain's \makefootline has no effect.
+        \vskip 24pt
+        \unvbox\footlinebox
+      \fi
+      %
+      \ifcropmarks
+          \egroup % end of \vbox\bgroup
+        \hfil\egroup % end of (centering) \line\bgroup
+        \vskip\topandbottommargin plus1fill minus1fill
+        \boxmaxdepth = \cornerthick
+        \vbox to0pt{\vss
+          \line{%
+            \vbox{\moveleft\cornerthick\nsbot}%
+            \hfill
+            \vbox{\moveright\cornerthick\nsbot}%
+          }%
+          \nointerlineskip
+          \line{\ewbot\hfil\ewbot}%
+        }%
+      \egroup % \vbox from first cropmarks clause
+      \fi
+    }% end of \shipout\vbox
+  }% end of group with \indexdummies
+  \advancepageno
+  \ifnum\outputpenalty>-20000 \else\dosupereject\fi
+}
+
+\newinsert\margin \dimen\margin=\maxdimen
+
+\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}}
+{\catcode`\@ =11
+\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi
+% marginal hacks, juha@viisa.uucp (Juha Takala)
+\ifvoid\margin\else % marginal info is present
+  \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi
+\dimen@=\dp#1\relax \unvbox#1\relax
+\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi
+\ifr@ggedbottom \kern-\dimen@ \vfil \fi}
+}
+
+% Here are the rules for the cropmarks.  Note that they are
+% offset so that the space between them is truly \outerhsize or \outervsize
+% (P. A. MacKay, 12 November, 1986)
+%
+\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong}
+\def\nstop{\vbox
+  {\hrule height\cornerthick depth\cornerlong width\cornerthick}}
+\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong}
+\def\nsbot{\vbox
+  {\hrule height\cornerlong depth\cornerthick width\cornerthick}}
+
+% Parse an argument, then pass it to #1.  The argument is the rest of
+% the input line (except we remove a trailing comment).  #1 should be a
+% macro which expects an ordinary undelimited TeX argument.
+%
+\def\parsearg{\parseargusing{}}
+\def\parseargusing#1#2{%
+  \def\argtorun{#2}%
+  \begingroup
+    \obeylines
+    \spaceisspace
+    #1%
+    \parseargline\empty% Insert the \empty token, see \finishparsearg below.
+}
+
+{\obeylines %
+  \gdef\parseargline#1^^M{%
+    \endgroup % End of the group started in \parsearg.
+    \argremovecomment #1\comment\ArgTerm%
+  }%
+}
+
+% First remove any @comment, then any @c comment.
+\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm}
+\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
+
+% Each occurrence of `\^^M' or `<space>\^^M' is replaced by a single space.
+%
+% \argremovec might leave us with trailing space, e.g.,
+%    @end itemize  @c foo
+% This space token undergoes the same procedure and is eventually removed
+% by \finishparsearg.
+%
+\def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M}
+\def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M}
+\def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{%
+  \def\temp{#3}%
+  \ifx\temp\empty
+    % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp:
+    \let\temp\finishparsearg
+  \else
+    \let\temp\argcheckspaces
+  \fi
+  % Put the space token in:
+  \temp#1 #3\ArgTerm
+}
+
+% If a _delimited_ argument is enclosed in braces, they get stripped; so
+% to get _exactly_ the rest of the line, we had to prevent such situation.
+% We prepended an \empty token at the very beginning and we expand it now,
+% just before passing the control to \argtorun.
+% (Similarly, we have to think about #3 of \argcheckspacesY above: it is
+% either the null string, or it ends with \^^M---thus there is no danger
+% that a pair of braces would be stripped.
+%
+% But first, we have to remove the trailing space token.
+%
+\def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}}
+
+% \parseargdef\foo{...}
+%      is roughly equivalent to
+% \def\foo{\parsearg\Xfoo}
+% \def\Xfoo#1{...}
+%
+% Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my
+% favourite TeX trick.  --kasal, 16nov03
+
+\def\parseargdef#1{%
+  \expandafter \doparseargdef \csname\string#1\endcsname #1%
+}
+\def\doparseargdef#1#2{%
+  \def#2{\parsearg#1}%
+  \def#1##1%
+}
+
+% Several utility definitions with active space:
+{
+  \obeyspaces
+  \gdef\obeyedspace{ }
+
+  % Make each space character in the input produce a normal interword
+  % space in the output.  Don't allow a line break at this space, as this
+  % is used only in environments like @example, where each line of input
+  % should produce a line of output anyway.
+  %
+  \gdef\sepspaces{\obeyspaces\let =\tie}
+
+  % If an index command is used in an @example environment, any spaces
+  % therein should become regular spaces in the raw index file, not the
+  % expansion of \tie (\leavevmode \penalty \@M \ ).
+  \gdef\unsepspaces{\let =\space}
+}
+
+
+\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}
+
+% Define the framework for environments in texinfo.tex.  It's used like this:
+%
+%   \envdef\foo{...}
+%   \def\Efoo{...}
+%
+% It's the responsibility of \envdef to insert \begingroup before the
+% actual body; @end closes the group after calling \Efoo.  \envdef also
+% defines \thisenv, so the current environment is known; @end checks
+% whether the environment name matches.  The \checkenv macro can also be
+% used to check whether the current environment is the one expected.
+%
+% Non-false conditionals (@iftex, @ifset) don't fit into this, so they
+% are not treated as environments; they don't open a group.  (The
+% implementation of @end takes care not to call \endgroup in this
+% special case.)
+
+
+% At run-time, environments start with this:
+\def\startenvironment#1{\begingroup\def\thisenv{#1}}
+% initialize
+\let\thisenv\empty
+
+% ... but they get defined via ``\envdef\foo{...}'':
+\long\def\envdef#1#2{\def#1{\startenvironment#1#2}}
+\def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}}
+
+% Check whether we're in the right environment:
+\def\checkenv#1{%
+  \def\temp{#1}%
+  \ifx\thisenv\temp
+  \else
+    \badenverr
+  \fi
+}
+
+% Environment mismatch, #1 expected:
+\def\badenverr{%
+  \errhelp = \EMsimple
+  \errmessage{This command can appear only \inenvironment\temp,
+    not \inenvironment\thisenv}%
+}
+\def\inenvironment#1{%
+  \ifx#1\empty
+    out of any environment%
+  \else
+    in environment \expandafter\string#1%
+  \fi
+}
+
+% @end foo executes the definition of \Efoo.
+% But first, it executes a specialized version of \checkenv
+%
+\parseargdef\end{%
+  \if 1\csname iscond.#1\endcsname
+  \else
+    % The general wording of \badenverr may not be ideal, but... --kasal, 06nov03
+    \expandafter\checkenv\csname#1\endcsname
+    \csname E#1\endcsname
+    \endgroup
+  \fi
+}
+
+\newhelp\EMsimple{Press RETURN to continue.}
+
+
+%% Simple single-character @ commands
+
+% @@ prints an @
+% Kludge this until the fonts are right (grr).
+\def\@{{\tt\char64}}
+
+% This is turned off because it was never documented
+% and you can use @w{...} around a quote to suppress ligatures.
+%% Define @` and @' to be the same as ` and '
+%% but suppressing ligatures.
+%\def\`{{`}}
+%\def\'{{'}}
+
+% Used to generate quoted braces.
+\def\mylbrace {{\tt\char123}}
+\def\myrbrace {{\tt\char125}}
+\let\{=\mylbrace
+\let\}=\myrbrace
+\begingroup
+  % Definitions to produce \{ and \} commands for indices,
+  % and @{ and @} for the aux/toc files.
+  \catcode`\{ = \other \catcode`\} = \other
+  \catcode`\[ = 1 \catcode`\] = 2
+  \catcode`\! = 0 \catcode`\\ = \other
+  !gdef!lbracecmd[\{]%
+  !gdef!rbracecmd[\}]%
+  !gdef!lbraceatcmd[@{]%
+  !gdef!rbraceatcmd[@}]%
+!endgroup
+
+% @comma{} to avoid , parsing problems.
+\let\comma = ,
+
+% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
+% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
+\let\, = \c
+\let\dotaccent = \.
+\def\ringaccent#1{{\accent23 #1}}
+\let\tieaccent = \t
+\let\ubaraccent = \b
+\let\udotaccent = \d
+
+% Other special characters: @questiondown @exclamdown @ordf @ordm
+% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
+\def\questiondown{?`}
+\def\exclamdown{!`}
+\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}}
+\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}}
+
+% Dotless i and dotless j, used for accents.
+\def\imacro{i}
+\def\jmacro{j}
+\def\dotless#1{%
+  \def\temp{#1}%
+  \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi
+  \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi
+  \else \errmessage{@dotless can be used only with i or j}%
+  \fi\fi
+}
+
+% The \TeX{} logo, as in plain, but resetting the spacing so that a
+% period following counts as ending a sentence.  (Idea found in latex.)
+%
+\edef\TeX{\TeX \spacefactor=1000 }
+
+% @LaTeX{} logo.  Not quite the same results as the definition in
+% latex.ltx, since we use a different font for the raised A; it's most
+% convenient for us to use an explicitly smaller font, rather than using
+% the \scriptstyle font (since we don't reset \scriptstyle and
+% \scriptscriptstyle).
+%
+\def\LaTeX{%
+  L\kern-.36em
+  {\setbox0=\hbox{T}%
+   \vbox to \ht0{\hbox{\selectfonts\lllsize A}\vss}}%
+  \kern-.15em
+  \TeX
+}
+
+% Be sure we're in horizontal mode when doing a tie, since we make space
+% equivalent to this in @example-like environments. Otherwise, a space
+% at the beginning of a line will start with \penalty -- and
+% since \penalty is valid in vertical mode, we'd end up putting the
+% penalty on the vertical list instead of in the new paragraph.
+{\catcode`@ = 11
+ % Avoid using \@M directly, because that causes trouble
+ % if the definition is written into an index file.
+ \global\let\tiepenalty = \@M
+ \gdef\tie{\leavevmode\penalty\tiepenalty\ }
+}
+
+% @: forces normal size whitespace following.
+\def\:{\spacefactor=1000 }
+
+% @* forces a line break.
+\def\*{\hfil\break\hbox{}\ignorespaces}
+
+% @/ allows a line break.
+\let\/=\allowbreak
+
+% @. is an end-of-sentence period.
+\def\.{.\spacefactor=\endofsentencespacefactor\space}
+
+% @! is an end-of-sentence bang.
+\def\!{!\spacefactor=\endofsentencespacefactor\space}
+
+% @? is an end-of-sentence query.
+\def\?{?\spacefactor=\endofsentencespacefactor\space}
+
+% @frenchspacing on|off  says whether to put extra space after punctuation.
+% 
+\def\onword{on}
+\def\offword{off}
+%
+\parseargdef\frenchspacing{%
+  \def\temp{#1}%
+  \ifx\temp\onword \plainfrenchspacing
+  \else\ifx\temp\offword \plainnonfrenchspacing
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @frenchspacing option `\temp', must be on/off}%
+  \fi\fi
+}
+
+% @w prevents a word break.  Without the \leavevmode, @w at the
+% beginning of a paragraph, when TeX is still in vertical mode, would
+% produce a whole line of output instead of starting the paragraph.
+\def\w#1{\leavevmode\hbox{#1}}
+
+% @group ... @end group forces ... to be all on one page, by enclosing
+% it in a TeX vbox.  We use \vtop instead of \vbox to construct the box
+% to keep its height that of a normal line.  According to the rules for
+% \topskip (p.114 of the TeXbook), the glue inserted is
+% max (\topskip - \ht (first item), 0).  If that height is large,
+% therefore, no glue is inserted, and the space between the headline and
+% the text is small, which looks bad.
+%
+% Another complication is that the group might be very large.  This can
+% cause the glue on the previous page to be unduly stretched, because it
+% does not have much material.  In this case, it's better to add an
+% explicit \vfill so that the extra space is at the bottom.  The
+% threshold for doing this is if the group is more than \vfilllimit
+% percent of a page (\vfilllimit can be changed inside of @tex).
+%
+\newbox\groupbox
+\def\vfilllimit{0.7}
+%
+\envdef\group{%
+  \ifnum\catcode`\^^M=\active \else
+    \errhelp = \groupinvalidhelp
+    \errmessage{@group invalid in context where filling is enabled}%
+  \fi
+  \startsavinginserts
+  %
+  \setbox\groupbox = \vtop\bgroup
+    % Do @comment since we are called inside an environment such as
+    % @example, where each end-of-line in the input causes an
+    % end-of-line in the output.  We don't want the end-of-line after
+    % the `@group' to put extra space in the output.  Since @group
+    % should appear on a line by itself (according to the Texinfo
+    % manual), we don't worry about eating any user text.
+    \comment
+}
+%
+% The \vtop produces a box with normal height and large depth; thus, TeX puts
+% \baselineskip glue before it, and (when the next line of text is done)
+% \lineskip glue after it.  Thus, space below is not quite equal to space
+% above.  But it's pretty close.
+\def\Egroup{%
+    % To get correct interline space between the last line of the group
+    % and the first line afterwards, we have to propagate \prevdepth.
+    \endgraf % Not \par, as it may have been set to \lisppar.
+    \global\dimen1 = \prevdepth
+  \egroup           % End the \vtop.
+  % \dimen0 is the vertical size of the group's box.
+  \dimen0 = \ht\groupbox  \advance\dimen0 by \dp\groupbox
+  % \dimen2 is how much space is left on the page (more or less).
+  \dimen2 = \pageheight   \advance\dimen2 by -\pagetotal
+  % if the group doesn't fit on the current page, and it's a big big
+  % group, force a page break.
+  \ifdim \dimen0 > \dimen2
+    \ifdim \pagetotal < \vfilllimit\pageheight
+      \page
+    \fi
+  \fi
+  \box\groupbox
+  \prevdepth = \dimen1
+  \checkinserts
+}
+%
+% TeX puts in an \escapechar (i.e., `@') at the beginning of the help
+% message, so this ends up printing `@group can only ...'.
+%
+\newhelp\groupinvalidhelp{%
+group can only be used in environments such as @example,^^J%
+where each line of input produces a line of output.}
+
+% @need space-in-mils
+% forces a page break if there is not space-in-mils remaining.
+
+\newdimen\mil  \mil=0.001in
+
+% Old definition--didn't work.
+%\parseargdef\need{\par %
+%% This method tries to make TeX break the page naturally
+%% if the depth of the box does not fit.
+%{\baselineskip=0pt%
+%\vtop to #1\mil{\vfil}\kern -#1\mil\nobreak
+%\prevdepth=-1000pt
+%}}
+
+\parseargdef\need{%
+  % Ensure vertical mode, so we don't make a big box in the middle of a
+  % paragraph.
+  \par
+  %
+  % If the @need value is less than one line space, it's useless.
+  \dimen0 = #1\mil
+  \dimen2 = \ht\strutbox
+  \advance\dimen2 by \dp\strutbox
+  \ifdim\dimen0 > \dimen2
+    %
+    % Do a \strut just to make the height of this box be normal, so the
+    % normal leading is inserted relative to the preceding line.
+    % And a page break here is fine.
+    \vtop to #1\mil{\strut\vfil}%
+    %
+    % TeX does not even consider page breaks if a penalty added to the
+    % main vertical list is 10000 or more.  But in order to see if the
+    % empty box we just added fits on the page, we must make it consider
+    % page breaks.  On the other hand, we don't want to actually break the
+    % page after the empty box.  So we use a penalty of 9999.
+    %
+    % There is an extremely small chance that TeX will actually break the
+    % page at this \penalty, if there are no other feasible breakpoints in
+    % sight.  (If the user is using lots of big @group commands, which
+    % almost-but-not-quite fill up a page, TeX will have a hard time doing
+    % good page breaking, for example.)  However, I could not construct an
+    % example where a page broke at this \penalty; if it happens in a real
+    % document, then we can reconsider our strategy.
+    \penalty9999
+    %
+    % Back up by the size of the box, whether we did a page break or not.
+    \kern -#1\mil
+    %
+    % Do not allow a page break right after this kern.
+    \nobreak
+  \fi
+}
+
+% @br   forces paragraph break (and is undocumented).
+
+\let\br = \par
+
+% @page forces the start of a new page.
+%
+\def\page{\par\vfill\supereject}
+
+% @exdent text....
+% outputs text on separate line in roman font, starting at standard page margin
+
+% This records the amount of indent in the innermost environment.
+% That's how much \exdent should take out.
+\newskip\exdentamount
+
+% This defn is used inside fill environments such as @defun.
+\parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}
+
+% This defn is used inside nofill environments such as @example.
+\parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount
+  \leftline{\hskip\leftskip{\rm#1}}}}
+
+% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current
+% paragraph.  For more general purposes, use the \margin insertion
+% class.  WHICH is `l' or `r'.
+%
+\newskip\inmarginspacing \inmarginspacing=1cm
+\def\strutdepth{\dp\strutbox}
+%
+\def\doinmargin#1#2{\strut\vadjust{%
+  \nobreak
+  \kern-\strutdepth
+  \vtop to \strutdepth{%
+    \baselineskip=\strutdepth
+    \vss
+    % if you have multiple lines of stuff to put here, you'll need to
+    % make the vbox yourself of the appropriate size.
+    \ifx#1l%
+      \llap{\ignorespaces #2\hskip\inmarginspacing}%
+    \else
+      \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}%
+    \fi
+    \null
+  }%
+}}
+\def\inleftmargin{\doinmargin l}
+\def\inrightmargin{\doinmargin r}
+%
+% @inmargin{TEXT [, RIGHT-TEXT]}
+% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right;
+% else use TEXT for both).
+%
+\def\inmargin#1{\parseinmargin #1,,\finish}
+\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing.
+  \setbox0 = \hbox{\ignorespaces #2}%
+  \ifdim\wd0 > 0pt
+    \def\lefttext{#1}%  have both texts
+    \def\righttext{#2}%
+  \else
+    \def\lefttext{#1}%  have only one text
+    \def\righttext{#1}%
+  \fi
+  %
+  \ifodd\pageno
+    \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin
+  \else
+    \def\temp{\inleftmargin\lefttext}%
+  \fi
+  \temp
+}
+
+% @include FILE -- \input text of FILE.
+%
+\def\include{\parseargusing\filenamecatcodes\includezzz}
+\def\includezzz#1{%
+  \pushthisfilestack
+  \def\thisfile{#1}%
+  {%
+    \makevalueexpandable  % we want to expand any @value in FILE.
+    \turnoffactive        % and allow special characters in the expansion
+    \indexnofonts         % Allow `@@' and other weird things in file names.
+    \edef\temp{\noexpand\input #1 }%
+    %
+    % This trickery is to read FILE outside of a group, in case it makes
+    % definitions, etc.
+    \expandafter
+  }\temp
+  \popthisfilestack
+}
+\def\filenamecatcodes{%
+  \catcode`\\=\other
+  \catcode`~=\other
+  \catcode`^=\other
+  \catcode`_=\other
+  \catcode`|=\other
+  \catcode`<=\other
+  \catcode`>=\other
+  \catcode`+=\other
+  \catcode`-=\other
+  \catcode`\`=\other
+  \catcode`\'=\other
+}
+
+\def\pushthisfilestack{%
+  \expandafter\pushthisfilestackX\popthisfilestack\StackTerm
+}
+\def\pushthisfilestackX{%
+  \expandafter\pushthisfilestackY\thisfile\StackTerm
+}
+\def\pushthisfilestackY #1\StackTerm #2\StackTerm {%
+  \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}%
+}
+
+\def\popthisfilestack{\errthisfilestackempty}
+\def\errthisfilestackempty{\errmessage{Internal error:
+  the stack of filenames is empty.}}
+
+\def\thisfile{}
+
+% @center line
+% outputs that line, centered.
+%
+\parseargdef\center{%
+  \ifhmode
+    \let\next\centerH
+  \else
+    \let\next\centerV
+  \fi
+  \next{\hfil \ignorespaces#1\unskip \hfil}%
+}
+\def\centerH#1{%
+  {%
+    \hfil\break
+    \advance\hsize by -\leftskip
+    \advance\hsize by -\rightskip
+    \line{#1}%
+    \break
+  }%
+}
+\def\centerV#1{\line{\kern\leftskip #1\kern\rightskip}}
+
+% @sp n   outputs n lines of vertical space
+
+\parseargdef\sp{\vskip #1\baselineskip}
+
+% @comment ...line which is ignored...
+% @c is the same as @comment
+% @ignore ... @end ignore  is another way to write a comment
+
+\def\comment{\begingroup \catcode`\^^M=\other%
+\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other%
+\commentxxx}
+{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}}
+
+\let\c=\comment
+
+% @paragraphindent NCHARS
+% We'll use ems for NCHARS, close enough.
+% NCHARS can also be the word `asis' or `none'.
+% We cannot feasibly implement @paragraphindent asis, though.
+%
+\def\asisword{asis} % no translation, these are keywords
+\def\noneword{none}
+%
+\parseargdef\paragraphindent{%
+  \def\temp{#1}%
+  \ifx\temp\asisword
+  \else
+    \ifx\temp\noneword
+      \defaultparindent = 0pt
+    \else
+      \defaultparindent = #1em
+    \fi
+  \fi
+  \parindent = \defaultparindent
+}
+
+% @exampleindent NCHARS
+% We'll use ems for NCHARS like @paragraphindent.
+% It seems @exampleindent asis isn't necessary, but
+% I preserve it to make it similar to @paragraphindent.
+\parseargdef\exampleindent{%
+  \def\temp{#1}%
+  \ifx\temp\asisword
+  \else
+    \ifx\temp\noneword
+      \lispnarrowing = 0pt
+    \else
+      \lispnarrowing = #1em
+    \fi
+  \fi
+}
+
+% @firstparagraphindent WORD
+% If WORD is `none', then suppress indentation of the first paragraph
+% after a section heading.  If WORD is `insert', then do indent at such
+% paragraphs.
+%
+% The paragraph indentation is suppressed or not by calling
+% \suppressfirstparagraphindent, which the sectioning commands do.
+% We switch the definition of this back and forth according to WORD.
+% By default, we suppress indentation.
+%
+\def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent}
+\def\insertword{insert}
+%
+\parseargdef\firstparagraphindent{%
+  \def\temp{#1}%
+  \ifx\temp\noneword
+    \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent
+  \else\ifx\temp\insertword
+    \let\suppressfirstparagraphindent = \relax
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @firstparagraphindent option `\temp'}%
+  \fi\fi
+}
+
+% Here is how we actually suppress indentation.  Redefine \everypar to
+% \kern backwards by \parindent, and then reset itself to empty.
+%
+% We also make \indent itself not actually do anything until the next
+% paragraph.
+%
+\gdef\dosuppressfirstparagraphindent{%
+  \gdef\indent{%
+    \restorefirstparagraphindent
+    \indent
+  }%
+  \gdef\noindent{%
+    \restorefirstparagraphindent
+    \noindent
+  }%
+  \global\everypar = {%
+    \kern -\parindent
+    \restorefirstparagraphindent
+  }%
+}
+
+\gdef\restorefirstparagraphindent{%
+  \global \let \indent = \ptexindent
+  \global \let \noindent = \ptexnoindent
+  \global \everypar = {}%
+}
+
+
+% @asis just yields its argument.  Used with @table, for example.
+%
+\def\asis#1{#1}
+
+% @math outputs its argument in math mode.
+%
+% One complication: _ usually means subscripts, but it could also mean
+% an actual _ character, as in @math{@var{some_variable} + 1}.  So make
+% _ active, and distinguish by seeing if the current family is \slfam,
+% which is what @var uses.
+{
+  \catcode`\_ = \active
+  \gdef\mathunderscore{%
+    \catcode`\_=\active
+    \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
+  }
+}
+% Another complication: we want \\ (and @\) to output a \ character.
+% FYI, plain.tex uses \\ as a temporary control sequence (why?), but
+% this is not advertised and we don't care.  Texinfo does not
+% otherwise define @\.
+%
+% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
+\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
+%
+\def\math{%
+  \tex
+  \mathunderscore
+  \let\\ = \mathbackslash
+  \mathactive
+  % make the texinfo accent commands work in math mode
+  \let\"=\ddot
+  \let\'=\acute
+  \let\==\bar
+  \let\^=\hat
+  \let\`=\grave
+  \let\u=\breve
+  \let\v=\check
+  \let\~=\tilde
+  \let\dotaccent=\dot
+  $\finishmath
+}
+\def\finishmath#1{#1$\endgroup}  % Close the group opened by \tex.
+
+% Some active characters (such as <) are spaced differently in math.
+% We have to reset their definitions in case the @math was an argument
+% to a command which sets the catcodes (such as @item or @section).
+%
+{
+  \catcode`^ = \active
+  \catcode`< = \active
+  \catcode`> = \active
+  \catcode`+ = \active
+  \catcode`' = \active
+  \gdef\mathactive{%
+    \let^ = \ptexhat
+    \let< = \ptexless
+    \let> = \ptexgtr
+    \let+ = \ptexplus
+    \let' = \ptexquoteright
+  }
+}
+
+% Some math mode symbols.
+\def\bullet{$\ptexbullet$}
+\def\geq{\ifmmode \ge\else $\ge$\fi}
+\def\leq{\ifmmode \le\else $\le$\fi}
+\def\minus{\ifmmode -\else $-$\fi}
+
+% @dots{} outputs an ellipsis using the current font.
+% We do .5em per period so that it has the same spacing in the cm
+% typewriter fonts as three actual period characters; on the other hand,
+% in other typewriter fonts three periods are wider than 1.5em.  So do
+% whichever is larger.
+%
+\def\dots{%
+  \leavevmode
+  \setbox0=\hbox{...}% get width of three periods
+  \ifdim\wd0 > 1.5em
+    \dimen0 = \wd0
+  \else
+    \dimen0 = 1.5em
+  \fi
+  \hbox to \dimen0{%
+    \hskip 0pt plus.25fil
+    .\hskip 0pt plus1fil
+    .\hskip 0pt plus1fil
+    .\hskip 0pt plus.5fil
+  }%
+}
+
+% @enddots{} is an end-of-sentence ellipsis.
+%
+\def\enddots{%
+  \dots
+  \spacefactor=\endofsentencespacefactor
+}
+
+% @comma{} is so commas can be inserted into text without messing up
+% Texinfo's parsing.
+%
+\let\comma = ,
+
+% @refill is a no-op.
+\let\refill=\relax
+
+% If working on a large document in chapters, it is convenient to
+% be able to disable indexing, cross-referencing, and contents, for test runs.
+% This is done with @novalidate (before @setfilename).
+%
+\newif\iflinks \linkstrue % by default we want the aux files.
+\let\novalidate = \linksfalse
+
+% @setfilename is done at the beginning of every texinfo file.
+% So open here the files we need to have open while reading the input.
+% This makes it possible to make a .fmt file for texinfo.
+\def\setfilename{%
+   \fixbackslash  % Turn off hack to swallow `\input texinfo'.
+   \iflinks
+     \tryauxfile
+     % Open the new aux file.  TeX will close it automatically at exit.
+     \immediate\openout\auxfile=\jobname.aux
+   \fi % \openindices needs to do some work in any case.
+   \openindices
+   \let\setfilename=\comment % Ignore extra @setfilename cmds.
+   %
+   % If texinfo.cnf is present on the system, read it.
+   % Useful for site-wide @afourpaper, etc.
+   \openin 1 texinfo.cnf
+   \ifeof 1 \else \input texinfo.cnf \fi
+   \closein 1
+   %
+   \comment % Ignore the actual filename.
+}
+
+% Called from \setfilename.
+%
+\def\openindices{%
+  \newindex{cp}%
+  \newcodeindex{fn}%
+  \newcodeindex{vr}%
+  \newcodeindex{tp}%
+  \newcodeindex{ky}%
+  \newcodeindex{pg}%
+}
+
+% @bye.
+\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend}
+
+
+\message{pdf,}
+% adobe `portable' document format
+\newcount\tempnum
+\newcount\lnkcount
+\newtoks\filename
+\newcount\filenamelength
+\newcount\pgn
+\newtoks\toksA
+\newtoks\toksB
+\newtoks\toksC
+\newtoks\toksD
+\newbox\boxA
+\newcount\countA
+\newif\ifpdf
+\newif\ifpdfmakepagedest
+
+% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1
+% can be set).  So we test for \relax and 0 as well as \undefined,
+% borrowed from ifpdf.sty.
+\ifx\pdfoutput\undefined
+\else
+  \ifx\pdfoutput\relax
+  \else
+    \ifcase\pdfoutput
+    \else
+      \pdftrue
+    \fi
+  \fi
+\fi
+
+% PDF uses PostScript string constants for the names of xref targets,
+% for display in the outlines, and in other places.  Thus, we have to
+% double any backslashes.  Otherwise, a name like "\node" will be
+% interpreted as a newline (\n), followed by o, d, e.  Not good.
+% http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html
+% (and related messages, the final outcome is that it is up to the TeX
+% user to double the backslashes and otherwise make the string valid, so
+% that's what we do).
+
+% double active backslashes.
+% 
+{\catcode`\@=0 \catcode`\\=\active
+ @gdef@activebackslashdouble{%
+   @catcode`@\=@active
+   @let\=@doublebackslash}
+}
+
+% To handle parens, we must adopt a different approach, since parens are
+% not active characters.  hyperref.dtx (which has the same problem as
+% us) handles it with this amazing macro to replace tokens, with minor
+% changes for Texinfo.  It is included here under the GPL by permission
+% from the author, Heiko Oberdiek.
+% 
+% #1 is the tokens to replace.
+% #2 is the replacement.
+% #3 is the control sequence with the string.
+% 
+\def\HyPsdSubst#1#2#3{%
+  \def\HyPsdReplace##1#1##2\END{%
+    ##1%
+    \ifx\\##2\\%
+    \else
+      #2%
+      \HyReturnAfterFi{%
+        \HyPsdReplace##2\END
+      }%
+    \fi
+  }%
+  \xdef#3{\expandafter\HyPsdReplace#3#1\END}%
+}
+\long\def\HyReturnAfterFi#1\fi{\fi#1}
+
+% #1 is a control sequence in which to do the replacements.
+\def\backslashparens#1{%
+  \xdef#1{#1}% redefine it as its expansion; the definition is simply
+             % \lastnode when called from \setref -> \pdfmkdest.
+  \HyPsdSubst{(}{\realbackslash(}{#1}%
+  \HyPsdSubst{)}{\realbackslash)}{#1}%
+}
+
+\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images
+with PDF output, and none of those formats could be found.  (.eps cannot
+be supported due to the design of the PDF format; use regular TeX (DVI
+output) for that.)}
+
+\ifpdf
+  %
+  % Color manipulation macros based on pdfcolor.tex.
+  \def\cmykDarkRed{0.28 1 1 0.35}
+  \def\cmykBlack{0 0 0 1}
+  %
+  \def\pdfsetcolor#1{\pdfliteral{#1 k}}
+  % Set color, and create a mark which defines \thiscolor accordingly,
+  % so that \makeheadline knows which color to restore.
+  \def\setcolor#1{%
+    \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}%
+    \domark
+    \pdfsetcolor{#1}%
+  }
+  %
+  \def\maincolor{\cmykBlack}
+  \pdfsetcolor{\maincolor}
+  \edef\thiscolor{\maincolor}
+  \def\lastcolordefs{}
+  %
+  \def\makefootline{%
+    \baselineskip24pt
+    \line{\pdfsetcolor{\maincolor}\the\footline}%
+  }
+  %
+  \def\makeheadline{%
+    \vbox to 0pt{%
+      \vskip-22.5pt
+      \line{%
+        \vbox to8.5pt{}%
+        % Extract \thiscolor definition from the marks.
+        \getcolormarks
+        % Typeset the headline with \maincolor, then restore the color.
+        \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}%
+      }%
+      \vss
+    }%
+    \nointerlineskip
+  }
+  %
+  %
+  \pdfcatalog{/PageMode /UseOutlines}
+  %
+  % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
+  \def\dopdfimage#1#2#3{%
+    \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
+    \def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
+    %
+    % pdftex (and the PDF format) support .png, .jpg, .pdf (among
+    % others).  Let's try in that order.
+    \let\pdfimgext=\empty
+    \begingroup
+      \openin 1 #1.png \ifeof 1
+        \openin 1 #1.jpg \ifeof 1
+          \openin 1 #1.jpeg \ifeof 1
+            \openin 1 #1.JPG \ifeof 1
+              \openin 1 #1.pdf \ifeof 1
+                \openin 1 #1.PDF \ifeof 1
+                  \errhelp = \nopdfimagehelp
+                  \errmessage{Could not find image file #1 for pdf}%
+                \else \gdef\pdfimgext{PDF}%
+                \fi
+              \else \gdef\pdfimgext{pdf}%
+              \fi
+            \else \gdef\pdfimgext{JPG}%
+            \fi
+          \else \gdef\pdfimgext{jpeg}%
+          \fi
+        \else \gdef\pdfimgext{jpg}%
+        \fi
+      \else \gdef\pdfimgext{png}%
+      \fi
+      \closein 1
+    \endgroup
+    %
+    % without \immediate, ancient pdftex seg faults when the same image is
+    % included twice.  (Version 3.14159-pre-1.0-unofficial-20010704.)
+    \ifnum\pdftexversion < 14
+      \immediate\pdfimage
+    \else
+      \immediate\pdfximage
+    \fi
+      \ifdim \wd0 >0pt width \imagewidth \fi
+      \ifdim \wd2 >0pt height \imageheight \fi
+      \ifnum\pdftexversion<13
+         #1.\pdfimgext
+       \else
+         {#1.\pdfimgext}%
+       \fi
+    \ifnum\pdftexversion < 14 \else
+      \pdfrefximage \pdflastximage
+    \fi}
+  %
+  \def\pdfmkdest#1{{%
+    % We have to set dummies so commands such as @code, and characters
+    % such as \, aren't expanded when present in a section title.
+    \indexnofonts
+    \turnoffactive
+    \activebackslashdouble
+    \makevalueexpandable
+    \def\pdfdestname{#1}%
+    \backslashparens\pdfdestname
+    \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
+  }}
+  %
+  % used to mark target names; must be expandable.
+  \def\pdfmkpgn#1{#1}
+  %
+  % by default, use a color that is dark enough to print on paper as
+  % nearly black, but still distinguishable for online viewing.
+  \def\urlcolor{\cmykDarkRed}
+  \def\linkcolor{\cmykDarkRed}
+  \def\endlink{\setcolor{\maincolor}\pdfendlink}
+  %
+  % Adding outlines to PDF; macros for calculating structure of outlines
+  % come from Petr Olsak
+  \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
+    \else \csname#1\endcsname \fi}
+  \def\advancenumber#1{\tempnum=\expnumber{#1}\relax
+    \advance\tempnum by 1
+    \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
+  %
+  % #1 is the section text, which is what will be displayed in the
+  % outline by the pdf viewer.  #2 is the pdf expression for the number
+  % of subentries (or empty, for subsubsections).  #3 is the node text,
+  % which might be empty if this toc entry had no corresponding node.
+  % #4 is the page number
+  %
+  \def\dopdfoutline#1#2#3#4{%
+    % Generate a link to the node text if that exists; else, use the
+    % page number.  We could generate a destination for the section
+    % text in the case where a section has no node, but it doesn't
+    % seem worth the trouble, since most documents are normally structured.
+    \def\pdfoutlinedest{#3}%
+    \ifx\pdfoutlinedest\empty
+      \def\pdfoutlinedest{#4}%
+    \else
+      % Doubled backslashes in the name.
+      {\activebackslashdouble \xdef\pdfoutlinedest{#3}%
+       \backslashparens\pdfoutlinedest}%
+    \fi
+    %
+    % Also double the backslashes in the display string.
+    {\activebackslashdouble \xdef\pdfoutlinetext{#1}%
+     \backslashparens\pdfoutlinetext}%
+    %
+    \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
+  }
+  %
+  \def\pdfmakeoutlines{%
+    \begingroup
+      % Thanh's hack / proper braces in bookmarks
+      \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
+      \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
+      %
+      % Read toc silently, to get counts of subentries for \pdfoutline.
+      \def\numchapentry##1##2##3##4{%
+       \def\thischapnum{##2}%
+       \def\thissecnum{0}%
+       \def\thissubsecnum{0}%
+      }%
+      \def\numsecentry##1##2##3##4{%
+       \advancenumber{chap\thischapnum}%
+       \def\thissecnum{##2}%
+       \def\thissubsecnum{0}%
+      }%
+      \def\numsubsecentry##1##2##3##4{%
+       \advancenumber{sec\thissecnum}%
+       \def\thissubsecnum{##2}%
+      }%
+      \def\numsubsubsecentry##1##2##3##4{%
+       \advancenumber{subsec\thissubsecnum}%
+      }%
+      \def\thischapnum{0}%
+      \def\thissecnum{0}%
+      \def\thissubsecnum{0}%
+      %
+      % use \def rather than \let here because we redefine \chapentry et
+      % al. a second time, below.
+      \def\appentry{\numchapentry}%
+      \def\appsecentry{\numsecentry}%
+      \def\appsubsecentry{\numsubsecentry}%
+      \def\appsubsubsecentry{\numsubsubsecentry}%
+      \def\unnchapentry{\numchapentry}%
+      \def\unnsecentry{\numsecentry}%
+      \def\unnsubsecentry{\numsubsecentry}%
+      \def\unnsubsubsecentry{\numsubsubsecentry}%
+      \readdatafile{toc}%
+      %
+      % Read toc second time, this time actually producing the outlines.
+      % The `-' means take the \expnumber as the absolute number of
+      % subentries, which we calculated on our first read of the .toc above.
+      %
+      % We use the node names as the destinations.
+      \def\numchapentry##1##2##3##4{%
+        \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}%
+      \def\numsecentry##1##2##3##4{%
+        \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}%
+      \def\numsubsecentry##1##2##3##4{%
+        \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}%
+      \def\numsubsubsecentry##1##2##3##4{% count is always zero
+        \dopdfoutline{##1}{}{##3}{##4}}%
+      %
+      % PDF outlines are displayed using system fonts, instead of
+      % document fonts.  Therefore we cannot use special characters,
+      % since the encoding is unknown.  For example, the eogonek from
+      % Latin 2 (0xea) gets translated to a | character.  Info from
+      % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100.
+      %
+      % xx to do this right, we have to translate 8-bit characters to
+      % their "best" equivalent, based on the @documentencoding.  Right
+      % now, I guess we'll just let the pdf reader have its way.
+      \indexnofonts
+      \setupdatafile
+      \catcode`\\=\active \otherbackslash
+      \input \tocreadfilename
+    \endgroup
+  }
+  %
+  \def\skipspaces#1{\def\PP{#1}\def\D{|}%
+    \ifx\PP\D\let\nextsp\relax
+    \else\let\nextsp\skipspaces
+      \ifx\p\space\else\addtokens{\filename}{\PP}%
+        \advance\filenamelength by 1
+      \fi
+    \fi
+    \nextsp}
+  \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax}
+  \ifnum\pdftexversion < 14
+    \let \startlink \pdfannotlink
+  \else
+    \let \startlink \pdfstartlink
+  \fi
+  % make a live url in pdf output.
+  \def\pdfurl#1{%
+    \begingroup
+      % it seems we really need yet another set of dummies; have not
+      % tried to figure out what each command should do in the context
+      % of @url.  for now, just make @/ a no-op, that's the only one
+      % people have actually reported a problem with.
+      % 
+      \normalturnoffactive
+      \def\@{@}%
+      \let\/=\empty
+      \makevalueexpandable
+      \leavevmode\setcolor{\urlcolor}%
+      \startlink attr{/Border [0 0 0]}%
+        user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
+    \endgroup}
+  \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}}
+  \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
+  \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks}
+  \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}}
+  \def\maketoks{%
+    \expandafter\poptoks\the\toksA|ENDTOKS|\relax
+    \ifx\first0\adn0
+    \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3
+    \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6
+    \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9
+    \else
+      \ifnum0=\countA\else\makelink\fi
+      \ifx\first.\let\next=\done\else
+        \let\next=\maketoks
+        \addtokens{\toksB}{\the\toksD}
+        \ifx\first,\addtokens{\toksB}{\space}\fi
+      \fi
+    \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+    \next}
+  \def\makelink{\addtokens{\toksB}%
+    {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
+  \def\pdflink#1{%
+    \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}}
+    \setcolor{\linkcolor}#1\endlink}
+  \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
+\else
+  \let\pdfmkdest = \gobble
+  \let\pdfurl = \gobble
+  \let\endlink = \relax
+  \let\setcolor = \gobble
+  \let\pdfsetcolor = \gobble
+  \let\pdfmakeoutlines = \relax
+\fi  % \ifx\pdfoutput
+
+
+\message{fonts,}
+
+% Change the current font style to #1, remembering it in \curfontstyle.
+% For now, we do not accumulate font styles: @b{@i{foo}} prints foo in
+% italics, not bold italics.
+%
+\def\setfontstyle#1{%
+  \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd.
+  \csname ten#1\endcsname  % change the current font
+}
+
+% Select #1 fonts with the current style.
+%
+\def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname}
+
+\def\rm{\fam=0 \setfontstyle{rm}}
+\def\it{\fam=\itfam \setfontstyle{it}}
+\def\sl{\fam=\slfam \setfontstyle{sl}}
+\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf}
+\def\tt{\fam=\ttfam \setfontstyle{tt}}
+
+% Unfortunately, we have to override this for titles and the like, since
+% in those cases "rm" is bold.  Sigh.
+\def\rmisbold{\rm\def\curfontstyle{bf}}
+
+% Texinfo sort of supports the sans serif font style, which plain TeX does not.
+% So we set up a \sf.
+\newfam\sffam
+\def\sf{\fam=\sffam \setfontstyle{sf}}
+\let\li = \sf % Sometimes we call it \li, not \sf.
+
+% We don't need math for this font style.
+\def\ttsl{\setfontstyle{ttsl}}
+
+
+% Default leading.
+\newdimen\textleading  \textleading = 13.2pt
+
+% Set the baselineskip to #1, and the lineskip and strut size
+% correspondingly.  There is no deep meaning behind these magic numbers
+% used as factors; they just match (closely enough) what Knuth defined.
+%
+\def\lineskipfactor{.08333}
+\def\strutheightpercent{.70833}
+\def\strutdepthpercent {.29167}
+%
+% can get a sort of poor man's double spacing by redefining this.
+\def\baselinefactor{1}
+%
+\def\setleading#1{%
+  \dimen0 = #1\relax
+  \normalbaselineskip = \baselinefactor\dimen0
+  \normallineskip = \lineskipfactor\normalbaselineskip
+  \normalbaselines
+  \setbox\strutbox =\hbox{%
+    \vrule width0pt height\strutheightpercent\baselineskip
+                    depth \strutdepthpercent \baselineskip
+  }%
+}
+
+% PDF CMaps.  See also LaTeX's t1.cmap.
+%
+% do nothing with this by default.
+\expandafter\let\csname cmapOT1\endcsname\gobble
+\expandafter\let\csname cmapOT1IT\endcsname\gobble
+\expandafter\let\csname cmapOT1TT\endcsname\gobble
+
+% if we are producing pdf, and we have \pdffontattr, then define cmaps.
+% (\pdffontattr was introduced many years ago, but people still run
+% older pdftex's; it's easy to conditionalize, so we do.)
+\ifpdf \ifx\pdffontattr\undefined \else
+  \begingroup
+    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
+    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1-0)
+%%Title: (TeX-OT1-0 TeX OT1 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+8 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<23> <26> <0023>
+<28> <3B> <0028>
+<3F> <5B> <003F>
+<5D> <5E> <005D>
+<61> <7A> <0061>
+<7B> <7C> <2013>
+endbfrange
+40 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <00660066>
+<0C> <00660069>
+<0D> <0066006C>
+<0E> <006600660069>
+<0F> <00660066006C>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<21> <0021>
+<22> <201D>
+<27> <2019>
+<3C> <00A1>
+<3D> <003D>
+<3E> <00BF>
+<5C> <201C>
+<5F> <02D9>
+<60> <2018>
+<7D> <02DD>
+<7E> <007E>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+    }\endgroup
+  \expandafter\edef\csname cmapOT1\endcsname#1{%
+    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+  }%
+%
+% \cmapOT1IT
+  \begingroup
+    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
+    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1IT-0)
+%%Title: (TeX-OT1IT-0 TeX OT1IT 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1IT)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1IT-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+8 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<25> <26> <0025>
+<28> <3B> <0028>
+<3F> <5B> <003F>
+<5D> <5E> <005D>
+<61> <7A> <0061>
+<7B> <7C> <2013>
+endbfrange
+42 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <00660066>
+<0C> <00660069>
+<0D> <0066006C>
+<0E> <006600660069>
+<0F> <00660066006C>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<21> <0021>
+<22> <201D>
+<23> <0023>
+<24> <00A3>
+<27> <2019>
+<3C> <00A1>
+<3D> <003D>
+<3E> <00BF>
+<5C> <201C>
+<5F> <02D9>
+<60> <2018>
+<7D> <02DD>
+<7E> <007E>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+    }\endgroup
+  \expandafter\edef\csname cmapOT1IT\endcsname#1{%
+    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+  }%
+%
+% \cmapOT1TT
+  \begingroup
+    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
+    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1TT-0)
+%%Title: (TeX-OT1TT-0 TeX OT1TT 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1TT)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1TT-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+5 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<21> <26> <0021>
+<28> <5F> <0028>
+<61> <7E> <0061>
+endbfrange
+32 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <2191>
+<0C> <2193>
+<0D> <0027>
+<0E> <00A1>
+<0F> <00BF>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<20> <2423>
+<27> <2019>
+<60> <2018>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+    }\endgroup
+  \expandafter\edef\csname cmapOT1TT\endcsname#1{%
+    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+  }%
+\fi\fi
+
+
+% Set the font macro #1 to the font named #2, adding on the
+% specified font prefix (normally `cm').
+% #3 is the font's design size, #4 is a scale factor, #5 is the CMap
+% encoding (currently only OT1, OT1IT and OT1TT are allowed, pass
+% empty to omit).
+\def\setfont#1#2#3#4#5{%
+  \font#1=\fontprefix#2#3 scaled #4
+  \csname cmap#5\endcsname#1%
+}
+% This is what gets called when #5 of \setfont is empty.
+\let\cmap\gobble
+% emacs-page end of cmaps
+
+% Use cm as the default font prefix.
+% To specify the font prefix, you must define \fontprefix
+% before you read in texinfo.tex.
+\ifx\fontprefix\undefined
+\def\fontprefix{cm}
+\fi
+% Support font families that don't use the same naming scheme as CM.
+\def\rmshape{r}
+\def\rmbshape{bx}               %where the normal face is bold
+\def\bfshape{b}
+\def\bxshape{bx}
+\def\ttshape{tt}
+\def\ttbshape{tt}
+\def\ttslshape{sltt}
+\def\itshape{ti}
+\def\itbshape{bxti}
+\def\slshape{sl}
+\def\slbshape{bxsl}
+\def\sfshape{ss}
+\def\sfbshape{ss}
+\def\scshape{csc}
+\def\scbshape{csc}
+
+% Definitions for a main text size of 11pt.  This is the default in
+% Texinfo.
+% 
+\def\definetextfontsizexi{%
+% Text fonts (11.2pt, magstep1).
+\def\textnominalsize{11pt}
+\edef\mainmagstep{\magstephalf}
+\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
+\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
+\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
+\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
+\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
+\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
+\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
+\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
+\font\texti=cmmi10 scaled \mainmagstep
+\font\textsy=cmsy10 scaled \mainmagstep
+\def\textecsize{1095}
+
+% A few fonts for @defun names and args.
+\setfont\defbf\bfshape{10}{\magstep1}{OT1}
+\setfont\deftt\ttshape{10}{\magstep1}{OT1TT}
+\setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT}
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
+
+% Fonts for indices, footnotes, small examples (9pt).
+\def\smallnominalsize{9pt}
+\setfont\smallrm\rmshape{9}{1000}{OT1}
+\setfont\smalltt\ttshape{9}{1000}{OT1TT}
+\setfont\smallbf\bfshape{10}{900}{OT1}
+\setfont\smallit\itshape{9}{1000}{OT1IT}
+\setfont\smallsl\slshape{9}{1000}{OT1}
+\setfont\smallsf\sfshape{9}{1000}{OT1}
+\setfont\smallsc\scshape{10}{900}{OT1}
+\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
+\font\smalli=cmmi9
+\font\smallsy=cmsy9
+\def\smallecsize{0900}
+
+% Fonts for small examples (8pt).
+\def\smallernominalsize{8pt}
+\setfont\smallerrm\rmshape{8}{1000}{OT1}
+\setfont\smallertt\ttshape{8}{1000}{OT1TT}
+\setfont\smallerbf\bfshape{10}{800}{OT1}
+\setfont\smallerit\itshape{8}{1000}{OT1IT}
+\setfont\smallersl\slshape{8}{1000}{OT1}
+\setfont\smallersf\sfshape{8}{1000}{OT1}
+\setfont\smallersc\scshape{10}{800}{OT1}
+\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
+\font\smalleri=cmmi8
+\font\smallersy=cmsy8
+\def\smallerecsize{0800}
+
+% Fonts for title page (20.4pt):
+\def\titlenominalsize{20pt}
+\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
+\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
+\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
+\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
+\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
+\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
+\let\titlebf=\titlerm
+\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
+\font\titlei=cmmi12 scaled \magstep3
+\font\titlesy=cmsy10 scaled \magstep4
+\def\titleecsize{2074}
+
+% Chapter (and unnumbered) fonts (17.28pt).
+\def\chapnominalsize{17pt}
+\setfont\chaprm\rmbshape{12}{\magstep2}{OT1}
+\setfont\chapit\itbshape{10}{\magstep3}{OT1IT}
+\setfont\chapsl\slbshape{10}{\magstep3}{OT1}
+\setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT}
+\setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT}
+\setfont\chapsf\sfbshape{17}{1000}{OT1}
+\let\chapbf=\chaprm
+\setfont\chapsc\scbshape{10}{\magstep3}{OT1}
+\font\chapi=cmmi12 scaled \magstep2
+\font\chapsy=cmsy10 scaled \magstep3
+\def\chapecsize{1728}
+
+% Section fonts (14.4pt).
+\def\secnominalsize{14pt}
+\setfont\secrm\rmbshape{12}{\magstep1}{OT1}
+\setfont\secit\itbshape{10}{\magstep2}{OT1IT}
+\setfont\secsl\slbshape{10}{\magstep2}{OT1}
+\setfont\sectt\ttbshape{12}{\magstep1}{OT1TT}
+\setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT}
+\setfont\secsf\sfbshape{12}{\magstep1}{OT1}
+\let\secbf\secrm
+\setfont\secsc\scbshape{10}{\magstep2}{OT1}
+\font\seci=cmmi12 scaled \magstep1
+\font\secsy=cmsy10 scaled \magstep2
+\def\sececsize{1440}
+
+% Subsection fonts (13.15pt).
+\def\ssecnominalsize{13pt}
+\setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1}
+\setfont\ssecit\itbshape{10}{1315}{OT1IT}
+\setfont\ssecsl\slbshape{10}{1315}{OT1}
+\setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT}
+\setfont\ssecttsl\ttslshape{10}{1315}{OT1TT}
+\setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1}
+\let\ssecbf\ssecrm
+\setfont\ssecsc\scbshape{10}{1315}{OT1}
+\font\sseci=cmmi12 scaled \magstephalf
+\font\ssecsy=cmsy10 scaled 1315
+\def\ssececsize{1200}
+
+% Reduced fonts for @acro in text (10pt).
+\def\reducednominalsize{10pt}
+\setfont\reducedrm\rmshape{10}{1000}{OT1}
+\setfont\reducedtt\ttshape{10}{1000}{OT1TT}
+\setfont\reducedbf\bfshape{10}{1000}{OT1}
+\setfont\reducedit\itshape{10}{1000}{OT1IT}
+\setfont\reducedsl\slshape{10}{1000}{OT1}
+\setfont\reducedsf\sfshape{10}{1000}{OT1}
+\setfont\reducedsc\scshape{10}{1000}{OT1}
+\setfont\reducedttsl\ttslshape{10}{1000}{OT1TT}
+\font\reducedi=cmmi10
+\font\reducedsy=cmsy10
+\def\reducedecsize{1000}
+
+% reset the current fonts
+\textfonts
+\rm
+} % end of 11pt text font size definitions
+
+
+% Definitions to make the main text be 10pt Computer Modern, with
+% section, chapter, etc., sizes following suit.  This is for the GNU
+% Press printing of the Emacs 22 manual.  Maybe other manuals in the
+% future.  Used with @smallbook, which sets the leading to 12pt.
+% 
+\def\definetextfontsizex{%
+% Text fonts (10pt).
+\def\textnominalsize{10pt}
+\edef\mainmagstep{1000}
+\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
+\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
+\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
+\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
+\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
+\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
+\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
+\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
+\font\texti=cmmi10 scaled \mainmagstep
+\font\textsy=cmsy10 scaled \mainmagstep
+\def\textecsize{1000}
+
+% A few fonts for @defun names and args.
+\setfont\defbf\bfshape{10}{\magstephalf}{OT1}
+\setfont\deftt\ttshape{10}{\magstephalf}{OT1TT}
+\setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT}
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
+
+% Fonts for indices, footnotes, small examples (9pt).
+\def\smallnominalsize{9pt}
+\setfont\smallrm\rmshape{9}{1000}{OT1}
+\setfont\smalltt\ttshape{9}{1000}{OT1TT}
+\setfont\smallbf\bfshape{10}{900}{OT1}
+\setfont\smallit\itshape{9}{1000}{OT1IT}
+\setfont\smallsl\slshape{9}{1000}{OT1}
+\setfont\smallsf\sfshape{9}{1000}{OT1}
+\setfont\smallsc\scshape{10}{900}{OT1}
+\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
+\font\smalli=cmmi9
+\font\smallsy=cmsy9
+\def\smallecsize{0900}
+
+% Fonts for small examples (8pt).
+\def\smallernominalsize{8pt}
+\setfont\smallerrm\rmshape{8}{1000}{OT1}
+\setfont\smallertt\ttshape{8}{1000}{OT1TT}
+\setfont\smallerbf\bfshape{10}{800}{OT1}
+\setfont\smallerit\itshape{8}{1000}{OT1IT}
+\setfont\smallersl\slshape{8}{1000}{OT1}
+\setfont\smallersf\sfshape{8}{1000}{OT1}
+\setfont\smallersc\scshape{10}{800}{OT1}
+\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
+\font\smalleri=cmmi8
+\font\smallersy=cmsy8
+\def\smallerecsize{0800}
+
+% Fonts for title page (20.4pt):
+\def\titlenominalsize{20pt}
+\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
+\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
+\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
+\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
+\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
+\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
+\let\titlebf=\titlerm
+\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
+\font\titlei=cmmi12 scaled \magstep3
+\font\titlesy=cmsy10 scaled \magstep4
+\def\titleecsize{2074}
+
+% Chapter fonts (14.4pt).
+\def\chapnominalsize{14pt}
+\setfont\chaprm\rmbshape{12}{\magstep1}{OT1}
+\setfont\chapit\itbshape{10}{\magstep2}{OT1IT}
+\setfont\chapsl\slbshape{10}{\magstep2}{OT1}
+\setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT}
+\setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT}
+\setfont\chapsf\sfbshape{12}{\magstep1}{OT1}
+\let\chapbf\chaprm
+\setfont\chapsc\scbshape{10}{\magstep2}{OT1}
+\font\chapi=cmmi12 scaled \magstep1
+\font\chapsy=cmsy10 scaled \magstep2
+\def\chapecsize{1440}
+
+% Section fonts (12pt).
+\def\secnominalsize{12pt}
+\setfont\secrm\rmbshape{12}{1000}{OT1}
+\setfont\secit\itbshape{10}{\magstep1}{OT1IT}
+\setfont\secsl\slbshape{10}{\magstep1}{OT1}
+\setfont\sectt\ttbshape{12}{1000}{OT1TT}
+\setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT}
+\setfont\secsf\sfbshape{12}{1000}{OT1}
+\let\secbf\secrm
+\setfont\secsc\scbshape{10}{\magstep1}{OT1}
+\font\seci=cmmi12 
+\font\secsy=cmsy10 scaled \magstep1
+\def\sececsize{1200}
+
+% Subsection fonts (10pt).
+\def\ssecnominalsize{10pt}
+\setfont\ssecrm\rmbshape{10}{1000}{OT1}
+\setfont\ssecit\itbshape{10}{1000}{OT1IT}
+\setfont\ssecsl\slbshape{10}{1000}{OT1}
+\setfont\ssectt\ttbshape{10}{1000}{OT1TT}
+\setfont\ssecttsl\ttslshape{10}{1000}{OT1TT}
+\setfont\ssecsf\sfbshape{10}{1000}{OT1}
+\let\ssecbf\ssecrm
+\setfont\ssecsc\scbshape{10}{1000}{OT1}
+\font\sseci=cmmi10
+\font\ssecsy=cmsy10
+\def\ssececsize{1000}
+
+% Reduced fonts for @acro in text (9pt).
+\def\reducednominalsize{9pt}
+\setfont\reducedrm\rmshape{9}{1000}{OT1}
+\setfont\reducedtt\ttshape{9}{1000}{OT1TT}
+\setfont\reducedbf\bfshape{10}{900}{OT1}
+\setfont\reducedit\itshape{9}{1000}{OT1IT}
+\setfont\reducedsl\slshape{9}{1000}{OT1}
+\setfont\reducedsf\sfshape{9}{1000}{OT1}
+\setfont\reducedsc\scshape{10}{900}{OT1}
+\setfont\reducedttsl\ttslshape{10}{900}{OT1TT}
+\font\reducedi=cmmi9
+\font\reducedsy=cmsy9
+\def\reducedecsize{0900}
+
+% reduce space between paragraphs
+\divide\parskip by 2
+
+% reset the current fonts
+\textfonts
+\rm
+} % end of 10pt text font size definitions
+
+
+% We provide the user-level command
+%   @fonttextsize 10
+% (or 11) to redefine the text font size.  pt is assumed.
+% 
+\def\xword{10}
+\def\xiword{11}
+%
+\parseargdef\fonttextsize{%
+  \def\textsizearg{#1}%
+  \wlog{doing @fonttextsize \textsizearg}%
+  %
+  % Set \globaldefs so that documents can use this inside @tex, since
+  % makeinfo 4.8 does not support it, but we need it nonetheless.
+  % 
+ \begingroup \globaldefs=1
+  \ifx\textsizearg\xword \definetextfontsizex
+  \else \ifx\textsizearg\xiword \definetextfontsizexi
+  \else
+    \errhelp=\EMsimple
+    \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'}
+  \fi\fi
+ \endgroup
+}
+
+
+% In order for the font changes to affect most math symbols and letters,
+% we have to define the \textfont of the standard families.  Since
+% texinfo doesn't allow for producing subscripts and superscripts except
+% in the main text, we don't bother to reset \scriptfont and
+% \scriptscriptfont (which would also require loading a lot more fonts).
+%
+\def\resetmathfonts{%
+  \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy
+  \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf
+  \textfont\ttfam=\tentt \textfont\sffam=\tensf
+}
+
+% The font-changing commands redefine the meanings of \tenSTYLE, instead
+% of just \STYLE.  We do this because \STYLE needs to also set the
+% current \fam for math mode.  Our \STYLE (e.g., \rm) commands hardwire
+% \tenSTYLE to set the current font.
+%
+% Each font-changing command also sets the names \lsize (one size lower)
+% and \lllsize (three sizes lower).  These relative commands are used in
+% the LaTeX logo and acronyms.
+%
+% This all needs generalizing, badly.
+%
+\def\textfonts{%
+  \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl
+  \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc
+  \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy
+  \let\tenttsl=\textttsl
+  \def\curfontsize{text}%
+  \def\lsize{reduced}\def\lllsize{smaller}%
+  \resetmathfonts \setleading{\textleading}}
+\def\titlefonts{%
+  \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl
+  \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc
+  \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy
+  \let\tenttsl=\titlettsl
+  \def\curfontsize{title}%
+  \def\lsize{chap}\def\lllsize{subsec}%
+  \resetmathfonts \setleading{25pt}}
+\def\titlefont#1{{\titlefonts\rmisbold #1}}
+\def\chapfonts{%
+  \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
+  \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
+  \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy
+  \let\tenttsl=\chapttsl
+  \def\curfontsize{chap}%
+  \def\lsize{sec}\def\lllsize{text}%
+  \resetmathfonts \setleading{19pt}}
+\def\secfonts{%
+  \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl
+  \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc
+  \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy
+  \let\tenttsl=\secttsl
+  \def\curfontsize{sec}%
+  \def\lsize{subsec}\def\lllsize{reduced}%
+  \resetmathfonts \setleading{16pt}}
+\def\subsecfonts{%
+  \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl
+  \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc
+  \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy
+  \let\tenttsl=\ssecttsl
+  \def\curfontsize{ssec}%
+  \def\lsize{text}\def\lllsize{small}%
+  \resetmathfonts \setleading{15pt}}
+\let\subsubsecfonts = \subsecfonts
+\def\reducedfonts{%
+  \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl
+  \let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc
+  \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy
+  \let\tenttsl=\reducedttsl
+  \def\curfontsize{reduced}%
+  \def\lsize{small}\def\lllsize{smaller}%
+  \resetmathfonts \setleading{10.5pt}}
+\def\smallfonts{%
+  \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl
+  \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc
+  \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy
+  \let\tenttsl=\smallttsl
+  \def\curfontsize{small}%
+  \def\lsize{smaller}\def\lllsize{smaller}%
+  \resetmathfonts \setleading{10.5pt}}
+\def\smallerfonts{%
+  \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl
+  \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc
+  \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy
+  \let\tenttsl=\smallerttsl
+  \def\curfontsize{smaller}%
+  \def\lsize{smaller}\def\lllsize{smaller}%
+  \resetmathfonts \setleading{9.5pt}}
+
+% Set the fonts to use with the @small... environments.
+\let\smallexamplefonts = \smallfonts
+
+% About \smallexamplefonts.  If we use \smallfonts (9pt), @smallexample
+% can fit this many characters:
+%   8.5x11=86   smallbook=72  a4=90  a5=69
+% If we use \scriptfonts (8pt), then we can fit this many characters:
+%   8.5x11=90+  smallbook=80  a4=90+  a5=77
+% For me, subjectively, the few extra characters that fit aren't worth
+% the additional smallness of 8pt.  So I'm making the default 9pt.
+%
+% By the way, for comparison, here's what fits with @example (10pt):
+%   8.5x11=71  smallbook=60  a4=75  a5=58
+%
+% I wish the USA used A4 paper.
+% --karl, 24jan03.
+
+
+% Set up the default fonts, so we can use them for creating boxes.
+%
+\definetextfontsizexi
+
+% Define these so they can be easily changed for other fonts.
+\def\angleleft{$\langle$}
+\def\angleright{$\rangle$}
+
+% Count depth in font-changes, for error checks
+\newcount\fontdepth \fontdepth=0
+
+% Fonts for short table of contents.
+\setfont\shortcontrm\rmshape{12}{1000}{OT1}
+\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1}  % no cmb12
+\setfont\shortcontsl\slshape{12}{1000}{OT1}
+\setfont\shortconttt\ttshape{12}{1000}{OT1TT}
+
+%% Add scribe-like font environments, plus @l for inline lisp (usually sans
+%% serif) and @ii for TeX italic
+
+% \smartitalic{ARG} outputs arg in italics, followed by an italic correction
+% unless the following character is such as not to need one.
+\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else
+                    \ptexslash\fi\fi\fi}
+\def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx}
+\def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx}
+
+% like \smartslanted except unconditionally uses \ttsl.
+% @var is set to this for defun arguments.
+\def\ttslanted#1{{\ttsl #1}\futurelet\next\smartitalicx}
+
+% like \smartslanted except unconditionally use \sl.  We never want
+% ttsl for book titles, do we?
+\def\cite#1{{\sl #1}\futurelet\next\smartitalicx}
+
+\let\i=\smartitalic
+\let\slanted=\smartslanted
+\def\var#1{{\setupmarkupstyle{var}\smartslanted{#1}}}
+\let\dfn=\smartslanted
+\let\emph=\smartitalic
+
+% @b, explicit bold.
+\def\b#1{{\bf #1}}
+\let\strong=\b
+
+% @sansserif, explicit sans.
+\def\sansserif#1{{\sf #1}}
+
+% We can't just use \exhyphenpenalty, because that only has effect at
+% the end of a paragraph.  Restore normal hyphenation at the end of the
+% group within which \nohyphenation is presumably called.
+%
+\def\nohyphenation{\hyphenchar\font = -1  \aftergroup\restorehyphenation}
+\def\restorehyphenation{\hyphenchar\font = `- }
+
+% Set sfcode to normal for the chars that usually have another value.
+% Can't use plain's \frenchspacing because it uses the `\x notation, and
+% sometimes \x has an active definition that messes things up.
+%
+\catcode`@=11
+  \def\plainfrenchspacing{%
+    \sfcode\dotChar  =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m
+    \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m
+    \def\endofsentencespacefactor{1000}% for @. and friends
+  }
+  \def\plainnonfrenchspacing{%
+    \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000
+    \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250
+    \def\endofsentencespacefactor{3000}% for @. and friends
+  }
+\catcode`@=\other
+\def\endofsentencespacefactor{3000}% default
+
+\def\t#1{%
+  {\tt \rawbackslash \plainfrenchspacing #1}%
+  \null
+}
+\def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}}
+\setfont\keyrm\rmshape{8}{1000}{OT1}
+\font\keysy=cmsy9
+\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
+  \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
+    \vbox{\hrule\kern-0.4pt
+     \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
+    \kern-0.4pt\hrule}%
+  \kern-.06em\raise0.4pt\hbox{\angleright}}}}
+\def\key #1{{\setupmarkupstyle{key}\nohyphenation \uppercase{#1}}\null}
+% The old definition, with no lozenge:
+%\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null}
+\def\ctrl #1{{\tt \rawbackslash \hat}#1}
+
+% @file, @option are the same as @samp.
+\let\file=\samp
+\let\option=\samp
+
+% @code is a modification of @t,
+% which makes spaces the same size as normal in the surrounding text.
+\def\tclose#1{%
+  {%
+    % Change normal interword space to be same as for the current font.
+    \spaceskip = \fontdimen2\font
+    %
+    % Switch to typewriter.
+    \tt
+    %
+    % But `\ ' produces the large typewriter interword space.
+    \def\ {{\spaceskip = 0pt{} }}%
+    %
+    % Turn off hyphenation.
+    \nohyphenation
+    %
+    \rawbackslash
+    \plainfrenchspacing
+    #1%
+  }%
+  \null
+}
+
+% We *must* turn on hyphenation at `-' and `_' in @code.
+% Otherwise, it is too hard to avoid overfull hboxes
+% in the Emacs manual, the Library manual, etc.
+
+% Unfortunately, TeX uses one parameter (\hyphenchar) to control
+% both hyphenation at - and hyphenation within words.
+% We must therefore turn them both off (\tclose does that)
+% and arrange explicitly to hyphenate at a dash.
+%  -- rms.
+{
+  \catcode`\-=\active \catcode`\_=\active
+  \catcode`\'=\active \catcode`\`=\active
+  \global\let'=\rq \global\let`=\lq  % default definitions
+  %
+  \global\def\code{\begingroup
+    \setupmarkupstyle{code}%
+    % The following should really be moved into \setupmarkupstyle handlers.
+    \catcode\dashChar=\active  \catcode\underChar=\active
+    \ifallowcodebreaks
+     \let-\codedash
+     \let_\codeunder
+    \else
+     \let-\realdash
+     \let_\realunder
+    \fi
+    \codex
+  }
+}
+
+\def\realdash{-}
+\def\codedash{-\discretionary{}{}{}}
+\def\codeunder{%
+  % this is all so @math{@code{var_name}+1} can work.  In math mode, _
+  % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.)
+  % will therefore expand the active definition of _, which is us
+  % (inside @code that is), therefore an endless loop.
+  \ifusingtt{\ifmmode
+               \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_.
+             \else\normalunderscore \fi
+             \discretionary{}{}{}}%
+            {\_}%
+}
+\def\codex #1{\tclose{#1}\endgroup}
+
+% An additional complication: the above will allow breaks after, e.g.,
+% each of the four underscores in __typeof__.  This is undesirable in
+% some manuals, especially if they don't have long identifiers in
+% general.  @allowcodebreaks provides a way to control this.
+% 
+\newif\ifallowcodebreaks  \allowcodebreakstrue
+
+\def\keywordtrue{true}
+\def\keywordfalse{false}
+
+\parseargdef\allowcodebreaks{%
+  \def\txiarg{#1}%
+  \ifx\txiarg\keywordtrue
+    \allowcodebreakstrue
+  \else\ifx\txiarg\keywordfalse
+    \allowcodebreaksfalse
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @allowcodebreaks option `\txiarg'}%
+  \fi\fi
+}
+
+% @kbd is like @code, except that if the argument is just one @key command,
+% then @kbd has no effect.
+
+% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
+%   `example' (@kbd uses ttsl only inside of @example and friends),
+%   or `code' (@kbd uses normal tty font always).
+\parseargdef\kbdinputstyle{%
+  \def\txiarg{#1}%
+  \ifx\txiarg\worddistinct
+    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
+  \else\ifx\txiarg\wordexample
+    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
+  \else\ifx\txiarg\wordcode
+    \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @kbdinputstyle option `\txiarg'}%
+  \fi\fi\fi
+}
+\def\worddistinct{distinct}
+\def\wordexample{example}
+\def\wordcode{code}
+
+% Default is `distinct.'
+\kbdinputstyle distinct
+
+\def\xkey{\key}
+\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
+\ifx\one\xkey\ifx\threex\three \key{#2}%
+\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
+\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi}
+
+% For @indicateurl, @env, @command quotes seem unnecessary, so use \code.
+\let\indicateurl=\code
+\let\env=\code
+\let\command=\code
+
+% @clicksequence{File @click{} Open ...}
+\def\clicksequence#1{\begingroup #1\endgroup}
+
+% @clickstyle @arrow   (by default)
+\parseargdef\clickstyle{\def\click{#1}}
+\def\click{\arrow}
+
+% @uref (abbreviation for `urlref') takes an optional (comma-separated)
+% second argument specifying the text to display and an optional third
+% arg as text to display instead of (rather than in addition to) the url
+% itself.  First (mandatory) arg is the url.  Perhaps eventually put in
+% a hypertex \special here.
+%
+\def\uref#1{\douref #1,,,\finish}
+\def\douref#1,#2,#3,#4\finish{\begingroup
+  \unsepspaces
+  \pdfurl{#1}%
+  \setbox0 = \hbox{\ignorespaces #3}%
+  \ifdim\wd0 > 0pt
+    \unhbox0 % third arg given, show only that
+  \else
+    \setbox0 = \hbox{\ignorespaces #2}%
+    \ifdim\wd0 > 0pt
+      \ifpdf
+        \unhbox0             % PDF: 2nd arg given, show only it
+      \else
+        \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url
+      \fi
+    \else
+      \code{#1}% only url given, so show it
+    \fi
+  \fi
+  \endlink
+\endgroup}
+
+% @url synonym for @uref, since that's how everyone uses it.
+%
+\let\url=\uref
+
+% rms does not like angle brackets --karl, 17may97.
+% So now @email is just like @uref, unless we are pdf.
+%
+%\def\email#1{\angleleft{\tt #1}\angleright}
+\ifpdf
+  \def\email#1{\doemail#1,,\finish}
+  \def\doemail#1,#2,#3\finish{\begingroup
+    \unsepspaces
+    \pdfurl{mailto:#1}%
+    \setbox0 = \hbox{\ignorespaces #2}%
+    \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi
+    \endlink
+  \endgroup}
+\else
+  \let\email=\uref
+\fi
+
+% Check if we are currently using a typewriter font.  Since all the
+% Computer Modern typewriter fonts have zero interword stretch (and
+% shrink), and it is reasonable to expect all typewriter fonts to have
+% this property, we can check that font parameter.
+%
+\def\ifmonospace{\ifdim\fontdimen3\font=0pt }
+
+% Typeset a dimension, e.g., `in' or `pt'.  The only reason for the
+% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt.
+%
+\def\dmn#1{\thinspace #1}
+
+\def\kbd#1{{\setupmarkupstyle{kbd}\def\look{#1}\expandafter\kbdfoo\look??\par}}
+
+% @l was never documented to mean ``switch to the Lisp font'',
+% and it is not used as such in any manual I can find.  We need it for
+% Polish suppressed-l.  --karl, 22sep96.
+%\def\l#1{{\li #1}\null}
+
+% Explicit font changes: @r, @sc, undocumented @ii.
+\def\r#1{{\rm #1}}              % roman font
+\def\sc#1{{\smallcaps#1}}       % smallcaps font
+\def\ii#1{{\it #1}}             % italic font
+
+% @acronym for "FBI", "NATO", and the like.
+% We print this one point size smaller, since it's intended for
+% all-uppercase.
+% 
+\def\acronym#1{\doacronym #1,,\finish}
+\def\doacronym#1,#2,#3\finish{%
+  {\selectfonts\lsize #1}%
+  \def\temp{#2}%
+  \ifx\temp\empty \else
+    \space ({\unsepspaces \ignorespaces \temp \unskip})%
+  \fi
+}
+
+% @abbr for "Comput. J." and the like.
+% No font change, but don't do end-of-sentence spacing.
+% 
+\def\abbr#1{\doabbr #1,,\finish}
+\def\doabbr#1,#2,#3\finish{%
+  {\plainfrenchspacing #1}%
+  \def\temp{#2}%
+  \ifx\temp\empty \else
+    \space ({\unsepspaces \ignorespaces \temp \unskip})%
+  \fi
+}
+
+% @pounds{} is a sterling sign, which Knuth put in the CM italic font.
+%
+\def\pounds{{\it\$}}
+
+% @euro{} comes from a separate font, depending on the current style.
+% We use the free feym* fonts from the eurosym package by Henrik
+% Theiling, which support regular, slanted, bold and bold slanted (and
+% "outlined" (blackboard board, sort of) versions, which we don't need).
+% It is available from http://www.ctan.org/tex-archive/fonts/eurosym.
+% 
+% Although only regular is the truly official Euro symbol, we ignore
+% that.  The Euro is designed to be slightly taller than the regular
+% font height.
+% 
+% feymr - regular
+% feymo - slanted
+% feybr - bold
+% feybo - bold slanted
+% 
+% There is no good (free) typewriter version, to my knowledge.
+% A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide.
+% Hmm.
+% 
+% Also doesn't work in math.  Do we need to do math with euro symbols?
+% Hope not.
+% 
+% 
+\def\euro{{\eurofont e}}
+\def\eurofont{%
+  % We set the font at each command, rather than predefining it in
+  % \textfonts and the other font-switching commands, so that
+  % installations which never need the symbol don't have to have the
+  % font installed.
+  % 
+  % There is only one designed size (nominal 10pt), so we always scale
+  % that to the current nominal size.
+  % 
+  % By the way, simply using "at 1em" works for cmr10 and the like, but
+  % does not work for cmbx10 and other extended/shrunken fonts.
+  % 
+  \def\eurosize{\csname\curfontsize nominalsize\endcsname}%
+  %
+  \ifx\curfontstyle\bfstylename 
+    % bold:
+    \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize
+  \else 
+    % regular:
+    \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize
+  \fi
+  \thiseurofont
+}
+
+% Hacks for glyphs from the EC fonts similar to \euro.  We don't
+% use \let for the aliases, because sometimes we redefine the original
+% macro, and the alias should reflect the redefinition.
+\def\guillemetleft{{\ecfont \char"13}}
+\def\guillemotleft{\guillemetleft}
+\def\guillemetright{{\ecfont \char"14}}
+\def\guillemotright{\guillemetright}
+\def\guilsinglleft{{\ecfont \char"0E}}
+\def\guilsinglright{{\ecfont \char"0F}}
+\def\quotedblbase{{\ecfont \char"12}}
+\def\quotesinglbase{{\ecfont \char"0D}}
+%
+% This positioning is not perfect (see the ogonek LaTeX package), but
+% we have the precomposed glyphs for the most common cases.  We put the
+% tests to use those glyphs in the single \ogonek macro so we have fewer
+% dummy definitions to worry about for index entries, etc.
+% 
+% ogonek is also used with other letters in Lithuanian (IOU), but using
+% the precomposed glyphs for those is not so easy since they aren't in
+% the same EC font.
+\def\ogonek#1{{%
+  \def\temp{#1}%
+  \ifx\temp\macrocharA\Aogonek
+  \else\ifx\temp\macrochara\aogonek
+  \else\ifx\temp\macrocharE\Eogonek
+  \else\ifx\temp\macrochare\eogonek
+  \else
+    \ecfont \setbox0=\hbox{#1}%
+    \ifdim\ht0=1ex\accent"0C #1%
+    \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}%
+    \fi
+  \fi\fi\fi\fi
+  }%
+}
+\def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A}
+\def\aogonek{{\ecfont \char"A1}}\def\macrochara{a}
+\def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E}
+\def\eogonek{{\ecfont \char"A6}}\def\macrochare{e}
+%
+\def\ecfont{%
+  % We can't distinguish serif/sans and italic/slanted, but this
+  % is used for crude hacks anyway (like adding French and German
+  % quotes to documents typeset with CM, where we lose kerning), so
+  % hopefully nobody will notice/care.
+  \edef\ecsize{\csname\curfontsize ecsize\endcsname}%
+  \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}%
+  \ifx\curfontstyle\bfstylename
+    % bold:
+    \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize
+  \else
+    % regular:
+    \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize
+  \fi
+  \thisecfont
+}
+
+% @registeredsymbol - R in a circle.  The font for the R should really
+% be smaller yet, but lllsize is the best we can do for now.
+% Adapted from the plain.tex definition of \copyright.
+%
+\def\registeredsymbol{%
+  $^{{\ooalign{\hfil\raise.07ex\hbox{\selectfonts\lllsize R}%
+               \hfil\crcr\Orb}}%
+    }$%
+}
+
+% @textdegree - the normal degrees sign.
+%
+\def\textdegree{$^\circ$}
+
+% Laurent Siebenmann reports \Orb undefined with:
+%  Textures 1.7.7 (preloaded format=plain 93.10.14)  (68K)  16 APR 2004 02:38
+% so we'll define it if necessary.
+% 
+\ifx\Orb\undefined
+\def\Orb{\mathhexbox20D}
+\fi
+
+% Quotes.
+\chardef\quotedblleft="5C
+\chardef\quotedblright=`\"
+\chardef\quoteleft=`\`
+\chardef\quoteright=`\'
+
+
+\message{page headings,}
+
+\newskip\titlepagetopglue \titlepagetopglue = 1.5in
+\newskip\titlepagebottomglue \titlepagebottomglue = 2pc
+
+% First the title page.  Must do @settitle before @titlepage.
+\newif\ifseenauthor
+\newif\iffinishedtitlepage
+
+% Do an implicit @contents or @shortcontents after @end titlepage if the
+% user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage.
+%
+\newif\ifsetcontentsaftertitlepage
+ \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue
+\newif\ifsetshortcontentsaftertitlepage
+ \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue
+
+\parseargdef\shorttitlepage{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}%
+        \endgroup\page\hbox{}\page}
+
+\envdef\titlepage{%
+  % Open one extra group, as we want to close it in the middle of \Etitlepage.
+  \begingroup
+    \parindent=0pt \textfonts
+    % Leave some space at the very top of the page.
+    \vglue\titlepagetopglue
+    % No rule at page bottom unless we print one at the top with @title.
+    \finishedtitlepagetrue
+    %
+    % Most title ``pages'' are actually two pages long, with space
+    % at the top of the second.  We don't want the ragged left on the second.
+    \let\oldpage = \page
+    \def\page{%
+      \iffinishedtitlepage\else
+        \finishtitlepage
+      \fi
+      \let\page = \oldpage
+      \page
+      \null
+    }%
+}
+
+\def\Etitlepage{%
+    \iffinishedtitlepage\else
+       \finishtitlepage
+    \fi
+    % It is important to do the page break before ending the group,
+    % because the headline and footline are only empty inside the group.
+    % If we use the new definition of \page, we always get a blank page
+    % after the title page, which we certainly don't want.
+    \oldpage
+  \endgroup
+  %
+  % Need this before the \...aftertitlepage checks so that if they are
+  % in effect the toc pages will come out with page numbers.
+  \HEADINGSon
+  %
+  % If they want short, they certainly want long too.
+  \ifsetshortcontentsaftertitlepage
+    \shortcontents
+    \contents
+    \global\let\shortcontents = \relax
+    \global\let\contents = \relax
+  \fi
+  %
+  \ifsetcontentsaftertitlepage
+    \contents
+    \global\let\contents = \relax
+    \global\let\shortcontents = \relax
+  \fi
+}
+
+\def\finishtitlepage{%
+  \vskip4pt \hrule height 2pt width \hsize
+  \vskip\titlepagebottomglue
+  \finishedtitlepagetrue
+}
+
+%%% Macros to be used within @titlepage:
+
+\let\subtitlerm=\tenrm
+\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}
+
+\parseargdef\title{%
+  \checkenv\titlepage
+  \leftline{\titlefonts\rmisbold #1}
+  % print a rule at the page bottom also.
+  \finishedtitlepagefalse
+  \vskip4pt \hrule height 4pt width \hsize \vskip4pt
+}
+
+\parseargdef\subtitle{%
+  \checkenv\titlepage
+  {\subtitlefont \rightline{#1}}%
+}
+
+% @author should come last, but may come many times.
+% It can also be used inside @quotation.
+%
+\parseargdef\author{%
+  \def\temp{\quotation}%
+  \ifx\thisenv\temp
+    \def\quotationauthor{#1}% printed in \Equotation.
+  \else
+    \checkenv\titlepage
+    \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi
+    {\secfonts\rmisbold \leftline{#1}}%
+  \fi
+}
+
+
+%%% Set up page headings and footings.
+
+\let\thispage=\folio
+
+\newtoks\evenheadline    % headline on even pages
+\newtoks\oddheadline     % headline on odd pages
+\newtoks\evenfootline    % footline on even pages
+\newtoks\oddfootline     % footline on odd pages
+
+% Now make TeX use those variables
+\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline
+                            \else \the\evenheadline \fi}}
+\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline
+                            \else \the\evenfootline \fi}\HEADINGShook}
+\let\HEADINGShook=\relax
+
+% Commands to set those variables.
+% For example, this is what  @headings on  does
+% @evenheading @thistitle|@thispage|@thischapter
+% @oddheading @thischapter|@thispage|@thistitle
+% @evenfooting @thisfile||
+% @oddfooting ||@thisfile
+
+
+\def\evenheading{\parsearg\evenheadingxxx}
+\def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish}
+\def\evenheadingyyy #1\|#2\|#3\|#4\finish{%
+\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\def\oddheading{\parsearg\oddheadingxxx}
+\def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish}
+\def\oddheadingyyy #1\|#2\|#3\|#4\finish{%
+\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}%
+
+\def\evenfooting{\parsearg\evenfootingxxx}
+\def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish}
+\def\evenfootingyyy #1\|#2\|#3\|#4\finish{%
+\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\def\oddfooting{\parsearg\oddfootingxxx}
+\def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish}
+\def\oddfootingyyy #1\|#2\|#3\|#4\finish{%
+  \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}%
+  %
+  % Leave some space for the footline.  Hopefully ok to assume
+  % @evenfooting will not be used by itself.
+  \global\advance\pageheight by -12pt
+  \global\advance\vsize by -12pt
+}
+
+\parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}}
+
+% @evenheadingmarks top     \thischapter <- chapter at the top of a page
+% @evenheadingmarks bottom  \thischapter <- chapter at the bottom of a page
+%
+% The same set of arguments for:
+%
+% @oddheadingmarks
+% @evenfootingmarks
+% @oddfootingmarks
+% @everyheadingmarks
+% @everyfootingmarks
+
+\def\evenheadingmarks{\headingmarks{even}{heading}}
+\def\oddheadingmarks{\headingmarks{odd}{heading}}
+\def\evenfootingmarks{\headingmarks{even}{footing}}
+\def\oddfootingmarks{\headingmarks{odd}{footing}}
+\def\everyheadingmarks#1 {\headingmarks{even}{heading}{#1}
+                          \headingmarks{odd}{heading}{#1} }
+\def\everyfootingmarks#1 {\headingmarks{even}{footing}{#1}
+                          \headingmarks{odd}{footing}{#1} }
+% #1 = even/odd, #2 = heading/footing, #3 = top/bottom.
+\def\headingmarks#1#2#3 {%
+  \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname
+  \global\expandafter\let\csname get#1#2marks\endcsname \temp
+}
+
+\everyheadingmarks bottom
+\everyfootingmarks bottom
+
+% @headings double      turns headings on for double-sided printing.
+% @headings single      turns headings on for single-sided printing.
+% @headings off         turns them off.
+% @headings on          same as @headings double, retained for compatibility.
+% @headings after       turns on double-sided headings after this page.
+% @headings doubleafter turns on double-sided headings after this page.
+% @headings singleafter turns on single-sided headings after this page.
+% By default, they are off at the start of a document,
+% and turned `on' after @end titlepage.
+
+\def\headings #1 {\csname HEADINGS#1\endcsname}
+
+\def\HEADINGSoff{%
+\global\evenheadline={\hfil} \global\evenfootline={\hfil}
+\global\oddheadline={\hfil} \global\oddfootline={\hfil}}
+\HEADINGSoff
+% When we turn headings on, set the page number to 1.
+% For double-sided printing, put current file name in lower left corner,
+% chapter name on inside top of right hand pages, document
+% title on inside top of left hand pages, and page numbers on outside top
+% edge of all pages.
+\def\HEADINGSdouble{%
+\global\pageno=1
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\folio\hfil\thistitle}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chapoddpage
+}
+\let\contentsalignmacro = \chappager
+
+% For single-sided printing, chapter title goes across top left of page,
+% page number on top right.
+\def\HEADINGSsingle{%
+\global\pageno=1
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\thischapter\hfil\folio}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chappager
+}
+\def\HEADINGSon{\HEADINGSdouble}
+
+\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex}
+\let\HEADINGSdoubleafter=\HEADINGSafter
+\def\HEADINGSdoublex{%
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\folio\hfil\thistitle}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chapoddpage
+}
+
+\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}
+\def\HEADINGSsinglex{%
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\thischapter\hfil\folio}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chappager
+}
+
+% Subroutines used in generating headings
+% This produces Day Month Year style of output.
+% Only define if not already defined, in case a txi-??.tex file has set
+% up a different format (e.g., txi-cs.tex does this).
+\ifx\today\undefined
+\def\today{%
+  \number\day\space
+  \ifcase\month
+  \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
+  \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug
+  \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
+  \fi
+  \space\number\year}
+\fi
+
+% @settitle line...  specifies the title of the document, for headings.
+% It generates no output of its own.
+\def\thistitle{\putwordNoTitle}
+\def\settitle{\parsearg{\gdef\thistitle}}
+
+
+\message{tables,}
+% Tables -- @table, @ftable, @vtable, @item(x).
+
+% default indentation of table text
+\newdimen\tableindent \tableindent=.8in
+% default indentation of @itemize and @enumerate text
+\newdimen\itemindent  \itemindent=.3in
+% margin between end of table item and start of table text.
+\newdimen\itemmargin  \itemmargin=.1in
+
+% used internally for \itemindent minus \itemmargin
+\newdimen\itemmax
+
+% Note @table, @ftable, and @vtable define @item, @itemx, etc., with
+% these defs.
+% They also define \itemindex
+% to index the item name in whatever manner is desired (perhaps none).
+
+\newif\ifitemxneedsnegativevskip
+
+\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi}
+
+\def\internalBitem{\smallbreak \parsearg\itemzzz}
+\def\internalBitemx{\itemxpar \parsearg\itemzzz}
+
+\def\itemzzz #1{\begingroup %
+  \advance\hsize by -\rightskip
+  \advance\hsize by -\tableindent
+  \setbox0=\hbox{\itemindicate{#1}}%
+  \itemindex{#1}%
+  \nobreak % This prevents a break before @itemx.
+  %
+  % If the item text does not fit in the space we have, put it on a line
+  % by itself, and do not allow a page break either before or after that
+  % line.  We do not start a paragraph here because then if the next
+  % command is, e.g., @kindex, the whatsit would get put into the
+  % horizontal list on a line by itself, resulting in extra blank space.
+  \ifdim \wd0>\itemmax
+    %
+    % Make this a paragraph so we get the \parskip glue and wrapping,
+    % but leave it ragged-right.
+    \begingroup
+      \advance\leftskip by-\tableindent
+      \advance\hsize by\tableindent
+      \advance\rightskip by0pt plus1fil
+      \leavevmode\unhbox0\par
+    \endgroup
+    %
+    % We're going to be starting a paragraph, but we don't want the
+    % \parskip glue -- logically it's part of the @item we just started.
+    \nobreak \vskip-\parskip
+    %
+    % Stop a page break at the \parskip glue coming up.  However, if
+    % what follows is an environment such as @example, there will be no
+    % \parskip glue; then the negative vskip we just inserted would
+    % cause the example and the item to crash together.  So we use this
+    % bizarre value of 10001 as a signal to \aboveenvbreak to insert
+    % \parskip glue after all.  Section titles are handled this way also.
+    % 
+    \penalty 10001
+    \endgroup
+    \itemxneedsnegativevskipfalse
+  \else
+    % The item text fits into the space.  Start a paragraph, so that the
+    % following text (if any) will end up on the same line.
+    \noindent
+    % Do this with kerns and \unhbox so that if there is a footnote in
+    % the item text, it can migrate to the main vertical list and
+    % eventually be printed.
+    \nobreak\kern-\tableindent
+    \dimen0 = \itemmax  \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0
+    \unhbox0
+    \nobreak\kern\dimen0
+    \endgroup
+    \itemxneedsnegativevskiptrue
+  \fi
+}
+
+\def\item{\errmessage{@item while not in a list environment}}
+\def\itemx{\errmessage{@itemx while not in a list environment}}
+
+% @table, @ftable, @vtable.
+\envdef\table{%
+  \let\itemindex\gobble
+  \tablecheck{table}%
+}
+\envdef\ftable{%
+  \def\itemindex ##1{\doind {fn}{\code{##1}}}%
+  \tablecheck{ftable}%
+}
+\envdef\vtable{%
+  \def\itemindex ##1{\doind {vr}{\code{##1}}}%
+  \tablecheck{vtable}%
+}
+\def\tablecheck#1{%
+  \ifnum \the\catcode`\^^M=\active
+    \endgroup
+    \errmessage{This command won't work in this context; perhaps the problem is
+      that we are \inenvironment\thisenv}%
+    \def\next{\doignore{#1}}%
+  \else
+    \let\next\tablex
+  \fi
+  \next
+}
+\def\tablex#1{%
+  \def\itemindicate{#1}%
+  \parsearg\tabley
+}
+\def\tabley#1{%
+  {%
+    \makevalueexpandable
+    \edef\temp{\noexpand\tablez #1\space\space\space}%
+    \expandafter
+  }\temp \endtablez
+}
+\def\tablez #1 #2 #3 #4\endtablez{%
+  \aboveenvbreak
+  \ifnum 0#1>0 \advance \leftskip by #1\mil \fi
+  \ifnum 0#2>0 \tableindent=#2\mil \fi
+  \ifnum 0#3>0 \advance \rightskip by #3\mil \fi
+  \itemmax=\tableindent
+  \advance \itemmax by -\itemmargin
+  \advance \leftskip by \tableindent
+  \exdentamount=\tableindent
+  \parindent = 0pt
+  \parskip = \smallskipamount
+  \ifdim \parskip=0pt \parskip=2pt \fi
+  \let\item = \internalBitem
+  \let\itemx = \internalBitemx
+}
+\def\Etable{\endgraf\afterenvbreak}
+\let\Eftable\Etable
+\let\Evtable\Etable
+\let\Eitemize\Etable
+\let\Eenumerate\Etable
+
+% This is the counter used by @enumerate, which is really @itemize
+
+\newcount \itemno
+
+\envdef\itemize{\parsearg\doitemize}
+
+\def\doitemize#1{%
+  \aboveenvbreak
+  \itemmax=\itemindent
+  \advance\itemmax by -\itemmargin
+  \advance\leftskip by \itemindent
+  \exdentamount=\itemindent
+  \parindent=0pt
+  \parskip=\smallskipamount
+  \ifdim\parskip=0pt \parskip=2pt \fi
+  \def\itemcontents{#1}%
+  % @itemize with no arg is equivalent to @itemize @bullet.
+  \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi
+  \let\item=\itemizeitem
+}
+
+% Definition of @item while inside @itemize and @enumerate.
+%
+\def\itemizeitem{%
+  \advance\itemno by 1  % for enumerations
+  {\let\par=\endgraf \smallbreak}% reasonable place to break
+  {%
+   % If the document has an @itemize directly after a section title, a
+   % \nobreak will be last on the list, and \sectionheading will have
+   % done a \vskip-\parskip.  In that case, we don't want to zero
+   % parskip, or the item text will crash with the heading.  On the
+   % other hand, when there is normal text preceding the item (as there
+   % usually is), we do want to zero parskip, or there would be too much
+   % space.  In that case, we won't have a \nobreak before.  At least
+   % that's the theory.
+   \ifnum\lastpenalty<10000 \parskip=0in \fi
+   \noindent
+   \hbox to 0pt{\hss \itemcontents \kern\itemmargin}%
+   \vadjust{\penalty 1200}}% not good to break after first line of item.
+  \flushcr
+}
+
+% \splitoff TOKENS\endmark defines \first to be the first token in
+% TOKENS, and \rest to be the remainder.
+%
+\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}%
+
+% Allow an optional argument of an uppercase letter, lowercase letter,
+% or number, to specify the first label in the enumerated list.  No
+% argument is the same as `1'.
+%
+\envparseargdef\enumerate{\enumeratey #1  \endenumeratey}
+\def\enumeratey #1 #2\endenumeratey{%
+  % If we were given no argument, pretend we were given `1'.
+  \def\thearg{#1}%
+  \ifx\thearg\empty \def\thearg{1}\fi
+  %
+  % Detect if the argument is a single token.  If so, it might be a
+  % letter.  Otherwise, the only valid thing it can be is a number.
+  % (We will always have one token, because of the test we just made.
+  % This is a good thing, since \splitoff doesn't work given nothing at
+  % all -- the first parameter is undelimited.)
+  \expandafter\splitoff\thearg\endmark
+  \ifx\rest\empty
+    % Only one token in the argument.  It could still be anything.
+    % A ``lowercase letter'' is one whose \lccode is nonzero.
+    % An ``uppercase letter'' is one whose \lccode is both nonzero, and
+    %   not equal to itself.
+    % Otherwise, we assume it's a number.
+    %
+    % We need the \relax at the end of the \ifnum lines to stop TeX from
+    % continuing to look for a <number>.
+    %
+    \ifnum\lccode\expandafter`\thearg=0\relax
+      \numericenumerate % a number (we hope)
+    \else
+      % It's a letter.
+      \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax
+        \lowercaseenumerate % lowercase letter
+      \else
+        \uppercaseenumerate % uppercase letter
+      \fi
+    \fi
+  \else
+    % Multiple tokens in the argument.  We hope it's a number.
+    \numericenumerate
+  \fi
+}
+
+% An @enumerate whose labels are integers.  The starting integer is
+% given in \thearg.
+%
+\def\numericenumerate{%
+  \itemno = \thearg
+  \startenumeration{\the\itemno}%
+}
+
+% The starting (lowercase) letter is in \thearg.
+\def\lowercaseenumerate{%
+  \itemno = \expandafter`\thearg
+  \startenumeration{%
+    % Be sure we're not beyond the end of the alphabet.
+    \ifnum\itemno=0
+      \errmessage{No more lowercase letters in @enumerate; get a bigger
+                  alphabet}%
+    \fi
+    \char\lccode\itemno
+  }%
+}
+
+% The starting (uppercase) letter is in \thearg.
+\def\uppercaseenumerate{%
+  \itemno = \expandafter`\thearg
+  \startenumeration{%
+    % Be sure we're not beyond the end of the alphabet.
+    \ifnum\itemno=0
+      \errmessage{No more uppercase letters in @enumerate; get a bigger
+                  alphabet}
+    \fi
+    \char\uccode\itemno
+  }%
+}
+
+% Call \doitemize, adding a period to the first argument and supplying the
+% common last two arguments.  Also subtract one from the initial value in
+% \itemno, since @item increments \itemno.
+%
+\def\startenumeration#1{%
+  \advance\itemno by -1
+  \doitemize{#1.}\flushcr
+}
+
+% @alphaenumerate and @capsenumerate are abbreviations for giving an arg
+% to @enumerate.
+%
+\def\alphaenumerate{\enumerate{a}}
+\def\capsenumerate{\enumerate{A}}
+\def\Ealphaenumerate{\Eenumerate}
+\def\Ecapsenumerate{\Eenumerate}
+
+
+% @multitable macros
+% Amy Hendrickson, 8/18/94, 3/6/96
+%
+% @multitable ... @end multitable will make as many columns as desired.
+% Contents of each column will wrap at width given in preamble.  Width
+% can be specified either with sample text given in a template line,
+% or in percent of \hsize, the current width of text on page.
+
+% Table can continue over pages but will only break between lines.
+
+% To make preamble:
+%
+% Either define widths of columns in terms of percent of \hsize:
+%   @multitable @columnfractions .25 .3 .45
+%   @item ...
+%
+%   Numbers following @columnfractions are the percent of the total
+%   current hsize to be used for each column. You may use as many
+%   columns as desired.
+
+
+% Or use a template:
+%   @multitable {Column 1 template} {Column 2 template} {Column 3 template}
+%   @item ...
+%   using the widest term desired in each column.
+
+% Each new table line starts with @item, each subsequent new column
+% starts with @tab. Empty columns may be produced by supplying @tab's
+% with nothing between them for as many times as empty columns are needed,
+% ie, @tab@tab@tab will produce two empty columns.
+
+% @item, @tab do not need to be on their own lines, but it will not hurt
+% if they are.
+
+% Sample multitable:
+
+%   @multitable {Column 1 template} {Column 2 template} {Column 3 template}
+%   @item first col stuff @tab second col stuff @tab third col
+%   @item
+%   first col stuff
+%   @tab
+%   second col stuff
+%   @tab
+%   third col
+%   @item first col stuff @tab second col stuff
+%   @tab Many paragraphs of text may be used in any column.
+%
+%         They will wrap at the width determined by the template.
+%   @item@tab@tab This will be in third column.
+%   @end multitable
+
+% Default dimensions may be reset by user.
+% @multitableparskip is vertical space between paragraphs in table.
+% @multitableparindent is paragraph indent in table.
+% @multitablecolmargin is horizontal space to be left between columns.
+% @multitablelinespace is space to leave between table items, baseline
+%                                                            to baseline.
+%   0pt means it depends on current normal line spacing.
+%
+\newskip\multitableparskip
+\newskip\multitableparindent
+\newdimen\multitablecolspace
+\newskip\multitablelinespace
+\multitableparskip=0pt
+\multitableparindent=6pt
+\multitablecolspace=12pt
+\multitablelinespace=0pt
+
+% Macros used to set up halign preamble:
+%
+\let\endsetuptable\relax
+\def\xendsetuptable{\endsetuptable}
+\let\columnfractions\relax
+\def\xcolumnfractions{\columnfractions}
+\newif\ifsetpercent
+
+% #1 is the @columnfraction, usually a decimal number like .5, but might
+% be just 1.  We just use it, whatever it is.
+%
+\def\pickupwholefraction#1 {%
+  \global\advance\colcount by 1
+  \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}%
+  \setuptable
+}
+
+\newcount\colcount
+\def\setuptable#1{%
+  \def\firstarg{#1}%
+  \ifx\firstarg\xendsetuptable
+    \let\go = \relax
+  \else
+    \ifx\firstarg\xcolumnfractions
+      \global\setpercenttrue
+    \else
+      \ifsetpercent
+         \let\go\pickupwholefraction
+      \else
+         \global\advance\colcount by 1
+         \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a
+                   % separator; typically that is always in the input, anyway.
+         \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}%
+      \fi
+    \fi
+    \ifx\go\pickupwholefraction
+      % Put the argument back for the \pickupwholefraction call, so
+      % we'll always have a period there to be parsed.
+      \def\go{\pickupwholefraction#1}%
+    \else
+      \let\go = \setuptable
+    \fi%
+  \fi
+  \go
+}
+
+% multitable-only commands.
+%
+% @headitem starts a heading row, which we typeset in bold.
+% Assignments have to be global since we are inside the implicit group
+% of an alignment entry.  Note that \everycr resets \everytab.
+\def\headitem{\checkenv\multitable \crcr \global\everytab={\bf}\the\everytab}%
+%
+% A \tab used to include \hskip1sp.  But then the space in a template
+% line is not enough.  That is bad.  So let's go back to just `&' until
+% we encounter the problem it was intended to solve again.
+%                                      --karl, nathan@acm.org, 20apr99.
+\def\tab{\checkenv\multitable &\the\everytab}%
+
+% @multitable ... @end multitable definitions:
+%
+\newtoks\everytab  % insert after every tab.
+%
+\envdef\multitable{%
+  \vskip\parskip
+  \startsavinginserts
+  %
+  % @item within a multitable starts a normal row.
+  % We use \def instead of \let so that if one of the multitable entries
+  % contains an @itemize, we don't choke on the \item (seen as \crcr aka
+  % \endtemplate) expanding \doitemize.
+  \def\item{\crcr}%
+  %
+  \tolerance=9500
+  \hbadness=9500
+  \setmultitablespacing
+  \parskip=\multitableparskip
+  \parindent=\multitableparindent
+  \overfullrule=0pt
+  \global\colcount=0
+  %
+  \everycr = {%
+    \noalign{%
+      \global\everytab={}%
+      \global\colcount=0 % Reset the column counter.
+      % Check for saved footnotes, etc.
+      \checkinserts
+      % Keeps underfull box messages off when table breaks over pages.
+      %\filbreak
+       % Maybe so, but it also creates really weird page breaks when the
+       % table breaks over pages. Wouldn't \vfil be better?  Wait until the
+       % problem manifests itself, so it can be fixed for real --karl.
+    }%
+  }%
+  %
+  \parsearg\domultitable
+}
+\def\domultitable#1{%
+  % To parse everything between @multitable and @item:
+  \setuptable#1 \endsetuptable
+  %
+  % This preamble sets up a generic column definition, which will
+  % be used as many times as user calls for columns.
+  % \vtop will set a single line and will also let text wrap and
+  % continue for many paragraphs if desired.
+  \halign\bgroup &%
+    \global\advance\colcount by 1
+    \multistrut
+    \vtop{%
+      % Use the current \colcount to find the correct column width:
+      \hsize=\expandafter\csname col\the\colcount\endcsname
+      %
+      % In order to keep entries from bumping into each other
+      % we will add a \leftskip of \multitablecolspace to all columns after
+      % the first one.
+      %
+      % If a template has been used, we will add \multitablecolspace
+      % to the width of each template entry.
+      %
+      % If the user has set preamble in terms of percent of \hsize we will
+      % use that dimension as the width of the column, and the \leftskip
+      % will keep entries from bumping into each other.  Table will start at
+      % left margin and final column will justify at right margin.
+      %
+      % Make sure we don't inherit \rightskip from the outer environment.
+      \rightskip=0pt
+      \ifnum\colcount=1
+       % The first column will be indented with the surrounding text.
+       \advance\hsize by\leftskip
+      \else
+       \ifsetpercent \else
+         % If user has not set preamble in terms of percent of \hsize
+         % we will advance \hsize by \multitablecolspace.
+         \advance\hsize by \multitablecolspace
+       \fi
+       % In either case we will make \leftskip=\multitablecolspace:
+      \leftskip=\multitablecolspace
+      \fi
+      % Ignoring space at the beginning and end avoids an occasional spurious
+      % blank line, when TeX decides to break the line at the space before the
+      % box from the multistrut, so the strut ends up on a line by itself.
+      % For example:
+      % @multitable @columnfractions .11 .89
+      % @item @code{#}
+      % @tab Legal holiday which is valid in major parts of the whole country.
+      % Is automatically provided with highlighting sequences respectively
+      % marking characters.
+      \noindent\ignorespaces##\unskip\multistrut
+    }\cr
+}
+\def\Emultitable{%
+  \crcr
+  \egroup % end the \halign
+  \global\setpercentfalse
+}
+
+\def\setmultitablespacing{%
+  \def\multistrut{\strut}% just use the standard line spacing
+  %
+  % Compute \multitablelinespace (if not defined by user) for use in
+  % \multitableparskip calculation.  We used define \multistrut based on
+  % this, but (ironically) that caused the spacing to be off.
+  % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100.
+\ifdim\multitablelinespace=0pt
+\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip
+\global\advance\multitablelinespace by-\ht0
+\fi
+%% Test to see if parskip is larger than space between lines of
+%% table. If not, do nothing.
+%%        If so, set to same dimension as multitablelinespace.
+\ifdim\multitableparskip>\multitablelinespace
+\global\multitableparskip=\multitablelinespace
+\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
+                                      %% than skip between lines in the table.
+\fi%
+\ifdim\multitableparskip=0pt
+\global\multitableparskip=\multitablelinespace
+\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
+                                      %% than skip between lines in the table.
+\fi}
+
+
+\message{conditionals,}
+
+% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext,
+% @ifnotxml always succeed.  They currently do nothing; we don't
+% attempt to check whether the conditionals are properly nested.  But we
+% have to remember that they are conditionals, so that @end doesn't
+% attempt to close an environment group.
+%
+\def\makecond#1{%
+  \expandafter\let\csname #1\endcsname = \relax
+  \expandafter\let\csname iscond.#1\endcsname = 1
+}
+\makecond{iftex}
+\makecond{ifnotdocbook}
+\makecond{ifnothtml}
+\makecond{ifnotinfo}
+\makecond{ifnotplaintext}
+\makecond{ifnotxml}
+
+% Ignore @ignore, @ifhtml, @ifinfo, and the like.
+%
+\def\direntry{\doignore{direntry}}
+\def\documentdescription{\doignore{documentdescription}}
+\def\docbook{\doignore{docbook}}
+\def\html{\doignore{html}}
+\def\ifdocbook{\doignore{ifdocbook}}
+\def\ifhtml{\doignore{ifhtml}}
+\def\ifinfo{\doignore{ifinfo}}
+\def\ifnottex{\doignore{ifnottex}}
+\def\ifplaintext{\doignore{ifplaintext}}
+\def\ifxml{\doignore{ifxml}}
+\def\ignore{\doignore{ignore}}
+\def\menu{\doignore{menu}}
+\def\xml{\doignore{xml}}
+
+% Ignore text until a line `@end #1', keeping track of nested conditionals.
+%
+% A count to remember the depth of nesting.
+\newcount\doignorecount
+
+\def\doignore#1{\begingroup
+  % Scan in ``verbatim'' mode:
+  \obeylines
+  \catcode`\@ = \other
+  \catcode`\{ = \other
+  \catcode`\} = \other
+  %
+  % Make sure that spaces turn into tokens that match what \doignoretext wants.
+  \spaceisspace
+  %
+  % Count number of #1's that we've seen.
+  \doignorecount = 0
+  %
+  % Swallow text until we reach the matching `@end #1'.
+  \dodoignore{#1}%
+}
+
+{ \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source.
+  \obeylines %
+  %
+  \gdef\dodoignore#1{%
+    % #1 contains the command name as a string, e.g., `ifinfo'.
+    %
+    % Define a command to find the next `@end #1'.
+    \long\def\doignoretext##1^^M@end #1{%
+      \doignoretextyyy##1^^M@#1\_STOP_}%
+    %
+    % And this command to find another #1 command, at the beginning of a
+    % line.  (Otherwise, we would consider a line `@c @ifset', for
+    % example, to count as an @ifset for nesting.)
+    \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}%
+    %
+    % And now expand that command.
+    \doignoretext ^^M%
+  }%
+}
+
+\def\doignoreyyy#1{%
+  \def\temp{#1}%
+  \ifx\temp\empty                      % Nothing found.
+    \let\next\doignoretextzzz
+  \else                                        % Found a nested condition, ...
+    \advance\doignorecount by 1
+    \let\next\doignoretextyyy          % ..., look for another.
+    % If we're here, #1 ends with ^^M\ifinfo (for example).
+  \fi
+  \next #1% the token \_STOP_ is present just after this macro.
+}
+
+% We have to swallow the remaining "\_STOP_".
+%
+\def\doignoretextzzz#1{%
+  \ifnum\doignorecount = 0     % We have just found the outermost @end.
+    \let\next\enddoignore
+  \else                                % Still inside a nested condition.
+    \advance\doignorecount by -1
+    \let\next\doignoretext      % Look for the next @end.
+  \fi
+  \next
+}
+
+% Finish off ignored text.
+{ \obeylines%
+  % Ignore anything after the last `@end #1'; this matters in verbatim
+  % environments, where otherwise the newline after an ignored conditional
+  % would result in a blank line in the output.
+  \gdef\enddoignore#1^^M{\endgroup\ignorespaces}%
+}
+
+
+% @set VAR sets the variable VAR to an empty value.
+% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE.
+%
+% Since we want to separate VAR from REST-OF-LINE (which might be
+% empty), we can't just use \parsearg; we have to insert a space of our
+% own to delimit the rest of the line, and then take it out again if we
+% didn't need it.
+% We rely on the fact that \parsearg sets \catcode`\ =10.
+%
+\parseargdef\set{\setyyy#1 \endsetyyy}
+\def\setyyy#1 #2\endsetyyy{%
+  {%
+    \makevalueexpandable
+    \def\temp{#2}%
+    \edef\next{\gdef\makecsname{SET#1}}%
+    \ifx\temp\empty
+      \next{}%
+    \else
+      \setzzz#2\endsetzzz
+    \fi
+  }%
+}
+% Remove the trailing space \setxxx inserted.
+\def\setzzz#1 \endsetzzz{\next{#1}}
+
+% @clear VAR clears (i.e., unsets) the variable VAR.
+%
+\parseargdef\clear{%
+  {%
+    \makevalueexpandable
+    \global\expandafter\let\csname SET#1\endcsname=\relax
+  }%
+}
+
+% @value{foo} gets the text saved in variable foo.
+\def\value{\begingroup\makevalueexpandable\valuexxx}
+\def\valuexxx#1{\expandablevalue{#1}\endgroup}
+{
+  \catcode`\- = \active \catcode`\_ = \active
+  %
+  \gdef\makevalueexpandable{%
+    \let\value = \expandablevalue
+    % We don't want these characters active, ...
+    \catcode`\-=\other \catcode`\_=\other
+    % ..., but we might end up with active ones in the argument if
+    % we're called from @code, as @code{@value{foo-bar_}}, though.
+    % So \let them to their normal equivalents.
+    \let-\realdash \let_\normalunderscore
+  }
+}
+
+% We have this subroutine so that we can handle at least some @value's
+% properly in indexes (we call \makevalueexpandable in \indexdummies).
+% The command has to be fully expandable (if the variable is set), since
+% the result winds up in the index file.  This means that if the
+% variable's value contains other Texinfo commands, it's almost certain
+% it will fail (although perhaps we could fix that with sufficient work
+% to do a one-level expansion on the result, instead of complete).
+%
+\def\expandablevalue#1{%
+  \expandafter\ifx\csname SET#1\endcsname\relax
+    {[No value for ``#1'']}%
+    \message{Variable `#1', used in @value, is not set.}%
+  \else
+    \csname SET#1\endcsname
+  \fi
+}
+
+% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
+% with @set.
+%
+% To get special treatment of `@end ifset,' call \makeond and the redefine.
+%
+\makecond{ifset}
+\def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}}
+\def\doifset#1#2{%
+  {%
+    \makevalueexpandable
+    \let\next=\empty
+    \expandafter\ifx\csname SET#2\endcsname\relax
+      #1% If not set, redefine \next.
+    \fi
+    \expandafter
+  }\next
+}
+\def\ifsetfail{\doignore{ifset}}
+
+% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been
+% defined with @set, or has been undefined with @clear.
+%
+% The `\else' inside the `\doifset' parameter is a trick to reuse the
+% above code: if the variable is not set, do nothing, if it is set,
+% then redefine \next to \ifclearfail.
+%
+\makecond{ifclear}
+\def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}}
+\def\ifclearfail{\doignore{ifclear}}
+
+% @dircategory CATEGORY  -- specify a category of the dir file
+% which this file should belong to.  Ignore this in TeX.
+\let\dircategory=\comment
+
+% @defininfoenclose.
+\let\definfoenclose=\comment
+
+
+\message{indexing,}
+% Index generation facilities
+
+% Define \newwrite to be identical to plain tex's \newwrite
+% except not \outer, so it can be used within macros and \if's.
+\edef\newwrite{\makecsname{ptexnewwrite}}
+
+% \newindex {foo} defines an index named foo.
+% It automatically defines \fooindex such that
+% \fooindex ...rest of line... puts an entry in the index foo.
+% It also defines \fooindfile to be the number of the output channel for
+% the file that accumulates this index.  The file's extension is foo.
+% The name of an index should be no more than 2 characters long
+% for the sake of vms.
+%
+\def\newindex#1{%
+  \iflinks
+    \expandafter\newwrite \csname#1indfile\endcsname
+    \openout \csname#1indfile\endcsname \jobname.#1 % Open the file
+  \fi
+  \expandafter\xdef\csname#1index\endcsname{%     % Define @#1index
+    \noexpand\doindex{#1}}
+}
+
+% @defindex foo  ==  \newindex{foo}
+%
+\def\defindex{\parsearg\newindex}
+
+% Define @defcodeindex, like @defindex except put all entries in @code.
+%
+\def\defcodeindex{\parsearg\newcodeindex}
+%
+\def\newcodeindex#1{%
+  \iflinks
+    \expandafter\newwrite \csname#1indfile\endcsname
+    \openout \csname#1indfile\endcsname \jobname.#1
+  \fi
+  \expandafter\xdef\csname#1index\endcsname{%
+    \noexpand\docodeindex{#1}}%
+}
+
+
+% @synindex foo bar    makes index foo feed into index bar.
+% Do this instead of @defindex foo if you don't want it as a separate index.
+%
+% @syncodeindex foo bar   similar, but put all entries made for index foo
+% inside @code.
+%
+\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}}
+\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}}
+
+% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo),
+% #3 the target index (bar).
+\def\dosynindex#1#2#3{%
+  % Only do \closeout if we haven't already done it, else we'll end up
+  % closing the target index.
+  \expandafter \ifx\csname donesynindex#2\endcsname \relax
+    % The \closeout helps reduce unnecessary open files; the limit on the
+    % Acorn RISC OS is a mere 16 files.
+    \expandafter\closeout\csname#2indfile\endcsname
+    \expandafter\let\csname donesynindex#2\endcsname = 1
+  \fi
+  % redefine \fooindfile:
+  \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname
+  \expandafter\let\csname#2indfile\endcsname=\temp
+  % redefine \fooindex:
+  \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}%
+}
+
+% Define \doindex, the driver for all \fooindex macros.
+% Argument #1 is generated by the calling \fooindex macro,
+%  and it is "foo", the name of the index.
+
+% \doindex just uses \parsearg; it calls \doind for the actual work.
+% This is because \doind is more useful to call from other macros.
+
+% There is also \dosubind {index}{topic}{subtopic}
+% which makes an entry in a two-level index such as the operation index.
+
+\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer}
+\def\singleindexer #1{\doind{\indexname}{#1}}
+
+% like the previous two, but they put @code around the argument.
+\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}
+\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
+
+% Take care of Texinfo commands that can appear in an index entry.
+% Since there are some commands we want to expand, and others we don't,
+% we have to laboriously prevent expansion for those that we don't.
+%
+\def\indexdummies{%
+  \escapechar = `\\     % use backslash in output files.
+  \def\@{@}% change to @@ when we switch to @ as escape char in index files.
+  \def\ {\realbackslash\space }%
+  %
+  % Need these in case \tex is in effect and \{ is a \delimiter again.
+  % But can't use \lbracecmd and \rbracecmd because texindex assumes
+  % braces and backslashes are used only as delimiters.
+  \let\{ = \mylbrace
+  \let\} = \myrbrace
+  %
+  % I don't entirely understand this, but when an index entry is
+  % generated from a macro call, the \endinput which \scanmacro inserts
+  % causes processing to be prematurely terminated.  This is,
+  % apparently, because \indexsorttmp is fully expanded, and \endinput
+  % is an expandable command.  The redefinition below makes \endinput
+  % disappear altogether for that purpose -- although logging shows that
+  % processing continues to some further point.  On the other hand, it
+  % seems \endinput does not hurt in the printed index arg, since that
+  % is still getting written without apparent harm.
+  % 
+  % Sample source (mac-idx3.tex, reported by Graham Percival to
+  % help-texinfo, 22may06):
+  % @macro funindex {WORD}
+  % @findex xyz
+  % @end macro
+  % ...
+  % @funindex commtest
+  % 
+  % The above is not enough to reproduce the bug, but it gives the flavor.
+  % 
+  % Sample whatsit resulting:
+  % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}}
+  % 
+  % So:
+  \let\endinput = \empty
+  %
+  % Do the redefinitions.
+  \commondummies
+}
+
+% For the aux and toc files, @ is the escape character.  So we want to
+% redefine everything using @ as the escape character (instead of
+% \realbackslash, still used for index files).  When everything uses @,
+% this will be simpler.
+%
+\def\atdummies{%
+  \def\@{@@}%
+  \def\ {@ }%
+  \let\{ = \lbraceatcmd
+  \let\} = \rbraceatcmd
+  %
+  % Do the redefinitions.
+  \commondummies
+  \otherbackslash
+}
+
+% Called from \indexdummies and \atdummies.
+%
+\def\commondummies{%
+  %
+  % \definedummyword defines \#1 as \string\#1\space, thus effectively
+  % preventing its expansion.  This is used only for control% words,
+  % not control letters, because the \space would be incorrect for
+  % control characters, but is needed to separate the control word
+  % from whatever follows.
+  %
+  % For control letters, we have \definedummyletter, which omits the
+  % space.
+  %
+  % These can be used both for control words that take an argument and
+  % those that do not.  If it is followed by {arg} in the input, then
+  % that will dutifully get written to the index (or wherever).
+  %
+  \def\definedummyword  ##1{\def##1{\string##1\space}}%
+  \def\definedummyletter##1{\def##1{\string##1}}%
+  \let\definedummyaccent\definedummyletter
+  %
+  \commondummiesnofonts
+  %
+  \definedummyletter\_%
+  %
+  % Non-English letters.
+  \definedummyword\AA
+  \definedummyword\AE
+  \definedummyword\L
+  \definedummyword\OE
+  \definedummyword\O
+  \definedummyword\aa
+  \definedummyword\ae
+  \definedummyword\l
+  \definedummyword\oe
+  \definedummyword\o
+  \definedummyword\ss
+  \definedummyword\exclamdown
+  \definedummyword\questiondown
+  \definedummyword\ordf
+  \definedummyword\ordm
+  %
+  % Although these internal commands shouldn't show up, sometimes they do.
+  \definedummyword\bf
+  \definedummyword\gtr
+  \definedummyword\hat
+  \definedummyword\less
+  \definedummyword\sf
+  \definedummyword\sl
+  \definedummyword\tclose
+  \definedummyword\tt
+  %
+  \definedummyword\LaTeX
+  \definedummyword\TeX
+  %
+  % Assorted special characters.
+  \definedummyword\bullet
+  \definedummyword\comma
+  \definedummyword\copyright
+  \definedummyword\registeredsymbol
+  \definedummyword\dots
+  \definedummyword\enddots
+  \definedummyword\equiv
+  \definedummyword\error
+  \definedummyword\euro
+  \definedummyword\guillemetleft
+  \definedummyword\guillemetright
+  \definedummyword\guilsinglleft
+  \definedummyword\guilsinglright
+  \definedummyword\expansion
+  \definedummyword\minus
+  \definedummyword\ogonek
+  \definedummyword\pounds
+  \definedummyword\point
+  \definedummyword\print
+  \definedummyword\quotedblbase
+  \definedummyword\quotedblleft
+  \definedummyword\quotedblright
+  \definedummyword\quoteleft
+  \definedummyword\quoteright
+  \definedummyword\quotesinglbase
+  \definedummyword\result
+  \definedummyword\textdegree
+  %
+  % We want to disable all macros so that they are not expanded by \write.
+  \macrolist
+  %
+  \normalturnoffactive
+  %
+  % Handle some cases of @value -- where it does not contain any
+  % (non-fully-expandable) commands.
+  \makevalueexpandable
+}
+
+% \commondummiesnofonts: common to \commondummies and \indexnofonts.
+%
+\def\commondummiesnofonts{%
+  % Control letters and accents.
+  \definedummyletter\!%
+  \definedummyaccent\"%
+  \definedummyaccent\'%
+  \definedummyletter\*%
+  \definedummyaccent\,%
+  \definedummyletter\.%
+  \definedummyletter\/%
+  \definedummyletter\:%
+  \definedummyaccent\=%
+  \definedummyletter\?%
+  \definedummyaccent\^%
+  \definedummyaccent\`%
+  \definedummyaccent\~%
+  \definedummyword\u
+  \definedummyword\v
+  \definedummyword\H
+  \definedummyword\dotaccent
+  \definedummyword\ogonek
+  \definedummyword\ringaccent
+  \definedummyword\tieaccent
+  \definedummyword\ubaraccent
+  \definedummyword\udotaccent
+  \definedummyword\dotless
+  %
+  % Texinfo font commands.
+  \definedummyword\b
+  \definedummyword\i
+  \definedummyword\r
+  \definedummyword\sc
+  \definedummyword\t
+  %
+  % Commands that take arguments.
+  \definedummyword\acronym
+  \definedummyword\cite
+  \definedummyword\code
+  \definedummyword\command
+  \definedummyword\dfn
+  \definedummyword\emph
+  \definedummyword\env
+  \definedummyword\file
+  \definedummyword\kbd
+  \definedummyword\key
+  \definedummyword\math
+  \definedummyword\option
+  \definedummyword\pxref
+  \definedummyword\ref
+  \definedummyword\samp
+  \definedummyword\strong
+  \definedummyword\tie
+  \definedummyword\uref
+  \definedummyword\url
+  \definedummyword\var
+  \definedummyword\verb
+  \definedummyword\w
+  \definedummyword\xref
+}
+
+% \indexnofonts is used when outputting the strings to sort the index
+% by, and when constructing control sequence names.  It eliminates all
+% control sequences and just writes whatever the best ASCII sort string
+% would be for a given command (usually its argument).
+%
+\def\indexnofonts{%
+  % Accent commands should become @asis.
+  \def\definedummyaccent##1{\let##1\asis}%
+  % We can just ignore other control letters.
+  \def\definedummyletter##1{\let##1\empty}%
+  % Hopefully, all control words can become @asis.
+  \let\definedummyword\definedummyaccent
+  %
+  \commondummiesnofonts
+  %
+  % Don't no-op \tt, since it isn't a user-level command
+  % and is used in the definitions of the active chars like <, >, |, etc.
+  % Likewise with the other plain tex font commands.
+  %\let\tt=\asis
+  %
+  \def\ { }%
+  \def\@{@}%
+  % how to handle braces?
+  \def\_{\normalunderscore}%
+  %
+  % Non-English letters.
+  \def\AA{AA}%
+  \def\AE{AE}%
+  \def\L{L}%
+  \def\OE{OE}%
+  \def\O{O}%
+  \def\aa{aa}%
+  \def\ae{ae}%
+  \def\l{l}%
+  \def\oe{oe}%
+  \def\o{o}%
+  \def\ss{ss}%
+  \def\exclamdown{!}%
+  \def\questiondown{?}%
+  \def\ordf{a}%
+  \def\ordm{o}%
+  %
+  \def\LaTeX{LaTeX}%
+  \def\TeX{TeX}%
+  %
+  % Assorted special characters.
+  % (The following {} will end up in the sort string, but that's ok.)
+  \def\bullet{bullet}%
+  \def\comma{,}%
+  \def\copyright{copyright}%
+  \def\registeredsymbol{R}%
+  \def\dots{...}%
+  \def\enddots{...}%
+  \def\equiv{==}%
+  \def\error{error}%
+  \def\euro{euro}%
+  \def\guillemetleft{<<}%
+  \def\guillemetright{>>}%
+  \def\guilsinglleft{<}%
+  \def\guilsinglright{>}%
+  \def\expansion{==>}%
+  \def\minus{-}%
+  \def\pounds{pounds}%
+  \def\point{.}%
+  \def\print{-|}%
+  \def\quotedblbase{"}%
+  \def\quotedblleft{"}%
+  \def\quotedblright{"}%
+  \def\quoteleft{`}%
+  \def\quoteright{'}%
+  \def\quotesinglbase{,}%
+  \def\result{=>}%
+  \def\textdegree{degrees}%
+  %
+  % We need to get rid of all macros, leaving only the arguments (if present).
+  % Of course this is not nearly correct, but it is the best we can do for now.
+  % makeinfo does not expand macros in the argument to @deffn, which ends up
+  % writing an index entry, and texindex isn't prepared for an index sort entry
+  % that starts with \.
+  % 
+  % Since macro invocations are followed by braces, we can just redefine them
+  % to take a single TeX argument.  The case of a macro invocation that
+  % goes to end-of-line is not handled.
+  % 
+  \macrolist
+}
+
+\let\indexbackslash=0  %overridden during \printindex.
+\let\SETmarginindex=\relax % put index entries in margin (undocumented)?
+
+% Most index entries go through here, but \dosubind is the general case.
+% #1 is the index name, #2 is the entry text.
+\def\doind#1#2{\dosubind{#1}{#2}{}}
+
+% Workhorse for all \fooindexes.
+% #1 is name of index, #2 is stuff to put there, #3 is subentry --
+% empty if called from \doind, as we usually are (the main exception
+% is with most defuns, which call us directly).
+%
+\def\dosubind#1#2#3{%
+  \iflinks
+  {%
+    % Store the main index entry text (including the third arg).
+    \toks0 = {#2}%
+    % If third arg is present, precede it with a space.
+    \def\thirdarg{#3}%
+    \ifx\thirdarg\empty \else
+      \toks0 = \expandafter{\the\toks0 \space #3}%
+    \fi
+    %
+    \edef\writeto{\csname#1indfile\endcsname}%
+    %
+    \safewhatsit\dosubindwrite
+  }%
+  \fi
+}
+
+% Write the entry in \toks0 to the index file:
+%
+\def\dosubindwrite{%
+  % Put the index entry in the margin if desired.
+  \ifx\SETmarginindex\relax\else
+    \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}%
+  \fi
+  %
+  % Remember, we are within a group.
+  \indexdummies % Must do this here, since \bf, etc expand at this stage
+  \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now
+      % so it will be output as is; and it will print as backslash.
+  %
+  % Process the index entry with all font commands turned off, to
+  % get the string to sort by.
+  {\indexnofonts
+   \edef\temp{\the\toks0}% need full expansion
+   \xdef\indexsorttmp{\temp}%
+  }%
+  %
+  % Set up the complete index entry, with both the sort key and
+  % the original text, including any font commands.  We write
+  % three arguments to \entry to the .?? file (four in the
+  % subentry case), texindex reduces to two when writing the .??s
+  % sorted result.
+  \edef\temp{%
+    \write\writeto{%
+      \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}%
+  }%
+  \temp
+}
+
+% Take care of unwanted page breaks/skips around a whatsit:
+%
+% If a skip is the last thing on the list now, preserve it
+% by backing up by \lastskip, doing the \write, then inserting
+% the skip again.  Otherwise, the whatsit generated by the
+% \write or \pdfdest will make \lastskip zero.  The result is that
+% sequences like this:
+% @end defun
+% @tindex whatever
+% @defun ...
+% will have extra space inserted, because the \medbreak in the
+% start of the @defun won't see the skip inserted by the @end of
+% the previous defun.
+%
+% But don't do any of this if we're not in vertical mode.  We
+% don't want to do a \vskip and prematurely end a paragraph.
+%
+% Avoid page breaks due to these extra skips, too.
+%
+% But wait, there is a catch there:
+% We'll have to check whether \lastskip is zero skip.  \ifdim is not
+% sufficient for this purpose, as it ignores stretch and shrink parts
+% of the skip.  The only way seems to be to check the textual
+% representation of the skip.
+%
+% The following is almost like \def\zeroskipmacro{0.0pt} except that
+% the ``p'' and ``t'' characters have catcode \other, not 11 (letter).
+%
+\edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname}
+%
+\newskip\whatsitskip
+\newcount\whatsitpenalty
+%
+% ..., ready, GO:
+%
+\def\safewhatsit#1{%
+\ifhmode
+  #1%
+\else
+  % \lastskip and \lastpenalty cannot both be nonzero simultaneously.
+  \whatsitskip = \lastskip
+  \edef\lastskipmacro{\the\lastskip}%
+  \whatsitpenalty = \lastpenalty
+  %
+  % If \lastskip is nonzero, that means the last item was a
+  % skip.  And since a skip is discardable, that means this
+  % -\whatsitskip glue we're inserting is preceded by a
+  % non-discardable item, therefore it is not a potential
+  % breakpoint, therefore no \nobreak needed.
+  \ifx\lastskipmacro\zeroskipmacro
+  \else
+    \vskip-\whatsitskip
+  \fi
+  %
+  #1%
+  %
+  \ifx\lastskipmacro\zeroskipmacro
+    % If \lastskip was zero, perhaps the last item was a penalty, and
+    % perhaps it was >=10000, e.g., a \nobreak.  In that case, we want
+    % to re-insert the same penalty (values >10000 are used for various
+    % signals); since we just inserted a non-discardable item, any
+    % following glue (such as a \parskip) would be a breakpoint.  For example:
+    % 
+    %   @deffn deffn-whatever
+    %   @vindex index-whatever
+    %   Description.
+    % would allow a break between the index-whatever whatsit
+    % and the "Description." paragraph.
+    \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi
+  \else
+    % On the other hand, if we had a nonzero \lastskip,
+    % this make-up glue would be preceded by a non-discardable item
+    % (the whatsit from the \write), so we must insert a \nobreak.
+    \nobreak\vskip\whatsitskip
+  \fi
+\fi
+}
+
+% The index entry written in the file actually looks like
+%  \entry {sortstring}{page}{topic}
+% or
+%  \entry {sortstring}{page}{topic}{subtopic}
+% The texindex program reads in these files and writes files
+% containing these kinds of lines:
+%  \initial {c}
+%     before the first topic whose initial is c
+%  \entry {topic}{pagelist}
+%     for a topic that is used without subtopics
+%  \primary {topic}
+%     for the beginning of a topic that is used with subtopics
+%  \secondary {subtopic}{pagelist}
+%     for each subtopic.
+
+% Define the user-accessible indexing commands
+% @findex, @vindex, @kindex, @cindex.
+
+\def\findex {\fnindex}
+\def\kindex {\kyindex}
+\def\cindex {\cpindex}
+\def\vindex {\vrindex}
+\def\tindex {\tpindex}
+\def\pindex {\pgindex}
+
+\def\cindexsub {\begingroup\obeylines\cindexsub}
+{\obeylines %
+\gdef\cindexsub "#1" #2^^M{\endgroup %
+\dosubind{cp}{#2}{#1}}}
+
+% Define the macros used in formatting output of the sorted index material.
+
+% @printindex causes a particular index (the ??s file) to get printed.
+% It does not print any chapter heading (usually an @unnumbered).
+%
+\parseargdef\printindex{\begingroup
+  \dobreak \chapheadingskip{10000}%
+  %
+  \smallfonts \rm
+  \tolerance = 9500
+  \plainfrenchspacing
+  \everypar = {}% don't want the \kern\-parindent from indentation suppression.
+  %
+  % See if the index file exists and is nonempty.
+  % Change catcode of @ here so that if the index file contains
+  % \initial {@}
+  % as its first line, TeX doesn't complain about mismatched braces
+  % (because it thinks @} is a control sequence).
+  \catcode`\@ = 11
+  \openin 1 \jobname.#1s
+  \ifeof 1
+    % \enddoublecolumns gets confused if there is no text in the index,
+    % and it loses the chapter title and the aux file entries for the
+    % index.  The easiest way to prevent this problem is to make sure
+    % there is some text.
+    \putwordIndexNonexistent
+  \else
+    %
+    % If the index file exists but is empty, then \openin leaves \ifeof
+    % false.  We have to make TeX try to read something from the file, so
+    % it can discover if there is anything in it.
+    \read 1 to \temp
+    \ifeof 1
+      \putwordIndexIsEmpty
+    \else
+      % Index files are almost Texinfo source, but we use \ as the escape
+      % character.  It would be better to use @, but that's too big a change
+      % to make right now.
+      \def\indexbackslash{\backslashcurfont}%
+      \catcode`\\ = 0
+      \escapechar = `\\
+      \begindoublecolumns
+      \input \jobname.#1s
+      \enddoublecolumns
+    \fi
+  \fi
+  \closein 1
+\endgroup}
+
+% These macros are used by the sorted index file itself.
+% Change them to control the appearance of the index.
+
+\def\initial#1{{%
+  % Some minor font changes for the special characters.
+  \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt
+  %
+  % Remove any glue we may have, we'll be inserting our own.
+  \removelastskip
+  %
+  % We like breaks before the index initials, so insert a bonus.
+  \nobreak
+  \vskip 0pt plus 3\baselineskip
+  \penalty 0
+  \vskip 0pt plus -3\baselineskip
+  %
+  % Typeset the initial.  Making this add up to a whole number of
+  % baselineskips increases the chance of the dots lining up from column
+  % to column.  It still won't often be perfect, because of the stretch
+  % we need before each entry, but it's better.
+  %
+  % No shrink because it confuses \balancecolumns.
+  \vskip 1.67\baselineskip plus .5\baselineskip
+  \leftline{\secbf #1}%
+  % Do our best not to break after the initial.
+  \nobreak
+  \vskip .33\baselineskip plus .1\baselineskip
+}}
+
+% \entry typesets a paragraph consisting of the text (#1), dot leaders, and
+% then page number (#2) flushed to the right margin.  It is used for index
+% and table of contents entries.  The paragraph is indented by \leftskip.
+%
+% A straightforward implementation would start like this:
+%      \def\entry#1#2{...
+% But this freezes the catcodes in the argument, and can cause problems to
+% @code, which sets - active.  This problem was fixed by a kludge---
+% ``-'' was active throughout whole index, but this isn't really right.
+%
+% The right solution is to prevent \entry from swallowing the whole text.
+%                                 --kasal, 21nov03
+\def\entry{%
+  \begingroup
+    %
+    % Start a new paragraph if necessary, so our assignments below can't
+    % affect previous text.
+    \par
+    %
+    % Do not fill out the last line with white space.
+    \parfillskip = 0in
+    %
+    % No extra space above this paragraph.
+    \parskip = 0in
+    %
+    % Do not prefer a separate line ending with a hyphen to fewer lines.
+    \finalhyphendemerits = 0
+    %
+    % \hangindent is only relevant when the entry text and page number
+    % don't both fit on one line.  In that case, bob suggests starting the
+    % dots pretty far over on the line.  Unfortunately, a large
+    % indentation looks wrong when the entry text itself is broken across
+    % lines.  So we use a small indentation and put up with long leaders.
+    %
+    % \hangafter is reset to 1 (which is the value we want) at the start
+    % of each paragraph, so we need not do anything with that.
+    \hangindent = 2em
+    %
+    % When the entry text needs to be broken, just fill out the first line
+    % with blank space.
+    \rightskip = 0pt plus1fil
+    %
+    % A bit of stretch before each entry for the benefit of balancing
+    % columns.
+    \vskip 0pt plus1pt
+    %
+    % Swallow the left brace of the text (first parameter):
+    \afterassignment\doentry
+    \let\temp =
+}
+\def\doentry{%
+    \bgroup % Instead of the swallowed brace.
+      \noindent
+      \aftergroup\finishentry
+      % And now comes the text of the entry.
+}
+\def\finishentry#1{%
+    % #1 is the page number.
+    %
+    % The following is kludged to not output a line of dots in the index if
+    % there are no page numbers.  The next person who breaks this will be
+    % cursed by a Unix daemon.
+    \setbox\boxA = \hbox{#1}%
+    \ifdim\wd\boxA = 0pt
+      \ %
+    \else
+      %
+      % If we must, put the page number on a line of its own, and fill out
+      % this line with blank space.  (The \hfil is overwhelmed with the
+      % fill leaders glue in \indexdotfill if the page number does fit.)
+      \hfil\penalty50
+      \null\nobreak\indexdotfill % Have leaders before the page number.
+      %
+      % The `\ ' here is removed by the implicit \unskip that TeX does as
+      % part of (the primitive) \par.  Without it, a spurious underfull
+      % \hbox ensues.
+      \ifpdf
+       \pdfgettoks#1.%
+       \ \the\toksA
+      \else
+       \ #1%
+      \fi
+    \fi
+    \par
+  \endgroup
+}
+
+% Like plain.tex's \dotfill, except uses up at least 1 em.
+\def\indexdotfill{\cleaders
+  \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill}
+
+\def\primary #1{\line{#1\hfil}}
+
+\newskip\secondaryindent \secondaryindent=0.5cm
+\def\secondary#1#2{{%
+  \parfillskip=0in
+  \parskip=0in
+  \hangindent=1in
+  \hangafter=1
+  \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill
+  \ifpdf
+    \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
+  \else
+    #2
+  \fi
+  \par
+}}
+
+% Define two-column mode, which we use to typeset indexes.
+% Adapted from the TeXbook, page 416, which is to say,
+% the manmac.tex format used to print the TeXbook itself.
+\catcode`\@=11
+
+\newbox\partialpage
+\newdimen\doublecolumnhsize
+
+\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns
+  % Grab any single-column material above us.
+  \output = {%
+    %
+    % Here is a possibility not foreseen in manmac: if we accumulate a
+    % whole lot of material, we might end up calling this \output
+    % routine twice in a row (see the doublecol-lose test, which is
+    % essentially a couple of indexes with @setchapternewpage off).  In
+    % that case we just ship out what is in \partialpage with the normal
+    % output routine.  Generally, \partialpage will be empty when this
+    % runs and this will be a no-op.  See the indexspread.tex test case.
+    \ifvoid\partialpage \else
+      \onepageout{\pagecontents\partialpage}%
+    \fi
+    %
+    \global\setbox\partialpage = \vbox{%
+      % Unvbox the main output page.
+      \unvbox\PAGE
+      \kern-\topskip \kern\baselineskip
+    }%
+  }%
+  \eject % run that output routine to set \partialpage
+  %
+  % Use the double-column output routine for subsequent pages.
+  \output = {\doublecolumnout}%
+  %
+  % Change the page size parameters.  We could do this once outside this
+  % routine, in each of @smallbook, @afourpaper, and the default 8.5x11
+  % format, but then we repeat the same computation.  Repeating a couple
+  % of assignments once per index is clearly meaningless for the
+  % execution time, so we may as well do it in one place.
+  %
+  % First we halve the line length, less a little for the gutter between
+  % the columns.  We compute the gutter based on the line length, so it
+  % changes automatically with the paper format.  The magic constant
+  % below is chosen so that the gutter has the same value (well, +-<1pt)
+  % as it did when we hard-coded it.
+  %
+  % We put the result in a separate register, \doublecolumhsize, so we
+  % can restore it in \pagesofar, after \hsize itself has (potentially)
+  % been clobbered.
+  %
+  \doublecolumnhsize = \hsize
+    \advance\doublecolumnhsize by -.04154\hsize
+    \divide\doublecolumnhsize by 2
+  \hsize = \doublecolumnhsize
+  %
+  % Double the \vsize as well.  (We don't need a separate register here,
+  % since nobody clobbers \vsize.)
+  \vsize = 2\vsize
+}
+
+% The double-column output routine for all double-column pages except
+% the last.
+%
+\def\doublecolumnout{%
+  \splittopskip=\topskip \splitmaxdepth=\maxdepth
+  % Get the available space for the double columns -- the normal
+  % (undoubled) page height minus any material left over from the
+  % previous page.
+  \dimen@ = \vsize
+  \divide\dimen@ by 2
+  \advance\dimen@ by -\ht\partialpage
+  %
+  % box0 will be the left-hand column, box2 the right.
+  \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@
+  \onepageout\pagesofar
+  \unvbox255
+  \penalty\outputpenalty
+}
+%
+% Re-output the contents of the output page -- any previous material,
+% followed by the two boxes we just split, in box0 and box2.
+\def\pagesofar{%
+  \unvbox\partialpage
+  %
+  \hsize = \doublecolumnhsize
+  \wd0=\hsize \wd2=\hsize
+  \hbox to\pagewidth{\box0\hfil\box2}%
+}
+%
+% All done with double columns.
+\def\enddoublecolumns{%
+  % The following penalty ensures that the page builder is exercised
+  % _before_ we change the output routine.  This is necessary in the
+  % following situation:
+  %
+  % The last section of the index consists only of a single entry.
+  % Before this section, \pagetotal is less than \pagegoal, so no
+  % break occurs before the last section starts.  However, the last
+  % section, consisting of \initial and the single \entry, does not
+  % fit on the page and has to be broken off.  Without the following
+  % penalty the page builder will not be exercised until \eject
+  % below, and by that time we'll already have changed the output
+  % routine to the \balancecolumns version, so the next-to-last
+  % double-column page will be processed with \balancecolumns, which
+  % is wrong:  The two columns will go to the main vertical list, with
+  % the broken-off section in the recent contributions.  As soon as
+  % the output routine finishes, TeX starts reconsidering the page
+  % break.  The two columns and the broken-off section both fit on the
+  % page, because the two columns now take up only half of the page
+  % goal.  When TeX sees \eject from below which follows the final
+  % section, it invokes the new output routine that we've set after
+  % \balancecolumns below; \onepageout will try to fit the two columns
+  % and the final section into the vbox of \pageheight (see
+  % \pagebody), causing an overfull box.
+  %
+  % Note that glue won't work here, because glue does not exercise the
+  % page builder, unlike penalties (see The TeXbook, pp. 280-281).
+  \penalty0
+  %
+  \output = {%
+    % Split the last of the double-column material.  Leave it on the
+    % current page, no automatic page break.
+    \balancecolumns
+    %
+    % If we end up splitting too much material for the current page,
+    % though, there will be another page break right after this \output
+    % invocation ends.  Having called \balancecolumns once, we do not
+    % want to call it again.  Therefore, reset \output to its normal
+    % definition right away.  (We hope \balancecolumns will never be
+    % called on to balance too much material, but if it is, this makes
+    % the output somewhat more palatable.)
+    \global\output = {\onepageout{\pagecontents\PAGE}}%
+  }%
+  \eject
+  \endgroup % started in \begindoublecolumns
+  %
+  % \pagegoal was set to the doubled \vsize above, since we restarted
+  % the current page.  We're now back to normal single-column
+  % typesetting, so reset \pagegoal to the normal \vsize (after the
+  % \endgroup where \vsize got restored).
+  \pagegoal = \vsize
+}
+%
+% Called at the end of the double column material.
+\def\balancecolumns{%
+  \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120.
+  \dimen@ = \ht0
+  \advance\dimen@ by \topskip
+  \advance\dimen@ by-\baselineskip
+  \divide\dimen@ by 2 % target to split to
+  %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}%
+  \splittopskip = \topskip
+  % Loop until we get a decent breakpoint.
+  {%
+    \vbadness = 10000
+    \loop
+      \global\setbox3 = \copy0
+      \global\setbox1 = \vsplit3 to \dimen@
+    \ifdim\ht3>\dimen@
+      \global\advance\dimen@ by 1pt
+    \repeat
+  }%
+  %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}%
+  \setbox0=\vbox to\dimen@{\unvbox1}%
+  \setbox2=\vbox to\dimen@{\unvbox3}%
+  %
+  \pagesofar
+}
+\catcode`\@ = \other
+
+
+\message{sectioning,}
+% Chapters, sections, etc.
+
+% \unnumberedno is an oxymoron, of course.  But we count the unnumbered
+% sections so that we can refer to them unambiguously in the pdf
+% outlines by their "section number".  We avoid collisions with chapter
+% numbers by starting them at 10000.  (If a document ever has 10000
+% chapters, we're in trouble anyway, I'm sure.)
+\newcount\unnumberedno \unnumberedno = 10000
+\newcount\chapno
+\newcount\secno        \secno=0
+\newcount\subsecno     \subsecno=0
+\newcount\subsubsecno  \subsubsecno=0
+
+% This counter is funny since it counts through charcodes of letters A, B, ...
+\newcount\appendixno  \appendixno = `\@
+%
+% \def\appendixletter{\char\the\appendixno}
+% We do the following ugly conditional instead of the above simple
+% construct for the sake of pdftex, which needs the actual
+% letter in the expansion, not just typeset.
+%
+\def\appendixletter{%
+  \ifnum\appendixno=`A A%
+  \else\ifnum\appendixno=`B B%
+  \else\ifnum\appendixno=`C C%
+  \else\ifnum\appendixno=`D D%
+  \else\ifnum\appendixno=`E E%
+  \else\ifnum\appendixno=`F F%
+  \else\ifnum\appendixno=`G G%
+  \else\ifnum\appendixno=`H H%
+  \else\ifnum\appendixno=`I I%
+  \else\ifnum\appendixno=`J J%
+  \else\ifnum\appendixno=`K K%
+  \else\ifnum\appendixno=`L L%
+  \else\ifnum\appendixno=`M M%
+  \else\ifnum\appendixno=`N N%
+  \else\ifnum\appendixno=`O O%
+  \else\ifnum\appendixno=`P P%
+  \else\ifnum\appendixno=`Q Q%
+  \else\ifnum\appendixno=`R R%
+  \else\ifnum\appendixno=`S S%
+  \else\ifnum\appendixno=`T T%
+  \else\ifnum\appendixno=`U U%
+  \else\ifnum\appendixno=`V V%
+  \else\ifnum\appendixno=`W W%
+  \else\ifnum\appendixno=`X X%
+  \else\ifnum\appendixno=`Y Y%
+  \else\ifnum\appendixno=`Z Z%
+  % The \the is necessary, despite appearances, because \appendixletter is
+  % expanded while writing the .toc file.  \char\appendixno is not
+  % expandable, thus it is written literally, thus all appendixes come out
+  % with the same letter (or @) in the toc without it.
+  \else\char\the\appendixno
+  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
+
+% Each @chapter defines these (using marks) as the number+name, number
+% and name of the chapter.  Page headings and footings can use
+% these.  @section does likewise.
+\def\thischapter{}
+\def\thischapternum{}
+\def\thischaptername{}
+\def\thissection{}
+\def\thissectionnum{}
+\def\thissectionname{}
+
+\newcount\absseclevel % used to calculate proper heading level
+\newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count
+
+% @raisesections: treat @section as chapter, @subsection as section, etc.
+\def\raisesections{\global\advance\secbase by -1}
+\let\up=\raisesections % original BFox name
+
+% @lowersections: treat @chapter as section, @section as subsection, etc.
+\def\lowersections{\global\advance\secbase by 1}
+\let\down=\lowersections % original BFox name
+
+% we only have subsub.
+\chardef\maxseclevel = 3
+%
+% A numbered section within an unnumbered changes to unnumbered too.
+% To achive this, remember the "biggest" unnum. sec. we are currently in:
+\chardef\unmlevel = \maxseclevel
+%
+% Trace whether the current chapter is an appendix or not:
+% \chapheadtype is "N" or "A", unnumbered chapters are ignored.
+\def\chapheadtype{N}
+
+% Choose a heading macro
+% #1 is heading type
+% #2 is heading level
+% #3 is text for heading
+\def\genhead#1#2#3{%
+  % Compute the abs. sec. level:
+  \absseclevel=#2
+  \advance\absseclevel by \secbase
+  % Make sure \absseclevel doesn't fall outside the range:
+  \ifnum \absseclevel < 0
+    \absseclevel = 0
+  \else
+    \ifnum \absseclevel > 3
+      \absseclevel = 3
+    \fi
+  \fi
+  % The heading type:
+  \def\headtype{#1}%
+  \if \headtype U%
+    \ifnum \absseclevel < \unmlevel
+      \chardef\unmlevel = \absseclevel
+    \fi
+  \else
+    % Check for appendix sections:
+    \ifnum \absseclevel = 0
+      \edef\chapheadtype{\headtype}%
+    \else
+      \if \headtype A\if \chapheadtype N%
+       \errmessage{@appendix... within a non-appendix chapter}%
+      \fi\fi
+    \fi
+    % Check for numbered within unnumbered:
+    \ifnum \absseclevel > \unmlevel
+      \def\headtype{U}%
+    \else
+      \chardef\unmlevel = 3
+    \fi
+  \fi
+  % Now print the heading:
+  \if \headtype U%
+    \ifcase\absseclevel
+       \unnumberedzzz{#3}%
+    \or \unnumberedseczzz{#3}%
+    \or \unnumberedsubseczzz{#3}%
+    \or \unnumberedsubsubseczzz{#3}%
+    \fi
+  \else
+    \if \headtype A%
+      \ifcase\absseclevel
+         \appendixzzz{#3}%
+      \or \appendixsectionzzz{#3}%
+      \or \appendixsubseczzz{#3}%
+      \or \appendixsubsubseczzz{#3}%
+      \fi
+    \else
+      \ifcase\absseclevel
+         \chapterzzz{#3}%
+      \or \seczzz{#3}%
+      \or \numberedsubseczzz{#3}%
+      \or \numberedsubsubseczzz{#3}%
+      \fi
+    \fi
+  \fi
+  \suppressfirstparagraphindent
+}
+
+% an interface:
+\def\numhead{\genhead N}
+\def\apphead{\genhead A}
+\def\unnmhead{\genhead U}
+
+% @chapter, @appendix, @unnumbered.  Increment top-level counter, reset
+% all lower-level sectioning counters to zero.
+%
+% Also set \chaplevelprefix, which we prepend to @float sequence numbers
+% (e.g., figures), q.v.  By default (before any chapter), that is empty.
+\let\chaplevelprefix = \empty
+%
+\outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz
+\def\chapterzzz#1{%
+  % section resetting is \global in case the chapter is in a group, such
+  % as an @include file.
+  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+    \global\advance\chapno by 1
+  %
+  % Used for \float.
+  \gdef\chaplevelprefix{\the\chapno.}%
+  \resetallfloatnos
+  %
+  \message{\putwordChapter\space \the\chapno}%
+  %
+  % Write the actual heading.
+  \chapmacro{#1}{Ynumbered}{\the\chapno}%
+  %
+  % So @section and the like are numbered underneath this chapter.
+  \global\let\section = \numberedsec
+  \global\let\subsection = \numberedsubsec
+  \global\let\subsubsection = \numberedsubsubsec
+}
+
+\outer\parseargdef\appendix{\apphead0{#1}} % normally apphead0 calls appendixzzz
+\def\appendixzzz#1{%
+  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+    \global\advance\appendixno by 1
+  \gdef\chaplevelprefix{\appendixletter.}%
+  \resetallfloatnos
+  %
+  \def\appendixnum{\putwordAppendix\space \appendixletter}%
+  \message{\appendixnum}%
+  %
+  \chapmacro{#1}{Yappendix}{\appendixletter}%
+  %
+  \global\let\section = \appendixsec
+  \global\let\subsection = \appendixsubsec
+  \global\let\subsubsection = \appendixsubsubsec
+}
+
+\outer\parseargdef\unnumbered{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz
+\def\unnumberedzzz#1{%
+  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+    \global\advance\unnumberedno by 1
+  %
+  % Since an unnumbered has no number, no prefix for figures.
+  \global\let\chaplevelprefix = \empty
+  \resetallfloatnos
+  %
+  % This used to be simply \message{#1}, but TeX fully expands the
+  % argument to \message.  Therefore, if #1 contained @-commands, TeX
+  % expanded them.  For example, in `@unnumbered The @cite{Book}', TeX
+  % expanded @cite (which turns out to cause errors because \cite is meant
+  % to be executed, not expanded).
+  %
+  % Anyway, we don't want the fully-expanded definition of @cite to appear
+  % as a result of the \message, we just want `@cite' itself.  We use
+  % \the<toks register> to achieve this: TeX expands \the<toks> only once,
+  % simply yielding the contents of <toks register>.  (We also do this for
+  % the toc entries.)
+  \toks0 = {#1}%
+  \message{(\the\toks0)}%
+  %
+  \chapmacro{#1}{Ynothing}{\the\unnumberedno}%
+  %
+  \global\let\section = \unnumberedsec
+  \global\let\subsection = \unnumberedsubsec
+  \global\let\subsubsection = \unnumberedsubsubsec
+}
+
+% @centerchap is like @unnumbered, but the heading is centered.
+\outer\parseargdef\centerchap{%
+  % Well, we could do the following in a group, but that would break
+  % an assumption that \chapmacro is called at the outermost level.
+  % Thus we are safer this way:                --kasal, 24feb04
+  \let\centerparametersmaybe = \centerparameters
+  \unnmhead0{#1}%
+  \let\centerparametersmaybe = \relax
+}
+
+% @top is like @unnumbered.
+\let\top\unnumbered
+
+% Sections.
+\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz
+\def\seczzz#1{%
+  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
+  \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}%
+}
+
+\outer\parseargdef\appendixsection{\apphead1{#1}} % normally calls appendixsectionzzz
+\def\appendixsectionzzz#1{%
+  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
+  \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}%
+}
+\let\appendixsec\appendixsection
+
+\outer\parseargdef\unnumberedsec{\unnmhead1{#1}} % normally calls unnumberedseczzz
+\def\unnumberedseczzz#1{%
+  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
+  \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}%
+}
+
+% Subsections.
+\outer\parseargdef\numberedsubsec{\numhead2{#1}} % normally calls numberedsubseczzz
+\def\numberedsubseczzz#1{%
+  \global\subsubsecno=0  \global\advance\subsecno by 1
+  \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}%
+}
+
+\outer\parseargdef\appendixsubsec{\apphead2{#1}} % normally calls appendixsubseczzz
+\def\appendixsubseczzz#1{%
+  \global\subsubsecno=0  \global\advance\subsecno by 1
+  \sectionheading{#1}{subsec}{Yappendix}%
+                 {\appendixletter.\the\secno.\the\subsecno}%
+}
+
+\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} %normally calls unnumberedsubseczzz
+\def\unnumberedsubseczzz#1{%
+  \global\subsubsecno=0  \global\advance\subsecno by 1
+  \sectionheading{#1}{subsec}{Ynothing}%
+                 {\the\unnumberedno.\the\secno.\the\subsecno}%
+}
+
+% Subsubsections.
+\outer\parseargdef\numberedsubsubsec{\numhead3{#1}} % normally numberedsubsubseczzz
+\def\numberedsubsubseczzz#1{%
+  \global\advance\subsubsecno by 1
+  \sectionheading{#1}{subsubsec}{Ynumbered}%
+                 {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+\outer\parseargdef\appendixsubsubsec{\apphead3{#1}} % normally appendixsubsubseczzz
+\def\appendixsubsubseczzz#1{%
+  \global\advance\subsubsecno by 1
+  \sectionheading{#1}{subsubsec}{Yappendix}%
+                 {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} %normally unnumberedsubsubseczzz
+\def\unnumberedsubsubseczzz#1{%
+  \global\advance\subsubsecno by 1
+  \sectionheading{#1}{subsubsec}{Ynothing}%
+                 {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+% These macros control what the section commands do, according
+% to what kind of chapter we are in (ordinary, appendix, or unnumbered).
+% Define them by default for a numbered chapter.
+\let\section = \numberedsec
+\let\subsection = \numberedsubsec
+\let\subsubsection = \numberedsubsubsec
+
+% Define @majorheading, @heading and @subheading
+
+% NOTE on use of \vbox for chapter headings, section headings, and such:
+%       1) We use \vbox rather than the earlier \line to permit
+%          overlong headings to fold.
+%       2) \hyphenpenalty is set to 10000 because hyphenation in a
+%          heading is obnoxious; this forbids it.
+%       3) Likewise, headings look best if no \parindent is used, and
+%          if justification is not attempted.  Hence \raggedright.
+
+\def\majorheading{%
+  {\advance\chapheadingskip by 10pt \chapbreak }%
+  \parsearg\chapheadingzzz
+}
+
+\def\chapheading{\chapbreak \parsearg\chapheadingzzz}
+\def\chapheadingzzz#1{%
+  {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+                    \parindent=0pt\raggedright
+                    \rmisbold #1\hfill}}%
+  \bigskip \par\penalty 200\relax
+  \suppressfirstparagraphindent
+}
+
+% @heading, @subheading, @subsubheading.
+\parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{}
+  \suppressfirstparagraphindent}
+\parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{}
+  \suppressfirstparagraphindent}
+\parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{}
+  \suppressfirstparagraphindent}
+
+% These macros generate a chapter, section, etc. heading only
+% (including whitespace, linebreaking, etc. around it),
+% given all the information in convenient, parsed form.
+
+%%% Args are the skip and penalty (usually negative)
+\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi}
+
+%%% Define plain chapter starts, and page on/off switching for it
+% Parameter controlling skip before chapter headings (if needed)
+
+\newskip\chapheadingskip
+
+\def\chapbreak{\dobreak \chapheadingskip {-4000}}
+\def\chappager{\par\vfill\supereject}
+% Because \domark is called before \chapoddpage, the filler page will
+% get the headings for the next chapter, which is wrong.  But we don't
+% care -- we just disable all headings on the filler page.
+\def\chapoddpage{%
+  \chappager
+  \ifodd\pageno \else
+    \begingroup
+      \evenheadline={\hfil}\evenfootline={\hfil}%
+      \oddheadline={\hfil}\oddfootline={\hfil}%
+      \hbox to 0pt{}%
+      \chappager
+    \endgroup
+  \fi
+}
+
+\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname}
+
+\def\CHAPPAGoff{%
+\global\let\contentsalignmacro = \chappager
+\global\let\pchapsepmacro=\chapbreak
+\global\let\pagealignmacro=\chappager}
+
+\def\CHAPPAGon{%
+\global\let\contentsalignmacro = \chappager
+\global\let\pchapsepmacro=\chappager
+\global\let\pagealignmacro=\chappager
+\global\def\HEADINGSon{\HEADINGSsingle}}
+
+\def\CHAPPAGodd{%
+\global\let\contentsalignmacro = \chapoddpage
+\global\let\pchapsepmacro=\chapoddpage
+\global\let\pagealignmacro=\chapoddpage
+\global\def\HEADINGSon{\HEADINGSdouble}}
+
+\CHAPPAGon
+
+% Chapter opening.
+%
+% #1 is the text, #2 is the section type (Ynumbered, Ynothing,
+% Yappendix, Yomitfromtoc), #3 the chapter number.
+%
+% To test against our argument.
+\def\Ynothingkeyword{Ynothing}
+\def\Yomitfromtockeyword{Yomitfromtoc}
+\def\Yappendixkeyword{Yappendix}
+%
+\def\chapmacro#1#2#3{%
+  % Insert the first mark before the heading break (see notes for \domark).
+  \let\prevchapterdefs=\lastchapterdefs
+  \let\prevsectiondefs=\lastsectiondefs
+  \gdef\lastsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}%
+                        \gdef\thissection{}}%
+  %
+  \def\temptype{#2}%
+  \ifx\temptype\Ynothingkeyword
+    \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
+                          \gdef\thischapter{\thischaptername}}%
+  \else\ifx\temptype\Yomitfromtockeyword
+    \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
+                          \gdef\thischapter{}}%
+  \else\ifx\temptype\Yappendixkeyword
+    \toks0={#1}%
+    \xdef\lastchapterdefs{%
+      \gdef\noexpand\thischaptername{\the\toks0}%
+      \gdef\noexpand\thischapternum{\appendixletter}%
+      \gdef\noexpand\thischapter{\putwordAppendix{} \noexpand\thischapternum:
+                                 \noexpand\thischaptername}%
+    }%
+  \else
+    \toks0={#1}%
+    \xdef\lastchapterdefs{%
+      \gdef\noexpand\thischaptername{\the\toks0}%
+      \gdef\noexpand\thischapternum{\the\chapno}%
+      \gdef\noexpand\thischapter{\putwordChapter{} \noexpand\thischapternum:
+                                 \noexpand\thischaptername}%
+    }%
+  \fi\fi\fi
+  %
+  % Output the mark.  Pass it through \safewhatsit, to take care of
+  % the preceding space.
+  \safewhatsit\domark
+  %
+  % Insert the chapter heading break.
+  \pchapsepmacro
+  %
+  % Now the second mark, after the heading break.  No break points
+  % between here and the heading.
+  \let\prevchapterdefs=\lastchapterdefs
+  \let\prevsectiondefs=\lastsectiondefs
+  \domark
+  %
+  {%
+    \chapfonts \rmisbold
+    %
+    % Have to define \lastsection before calling \donoderef, because the
+    % xref code eventually uses it.  On the other hand, it has to be called
+    % after \pchapsepmacro, or the headline will change too soon.
+    \gdef\lastsection{#1}%
+    %
+    % Only insert the separating space if we have a chapter/appendix
+    % number, and don't print the unnumbered ``number''.
+    \ifx\temptype\Ynothingkeyword
+      \setbox0 = \hbox{}%
+      \def\toctype{unnchap}%
+    \else\ifx\temptype\Yomitfromtockeyword
+      \setbox0 = \hbox{}% contents like unnumbered, but no toc entry
+      \def\toctype{omit}%
+    \else\ifx\temptype\Yappendixkeyword
+      \setbox0 = \hbox{\putwordAppendix{} #3\enspace}%
+      \def\toctype{app}%
+    \else
+      \setbox0 = \hbox{#3\enspace}%
+      \def\toctype{numchap}%
+    \fi\fi\fi
+    %
+    % Write the toc entry for this chapter.  Must come before the
+    % \donoderef, because we include the current node name in the toc
+    % entry, and \donoderef resets it to empty.
+    \writetocentry{\toctype}{#1}{#3}%
+    %
+    % For pdftex, we have to write out the node definition (aka, make
+    % the pdfdest) after any page break, but before the actual text has
+    % been typeset.  If the destination for the pdf outline is after the
+    % text, then jumping from the outline may wind up with the text not
+    % being visible, for instance under high magnification.
+    \donoderef{#2}%
+    %
+    % Typeset the actual heading.
+    \nobreak % Avoid page breaks at the interline glue.
+    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
+          \hangindent=\wd0 \centerparametersmaybe
+          \unhbox0 #1\par}%
+  }%
+  \nobreak\bigskip % no page break after a chapter title
+  \nobreak
+}
+
+% @centerchap -- centered and unnumbered.
+\let\centerparametersmaybe = \relax
+\def\centerparameters{%
+  \advance\rightskip by 3\rightskip
+  \leftskip = \rightskip
+  \parfillskip = 0pt
+}
+
+
+% I don't think this chapter style is supported any more, so I'm not
+% updating it with the new noderef stuff.  We'll see.  --karl, 11aug03.
+%
+\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
+%
+\def\unnchfopen #1{%
+\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+                       \parindent=0pt\raggedright
+                       \rmisbold #1\hfill}}\bigskip \par\nobreak
+}
+\def\chfopen #1#2{\chapoddpage {\chapfonts
+\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
+\par\penalty 5000 %
+}
+\def\centerchfopen #1{%
+\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+                       \parindent=0pt
+                       \hfill {\rmisbold #1}\hfill}}\bigskip \par\nobreak
+}
+\def\CHAPFopen{%
+  \global\let\chapmacro=\chfopen
+  \global\let\centerchapmacro=\centerchfopen}
+
+
+% Section titles.  These macros combine the section number parts and
+% call the generic \sectionheading to do the printing.
+%
+\newskip\secheadingskip
+\def\secheadingbreak{\dobreak \secheadingskip{-1000}}
+
+% Subsection titles.
+\newskip\subsecheadingskip
+\def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}}
+
+% Subsubsection titles.
+\def\subsubsecheadingskip{\subsecheadingskip}
+\def\subsubsecheadingbreak{\subsecheadingbreak}
+
+
+% Print any size, any type, section title.
+%
+% #1 is the text, #2 is the section level (sec/subsec/subsubsec), #3 is
+% the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the
+% section number.
+%
+\def\seckeyword{sec}
+%
+\def\sectionheading#1#2#3#4{%
+  {%
+    % Switch to the right set of fonts.
+    \csname #2fonts\endcsname \rmisbold
+    %
+    \def\sectionlevel{#2}%
+    \def\temptype{#3}%
+    %
+    % Insert first mark before the heading break (see notes for \domark).
+    \let\prevsectiondefs=\lastsectiondefs
+    \ifx\temptype\Ynothingkeyword
+      \ifx\sectionlevel\seckeyword
+        \gdef\lastsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}%
+                              \gdef\thissection{\thissectionname}}%
+      \fi
+    \else\ifx\temptype\Yomitfromtockeyword
+      % Don't redefine \thissection.
+    \else\ifx\temptype\Yappendixkeyword
+      \ifx\sectionlevel\seckeyword
+        \toks0={#1}%
+        \xdef\lastsectiondefs{%
+          \gdef\noexpand\thissectionname{\the\toks0}%
+          \gdef\noexpand\thissectionnum{#4}%
+          \gdef\noexpand\thissection{\putwordSection{} \noexpand\thissectionnum:
+                                     \noexpand\thissectionname}%
+        }%
+      \fi
+    \else
+      \ifx\sectionlevel\seckeyword
+        \toks0={#1}%
+        \xdef\lastsectiondefs{%
+          \gdef\noexpand\thissectionname{\the\toks0}%
+          \gdef\noexpand\thissectionnum{#4}%
+          \gdef\noexpand\thissection{\putwordSection{} \noexpand\thissectionnum:
+                                     \noexpand\thissectionname}%
+        }%
+      \fi
+    \fi\fi\fi
+    %
+    % Output the mark.  Pass it through \safewhatsit, to take care of
+    % the preceding space.
+    \safewhatsit\domark
+    %
+    % Insert space above the heading.
+    \csname #2headingbreak\endcsname
+    %
+    % Now the second mark, after the heading break.  No break points
+    % between here and the heading.
+    \let\prevsectiondefs=\lastsectiondefs
+    \domark
+    %
+    % Only insert the space after the number if we have a section number.
+    \ifx\temptype\Ynothingkeyword
+      \setbox0 = \hbox{}%
+      \def\toctype{unn}%
+      \gdef\lastsection{#1}%
+    \else\ifx\temptype\Yomitfromtockeyword
+      % for @headings -- no section number, don't include in toc,
+      % and don't redefine \lastsection.
+      \setbox0 = \hbox{}%
+      \def\toctype{omit}%
+      \let\sectionlevel=\empty
+    \else\ifx\temptype\Yappendixkeyword
+      \setbox0 = \hbox{#4\enspace}%
+      \def\toctype{app}%
+      \gdef\lastsection{#1}%
+    \else
+      \setbox0 = \hbox{#4\enspace}%
+      \def\toctype{num}%
+      \gdef\lastsection{#1}%
+    \fi\fi\fi
+    %
+    % Write the toc entry (before \donoderef).  See comments in \chapmacro.
+    \writetocentry{\toctype\sectionlevel}{#1}{#4}%
+    %
+    % Write the node reference (= pdf destination for pdftex).
+    % Again, see comments in \chapmacro.
+    \donoderef{#3}%
+    %
+    % Interline glue will be inserted when the vbox is completed.
+    % That glue will be a valid breakpoint for the page, since it'll be
+    % preceded by a whatsit (usually from the \donoderef, or from the
+    % \writetocentry if there was no node).  We don't want to allow that
+    % break, since then the whatsits could end up on page n while the
+    % section is on page n+1, thus toc/etc. are wrong.  Debian bug 276000.
+    \nobreak
+    %
+    % Output the actual section heading.
+    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
+          \hangindent=\wd0  % zero if no section number
+          \unhbox0 #1}%
+  }%
+  % Add extra space after the heading -- half of whatever came above it.
+  % Don't allow stretch, though.
+  \kern .5 \csname #2headingskip\endcsname
+  %
+  % Do not let the kern be a potential breakpoint, as it would be if it
+  % was followed by glue.
+  \nobreak
+  %
+  % We'll almost certainly start a paragraph next, so don't let that
+  % glue accumulate.  (Not a breakpoint because it's preceded by a
+  % discardable item.)
+  \vskip-\parskip
+  % 
+  % This is purely so the last item on the list is a known \penalty >
+  % 10000.  This is so \startdefun can avoid allowing breakpoints after
+  % section headings.  Otherwise, it would insert a valid breakpoint between:
+  % 
+  %   @section sec-whatever
+  %   @deffn def-whatever
+  \penalty 10001
+}
+
+
+\message{toc,}
+% Table of contents.
+\newwrite\tocfile
+
+% Write an entry to the toc file, opening it if necessary.
+% Called from @chapter, etc.
+%
+% Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno}
+% We append the current node name (if any) and page number as additional
+% arguments for the \{chap,sec,...}entry macros which will eventually
+% read this.  The node name is used in the pdf outlines as the
+% destination to jump to.
+%
+% We open the .toc file for writing here instead of at @setfilename (or
+% any other fixed time) so that @contents can be anywhere in the document.
+% But if #1 is `omit', then we don't do anything.  This is used for the
+% table of contents chapter openings themselves.
+%
+\newif\iftocfileopened
+\def\omitkeyword{omit}%
+%
+\def\writetocentry#1#2#3{%
+  \edef\writetoctype{#1}%
+  \ifx\writetoctype\omitkeyword \else
+    \iftocfileopened\else
+      \immediate\openout\tocfile = \jobname.toc
+      \global\tocfileopenedtrue
+    \fi
+    %
+    \iflinks
+      {\atdummies
+       \edef\temp{%
+         \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}%
+       \temp
+      }%
+    \fi
+  \fi
+  %
+  % Tell \shipout to create a pdf destination on each page, if we're
+  % writing pdf.  These are used in the table of contents.  We can't
+  % just write one on every page because the title pages are numbered
+  % 1 and 2 (the page numbers aren't printed), and so are the first
+  % two pages of the document.  Thus, we'd have two destinations named
+  % `1', and two named `2'.
+  \ifpdf \global\pdfmakepagedesttrue \fi
+}
+
+
+% These characters do not print properly in the Computer Modern roman
+% fonts, so we must take special care.  This is more or less redundant
+% with the Texinfo input format setup at the end of this file.
+% 
+\def\activecatcodes{%
+  \catcode`\"=\active
+  \catcode`\$=\active
+  \catcode`\<=\active
+  \catcode`\>=\active
+  \catcode`\\=\active
+  \catcode`\^=\active
+  \catcode`\_=\active
+  \catcode`\|=\active
+  \catcode`\~=\active
+}
+
+
+% Read the toc file, which is essentially Texinfo input.
+\def\readtocfile{%
+  \setupdatafile
+  \activecatcodes
+  \input \tocreadfilename
+}
+
+\newskip\contentsrightmargin \contentsrightmargin=1in
+\newcount\savepageno
+\newcount\lastnegativepageno \lastnegativepageno = -1
+
+% Prepare to read what we've written to \tocfile.
+%
+\def\startcontents#1{%
+  % If @setchapternewpage on, and @headings double, the contents should
+  % start on an odd page, unlike chapters.  Thus, we maintain
+  % \contentsalignmacro in parallel with \pagealignmacro.
+  % From: Torbjorn Granlund <tege@matematik.su.se>
+  \contentsalignmacro
+  \immediate\closeout\tocfile
+  %
+  % Don't need to put `Contents' or `Short Contents' in the headline.
+  % It is abundantly clear what they are.
+  \chapmacro{#1}{Yomitfromtoc}{}%
+  %
+  \savepageno = \pageno
+  \begingroup                  % Set up to handle contents files properly.
+    \raggedbottom              % Worry more about breakpoints than the bottom.
+    \advance\hsize by -\contentsrightmargin % Don't use the full line length.
+    %
+    % Roman numerals for page numbers.
+    \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi
+}
+
+% redefined for the two-volume lispref.  We always output on
+% \jobname.toc even if this is redefined.
+% 
+\def\tocreadfilename{\jobname.toc}
+
+% Normal (long) toc.
+%
+\def\contents{%
+  \startcontents{\putwordTOC}%
+    \openin 1 \tocreadfilename\space
+    \ifeof 1 \else
+      \readtocfile
+    \fi
+    \vfill \eject
+    \contentsalignmacro % in case @setchapternewpage odd is in effect
+    \ifeof 1 \else
+      \pdfmakeoutlines
+    \fi
+    \closein 1
+  \endgroup
+  \lastnegativepageno = \pageno
+  \global\pageno = \savepageno
+}
+
+% And just the chapters.
+\def\summarycontents{%
+  \startcontents{\putwordShortTOC}%
+    %
+    \let\numchapentry = \shortchapentry
+    \let\appentry = \shortchapentry
+    \let\unnchapentry = \shortunnchapentry
+    % We want a true roman here for the page numbers.
+    \secfonts
+    \let\rm=\shortcontrm \let\bf=\shortcontbf
+    \let\sl=\shortcontsl \let\tt=\shortconttt
+    \rm
+    \hyphenpenalty = 10000
+    \advance\baselineskip by 1pt % Open it up a little.
+    \def\numsecentry##1##2##3##4{}
+    \let\appsecentry = \numsecentry
+    \let\unnsecentry = \numsecentry
+    \let\numsubsecentry = \numsecentry
+    \let\appsubsecentry = \numsecentry
+    \let\unnsubsecentry = \numsecentry
+    \let\numsubsubsecentry = \numsecentry
+    \let\appsubsubsecentry = \numsecentry
+    \let\unnsubsubsecentry = \numsecentry
+    \openin 1 \tocreadfilename\space
+    \ifeof 1 \else
+      \readtocfile
+    \fi
+    \closein 1
+    \vfill \eject
+    \contentsalignmacro % in case @setchapternewpage odd is in effect
+  \endgroup
+  \lastnegativepageno = \pageno
+  \global\pageno = \savepageno
+}
+\let\shortcontents = \summarycontents
+
+% Typeset the label for a chapter or appendix for the short contents.
+% The arg is, e.g., `A' for an appendix, or `3' for a chapter.
+%
+\def\shortchaplabel#1{%
+  % This space should be enough, since a single number is .5em, and the
+  % widest letter (M) is 1em, at least in the Computer Modern fonts.
+  % But use \hss just in case.
+  % (This space doesn't include the extra space that gets added after
+  % the label; that gets put in by \shortchapentry above.)
+  %
+  % We'd like to right-justify chapter numbers, but that looks strange
+  % with appendix letters.  And right-justifying numbers and
+  % left-justifying letters looks strange when there is less than 10
+  % chapters.  Have to read the whole toc once to know how many chapters
+  % there are before deciding ...
+  \hbox to 1em{#1\hss}%
+}
+
+% These macros generate individual entries in the table of contents.
+% The first argument is the chapter or section name.
+% The last argument is the page number.
+% The arguments in between are the chapter number, section number, ...
+
+% Chapters, in the main contents.
+\def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}}
+%
+% Chapters, in the short toc.
+% See comments in \dochapentry re vbox and related settings.
+\def\shortchapentry#1#2#3#4{%
+  \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}%
+}
+
+% Appendices, in the main contents.
+% Need the word Appendix, and a fixed-size box.
+%
+\def\appendixbox#1{%
+  % We use M since it's probably the widest letter.
+  \setbox0 = \hbox{\putwordAppendix{} M}%
+  \hbox to \wd0{\putwordAppendix{} #1\hss}}
+%
+\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}}
+
+% Unnumbered chapters.
+\def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}}
+\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}}
+
+% Sections.
+\def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}}
+\let\appsecentry=\numsecentry
+\def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}}
+
+% Subsections.
+\def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}}
+\let\appsubsecentry=\numsubsecentry
+\def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}}
+
+% And subsubsections.
+\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}}
+\let\appsubsubsecentry=\numsubsubsecentry
+\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}}
+
+% This parameter controls the indentation of the various levels.
+% Same as \defaultparindent.
+\newdimen\tocindent \tocindent = 15pt
+
+% Now for the actual typesetting. In all these, #1 is the text and #2 is the
+% page number.
+%
+% If the toc has to be broken over pages, we want it to be at chapters
+% if at all possible; hence the \penalty.
+\def\dochapentry#1#2{%
+   \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip
+   \begingroup
+     \chapentryfonts
+     \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+   \endgroup
+   \nobreak\vskip .25\baselineskip plus.1\baselineskip
+}
+
+\def\dosecentry#1#2{\begingroup
+  \secentryfonts \leftskip=\tocindent
+  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+\endgroup}
+
+\def\dosubsecentry#1#2{\begingroup
+  \subsecentryfonts \leftskip=2\tocindent
+  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+\endgroup}
+
+\def\dosubsubsecentry#1#2{\begingroup
+  \subsubsecentryfonts \leftskip=3\tocindent
+  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+\endgroup}
+
+% We use the same \entry macro as for the index entries.
+\let\tocentry = \entry
+
+% Space between chapter (or whatever) number and the title.
+\def\labelspace{\hskip1em \relax}
+
+\def\dopageno#1{{\rm #1}}
+\def\doshortpageno#1{{\rm #1}}
+
+\def\chapentryfonts{\secfonts \rm}
+\def\secentryfonts{\textfonts}
+\def\subsecentryfonts{\textfonts}
+\def\subsubsecentryfonts{\textfonts}
+
+
+\message{environments,}
+% @foo ... @end foo.
+
+% Markup style infrastructure.  \defmarkupstylesetup\INITMACRO will
+% define and register \INITMACRO to be called on markup style changes.
+% \INITMACRO can check \currentmarkupstyle for the innermost
+% style and the set of \ifmarkupSTYLE switches for all styles
+% currently in effect.
+\newif\ifmarkupvar
+\newif\ifmarkupsamp
+\newif\ifmarkupkey
+%\newif\ifmarkupfile % @file == @samp.
+%\newif\ifmarkupoption % @option == @samp.
+\newif\ifmarkupcode
+\newif\ifmarkupkbd
+%\newif\ifmarkupenv % @env == @code.
+%\newif\ifmarkupcommand % @command == @code.
+\newif\ifmarkuptex % @tex (and part of @math, for now).
+\newif\ifmarkupexample
+\newif\ifmarkupverb
+\newif\ifmarkupverbatim
+
+\let\currentmarkupstyle\empty
+
+\def\setupmarkupstyle#1{%
+  \csname markup#1true\endcsname
+  \def\currentmarkupstyle{#1}%
+  \markupstylesetup
+}
+
+\let\markupstylesetup\empty
+
+\def\defmarkupstylesetup#1{%
+  \expandafter\def\expandafter\markupstylesetup
+    \expandafter{\markupstylesetup #1}%
+  \def#1%
+}
+
+% Markup style setup for left and right quotes.
+\defmarkupstylesetup\markupsetuplq{%
+  \expandafter\let\expandafter \temp \csname markupsetuplq\currentmarkupstyle\endcsname
+  \ifx\temp\relax \markupsetuplqdefault \else \temp \fi
+}
+
+\defmarkupstylesetup\markupsetuprq{%
+  \expandafter\let\expandafter \temp \csname markupsetuprq\currentmarkupstyle\endcsname
+  \ifx\temp\relax \markupsetuprqdefault \else \temp \fi
+}
+
+{
+\catcode`\'=\active
+\catcode`\`=\active
+
+\gdef\markupsetuplqdefault{\let`\lq}
+\gdef\markupsetuprqdefault{\let'\rq}
+
+\gdef\markupsetcodequoteleft{\let`\codequoteleft}
+\gdef\markupsetcodequoteright{\let'\codequoteright}
+
+\gdef\markupsetnoligaturesquoteleft{\let`\noligaturesquoteleft}
+}
+
+\let\markupsetuplqcode \markupsetcodequoteleft
+\let\markupsetuprqcode \markupsetcodequoteright
+\let\markupsetuplqexample \markupsetcodequoteleft
+\let\markupsetuprqexample \markupsetcodequoteright
+\let\markupsetuplqverb \markupsetcodequoteleft
+\let\markupsetuprqverb \markupsetcodequoteright
+\let\markupsetuplqverbatim \markupsetcodequoteleft
+\let\markupsetuprqverbatim \markupsetcodequoteright
+
+\let\markupsetuplqsamp \markupsetnoligaturesquoteleft
+\let\markupsetuplqkbd \markupsetnoligaturesquoteleft
+
+% Allow an option to not replace quotes with a regular directed right
+% quote/apostrophe (char 0x27), but instead use the undirected quote
+% from cmtt (char 0x0d).  The undirected quote is ugly, so don't make it
+% the default, but it works for pasting with more pdf viewers (at least
+% evince), the lilypond developers report.  xpdf does work with the
+% regular 0x27.  
+% 
+\def\codequoteright{%
+  \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax
+    \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax
+      '%
+    \else \char'15 \fi
+  \else \char'15 \fi
+}
+%
+% and a similar option for the left quote char vs. a grave accent.
+% Modern fonts display ASCII 0x60 as a grave accent, so some people like
+% the code environments to do likewise.
+% 
+\def\codequoteleft{%
+  \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax
+    \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax
+      % [Knuth] pp. 380,381,391
+      % \relax disables Spanish ligatures ?` and !` of \tt font.
+      \relax`%
+    \else \char'22 \fi
+  \else \char'22 \fi
+}
+
+% [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font.
+\def\noligaturesquoteleft{\relax\lq}
+
+% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
+%
+% Since these characters are used in examples, they should be an even number of
+% \tt widths. Each \tt character is 1en, so two makes it 1em.
+%
+\def\point{$\star$}
+\def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}}
+\def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
+\def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}}
+\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
+\def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}}
+
+% The @error{} command.
+% Adapted from the TeXbook's \boxit.
+%
+\newbox\errorbox
+%
+{\tentt \global\dimen0 = 3em}% Width of the box.
+\dimen2 = .55pt % Thickness of rules
+% The text. (`r' is open on the right, `e' somewhat less so on the left.)
+\setbox0 = \hbox{\kern-.75pt \reducedsf error\kern-1.5pt}
+%
+\setbox\errorbox=\hbox to \dimen0{\hfil
+   \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
+   \advance\hsize by -2\dimen2 % Rules.
+   \vbox{%
+      \hrule height\dimen2
+      \hbox{\vrule width\dimen2 \kern3pt          % Space to left of text.
+         \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
+         \kern3pt\vrule width\dimen2}% Space to right.
+      \hrule height\dimen2}
+    \hfil}
+%
+\def\error{\leavevmode\lower.7ex\copy\errorbox}
+
+% @tex ... @end tex    escapes into raw Tex temporarily.
+% One exception: @ is still an escape character, so that @end tex works.
+% But \@ or @@ will get a plain tex @ character.
+
+\envdef\tex{%
+  \setupmarkupstyle{tex}%
+  \catcode `\\=0 \catcode `\{=1 \catcode `\}=2
+  \catcode `\$=3 \catcode `\&=4 \catcode `\#=6
+  \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie
+  \catcode `\%=14
+  \catcode `\+=\other
+  \catcode `\"=\other
+  \catcode `\|=\other
+  \catcode `\<=\other
+  \catcode `\>=\other
+  \catcode`\`=\other
+  \catcode`\'=\other
+  \escapechar=`\\
+  %
+  \let\b=\ptexb
+  \let\bullet=\ptexbullet
+  \let\c=\ptexc
+  \let\,=\ptexcomma
+  \let\.=\ptexdot
+  \let\dots=\ptexdots
+  \let\equiv=\ptexequiv
+  \let\!=\ptexexclam
+  \let\i=\ptexi
+  \let\indent=\ptexindent
+  \let\noindent=\ptexnoindent
+  \let\{=\ptexlbrace
+  \let\+=\tabalign
+  \let\}=\ptexrbrace
+  \let\/=\ptexslash
+  \let\*=\ptexstar
+  \let\t=\ptext
+  \expandafter \let\csname top\endcsname=\ptextop  % outer
+  \let\frenchspacing=\plainfrenchspacing
+  %
+  \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
+  \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}%
+  \def\@{@}%
+}
+% There is no need to define \Etex.
+
+% Define @lisp ... @end lisp.
+% @lisp environment forms a group so it can rebind things,
+% including the definition of @end lisp (which normally is erroneous).
+
+% Amount to narrow the margins by for @lisp.
+\newskip\lispnarrowing \lispnarrowing=0.4in
+
+% This is the definition that ^^M gets inside @lisp, @example, and other
+% such environments.  \null is better than a space, since it doesn't
+% have any width.
+\def\lisppar{\null\endgraf}
+
+% This space is always present above and below environments.
+\newskip\envskipamount \envskipamount = 0pt
+
+% Make spacing and below environment symmetrical.  We use \parskip here
+% to help in doing that, since in @example-like environments \parskip
+% is reset to zero; thus the \afterenvbreak inserts no space -- but the
+% start of the next paragraph will insert \parskip.
+%
+\def\aboveenvbreak{{%
+  % =10000 instead of <10000 because of a special case in \itemzzz and
+  % \sectionheading, q.v.
+  \ifnum \lastpenalty=10000 \else
+    \advance\envskipamount by \parskip
+    \endgraf
+    \ifdim\lastskip<\envskipamount
+      \removelastskip
+      % it's not a good place to break if the last penalty was \nobreak
+      % or better ...
+      \ifnum\lastpenalty<10000 \penalty-50 \fi
+      \vskip\envskipamount
+    \fi
+  \fi
+}}
+
+\let\afterenvbreak = \aboveenvbreak
+
+% \nonarrowing is a flag.  If "set", @lisp etc don't narrow margins; it will
+% also clear it, so that its embedded environments do the narrowing again.
+\let\nonarrowing=\relax
+
+% @cartouche ... @end cartouche: draw rectangle w/rounded corners around
+% environment contents.
+\font\circle=lcircle10
+\newdimen\circthick
+\newdimen\cartouter\newdimen\cartinner
+\newskip\normbskip\newskip\normpskip\newskip\normlskip
+\circthick=\fontdimen8\circle
+%
+\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth
+\def\ctr{{\hskip 6pt\circle\char'010}}
+\def\cbl{{\circle\char'012\hskip -6pt}}
+\def\cbr{{\hskip 6pt\circle\char'011}}
+\def\carttop{\hbox to \cartouter{\hskip\lskip
+        \ctl\leaders\hrule height\circthick\hfil\ctr
+        \hskip\rskip}}
+\def\cartbot{\hbox to \cartouter{\hskip\lskip
+        \cbl\leaders\hrule height\circthick\hfil\cbr
+        \hskip\rskip}}
+%
+\newskip\lskip\newskip\rskip
+
+\envdef\cartouche{%
+  \ifhmode\par\fi  % can't be in the midst of a paragraph.
+  \startsavinginserts
+  \lskip=\leftskip \rskip=\rightskip
+  \leftskip=0pt\rightskip=0pt % we want these *outside*.
+  \cartinner=\hsize \advance\cartinner by-\lskip
+  \advance\cartinner by-\rskip
+  \cartouter=\hsize
+  \advance\cartouter by 18.4pt % allow for 3pt kerns on either
+                               % side, and for 6pt waste from
+                               % each corner char, and rule thickness
+  \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
+  % Flag to tell @lisp, etc., not to narrow margin.
+  \let\nonarrowing = t%
+  \vbox\bgroup
+      \baselineskip=0pt\parskip=0pt\lineskip=0pt
+      \carttop
+      \hbox\bgroup
+         \hskip\lskip
+         \vrule\kern3pt
+         \vbox\bgroup
+             \kern3pt
+             \hsize=\cartinner
+             \baselineskip=\normbskip
+             \lineskip=\normlskip
+             \parskip=\normpskip
+             \vskip -\parskip
+             \comment % For explanation, see the end of \def\group.
+}
+\def\Ecartouche{%
+              \ifhmode\par\fi
+             \kern3pt
+         \egroup
+         \kern3pt\vrule
+         \hskip\rskip
+      \egroup
+      \cartbot
+  \egroup
+  \checkinserts
+}
+
+
+% This macro is called at the beginning of all the @example variants,
+% inside a group.
+\def\nonfillstart{%
+  \aboveenvbreak
+  \hfuzz = 12pt % Don't be fussy
+  \sepspaces % Make spaces be word-separators rather than space tokens.
+  \let\par = \lisppar % don't ignore blank lines
+  \obeylines % each line of input is a line of output
+  \parskip = 0pt
+  \parindent = 0pt
+  \emergencystretch = 0pt % don't try to avoid overfull boxes
+  \ifx\nonarrowing\relax
+    \advance \leftskip by \lispnarrowing
+    \exdentamount=\lispnarrowing
+  \else
+    \let\nonarrowing = \relax
+  \fi
+  \let\exdent=\nofillexdent
+}
+
+% If you want all examples etc. small: @set dispenvsize small.
+% If you want even small examples the full size: @set dispenvsize nosmall.
+% This affects the following displayed environments:
+%    @example, @display, @format, @lisp
+%
+\def\smallword{small}
+\def\nosmallword{nosmall}
+\let\SETdispenvsize\relax
+\def\setnormaldispenv{%
+  \ifx\SETdispenvsize\smallword
+    % end paragraph for sake of leading, in case document has no blank
+    % line.  This is redundant with what happens in \aboveenvbreak, but
+    % we need to do it before changing the fonts, and it's inconvenient
+    % to change the fonts afterward.
+    \ifnum \lastpenalty=10000 \else \endgraf \fi
+    \smallexamplefonts \rm
+  \fi
+}
+\def\setsmalldispenv{%
+  \ifx\SETdispenvsize\nosmallword
+  \else
+    \ifnum \lastpenalty=10000 \else \endgraf \fi
+    \smallexamplefonts \rm
+  \fi
+}
+
+% We often define two environments, @foo and @smallfoo.
+% Let's do it by one command:
+\def\makedispenv #1#2{
+  \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}
+  \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}
+  \expandafter\let\csname E#1\endcsname \afterenvbreak
+  \expandafter\let\csname Esmall#1\endcsname \afterenvbreak
+}
+
+% Define two synonyms:
+\def\maketwodispenvs #1#2#3{
+  \makedispenv{#1}{#3}
+  \makedispenv{#2}{#3}
+}
+
+% @lisp: indented, narrowed, typewriter font; @example: same as @lisp.
+%
+% @smallexample and @smalllisp: use smaller fonts.
+% Originally contributed by Pavel@xerox.
+%
+\maketwodispenvs {lisp}{example}{%
+  \nonfillstart
+  \tt\setupmarkupstyle{example}%
+  \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
+  \gobble       % eat return
+}
+% @display/@smalldisplay: same as @lisp except keep current font.
+%
+\makedispenv {display}{%
+  \nonfillstart
+  \gobble
+}
+
+% @format/@smallformat: same as @display except don't narrow margins.
+%
+\makedispenv{format}{%
+  \let\nonarrowing = t%
+  \nonfillstart
+  \gobble
+}
+
+% @flushleft: same as @format, but doesn't obey \SETdispenvsize.
+\envdef\flushleft{%
+  \let\nonarrowing = t%
+  \nonfillstart
+  \gobble
+}
+\let\Eflushleft = \afterenvbreak
+
+% @flushright.
+%
+\envdef\flushright{%
+  \let\nonarrowing = t%
+  \nonfillstart
+  \advance\leftskip by 0pt plus 1fill
+  \gobble
+}
+\let\Eflushright = \afterenvbreak
+
+
+% @quotation does normal linebreaking (hence we can't use \nonfillstart)
+% and narrows the margins.  We keep \parskip nonzero in general, since
+% we're doing normal filling.  So, when using \aboveenvbreak and
+% \afterenvbreak, temporarily make \parskip 0.
+%
+\def\quotationstart{%
+  {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
+  \parindent=0pt
+  %
+  % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
+  \ifx\nonarrowing\relax
+    \advance\leftskip by \lispnarrowing
+    \advance\rightskip by \lispnarrowing
+    \exdentamount = \lispnarrowing
+  \else
+    \let\nonarrowing = \relax
+  \fi
+  \parsearg\quotationlabel
+}
+
+\envdef\quotation{%
+  \setnormaldispenv
+  \quotationstart
+}
+
+\envdef\smallquotation{%
+  \setsmalldispenv
+  \quotationstart
+}
+\let\Esmallquotation = \Equotation
+
+% We have retained a nonzero parskip for the environment, since we're
+% doing normal filling.
+%
+\def\Equotation{%
+  \par
+  \ifx\quotationauthor\undefined\else
+    % indent a bit.
+    \leftline{\kern 2\leftskip \sl ---\quotationauthor}%
+  \fi
+  {\parskip=0pt \afterenvbreak}%
+}
+
+% If we're given an argument, typeset it in bold with a colon after.
+\def\quotationlabel#1{%
+  \def\temp{#1}%
+  \ifx\temp\empty \else
+    {\bf #1: }%
+  \fi
+}
+
+
+% LaTeX-like @verbatim...@end verbatim and @verb{<char>...<char>}
+% If we want to allow any <char> as delimiter,
+% we need the curly braces so that makeinfo sees the @verb command, eg:
+% `@verbx...x' would look like the '@verbx' command.  --janneke@gnu.org
+%
+% [Knuth]: Donald Ervin Knuth, 1996.  The TeXbook.
+%
+% [Knuth] p.344; only we need to do the other characters Texinfo sets
+% active too.  Otherwise, they get lost as the first character on a
+% verbatim line.
+\def\dospecials{%
+  \do\ \do\\\do\{\do\}\do\$\do\&%
+  \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~%
+  \do\<\do\>\do\|\do\@\do+\do\"%
+  % Don't do the quotes -- if we do, @set txicodequoteundirected and
+  % @set txicodequotebacktick will not have effect on @verb and
+  % @verbatim, and ?` and !` ligatures won't get disabled.
+  %\do\`\do\'%
+}
+%
+% [Knuth] p. 380
+\def\uncatcodespecials{%
+  \def\do##1{\catcode`##1=\other}\dospecials}
+%
+% Setup for the @verb command.
+%
+% Eight spaces for a tab
+\begingroup
+  \catcode`\^^I=\active
+  \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }}
+\endgroup
+%
+\def\setupverb{%
+  \tt  % easiest (and conventionally used) font for verbatim
+  \def\par{\leavevmode\endgraf}%
+  \setupmarkupstyle{verb}%
+  \tabeightspaces
+  % Respect line breaks,
+  % print special symbols as themselves, and
+  % make each space count
+  % must do in this order:
+  \obeylines \uncatcodespecials \sepspaces
+}
+
+% Setup for the @verbatim environment
+%
+% Real tab expansion
+\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
+%
+\def\starttabbox{\setbox0=\hbox\bgroup}
+%
+\begingroup
+  \catcode`\^^I=\active
+  \gdef\tabexpand{%
+    \catcode`\^^I=\active
+    \def^^I{\leavevmode\egroup
+      \dimen0=\wd0 % the width so far, or since the previous tab
+      \divide\dimen0 by\tabw
+      \multiply\dimen0 by\tabw % compute previous multiple of \tabw
+      \advance\dimen0 by\tabw  % advance to next multiple of \tabw
+      \wd0=\dimen0 \box0 \starttabbox
+    }%
+  }
+\endgroup
+
+% start the verbatim environment.
+\def\setupverbatim{%
+  \let\nonarrowing = t%
+  \nonfillstart
+  % Easiest (and conventionally used) font for verbatim
+  \tt
+  \def\par{\leavevmode\egroup\box0\endgraf}%
+  \tabexpand
+  \setupmarkupstyle{verbatim}%
+  % Respect line breaks,
+  % print special symbols as themselves, and
+  % make each space count
+  % must do in this order:
+  \obeylines \uncatcodespecials \sepspaces
+  \everypar{\starttabbox}%
+}
+
+% Do the @verb magic: verbatim text is quoted by unique
+% delimiter characters.  Before first delimiter expect a
+% right brace, after last delimiter expect closing brace:
+%
+%    \def\doverb'{'<char>#1<char>'}'{#1}
+%
+% [Knuth] p. 382; only eat outer {}
+\begingroup
+  \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other
+  \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next]
+\endgroup
+%
+\def\verb{\begingroup\setupverb\doverb}
+%
+%
+% Do the @verbatim magic: define the macro \doverbatim so that
+% the (first) argument ends when '@end verbatim' is reached, ie:
+%
+%     \def\doverbatim#1@end verbatim{#1}
+%
+% For Texinfo it's a lot easier than for LaTeX,
+% because texinfo's \verbatim doesn't stop at '\end{verbatim}':
+% we need not redefine '\', '{' and '}'.
+%
+% Inspired by LaTeX's verbatim command set [latex.ltx]
+%
+\begingroup
+  \catcode`\ =\active
+  \obeylines %
+  % ignore everything up to the first ^^M, that's the newline at the end
+  % of the @verbatim input line itself.  Otherwise we get an extra blank
+  % line in the output.
+  \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}%
+  % We really want {...\end verbatim} in the body of the macro, but
+  % without the active space; thus we have to use \xdef and \gobble.
+\endgroup
+%
+\envdef\verbatim{%
+    \setupverbatim\doverbatim
+}
+\let\Everbatim = \afterenvbreak
+
+
+% @verbatiminclude FILE - insert text of file in verbatim environment.
+%
+\def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude}
+%
+\def\doverbatiminclude#1{%
+  {%
+    \makevalueexpandable
+    \setupverbatim
+    \indexnofonts       % Allow `@@' and other weird things in file names.
+    \input #1
+    \afterenvbreak
+  }%
+}
+
+% @copying ... @end copying.
+% Save the text away for @insertcopying later.
+%
+% We save the uninterpreted tokens, rather than creating a box.
+% Saving the text in a box would be much easier, but then all the
+% typesetting commands (@smallbook, font changes, etc.) have to be done
+% beforehand -- and a) we want @copying to be done first in the source
+% file; b) letting users define the frontmatter in as flexible order as
+% possible is very desirable.
+%
+\def\copying{\checkenv{}\begingroup\scanargctxt\docopying}
+\def\docopying#1@end copying{\endgroup\def\copyingtext{#1}}
+%
+\def\insertcopying{%
+  \begingroup
+    \parindent = 0pt  % paragraph indentation looks wrong on title page
+    \scanexp\copyingtext
+  \endgroup
+}
+
+
+\message{defuns,}
+% @defun etc.
+
+\newskip\defbodyindent \defbodyindent=.4in
+\newskip\defargsindent \defargsindent=50pt
+\newskip\deflastargmargin \deflastargmargin=18pt
+\newcount\defunpenalty
+
+% Start the processing of @deffn:
+\def\startdefun{%
+  \ifnum\lastpenalty<10000
+    \medbreak
+    \defunpenalty=10003 % Will keep this @deffn together with the
+                        % following @def command, see below.
+  \else
+    % If there are two @def commands in a row, we'll have a \nobreak,
+    % which is there to keep the function description together with its
+    % header.  But if there's nothing but headers, we need to allow a
+    % break somewhere.  Check specifically for penalty 10002, inserted
+    % by \printdefunline, instead of 10000, since the sectioning
+    % commands also insert a nobreak penalty, and we don't want to allow
+    % a break between a section heading and a defun.
+    %
+    % As a minor refinement, we avoid "club" headers by signalling
+    % with penalty of 10003 after the very first @deffn in the
+    % sequence (see above), and penalty of 10002 after any following
+    % @def command.
+    \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi
+    %
+    % Similarly, after a section heading, do not allow a break.
+    % But do insert the glue.
+    \medskip  % preceded by discardable penalty, so not a breakpoint
+  \fi
+  %
+  \parindent=0in
+  \advance\leftskip by \defbodyindent
+  \exdentamount=\defbodyindent
+}
+
+\def\dodefunx#1{%
+  % First, check whether we are in the right environment:
+  \checkenv#1%
+  %
+  % As above, allow line break if we have multiple x headers in a row.
+  % It's not a great place, though.
+  \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi
+  %
+  % And now, it's time to reuse the body of the original defun:
+  \expandafter\gobbledefun#1%
+}
+\def\gobbledefun#1\startdefun{}
+
+% \printdefunline \deffnheader{text}
+%
+\def\printdefunline#1#2{%
+  \begingroup
+    % call \deffnheader:
+    #1#2 \endheader
+    % common ending:
+    \interlinepenalty = 10000
+    \advance\rightskip by 0pt plus 1fil
+    \endgraf
+    \nobreak\vskip -\parskip
+    \penalty\defunpenalty  % signal to \startdefun and \dodefunx
+    % Some of the @defun-type tags do not enable magic parentheses,
+    % rendering the following check redundant.  But we don't optimize.
+    \checkparencounts
+  \endgroup
+}
+
+\def\Edefun{\endgraf\medbreak}
+
+% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn;
+% the only thing remaining is to define \deffnheader.
+%
+\def\makedefun#1{%
+  \expandafter\let\csname E#1\endcsname = \Edefun
+  \edef\temp{\noexpand\domakedefun
+    \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}%
+  \temp
+}
+
+% \domakedefun \deffn \deffnx \deffnheader
+%
+% Define \deffn and \deffnx, without parameters.
+% \deffnheader has to be defined explicitly.
+%
+\def\domakedefun#1#2#3{%
+  \envdef#1{%
+    \startdefun
+    \parseargusing\activeparens{\printdefunline#3}%
+  }%
+  \def#2{\dodefunx#1}%
+  \def#3%
+}
+
+%%% Untyped functions:
+
+% @deffn category name args
+\makedefun{deffn}{\deffngeneral{}}
+
+% @deffn category class name args
+\makedefun{defop}#1 {\defopon{#1\ \putwordon}}
+
+% \defopon {category on}class name args
+\def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
+
+% \deffngeneral {subind}category name args
+%
+\def\deffngeneral#1#2 #3 #4\endheader{%
+  % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}.
+  \dosubind{fn}{\code{#3}}{#1}%
+  \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}%
+}
+
+%%% Typed functions:
+
+% @deftypefn category type name args
+\makedefun{deftypefn}{\deftypefngeneral{}}
+
+% @deftypeop category class type name args
+\makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}}
+
+% \deftypeopon {category on}class type name args
+\def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
+
+% \deftypefngeneral {subind}category type name args
+%
+\def\deftypefngeneral#1#2 #3 #4 #5\endheader{%
+  \dosubind{fn}{\code{#4}}{#1}%
+  \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
+}
+
+%%% Typed variables:
+
+% @deftypevr category type var args
+\makedefun{deftypevr}{\deftypecvgeneral{}}
+
+% @deftypecv category class type var args
+\makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}}
+
+% \deftypecvof {category of}class type var args
+\def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} }
+
+% \deftypecvgeneral {subind}category type var args
+%
+\def\deftypecvgeneral#1#2 #3 #4 #5\endheader{%
+  \dosubind{vr}{\code{#4}}{#1}%
+  \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
+}
+
+%%% Untyped variables:
+
+% @defvr category var args
+\makedefun{defvr}#1 {\deftypevrheader{#1} {} }
+
+% @defcv category class var args
+\makedefun{defcv}#1 {\defcvof{#1\ \putwordof}}
+
+% \defcvof {category of}class var args
+\def\defcvof#1#2 {\deftypecvof{#1}#2 {} }
+
+%%% Type:
+% @deftp category name args
+\makedefun{deftp}#1 #2 #3\endheader{%
+  \doind{tp}{\code{#2}}%
+  \defname{#1}{}{#2}\defunargs{#3\unskip}%
+}
+
+% Remaining @defun-like shortcuts:
+\makedefun{defun}{\deffnheader{\putwordDeffunc} }
+\makedefun{defmac}{\deffnheader{\putwordDefmac} }
+\makedefun{defspec}{\deffnheader{\putwordDefspec} }
+\makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} }
+\makedefun{defvar}{\defvrheader{\putwordDefvar} }
+\makedefun{defopt}{\defvrheader{\putwordDefopt} }
+\makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} }
+\makedefun{defmethod}{\defopon\putwordMethodon}
+\makedefun{deftypemethod}{\deftypeopon\putwordMethodon}
+\makedefun{defivar}{\defcvof\putwordInstanceVariableof}
+\makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof}
+
+% \defname, which formats the name of the @def (not the args).
+% #1 is the category, such as "Function".
+% #2 is the return type, if any.
+% #3 is the function name.
+%
+% We are followed by (but not passed) the arguments, if any.
+%
+\def\defname#1#2#3{%
+  % Get the values of \leftskip and \rightskip as they were outside the @def...
+  \advance\leftskip by -\defbodyindent
+  %
+  % How we'll format the type name.  Putting it in brackets helps
+  % distinguish it from the body text that may end up on the next line
+  % just below it.
+  \def\temp{#1}%
+  \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi}
+  %
+  % Figure out line sizes for the paragraph shape.
+  % The first line needs space for \box0; but if \rightskip is nonzero,
+  % we need only space for the part of \box0 which exceeds it:
+  \dimen0=\hsize  \advance\dimen0 by -\wd0  \advance\dimen0 by \rightskip
+  % The continuations:
+  \dimen2=\hsize  \advance\dimen2 by -\defargsindent
+  % (plain.tex says that \dimen1 should be used only as global.)
+  \parshape 2 0in \dimen0 \defargsindent \dimen2
+  %
+  % Put the type name to the right margin.
+  \noindent
+  \hbox to 0pt{%
+    \hfil\box0 \kern-\hsize
+    % \hsize has to be shortened this way:
+    \kern\leftskip
+    % Intentionally do not respect \rightskip, since we need the space.
+  }%
+  %
+  % Allow all lines to be underfull without complaint:
+  \tolerance=10000 \hbadness=10000
+  \exdentamount=\defbodyindent
+  {%
+    % defun fonts. We use typewriter by default (used to be bold) because:
+    % . we're printing identifiers, they should be in tt in principle.
+    % . in languages with many accents, such as Czech or French, it's
+    %   common to leave accents off identifiers.  The result looks ok in
+    %   tt, but exceedingly strange in rm.
+    % . we don't want -- and --- to be treated as ligatures.
+    % . this still does not fix the ?` and !` ligatures, but so far no
+    %   one has made identifiers using them :).
+    \df \tt
+    \def\temp{#2}% return value type
+    \ifx\temp\empty\else \tclose{\temp} \fi
+    #3% output function name
+  }%
+  {\rm\enskip}% hskip 0.5 em of \tenrm
+  %
+  \boldbrax
+  % arguments will be output next, if any.
+}
+
+% Print arguments in slanted roman (not ttsl), inconsistently with using
+% tt for the name.  This is because literal text is sometimes needed in
+% the argument list (groff manual), and ttsl and tt are not very
+% distinguishable.  Prevent hyphenation at `-' chars.
+%
+\def\defunargs#1{%
+  % use sl by default (not ttsl),
+  % tt for the names.
+  \df \sl \hyphenchar\font=0
+  %
+  % On the other hand, if an argument has two dashes (for instance), we
+  % want a way to get ttsl.  Let's try @var for that.
+  \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}%
+  #1%
+  \sl\hyphenchar\font=45
+}
+
+% We want ()&[] to print specially on the defun line.
+%
+\def\activeparens{%
+  \catcode`\(=\active \catcode`\)=\active
+  \catcode`\[=\active \catcode`\]=\active
+  \catcode`\&=\active
+}
+
+% Make control sequences which act like normal parenthesis chars.
+\let\lparen = ( \let\rparen = )
+
+% Be sure that we always have a definition for `(', etc.  For example,
+% if the fn name has parens in it, \boldbrax will not be in effect yet,
+% so TeX would otherwise complain about undefined control sequence.
+{
+  \activeparens
+  \global\let(=\lparen \global\let)=\rparen
+  \global\let[=\lbrack \global\let]=\rbrack
+  \global\let& = \&
+
+  \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
+  \gdef\magicamp{\let&=\amprm}
+}
+
+\newcount\parencount
+
+% If we encounter &foo, then turn on ()-hacking afterwards
+\newif\ifampseen
+\def\amprm#1 {\ampseentrue{\bf\&#1 }}
+
+\def\parenfont{%
+  \ifampseen
+    % At the first level, print parens in roman,
+    % otherwise use the default font.
+    \ifnum \parencount=1 \rm \fi
+  \else
+    % The \sf parens (in \boldbrax) actually are a little bolder than
+    % the contained text.  This is especially needed for [ and ] .
+    \sf
+  \fi
+}
+\def\infirstlevel#1{%
+  \ifampseen
+    \ifnum\parencount=1
+      #1%
+    \fi
+  \fi
+}
+\def\bfafterword#1 {#1 \bf}
+
+\def\opnr{%
+  \global\advance\parencount by 1
+  {\parenfont(}%
+  \infirstlevel \bfafterword
+}
+\def\clnr{%
+  {\parenfont)}%
+  \infirstlevel \sl
+  \global\advance\parencount by -1
+}
+
+\newcount\brackcount
+\def\lbrb{%
+  \global\advance\brackcount by 1
+  {\bf[}%
+}
+\def\rbrb{%
+  {\bf]}%
+  \global\advance\brackcount by -1
+}
+
+\def\checkparencounts{%
+  \ifnum\parencount=0 \else \badparencount \fi
+  \ifnum\brackcount=0 \else \badbrackcount \fi
+}
+% these should not use \errmessage; the glibc manual, at least, actually
+% has such constructs (when documenting function pointers).
+\def\badparencount{%
+  \message{Warning: unbalanced parentheses in @def...}%
+  \global\parencount=0
+}
+\def\badbrackcount{%
+  \message{Warning: unbalanced square brackets in @def...}%
+  \global\brackcount=0
+}
+
+
+\message{macros,}
+% @macro.
+
+% To do this right we need a feature of e-TeX, \scantokens,
+% which we arrange to emulate with a temporary file in ordinary TeX.
+\ifx\eTeXversion\undefined
+  \newwrite\macscribble
+  \def\scantokens#1{%
+    \toks0={#1}%
+    \immediate\openout\macscribble=\jobname.tmp
+    \immediate\write\macscribble{\the\toks0}%
+    \immediate\closeout\macscribble
+    \input \jobname.tmp
+  }
+\fi
+
+\def\scanmacro#1{%
+  \begingroup
+    \newlinechar`\^^M
+    \let\xeatspaces\eatspaces
+    % Undo catcode changes of \startcontents and \doprintindex
+    % When called from @insertcopying or (short)caption, we need active
+    % backslash to get it printed correctly.  Previously, we had
+    % \catcode`\\=\other instead.  We'll see whether a problem appears
+    % with macro expansion.                            --kasal, 19aug04
+    \catcode`\@=0 \catcode`\\=\active \escapechar=`\@
+    % ... and \example
+    \spaceisspace
+    %
+    % Append \endinput to make sure that TeX does not see the ending newline.
+    % I've verified that it is necessary both for e-TeX and for ordinary TeX
+    %                                                  --kasal, 29nov03
+    \scantokens{#1\endinput}%
+  \endgroup
+}
+
+\def\scanexp#1{%
+  \edef\temp{\noexpand\scanmacro{#1}}%
+  \temp
+}
+
+\newcount\paramno   % Count of parameters
+\newtoks\macname    % Macro name
+\newif\ifrecursive  % Is it recursive?
+
+% List of all defined macros in the form
+%    \definedummyword\macro1\definedummyword\macro2...
+% Currently is also contains all @aliases; the list can be split
+% if there is a need.
+\def\macrolist{}
+
+% Add the macro to \macrolist
+\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname}
+\def\addtomacrolistxxx#1{%
+     \toks0 = \expandafter{\macrolist\definedummyword#1}%
+     \xdef\macrolist{\the\toks0}%
+}
+
+% Utility routines.
+% This does \let #1 = #2, with \csnames; that is,
+%   \let \csname#1\endcsname = \csname#2\endcsname
+% (except of course we have to play expansion games).
+% 
+\def\cslet#1#2{%
+  \expandafter\let
+  \csname#1\expandafter\endcsname
+  \csname#2\endcsname
+}
+
+% Trim leading and trailing spaces off a string.
+% Concepts from aro-bend problem 15 (see CTAN).
+{\catcode`\@=11
+\gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }}
+\gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@}
+\gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @}
+\def\unbrace#1{#1}
+\unbrace{\gdef\trim@@@ #1 } #2@{#1}
+}
+
+% Trim a single trailing ^^M off a string.
+{\catcode`\^^M=\other \catcode`\Q=3%
+\gdef\eatcr #1{\eatcra #1Q^^MQ}%
+\gdef\eatcra#1^^MQ{\eatcrb#1Q}%
+\gdef\eatcrb#1Q#2Q{#1}%
+}
+
+% Macro bodies are absorbed as an argument in a context where
+% all characters are catcode 10, 11 or 12, except \ which is active
+% (as in normal texinfo). It is necessary to change the definition of \.
+
+% Non-ASCII encodings make 8-bit characters active, so un-activate
+% them to avoid their expansion.  Must do this non-globally, to
+% confine the change to the current group.
+
+% It's necessary to have hard CRs when the macro is executed. This is
+% done by  making ^^M (\endlinechar) catcode 12 when reading the macro
+% body, and then making it the \newlinechar in \scanmacro.
+
+\def\scanctxt{%
+  \catcode`\"=\other
+  \catcode`\+=\other
+  \catcode`\<=\other
+  \catcode`\>=\other
+  \catcode`\@=\other
+  \catcode`\^=\other
+  \catcode`\_=\other
+  \catcode`\|=\other
+  \catcode`\~=\other
+  \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi
+}
+
+\def\scanargctxt{%
+  \scanctxt
+  \catcode`\\=\other
+  \catcode`\^^M=\other
+}
+
+\def\macrobodyctxt{%
+  \scanctxt
+  \catcode`\{=\other
+  \catcode`\}=\other
+  \catcode`\^^M=\other
+  \usembodybackslash
+}
+
+\def\macroargctxt{%
+  \scanctxt
+  \catcode`\\=\other
+}
+
+% \mbodybackslash is the definition of \ in @macro bodies.
+% It maps \foo\ => \csname macarg.foo\endcsname => #N
+% where N is the macro parameter number.
+% We define \csname macarg.\endcsname to be \realbackslash, so
+% \\ in macro replacement text gets you a backslash.
+
+{\catcode`@=0 @catcode`@\=@active
+ @gdef@usembodybackslash{@let\=@mbodybackslash}
+ @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname}
+}
+\expandafter\def\csname macarg.\endcsname{\realbackslash}
+
+\def\macro{\recursivefalse\parsearg\macroxxx}
+\def\rmacro{\recursivetrue\parsearg\macroxxx}
+
+\def\macroxxx#1{%
+  \getargs{#1}%           now \macname is the macname and \argl the arglist
+  \ifx\argl\empty       % no arguments
+     \paramno=0%
+  \else
+     \expandafter\parsemargdef \argl;%
+  \fi
+  \if1\csname ismacro.\the\macname\endcsname
+     \message{Warning: redefining \the\macname}%
+  \else
+     \expandafter\ifx\csname \the\macname\endcsname \relax
+     \else \errmessage{Macro name \the\macname\space already defined}\fi
+     \global\cslet{macsave.\the\macname}{\the\macname}%
+     \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
+     \addtomacrolist{\the\macname}%
+  \fi
+  \begingroup \macrobodyctxt
+  \ifrecursive \expandafter\parsermacbody
+  \else \expandafter\parsemacbody
+  \fi}
+
+\parseargdef\unmacro{%
+  \if1\csname ismacro.#1\endcsname
+    \global\cslet{#1}{macsave.#1}%
+    \global\expandafter\let \csname ismacro.#1\endcsname=0%
+    % Remove the macro name from \macrolist:
+    \begingroup
+      \expandafter\let\csname#1\endcsname \relax
+      \let\definedummyword\unmacrodo
+      \xdef\macrolist{\macrolist}%
+    \endgroup
+  \else
+    \errmessage{Macro #1 not defined}%
+  \fi
+}
+
+% Called by \do from \dounmacro on each macro.  The idea is to omit any
+% macro definitions that have been changed to \relax.
+%
+\def\unmacrodo#1{%
+  \ifx #1\relax
+    % remove this
+  \else
+    \noexpand\definedummyword \noexpand#1%
+  \fi
+}
+
+% This makes use of the obscure feature that if the last token of a
+% <parameter list> is #, then the preceding argument is delimited by
+% an opening brace, and that opening brace is not consumed.
+\def\getargs#1{\getargsxxx#1{}}
+\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs}
+\def\getmacname #1 #2\relax{\macname={#1}}
+\def\getmacargs#1{\def\argl{#1}}
+
+% Parse the optional {params} list.  Set up \paramno and \paramlist
+% so \defmacro knows what to do.  Define \macarg.blah for each blah
+% in the params list, to be ##N where N is the position in that list.
+% That gets used by \mbodybackslash (above).
+
+% We need to get `macro parameter char #' into several definitions.
+% The technique used is stolen from LaTeX:  let \hash be something
+% unexpandable, insert that wherever you need a #, and then redefine
+% it to # just before using the token list produced.
+%
+% The same technique is used to protect \eatspaces till just before
+% the macro is used.
+
+\def\parsemargdef#1;{\paramno=0\def\paramlist{}%
+        \let\hash\relax\let\xeatspaces\relax\parsemargdefxxx#1,;,}
+\def\parsemargdefxxx#1,{%
+  \if#1;\let\next=\relax
+  \else \let\next=\parsemargdefxxx
+    \advance\paramno by 1%
+    \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname
+        {\xeatspaces{\hash\the\paramno}}%
+    \edef\paramlist{\paramlist\hash\the\paramno,}%
+  \fi\next}
+
+% These two commands read recursive and nonrecursive macro bodies.
+% (They're different since rec and nonrec macros end differently.)
+
+\long\def\parsemacbody#1@end macro%
+{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
+\long\def\parsermacbody#1@end rmacro%
+{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
+
+% This defines the macro itself. There are six cases: recursive and
+% nonrecursive macros of zero, one, and many arguments.
+% Much magic with \expandafter here.
+% \xdef is used so that macro definitions will survive the file
+% they're defined in; @include reads the file inside a group.
+\def\defmacro{%
+  \let\hash=##% convert placeholders to macro parameter chars
+  \ifrecursive
+    \ifcase\paramno
+    % 0
+      \expandafter\xdef\csname\the\macname\endcsname{%
+        \noexpand\scanmacro{\temp}}%
+    \or % 1
+      \expandafter\xdef\csname\the\macname\endcsname{%
+         \bgroup\noexpand\macroargctxt
+         \noexpand\braceorline
+         \expandafter\noexpand\csname\the\macname xxx\endcsname}%
+      \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
+         \egroup\noexpand\scanmacro{\temp}}%
+    \else % many
+      \expandafter\xdef\csname\the\macname\endcsname{%
+         \bgroup\noexpand\macroargctxt
+         \noexpand\csname\the\macname xx\endcsname}%
+      \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+          \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+      \expandafter\expandafter
+      \expandafter\xdef
+      \expandafter\expandafter
+        \csname\the\macname xxx\endcsname
+          \paramlist{\egroup\noexpand\scanmacro{\temp}}%
+    \fi
+  \else
+    \ifcase\paramno
+    % 0
+      \expandafter\xdef\csname\the\macname\endcsname{%
+        \noexpand\norecurse{\the\macname}%
+        \noexpand\scanmacro{\temp}\egroup}%
+    \or % 1
+      \expandafter\xdef\csname\the\macname\endcsname{%
+         \bgroup\noexpand\macroargctxt
+         \noexpand\braceorline
+         \expandafter\noexpand\csname\the\macname xxx\endcsname}%
+      \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
+        \egroup
+        \noexpand\norecurse{\the\macname}%
+        \noexpand\scanmacro{\temp}\egroup}%
+    \else % many
+      \expandafter\xdef\csname\the\macname\endcsname{%
+         \bgroup\noexpand\macroargctxt
+         \expandafter\noexpand\csname\the\macname xx\endcsname}%
+      \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+          \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+      \expandafter\expandafter
+      \expandafter\xdef
+      \expandafter\expandafter
+      \csname\the\macname xxx\endcsname
+      \paramlist{%
+          \egroup
+          \noexpand\norecurse{\the\macname}%
+          \noexpand\scanmacro{\temp}\egroup}%
+    \fi
+  \fi}
+
+\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}}
+
+% \braceorline decides whether the next nonwhitespace character is a
+% {.  If so it reads up to the closing }, if not, it reads the whole
+% line.  Whatever was read is then fed to the next control sequence
+% as an argument (by \parsebrace or \parsearg)
+\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
+\def\braceorlinexxx{%
+  \ifx\nchar\bgroup\else
+    \expandafter\parsearg
+  \fi \macnamexxx}
+
+
+% @alias.
+% We need some trickery to remove the optional spaces around the equal
+% sign.  Just make them active and then expand them all to nothing.
+\def\alias{\parseargusing\obeyspaces\aliasxxx}
+\def\aliasxxx #1{\aliasyyy#1\relax}
+\def\aliasyyy #1=#2\relax{%
+  {%
+    \expandafter\let\obeyedspace=\empty
+    \addtomacrolist{#1}%
+    \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}%
+  }%
+  \next
+}
+
+
+\message{cross references,}
+
+\newwrite\auxfile
+\newif\ifhavexrefs    % True if xref values are known.
+\newif\ifwarnedxrefs  % True if we warned once that they aren't known.
+
+% @inforef is relatively simple.
+\def\inforef #1{\inforefzzz #1,,,,**}
+\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
+  node \samp{\ignorespaces#1{}}}
+
+% @node's only job in TeX is to define \lastnode, which is used in
+% cross-references.  The @node line might or might not have commas, and
+% might or might not have spaces before the first comma, like:
+% @node foo , bar , ...
+% We don't want such trailing spaces in the node name.
+%
+\parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse}
+%
+% also remove a trailing comma, in case of something like this:
+% @node Help-Cross,  ,  , Cross-refs
+\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse}
+\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}}
+
+\let\nwnode=\node
+\let\lastnode=\empty
+
+% Write a cross-reference definition for the current node.  #1 is the
+% type (Ynumbered, Yappendix, Ynothing).
+%
+\def\donoderef#1{%
+  \ifx\lastnode\empty\else
+    \setref{\lastnode}{#1}%
+    \global\let\lastnode=\empty
+  \fi
+}
+
+% @anchor{NAME} -- define xref target at arbitrary point.
+%
+\newcount\savesfregister
+%
+\def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi}
+\def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi}
+\def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces}
+
+% \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an
+% anchor), which consists of three parts:
+% 1) NAME-title - the current sectioning name taken from \lastsection,
+%                 or the anchor name.
+% 2) NAME-snt   - section number and type, passed as the SNT arg, or
+%                 empty for anchors.
+% 3) NAME-pg    - the page number.
+%
+% This is called from \donoderef, \anchor, and \dofloat.  In the case of
+% floats, there is an additional part, which is not written here:
+% 4) NAME-lof   - the text as it should appear in a @listoffloats.
+%
+\def\setref#1#2{%
+  \pdfmkdest{#1}%
+  \iflinks
+    {%
+      \atdummies  % preserve commands, but don't expand them
+      \edef\writexrdef##1##2{%
+       \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef
+         ##1}{##2}}% these are parameters of \writexrdef
+      }%
+      \toks0 = \expandafter{\lastsection}%
+      \immediate \writexrdef{title}{\the\toks0 }%
+      \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
+      \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, during \shipout
+    }%
+  \fi
+}
+
+% @xref, @pxref, and @ref generate cross-references.  For \xrefX, #1 is
+% the node name, #2 the name of the Info cross-reference, #3 the printed
+% node name, #4 the name of the Info file, #5 the name of the printed
+% manual.  All but the node name can be omitted.
+%
+\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]}
+\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]}
+\def\ref#1{\xrefX[#1,,,,,,,]}
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
+  \unsepspaces
+  \def\printedmanual{\ignorespaces #5}%
+  \def\printedrefname{\ignorespaces #3}%
+  \setbox1=\hbox{\printedmanual\unskip}%
+  \setbox0=\hbox{\printedrefname\unskip}%
+  \ifdim \wd0 = 0pt
+    % No printed node name was explicitly given.
+    \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax
+      % Use the node name inside the square brackets.
+      \def\printedrefname{\ignorespaces #1}%
+    \else
+      % Use the actual chapter/section title appear inside
+      % the square brackets.  Use the real section title if we have it.
+      \ifdim \wd1 > 0pt
+        % It is in another manual, so we don't have it.
+        \def\printedrefname{\ignorespaces #1}%
+      \else
+        \ifhavexrefs
+          % We know the real title if we have the xref values.
+          \def\printedrefname{\refx{#1-title}{}}%
+        \else
+          % Otherwise just copy the Info node name.
+          \def\printedrefname{\ignorespaces #1}%
+        \fi%
+      \fi
+    \fi
+  \fi
+  %
+  % Make link in pdf output.
+  \ifpdf
+    {\indexnofonts
+     \turnoffactive
+     % This expands tokens, so do it after making catcode changes, so _
+     % etc. don't get their TeX definitions.
+     \getfilename{#4}%
+     %
+     % See comments at \activebackslashdouble.
+     {\activebackslashdouble \xdef\pdfxrefdest{#1}%
+      \backslashparens\pdfxrefdest}%
+     %
+     \leavevmode
+     \startlink attr{/Border [0 0 0]}%
+     \ifnum\filenamelength>0
+       goto file{\the\filename.pdf} name{\pdfxrefdest}%
+     \else
+       goto name{\pdfmkpgn{\pdfxrefdest}}%
+     \fi
+    }%
+    \setcolor{\linkcolor}%
+  \fi
+  %
+  % Float references are printed completely differently: "Figure 1.2"
+  % instead of "[somenode], p.3".  We distinguish them by the
+  % LABEL-title being set to a magic string.
+  {%
+    % Have to otherify everything special to allow the \csname to
+    % include an _ in the xref name, etc.
+    \indexnofonts
+    \turnoffactive
+    \expandafter\global\expandafter\let\expandafter\Xthisreftitle
+      \csname XR#1-title\endcsname
+  }%
+  \iffloat\Xthisreftitle
+    % If the user specified the print name (third arg) to the ref,
+    % print it instead of our usual "Figure 1.2".
+    \ifdim\wd0 = 0pt
+      \refx{#1-snt}{}%
+    \else
+      \printedrefname
+    \fi
+    %
+    % if the user also gave the printed manual name (fifth arg), append
+    % "in MANUALNAME".
+    \ifdim \wd1 > 0pt
+      \space \putwordin{} \cite{\printedmanual}%
+    \fi
+  \else
+    % node/anchor (non-float) references.
+    %
+    % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not
+    % insert empty discretionaries after hyphens, which means that it will
+    % not find a line break at a hyphen in a node names.  Since some manuals
+    % are best written with fairly long node names, containing hyphens, this
+    % is a loss.  Therefore, we give the text of the node name again, so it
+    % is as if TeX is seeing it for the first time.
+    \ifdim \wd1 > 0pt
+      \putwordSection{} ``\printedrefname'' \putwordin{} \cite{\printedmanual}%
+    \else
+      % _ (for example) has to be the character _ for the purposes of the
+      % control sequence corresponding to the node, but it has to expand
+      % into the usual \leavevmode...\vrule stuff for purposes of
+      % printing. So we \turnoffactive for the \refx-snt, back on for the
+      % printing, back off for the \refx-pg.
+      {\turnoffactive
+       % Only output a following space if the -snt ref is nonempty; for
+       % @unnumbered and @anchor, it won't be.
+       \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
+       \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi
+      }%
+      % output the `[mynode]' via a macro so it can be overridden.
+      \xrefprintnodename\printedrefname
+      %
+      % But we always want a comma and a space:
+      ,\space
+      %
+      % output the `page 3'.
+      \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
+    \fi
+  \fi
+  \endlink
+\endgroup}
+
+% This macro is called from \xrefX for the `[nodename]' part of xref
+% output.  It's a separate macro only so it can be changed more easily,
+% since square brackets don't work well in some documents.  Particularly
+% one that Bob is working on :).
+%
+\def\xrefprintnodename#1{[#1]}
+
+% Things referred to by \setref.
+%
+\def\Ynothing{}
+\def\Yomitfromtoc{}
+\def\Ynumbered{%
+  \ifnum\secno=0
+    \putwordChapter@tie \the\chapno
+  \else \ifnum\subsecno=0
+    \putwordSection@tie \the\chapno.\the\secno
+  \else \ifnum\subsubsecno=0
+    \putwordSection@tie \the\chapno.\the\secno.\the\subsecno
+  \else
+    \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno
+  \fi\fi\fi
+}
+\def\Yappendix{%
+  \ifnum\secno=0
+     \putwordAppendix@tie @char\the\appendixno{}%
+  \else \ifnum\subsecno=0
+     \putwordSection@tie @char\the\appendixno.\the\secno
+  \else \ifnum\subsubsecno=0
+    \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno
+  \else
+    \putwordSection@tie
+      @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno
+  \fi\fi\fi
+}
+
+% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME.
+% If its value is nonempty, SUFFIX is output afterward.
+%
+\def\refx#1#2{%
+  {%
+    \indexnofonts
+    \otherbackslash
+    \expandafter\global\expandafter\let\expandafter\thisrefX
+      \csname XR#1\endcsname
+  }%
+  \ifx\thisrefX\relax
+    % If not defined, say something at least.
+    \angleleft un\-de\-fined\angleright
+    \iflinks
+      \ifhavexrefs
+        \message{\linenumber Undefined cross reference `#1'.}%
+      \else
+        \ifwarnedxrefs\else
+          \global\warnedxrefstrue
+          \message{Cross reference values unknown; you must run TeX again.}%
+        \fi
+      \fi
+    \fi
+  \else
+    % It's defined, so just use it.
+    \thisrefX
+  \fi
+  #2% Output the suffix in any case.
+}
+
+% This is the macro invoked by entries in the aux file.  Usually it's
+% just a \def (we prepend XR to the control sequence name to avoid
+% collisions).  But if this is a float type, we have more work to do.
+%
+\def\xrdef#1#2{%
+  {% The node name might contain 8-bit characters, which in our current
+   % implementation are changed to commands like @'e.  Don't let these
+   % mess up the control sequence name.
+    \indexnofonts
+    \turnoffactive
+    \xdef\safexrefname{#1}%
+  }%
+  %
+  \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref
+  %
+  % Was that xref control sequence that we just defined for a float?
+  \expandafter\iffloat\csname XR\safexrefname\endcsname
+    % it was a float, and we have the (safe) float type in \iffloattype.
+    \expandafter\let\expandafter\floatlist
+      \csname floatlist\iffloattype\endcsname
+    %
+    % Is this the first time we've seen this float type?
+    \expandafter\ifx\floatlist\relax
+      \toks0 = {\do}% yes, so just \do
+    \else
+      % had it before, so preserve previous elements in list.
+      \toks0 = \expandafter{\floatlist\do}%
+    \fi
+    %
+    % Remember this xref in the control sequence \floatlistFLOATTYPE,
+    % for later use in \listoffloats.
+    \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0
+      {\safexrefname}}%
+  \fi
+}
+
+% Read the last existing aux file, if any.  No error if none exists.
+%
+\def\tryauxfile{%
+  \openin 1 \jobname.aux
+  \ifeof 1 \else
+    \readdatafile{aux}%
+    \global\havexrefstrue
+  \fi
+  \closein 1
+}
+
+\def\setupdatafile{%
+  \catcode`\^^@=\other
+  \catcode`\^^A=\other
+  \catcode`\^^B=\other
+  \catcode`\^^C=\other
+  \catcode`\^^D=\other
+  \catcode`\^^E=\other
+  \catcode`\^^F=\other
+  \catcode`\^^G=\other
+  \catcode`\^^H=\other
+  \catcode`\^^K=\other
+  \catcode`\^^L=\other
+  \catcode`\^^N=\other
+  \catcode`\^^P=\other
+  \catcode`\^^Q=\other
+  \catcode`\^^R=\other
+  \catcode`\^^S=\other
+  \catcode`\^^T=\other
+  \catcode`\^^U=\other
+  \catcode`\^^V=\other
+  \catcode`\^^W=\other
+  \catcode`\^^X=\other
+  \catcode`\^^Z=\other
+  \catcode`\^^[=\other
+  \catcode`\^^\=\other
+  \catcode`\^^]=\other
+  \catcode`\^^^=\other
+  \catcode`\^^_=\other
+  % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc.
+  % in xref tags, i.e., node names.  But since ^^e4 notation isn't
+  % supported in the main text, it doesn't seem desirable.  Furthermore,
+  % that is not enough: for node names that actually contain a ^
+  % character, we would end up writing a line like this: 'xrdef {'hat
+  % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first
+  % argument, and \hat is not an expandable control sequence.  It could
+  % all be worked out, but why?  Either we support ^^ or we don't.
+  %
+  % The other change necessary for this was to define \auxhat:
+  % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter
+  % and then to call \auxhat in \setq.
+  %
+  \catcode`\^=\other
+  %
+  % Special characters.  Should be turned off anyway, but...
+  \catcode`\~=\other
+  \catcode`\[=\other
+  \catcode`\]=\other
+  \catcode`\"=\other
+  \catcode`\_=\other
+  \catcode`\|=\other
+  \catcode`\<=\other
+  \catcode`\>=\other
+  \catcode`\$=\other
+  \catcode`\#=\other
+  \catcode`\&=\other
+  \catcode`\%=\other
+  \catcode`+=\other % avoid \+ for paranoia even though we've turned it off
+  %
+  % This is to support \ in node names and titles, since the \
+  % characters end up in a \csname.  It's easier than
+  % leaving it active and making its active definition an actual \
+  % character.  What I don't understand is why it works in the *value*
+  % of the xrdef.  Seems like it should be a catcode12 \, and that
+  % should not typeset properly.  But it works, so I'm moving on for
+  % now.  --karl, 15jan04.
+  \catcode`\\=\other
+  %
+  % Make the characters 128-255 be printing characters.
+  {%
+    \count1=128
+    \def\loop{%
+      \catcode\count1=\other
+      \advance\count1 by 1
+      \ifnum \count1<256 \loop \fi
+    }%
+  }%
+  %
+  % @ is our escape character in .aux files, and we need braces.
+  \catcode`\{=1
+  \catcode`\}=2
+  \catcode`\@=0
+}
+
+\def\readdatafile#1{%
+\begingroup
+  \setupdatafile
+  \input\jobname.#1
+\endgroup}
+
+
+\message{insertions,}
+% including footnotes.
+
+\newcount \footnoteno
+
+% The trailing space in the following definition for supereject is
+% vital for proper filling; pages come out unaligned when you do a
+% pagealignmacro call if that space before the closing brace is
+% removed. (Generally, numeric constants should always be followed by a
+% space to prevent strange expansion errors.)
+\def\supereject{\par\penalty -20000\footnoteno =0 }
+
+% @footnotestyle is meaningful for info output only.
+\let\footnotestyle=\comment
+
+{\catcode `\@=11
+%
+% Auto-number footnotes.  Otherwise like plain.
+\gdef\footnote{%
+  \let\indent=\ptexindent
+  \let\noindent=\ptexnoindent
+  \global\advance\footnoteno by \@ne
+  \edef\thisfootno{$^{\the\footnoteno}$}%
+  %
+  % In case the footnote comes at the end of a sentence, preserve the
+  % extra spacing after we do the footnote number.
+  \let\@sf\empty
+  \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi
+  %
+  % Remove inadvertent blank space before typesetting the footnote number.
+  \unskip
+  \thisfootno\@sf
+  \dofootnote
+}%
+
+% Don't bother with the trickery in plain.tex to not require the
+% footnote text as a parameter.  Our footnotes don't need to be so general.
+%
+% Oh yes, they do; otherwise, @ifset (and anything else that uses
+% \parseargline) fails inside footnotes because the tokens are fixed when
+% the footnote is read.  --karl, 16nov96.
+%
+\gdef\dofootnote{%
+  \insert\footins\bgroup
+  % We want to typeset this text as a normal paragraph, even if the
+  % footnote reference occurs in (for example) a display environment.
+  % So reset some parameters.
+  \hsize=\pagewidth
+  \interlinepenalty\interfootnotelinepenalty
+  \splittopskip\ht\strutbox % top baseline for broken footnotes
+  \splitmaxdepth\dp\strutbox
+  \floatingpenalty\@MM
+  \leftskip\z@skip
+  \rightskip\z@skip
+  \spaceskip\z@skip
+  \xspaceskip\z@skip
+  \parindent\defaultparindent
+  %
+  \smallfonts \rm
+  %
+  % Because we use hanging indentation in footnotes, a @noindent appears
+  % to exdent this text, so make it be a no-op.  makeinfo does not use
+  % hanging indentation so @noindent can still be needed within footnote
+  % text after an @example or the like (not that this is good style).
+  \let\noindent = \relax
+  %
+  % Hang the footnote text off the number.  Use \everypar in case the
+  % footnote extends for more than one paragraph.
+  \everypar = {\hang}%
+  \textindent{\thisfootno}%
+  %
+  % Don't crash into the line above the footnote text.  Since this
+  % expands into a box, it must come within the paragraph, lest it
+  % provide a place where TeX can split the footnote.
+  \footstrut
+  \futurelet\next\fo@t
+}
+}%end \catcode `\@=11
+
+% In case a @footnote appears in a vbox, save the footnote text and create
+% the real \insert just after the vbox finished.  Otherwise, the insertion
+% would be lost.
+% Similarly, if a @footnote appears inside an alignment, save the footnote
+% text to a box and make the \insert when a row of the table is finished.
+% And the same can be done for other insert classes.  --kasal, 16nov03.
+
+% Replace the \insert primitive by a cheating macro.
+% Deeper inside, just make sure that the saved insertions are not spilled
+% out prematurely.
+%
+\def\startsavinginserts{%
+  \ifx \insert\ptexinsert
+    \let\insert\saveinsert
+  \else
+    \let\checkinserts\relax
+  \fi
+}
+
+% This \insert replacement works for both \insert\footins{foo} and
+% \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}.
+%
+\def\saveinsert#1{%
+  \edef\next{\noexpand\savetobox \makeSAVEname#1}%
+  \afterassignment\next
+  % swallow the left brace
+  \let\temp =
+}
+\def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}}
+\def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1}
+
+\def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi}
+
+\def\placesaveins#1{%
+  \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname
+    {\box#1}%
+}
+
+% eat @SAVE -- beware, all of them have catcode \other:
+{
+  \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials  %  ;-)
+  \gdef\gobblesave @SAVE{}
+}
+
+% initialization:
+\def\newsaveins #1{%
+  \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}%
+  \next
+}
+\def\newsaveinsX #1{%
+  \csname newbox\endcsname #1%
+  \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts
+    \checksaveins #1}%
+}
+
+% initialize:
+\let\checkinserts\empty
+\newsaveins\footins
+\newsaveins\margin
+
+
+% @image.  We use the macros from epsf.tex to support this.
+% If epsf.tex is not installed and @image is used, we complain.
+%
+% Check for and read epsf.tex up front.  If we read it only at @image
+% time, we might be inside a group, and then its definitions would get
+% undone and the next image would fail.
+\openin 1 = epsf.tex
+\ifeof 1 \else
+  % Do not bother showing banner with epsf.tex v2.7k (available in
+  % doc/epsf.tex and on ctan).
+  \def\epsfannounce{\toks0 = }%
+  \input epsf.tex
+\fi
+\closein 1
+%
+% We will only complain once about lack of epsf.tex.
+\newif\ifwarnednoepsf
+\newhelp\noepsfhelp{epsf.tex must be installed for images to
+  work.  It is also included in the Texinfo distribution, or you can get
+  it from ftp://tug.org/tex/epsf.tex.}
+%
+\def\image#1{%
+  \ifx\epsfbox\undefined
+    \ifwarnednoepsf \else
+      \errhelp = \noepsfhelp
+      \errmessage{epsf.tex not found, images will be ignored}%
+      \global\warnednoepsftrue
+    \fi
+  \else
+    \imagexxx #1,,,,,\finish
+  \fi
+}
+%
+% Arguments to @image:
+% #1 is (mandatory) image filename; we tack on .eps extension.
+% #2 is (optional) width, #3 is (optional) height.
+% #4 is (ignored optional) html alt text.
+% #5 is (ignored optional) extension.
+% #6 is just the usual extra ignored arg for parsing this stuff.
+\newif\ifimagevmode
+\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup
+  \catcode`\^^M = 5     % in case we're inside an example
+  \normalturnoffactive  % allow _ et al. in names
+  % If the image is by itself, center it.
+  \ifvmode
+    \imagevmodetrue
+    \nobreak\medskip
+    % Usually we'll have text after the image which will insert
+    % \parskip glue, so insert it here too to equalize the space
+    % above and below.
+    \nobreak\vskip\parskip
+    \nobreak
+  \fi
+  %
+  % Leave vertical mode so that indentation from an enclosing
+  % environment such as @quotation is respected.  On the other hand, if
+  % it's at the top level, we don't want the normal paragraph indentation.
+  \noindent
+  %
+  % Output the image.
+  \ifpdf
+    \dopdfimage{#1}{#2}{#3}%
+  \else
+    % \epsfbox itself resets \epsf?size at each figure.
+    \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi
+    \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi
+    \epsfbox{#1.eps}%
+  \fi
+  %
+  \ifimagevmode \medskip \fi  % space after the standalone image
+\endgroup}
+
+
+% @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables,
+% etc.  We don't actually implement floating yet, we always include the
+% float "here".  But it seemed the best name for the future.
+%
+\envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish}
+
+% There may be a space before second and/or third parameter; delete it.
+\def\eatcommaspace#1, {#1,}
+
+% #1 is the optional FLOATTYPE, the text label for this float, typically
+% "Figure", "Table", "Example", etc.  Can't contain commas.  If omitted,
+% this float will not be numbered and cannot be referred to.
+%
+% #2 is the optional xref label.  Also must be present for the float to
+% be referable.
+%
+% #3 is the optional positioning argument; for now, it is ignored.  It
+% will somehow specify the positions allowed to float to (here, top, bottom).
+%
+% We keep a separate counter for each FLOATTYPE, which we reset at each
+% chapter-level command.
+\let\resetallfloatnos=\empty
+%
+\def\dofloat#1,#2,#3,#4\finish{%
+  \let\thiscaption=\empty
+  \let\thisshortcaption=\empty
+  %
+  % don't lose footnotes inside @float.
+  %
+  % BEWARE: when the floats start float, we have to issue warning whenever an
+  % insert appears inside a float which could possibly float. --kasal, 26may04
+  %
+  \startsavinginserts
+  %
+  % We can't be used inside a paragraph.
+  \par
+  %
+  \vtop\bgroup
+    \def\floattype{#1}%
+    \def\floatlabel{#2}%
+    \def\floatloc{#3}% we do nothing with this yet.
+    %
+    \ifx\floattype\empty
+      \let\safefloattype=\empty
+    \else
+      {%
+        % the floattype might have accents or other special characters,
+        % but we need to use it in a control sequence name.
+        \indexnofonts
+        \turnoffactive
+        \xdef\safefloattype{\floattype}%
+      }%
+    \fi
+    %
+    % If label is given but no type, we handle that as the empty type.
+    \ifx\floatlabel\empty \else
+      % We want each FLOATTYPE to be numbered separately (Figure 1,
+      % Table 1, Figure 2, ...).  (And if no label, no number.)
+      %
+      \expandafter\getfloatno\csname\safefloattype floatno\endcsname
+      \global\advance\floatno by 1
+      %
+      {%
+        % This magic value for \lastsection is output by \setref as the
+        % XREFLABEL-title value.  \xrefX uses it to distinguish float
+        % labels (which have a completely different output format) from
+        % node and anchor labels.  And \xrdef uses it to construct the
+        % lists of floats.
+        %
+        \edef\lastsection{\floatmagic=\safefloattype}%
+        \setref{\floatlabel}{Yfloat}%
+      }%
+    \fi
+    %
+    % start with \parskip glue, I guess.
+    \vskip\parskip
+    %
+    % Don't suppress indentation if a float happens to start a section.
+    \restorefirstparagraphindent
+}
+
+% we have these possibilities:
+% @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap
+% @float Foo,lbl & no caption:    Foo 1.1
+% @float Foo & @caption{Cap}:     Foo: Cap
+% @float Foo & no caption:        Foo
+% @float ,lbl & Caption{Cap}:     1.1: Cap
+% @float ,lbl & no caption:       1.1
+% @float & @caption{Cap}:         Cap
+% @float & no caption:
+%
+\def\Efloat{%
+    \let\floatident = \empty
+    %
+    % In all cases, if we have a float type, it comes first.
+    \ifx\floattype\empty \else \def\floatident{\floattype}\fi
+    %
+    % If we have an xref label, the number comes next.
+    \ifx\floatlabel\empty \else
+      \ifx\floattype\empty \else % if also had float type, need tie first.
+        \appendtomacro\floatident{\tie}%
+      \fi
+      % the number.
+      \appendtomacro\floatident{\chaplevelprefix\the\floatno}%
+    \fi
+    %
+    % Start the printed caption with what we've constructed in
+    % \floatident, but keep it separate; we need \floatident again.
+    \let\captionline = \floatident
+    %
+    \ifx\thiscaption\empty \else
+      \ifx\floatident\empty \else
+       \appendtomacro\captionline{: }% had ident, so need a colon between
+      \fi
+      %
+      % caption text.
+      \appendtomacro\captionline{\scanexp\thiscaption}%
+    \fi
+    %
+    % If we have anything to print, print it, with space before.
+    % Eventually this needs to become an \insert.
+    \ifx\captionline\empty \else
+      \vskip.5\parskip
+      \captionline
+      %
+      % Space below caption.
+      \vskip\parskip
+    \fi
+    %
+    % If have an xref label, write the list of floats info.  Do this
+    % after the caption, to avoid chance of it being a breakpoint.
+    \ifx\floatlabel\empty \else
+      % Write the text that goes in the lof to the aux file as
+      % \floatlabel-lof.  Besides \floatident, we include the short
+      % caption if specified, else the full caption if specified, else nothing.
+      {%
+        \atdummies
+        %
+        % since we read the caption text in the macro world, where ^^M
+        % is turned into a normal character, we have to scan it back, so
+        % we don't write the literal three characters "^^M" into the aux file.
+       \scanexp{%
+         \xdef\noexpand\gtemp{%
+           \ifx\thisshortcaption\empty
+             \thiscaption
+           \else
+             \thisshortcaption
+           \fi
+         }%
+       }%
+        \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident
+         \ifx\gtemp\empty \else : \gtemp \fi}}%
+      }%
+    \fi
+  \egroup  % end of \vtop
+  %
+  % place the captured inserts
+  %
+  % BEWARE: when the floats start floating, we have to issue warning
+  % whenever an insert appears inside a float which could possibly
+  % float. --kasal, 26may04
+  %
+  \checkinserts
+}
+
+% Append the tokens #2 to the definition of macro #1, not expanding either.
+%
+\def\appendtomacro#1#2{%
+  \expandafter\def\expandafter#1\expandafter{#1#2}%
+}
+
+% @caption, @shortcaption
+%
+\def\caption{\docaption\thiscaption}
+\def\shortcaption{\docaption\thisshortcaption}
+\def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption}
+\def\defcaption#1#2{\egroup \def#1{#2}}
+
+% The parameter is the control sequence identifying the counter we are
+% going to use.  Create it if it doesn't exist and assign it to \floatno.
+\def\getfloatno#1{%
+  \ifx#1\relax
+      % Haven't seen this figure type before.
+      \csname newcount\endcsname #1%
+      %
+      % Remember to reset this floatno at the next chap.
+      \expandafter\gdef\expandafter\resetallfloatnos
+        \expandafter{\resetallfloatnos #1=0 }%
+  \fi
+  \let\floatno#1%
+}
+
+% \setref calls this to get the XREFLABEL-snt value.  We want an @xref
+% to the FLOATLABEL to expand to "Figure 3.1".  We call \setref when we
+% first read the @float command.
+%
+\def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}%
+
+% Magic string used for the XREFLABEL-title value, so \xrefX can
+% distinguish floats from other xref types.
+\def\floatmagic{!!float!!}
+
+% #1 is the control sequence we are passed; we expand into a conditional
+% which is true if #1 represents a float ref.  That is, the magic
+% \lastsection value which we \setref above.
+%
+\def\iffloat#1{\expandafter\doiffloat#1==\finish}
+%
+% #1 is (maybe) the \floatmagic string.  If so, #2 will be the
+% (safe) float type for this float.  We set \iffloattype to #2.
+%
+\def\doiffloat#1=#2=#3\finish{%
+  \def\temp{#1}%
+  \def\iffloattype{#2}%
+  \ifx\temp\floatmagic
+}
+
+% @listoffloats FLOATTYPE - print a list of floats like a table of contents.
+%
+\parseargdef\listoffloats{%
+  \def\floattype{#1}% floattype
+  {%
+    % the floattype might have accents or other special characters,
+    % but we need to use it in a control sequence name.
+    \indexnofonts
+    \turnoffactive
+    \xdef\safefloattype{\floattype}%
+  }%
+  %
+  % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE.
+  \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax
+    \ifhavexrefs
+      % if the user said @listoffloats foo but never @float foo.
+      \message{\linenumber No `\safefloattype' floats to list.}%
+    \fi
+  \else
+    \begingroup
+      \leftskip=\tocindent  % indent these entries like a toc
+      \let\do=\listoffloatsdo
+      \csname floatlist\safefloattype\endcsname
+    \endgroup
+  \fi
+}
+
+% This is called on each entry in a list of floats.  We're passed the
+% xref label, in the form LABEL-title, which is how we save it in the
+% aux file.  We strip off the -title and look up \XRLABEL-lof, which
+% has the text we're supposed to typeset here.
+%
+% Figures without xref labels will not be included in the list (since
+% they won't appear in the aux file).
+%
+\def\listoffloatsdo#1{\listoffloatsdoentry#1\finish}
+\def\listoffloatsdoentry#1-title\finish{{%
+  % Can't fully expand XR#1-lof because it can contain anything.  Just
+  % pass the control sequence.  On the other hand, XR#1-pg is just the
+  % page number, and we want to fully expand that so we can get a link
+  % in pdf output.
+  \toksA = \expandafter{\csname XR#1-lof\endcsname}%
+  %
+  % use the same \entry macro we use to generate the TOC and index.
+  \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}%
+  \writeentry
+}}
+
+
+\message{localization,}
+
+% For single-language documents, @documentlanguage is usually given very
+% early, just after @documentencoding.  Single argument is the language
+% (de) or locale (de_DE) abbreviation.
+%
+{
+  \catcode`\_ = \active
+  \globaldefs=1
+\parseargdef\documentlanguage{\begingroup
+  \let_=\normalunderscore  % normal _ character for filenames
+  \tex % read txi-??.tex file in plain TeX.
+    % Read the file by the name they passed if it exists.
+    \openin 1 txi-#1.tex
+    \ifeof 1
+      \documentlanguagetrywithoutunderscore{#1_\finish}%
+    \else
+      \globaldefs = 1  % everything in the txi-LL files needs to persist
+      \input txi-#1.tex
+    \fi
+    \closein 1
+  \endgroup % end raw TeX
+\endgroup}
+}
+%
+% If they passed de_DE, and txi-de_DE.tex doesn't exist,
+% try txi-de.tex.
+% 
+\def\documentlanguagetrywithoutunderscore#1_#2\finish{%
+  \openin 1 txi-#1.tex
+  \ifeof 1
+    \errhelp = \nolanghelp
+    \errmessage{Cannot read language file txi-#1.tex}%
+  \else
+    \input txi-#1.tex
+  \fi
+  \closein 1
+}
+%
+\newhelp\nolanghelp{The given language definition file cannot be found or
+is empty.  Maybe you need to install it?  Putting it in the current
+directory should work if nowhere else does.}
+
+% This macro is called from txi-??.tex files; the first argument is the
+% \language name to set (without the "\lang@" prefix), the second and
+% third args are \{left,right}hyphenmin.
+% 
+% The language names to pass are determined when the format is built.
+% See the etex.log file created at that time, e.g.,
+% /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log.
+% 
+% With TeX Live 2008, etex now includes hyphenation patterns for all
+% available languages.  This means we can support hyphenation in
+% Texinfo, at least to some extent.  (This still doesn't solve the
+% accented characters problem.)
+% 
+\catcode`@=11
+\def\txisetlanguage#1#2#3{%
+  % do not set the language if the name is undefined in the current TeX.
+  \expandafter\ifx\csname lang@#1\endcsname \relax
+    \message{no patterns for #1}%
+  \else
+    \global\language = \csname lang@#1\endcsname
+  \fi
+  % but there is no harm in adjusting the hyphenmin values regardless.
+  \global\lefthyphenmin = #2\relax
+  \global\righthyphenmin = #3\relax
+}
+
+% Helpers for encodings.
+% Set the catcode of characters 128 through 255 to the specified number.
+%
+\def\setnonasciicharscatcode#1{%
+   \count255=128
+   \loop\ifnum\count255<256
+      \global\catcode\count255=#1\relax
+      \advance\count255 by 1
+   \repeat
+}
+
+\def\setnonasciicharscatcodenonglobal#1{%
+   \count255=128
+   \loop\ifnum\count255<256
+      \catcode\count255=#1\relax
+      \advance\count255 by 1
+   \repeat
+}
+
+% @documentencoding sets the definition of non-ASCII characters
+% according to the specified encoding.
+%
+\parseargdef\documentencoding{%
+  % Encoding being declared for the document.
+  \def\declaredencoding{\csname #1.enc\endcsname}%
+  %
+  % Supported encodings: names converted to tokens in order to be able
+  % to compare them with \ifx.
+  \def\ascii{\csname US-ASCII.enc\endcsname}%
+  \def\latnine{\csname ISO-8859-15.enc\endcsname}%
+  \def\latone{\csname ISO-8859-1.enc\endcsname}%
+  \def\lattwo{\csname ISO-8859-2.enc\endcsname}%
+  \def\utfeight{\csname UTF-8.enc\endcsname}%
+  %
+  \ifx \declaredencoding \ascii
+     \asciichardefs
+  %
+  \else \ifx \declaredencoding \lattwo
+     \setnonasciicharscatcode\active
+     \lattwochardefs
+  %
+  \else \ifx \declaredencoding \latone 
+     \setnonasciicharscatcode\active
+     \latonechardefs
+  %
+  \else \ifx \declaredencoding \latnine
+     \setnonasciicharscatcode\active
+     \latninechardefs
+  %
+  \else \ifx \declaredencoding \utfeight
+     \setnonasciicharscatcode\active
+     \utfeightchardefs
+  %
+  \else 
+    \message{Unknown document encoding #1, ignoring.}%
+  %
+  \fi % utfeight
+  \fi % latnine
+  \fi % latone
+  \fi % lattwo
+  \fi % ascii
+}
+
+% A message to be logged when using a character that isn't available
+% the default font encoding (OT1).
+% 
+\def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}}
+
+% Take account of \c (plain) vs. \, (Texinfo) difference.
+\def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi}
+
+% First, make active non-ASCII characters in order for them to be
+% correctly categorized when TeX reads the replacement text of
+% macros containing the character definitions.
+\setnonasciicharscatcode\active
+%
+% Latin1 (ISO-8859-1) character definitions.
+\def\latonechardefs{%
+  \gdef^^a0{~} 
+  \gdef^^a1{\exclamdown}
+  \gdef^^a2{\missingcharmsg{CENT SIGN}} 
+  \gdef^^a3{{\pounds}}
+  \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
+  \gdef^^a5{\missingcharmsg{YEN SIGN}}
+  \gdef^^a6{\missingcharmsg{BROKEN BAR}} 
+  \gdef^^a7{\S}
+  \gdef^^a8{\"{}} 
+  \gdef^^a9{\copyright} 
+  \gdef^^aa{\ordf}
+  \gdef^^ab{\guillemetleft}
+  \gdef^^ac{$\lnot$}
+  \gdef^^ad{\-} 
+  \gdef^^ae{\registeredsymbol} 
+  \gdef^^af{\={}}
+  %
+  \gdef^^b0{\textdegree}
+  \gdef^^b1{$\pm$}
+  \gdef^^b2{$^2$}
+  \gdef^^b3{$^3$}
+  \gdef^^b4{\'{}}
+  \gdef^^b5{$\mu$}
+  \gdef^^b6{\P}
+  %
+  \gdef^^b7{$^.$}
+  \gdef^^b8{\cedilla\ }
+  \gdef^^b9{$^1$}
+  \gdef^^ba{\ordm}
+  %
+  \gdef^^bb{\guilletright}
+  \gdef^^bc{$1\over4$}
+  \gdef^^bd{$1\over2$}
+  \gdef^^be{$3\over4$}
+  \gdef^^bf{\questiondown}
+  %
+  \gdef^^c0{\`A}
+  \gdef^^c1{\'A}
+  \gdef^^c2{\^A}
+  \gdef^^c3{\~A}
+  \gdef^^c4{\"A}
+  \gdef^^c5{\ringaccent A} 
+  \gdef^^c6{\AE}
+  \gdef^^c7{\cedilla C}
+  \gdef^^c8{\`E}
+  \gdef^^c9{\'E}
+  \gdef^^ca{\^E}
+  \gdef^^cb{\"E}
+  \gdef^^cc{\`I}
+  \gdef^^cd{\'I}
+  \gdef^^ce{\^I}
+  \gdef^^cf{\"I}
+  %
+  \gdef^^d0{\missingcharmsg{LATIN CAPITAL LETTER ETH}}
+  \gdef^^d1{\~N}
+  \gdef^^d2{\`O}
+  \gdef^^d3{\'O}
+  \gdef^^d4{\^O}
+  \gdef^^d5{\~O}
+  \gdef^^d6{\"O}
+  \gdef^^d7{$\times$}
+  \gdef^^d8{\O}
+  \gdef^^d9{\`U}
+  \gdef^^da{\'U}
+  \gdef^^db{\^U}
+  \gdef^^dc{\"U}
+  \gdef^^dd{\'Y}
+  \gdef^^de{\missingcharmsg{LATIN CAPITAL LETTER THORN}}
+  \gdef^^df{\ss}
+  %
+  \gdef^^e0{\`a}
+  \gdef^^e1{\'a}
+  \gdef^^e2{\^a}
+  \gdef^^e3{\~a}
+  \gdef^^e4{\"a}
+  \gdef^^e5{\ringaccent a}
+  \gdef^^e6{\ae}
+  \gdef^^e7{\cedilla c}
+  \gdef^^e8{\`e}
+  \gdef^^e9{\'e}
+  \gdef^^ea{\^e}
+  \gdef^^eb{\"e}
+  \gdef^^ec{\`{\dotless i}}
+  \gdef^^ed{\'{\dotless i}}
+  \gdef^^ee{\^{\dotless i}}
+  \gdef^^ef{\"{\dotless i}}
+  %
+  \gdef^^f0{\missingcharmsg{LATIN SMALL LETTER ETH}}
+  \gdef^^f1{\~n}
+  \gdef^^f2{\`o}
+  \gdef^^f3{\'o}
+  \gdef^^f4{\^o}
+  \gdef^^f5{\~o}
+  \gdef^^f6{\"o}
+  \gdef^^f7{$\div$}
+  \gdef^^f8{\o}
+  \gdef^^f9{\`u}
+  \gdef^^fa{\'u}
+  \gdef^^fb{\^u}
+  \gdef^^fc{\"u}
+  \gdef^^fd{\'y}
+  \gdef^^fe{\missingcharmsg{LATIN SMALL LETTER THORN}}
+  \gdef^^ff{\"y}
+}
+
+% Latin9 (ISO-8859-15) encoding character definitions.
+\def\latninechardefs{%
+  % Encoding is almost identical to Latin1.
+  \latonechardefs
+  %
+  \gdef^^a4{\euro}
+  \gdef^^a6{\v S}
+  \gdef^^a8{\v s}
+  \gdef^^b4{\v Z}
+  \gdef^^b8{\v z}
+  \gdef^^bc{\OE}
+  \gdef^^bd{\oe}
+  \gdef^^be{\"Y}
+}
+
+% Latin2 (ISO-8859-2) character definitions.
+\def\lattwochardefs{%
+  \gdef^^a0{~}
+  \gdef^^a1{\ogonek{A}}
+  \gdef^^a2{\u{}}
+  \gdef^^a3{\L}
+  \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
+  \gdef^^a5{\v L}
+  \gdef^^a6{\'S}
+  \gdef^^a7{\S}
+  \gdef^^a8{\"{}}
+  \gdef^^a9{\v S}
+  \gdef^^aa{\cedilla S}
+  \gdef^^ab{\v T}
+  \gdef^^ac{\'Z}
+  \gdef^^ad{\-}
+  \gdef^^ae{\v Z}
+  \gdef^^af{\dotaccent Z}
+  %
+  \gdef^^b0{\textdegree}
+  \gdef^^b1{\ogonek{a}}
+  \gdef^^b2{\ogonek{ }}
+  \gdef^^b3{\l}
+  \gdef^^b4{\'{}}
+  \gdef^^b5{\v l}
+  \gdef^^b6{\'s}
+  \gdef^^b7{\v{}}
+  \gdef^^b8{\cedilla\ }
+  \gdef^^b9{\v s}
+  \gdef^^ba{\cedilla s}
+  \gdef^^bb{\v t}
+  \gdef^^bc{\'z}
+  \gdef^^bd{\H{}}
+  \gdef^^be{\v z}
+  \gdef^^bf{\dotaccent z}
+  %
+  \gdef^^c0{\'R}
+  \gdef^^c1{\'A}
+  \gdef^^c2{\^A}
+  \gdef^^c3{\u A}
+  \gdef^^c4{\"A}
+  \gdef^^c5{\'L}
+  \gdef^^c6{\'C}
+  \gdef^^c7{\cedilla C}
+  \gdef^^c8{\v C}
+  \gdef^^c9{\'E}
+  \gdef^^ca{\ogonek{E}}
+  \gdef^^cb{\"E}
+  \gdef^^cc{\v E}
+  \gdef^^cd{\'I}
+  \gdef^^ce{\^I}
+  \gdef^^cf{\v D}
+  %
+  \gdef^^d0{\missingcharmsg{LATIN CAPITAL LETTER D WITH STROKE}}
+  \gdef^^d1{\'N}
+  \gdef^^d2{\v N}
+  \gdef^^d3{\'O}
+  \gdef^^d4{\^O}
+  \gdef^^d5{\H O}
+  \gdef^^d6{\"O}
+  \gdef^^d7{$\times$}
+  \gdef^^d8{\v R}
+  \gdef^^d9{\ringaccent U} 
+  \gdef^^da{\'U}
+  \gdef^^db{\H U}
+  \gdef^^dc{\"U}
+  \gdef^^dd{\'Y}
+  \gdef^^de{\cedilla T}
+  \gdef^^df{\ss}
+  %
+  \gdef^^e0{\'r}
+  \gdef^^e1{\'a}
+  \gdef^^e2{\^a}
+  \gdef^^e3{\u a}
+  \gdef^^e4{\"a}
+  \gdef^^e5{\'l}
+  \gdef^^e6{\'c}
+  \gdef^^e7{\cedilla c}
+  \gdef^^e8{\v c}
+  \gdef^^e9{\'e}
+  \gdef^^ea{\ogonek{e}}
+  \gdef^^eb{\"e}
+  \gdef^^ec{\v e}
+  \gdef^^ed{\'\i}
+  \gdef^^ee{\^\i}
+  \gdef^^ef{\v d}
+  %
+  \gdef^^f0{\missingcharmsg{LATIN SMALL LETTER D WITH STROKE}}
+  \gdef^^f1{\'n}
+  \gdef^^f2{\v n}
+  \gdef^^f3{\'o}
+  \gdef^^f4{\^o}
+  \gdef^^f5{\H o}
+  \gdef^^f6{\"o}
+  \gdef^^f7{$\div$}
+  \gdef^^f8{\v r}
+  \gdef^^f9{\ringaccent u}
+  \gdef^^fa{\'u}
+  \gdef^^fb{\H u}
+  \gdef^^fc{\"u}
+  \gdef^^fd{\'y}
+  \gdef^^fe{\cedilla t}
+  \gdef^^ff{\dotaccent{}}
+}
+
+% UTF-8 character definitions.
+% 
+% This code to support UTF-8 is based on LaTeX's utf8.def, with some
+% changes for Texinfo conventions.  It is included here under the GPL by
+% permission from Frank Mittelbach and the LaTeX team.
+% 
+\newcount\countUTFx
+\newcount\countUTFy
+\newcount\countUTFz
+
+\gdef\UTFviiiTwoOctets#1#2{\expandafter
+   \UTFviiiDefined\csname u8:#1\string #2\endcsname}
+%
+\gdef\UTFviiiThreeOctets#1#2#3{\expandafter
+   \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname}
+%
+\gdef\UTFviiiFourOctets#1#2#3#4{\expandafter
+   \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname}
+
+\gdef\UTFviiiDefined#1{%
+  \ifx #1\relax
+    \message{\linenumber Unicode char \string #1 not defined for Texinfo}%
+  \else
+    \expandafter #1%
+  \fi
+}
+
+\begingroup
+  \catcode`\~13
+  \catcode`\"12
+
+  \def\UTFviiiLoop{%
+    \global\catcode\countUTFx\active
+    \uccode`\~\countUTFx
+    \uppercase\expandafter{\UTFviiiTmp}%
+    \advance\countUTFx by 1
+    \ifnum\countUTFx < \countUTFy
+      \expandafter\UTFviiiLoop
+    \fi}
+
+  \countUTFx = "C2
+  \countUTFy = "E0
+  \def\UTFviiiTmp{%
+    \xdef~{\noexpand\UTFviiiTwoOctets\string~}}
+  \UTFviiiLoop
+
+  \countUTFx = "E0
+  \countUTFy = "F0
+  \def\UTFviiiTmp{%
+    \xdef~{\noexpand\UTFviiiThreeOctets\string~}}
+  \UTFviiiLoop
+
+  \countUTFx = "F0
+  \countUTFy = "F4
+  \def\UTFviiiTmp{%
+    \xdef~{\noexpand\UTFviiiFourOctets\string~}}
+  \UTFviiiLoop
+\endgroup
+
+\begingroup
+  \catcode`\"=12
+  \catcode`\<=12
+  \catcode`\.=12
+  \catcode`\,=12
+  \catcode`\;=12
+  \catcode`\!=12
+  \catcode`\~=13
+
+  \gdef\DeclareUnicodeCharacter#1#2{%
+    \countUTFz = "#1\relax
+    \wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
+    \begingroup
+      \parseXMLCharref
+      \def\UTFviiiTwoOctets##1##2{%
+        \csname u8:##1\string ##2\endcsname}%
+      \def\UTFviiiThreeOctets##1##2##3{%
+        \csname u8:##1\string ##2\string ##3\endcsname}%
+      \def\UTFviiiFourOctets##1##2##3##4{%
+        \csname u8:##1\string ##2\string ##3\string ##4\endcsname}%
+      \expandafter\expandafter\expandafter\expandafter
+       \expandafter\expandafter\expandafter
+       \gdef\UTFviiiTmp{#2}%
+    \endgroup}
+
+  \gdef\parseXMLCharref{%
+    \ifnum\countUTFz < "A0\relax
+      \errhelp = \EMsimple
+      \errmessage{Cannot define Unicode char value < 00A0}%
+    \else\ifnum\countUTFz < "800\relax
+      \parseUTFviiiA,%
+      \parseUTFviiiB C\UTFviiiTwoOctets.,%
+    \else\ifnum\countUTFz < "10000\relax
+      \parseUTFviiiA;%
+      \parseUTFviiiA,%
+      \parseUTFviiiB E\UTFviiiThreeOctets.{,;}%
+    \else
+      \parseUTFviiiA;%
+      \parseUTFviiiA,%
+      \parseUTFviiiA!%
+      \parseUTFviiiB F\UTFviiiFourOctets.{!,;}%
+    \fi\fi\fi
+  }
+
+  \gdef\parseUTFviiiA#1{%
+    \countUTFx = \countUTFz
+    \divide\countUTFz by 64
+    \countUTFy = \countUTFz
+    \multiply\countUTFz by 64
+    \advance\countUTFx by -\countUTFz
+    \advance\countUTFx by 128
+    \uccode `#1\countUTFx
+    \countUTFz = \countUTFy}
+
+  \gdef\parseUTFviiiB#1#2#3#4{%
+    \advance\countUTFz by "#10\relax
+    \uccode `#3\countUTFz
+    \uppercase{\gdef\UTFviiiTmp{#2#3#4}}}
+\endgroup
+
+\def\utfeightchardefs{%
+  \DeclareUnicodeCharacter{00A0}{\tie}
+  \DeclareUnicodeCharacter{00A1}{\exclamdown}
+  \DeclareUnicodeCharacter{00A3}{\pounds}
+  \DeclareUnicodeCharacter{00A8}{\"{ }}
+  \DeclareUnicodeCharacter{00A9}{\copyright}
+  \DeclareUnicodeCharacter{00AA}{\ordf}
+  \DeclareUnicodeCharacter{00AB}{\guillemetleft}
+  \DeclareUnicodeCharacter{00AD}{\-}
+  \DeclareUnicodeCharacter{00AE}{\registeredsymbol}
+  \DeclareUnicodeCharacter{00AF}{\={ }}
+
+  \DeclareUnicodeCharacter{00B0}{\ringaccent{ }}
+  \DeclareUnicodeCharacter{00B4}{\'{ }}
+  \DeclareUnicodeCharacter{00B8}{\cedilla{ }}
+  \DeclareUnicodeCharacter{00BA}{\ordm}
+  \DeclareUnicodeCharacter{00BB}{\guillemetright}
+  \DeclareUnicodeCharacter{00BF}{\questiondown}
+
+  \DeclareUnicodeCharacter{00C0}{\`A}
+  \DeclareUnicodeCharacter{00C1}{\'A}
+  \DeclareUnicodeCharacter{00C2}{\^A}
+  \DeclareUnicodeCharacter{00C3}{\~A}
+  \DeclareUnicodeCharacter{00C4}{\"A}
+  \DeclareUnicodeCharacter{00C5}{\AA}
+  \DeclareUnicodeCharacter{00C6}{\AE}
+  \DeclareUnicodeCharacter{00C7}{\cedilla{C}}
+  \DeclareUnicodeCharacter{00C8}{\`E}
+  \DeclareUnicodeCharacter{00C9}{\'E}
+  \DeclareUnicodeCharacter{00CA}{\^E}
+  \DeclareUnicodeCharacter{00CB}{\"E}
+  \DeclareUnicodeCharacter{00CC}{\`I}
+  \DeclareUnicodeCharacter{00CD}{\'I}
+  \DeclareUnicodeCharacter{00CE}{\^I}
+  \DeclareUnicodeCharacter{00CF}{\"I}
+
+  \DeclareUnicodeCharacter{00D1}{\~N}
+  \DeclareUnicodeCharacter{00D2}{\`O}
+  \DeclareUnicodeCharacter{00D3}{\'O}
+  \DeclareUnicodeCharacter{00D4}{\^O}
+  \DeclareUnicodeCharacter{00D5}{\~O}
+  \DeclareUnicodeCharacter{00D6}{\"O}
+  \DeclareUnicodeCharacter{00D8}{\O}
+  \DeclareUnicodeCharacter{00D9}{\`U}
+  \DeclareUnicodeCharacter{00DA}{\'U}
+  \DeclareUnicodeCharacter{00DB}{\^U}
+  \DeclareUnicodeCharacter{00DC}{\"U}
+  \DeclareUnicodeCharacter{00DD}{\'Y}
+  \DeclareUnicodeCharacter{00DF}{\ss}
+
+  \DeclareUnicodeCharacter{00E0}{\`a}
+  \DeclareUnicodeCharacter{00E1}{\'a}
+  \DeclareUnicodeCharacter{00E2}{\^a}
+  \DeclareUnicodeCharacter{00E3}{\~a}
+  \DeclareUnicodeCharacter{00E4}{\"a}
+  \DeclareUnicodeCharacter{00E5}{\aa}
+  \DeclareUnicodeCharacter{00E6}{\ae}
+  \DeclareUnicodeCharacter{00E7}{\cedilla{c}}
+  \DeclareUnicodeCharacter{00E8}{\`e}
+  \DeclareUnicodeCharacter{00E9}{\'e}
+  \DeclareUnicodeCharacter{00EA}{\^e}
+  \DeclareUnicodeCharacter{00EB}{\"e}
+  \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}}
+  \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}}
+  \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}}
+  \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}}
+
+  \DeclareUnicodeCharacter{00F1}{\~n}
+  \DeclareUnicodeCharacter{00F2}{\`o}
+  \DeclareUnicodeCharacter{00F3}{\'o}
+  \DeclareUnicodeCharacter{00F4}{\^o}
+  \DeclareUnicodeCharacter{00F5}{\~o}
+  \DeclareUnicodeCharacter{00F6}{\"o}
+  \DeclareUnicodeCharacter{00F8}{\o}
+  \DeclareUnicodeCharacter{00F9}{\`u}
+  \DeclareUnicodeCharacter{00FA}{\'u}
+  \DeclareUnicodeCharacter{00FB}{\^u}
+  \DeclareUnicodeCharacter{00FC}{\"u}
+  \DeclareUnicodeCharacter{00FD}{\'y}
+  \DeclareUnicodeCharacter{00FF}{\"y}
+
+  \DeclareUnicodeCharacter{0100}{\=A}
+  \DeclareUnicodeCharacter{0101}{\=a}
+  \DeclareUnicodeCharacter{0102}{\u{A}}
+  \DeclareUnicodeCharacter{0103}{\u{a}}
+  \DeclareUnicodeCharacter{0104}{\ogonek{A}}
+  \DeclareUnicodeCharacter{0105}{\ogonek{a}}
+  \DeclareUnicodeCharacter{0106}{\'C}
+  \DeclareUnicodeCharacter{0107}{\'c}
+  \DeclareUnicodeCharacter{0108}{\^C}
+  \DeclareUnicodeCharacter{0109}{\^c}
+  \DeclareUnicodeCharacter{0118}{\ogonek{E}}
+  \DeclareUnicodeCharacter{0119}{\ogonek{e}}
+  \DeclareUnicodeCharacter{010A}{\dotaccent{C}}
+  \DeclareUnicodeCharacter{010B}{\dotaccent{c}}
+  \DeclareUnicodeCharacter{010C}{\v{C}}
+  \DeclareUnicodeCharacter{010D}{\v{c}}
+  \DeclareUnicodeCharacter{010E}{\v{D}}
+
+  \DeclareUnicodeCharacter{0112}{\=E}
+  \DeclareUnicodeCharacter{0113}{\=e}
+  \DeclareUnicodeCharacter{0114}{\u{E}}
+  \DeclareUnicodeCharacter{0115}{\u{e}}
+  \DeclareUnicodeCharacter{0116}{\dotaccent{E}}
+  \DeclareUnicodeCharacter{0117}{\dotaccent{e}}
+  \DeclareUnicodeCharacter{011A}{\v{E}}
+  \DeclareUnicodeCharacter{011B}{\v{e}}
+  \DeclareUnicodeCharacter{011C}{\^G}
+  \DeclareUnicodeCharacter{011D}{\^g}
+  \DeclareUnicodeCharacter{011E}{\u{G}}
+  \DeclareUnicodeCharacter{011F}{\u{g}}
+
+  \DeclareUnicodeCharacter{0120}{\dotaccent{G}}
+  \DeclareUnicodeCharacter{0121}{\dotaccent{g}}
+  \DeclareUnicodeCharacter{0124}{\^H}
+  \DeclareUnicodeCharacter{0125}{\^h}
+  \DeclareUnicodeCharacter{0128}{\~I}
+  \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}}
+  \DeclareUnicodeCharacter{012A}{\=I}
+  \DeclareUnicodeCharacter{012B}{\={\dotless{i}}}
+  \DeclareUnicodeCharacter{012C}{\u{I}}
+  \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}}
+
+  \DeclareUnicodeCharacter{0130}{\dotaccent{I}}
+  \DeclareUnicodeCharacter{0131}{\dotless{i}}
+  \DeclareUnicodeCharacter{0132}{IJ}
+  \DeclareUnicodeCharacter{0133}{ij}
+  \DeclareUnicodeCharacter{0134}{\^J}
+  \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}}
+  \DeclareUnicodeCharacter{0139}{\'L}
+  \DeclareUnicodeCharacter{013A}{\'l}
+
+  \DeclareUnicodeCharacter{0141}{\L}
+  \DeclareUnicodeCharacter{0142}{\l}
+  \DeclareUnicodeCharacter{0143}{\'N}
+  \DeclareUnicodeCharacter{0144}{\'n}
+  \DeclareUnicodeCharacter{0147}{\v{N}}
+  \DeclareUnicodeCharacter{0148}{\v{n}}
+  \DeclareUnicodeCharacter{014C}{\=O}
+  \DeclareUnicodeCharacter{014D}{\=o}
+  \DeclareUnicodeCharacter{014E}{\u{O}}
+  \DeclareUnicodeCharacter{014F}{\u{o}}
+
+  \DeclareUnicodeCharacter{0150}{\H{O}}
+  \DeclareUnicodeCharacter{0151}{\H{o}}
+  \DeclareUnicodeCharacter{0152}{\OE}
+  \DeclareUnicodeCharacter{0153}{\oe}
+  \DeclareUnicodeCharacter{0154}{\'R}
+  \DeclareUnicodeCharacter{0155}{\'r}
+  \DeclareUnicodeCharacter{0158}{\v{R}}
+  \DeclareUnicodeCharacter{0159}{\v{r}}
+  \DeclareUnicodeCharacter{015A}{\'S}
+  \DeclareUnicodeCharacter{015B}{\'s}
+  \DeclareUnicodeCharacter{015C}{\^S}
+  \DeclareUnicodeCharacter{015D}{\^s}
+  \DeclareUnicodeCharacter{015E}{\cedilla{S}}
+  \DeclareUnicodeCharacter{015F}{\cedilla{s}}
+
+  \DeclareUnicodeCharacter{0160}{\v{S}}
+  \DeclareUnicodeCharacter{0161}{\v{s}}
+  \DeclareUnicodeCharacter{0162}{\cedilla{t}}
+  \DeclareUnicodeCharacter{0163}{\cedilla{T}}
+  \DeclareUnicodeCharacter{0164}{\v{T}}
+
+  \DeclareUnicodeCharacter{0168}{\~U}
+  \DeclareUnicodeCharacter{0169}{\~u}
+  \DeclareUnicodeCharacter{016A}{\=U}
+  \DeclareUnicodeCharacter{016B}{\=u}
+  \DeclareUnicodeCharacter{016C}{\u{U}}
+  \DeclareUnicodeCharacter{016D}{\u{u}}
+  \DeclareUnicodeCharacter{016E}{\ringaccent{U}}
+  \DeclareUnicodeCharacter{016F}{\ringaccent{u}}
+
+  \DeclareUnicodeCharacter{0170}{\H{U}}
+  \DeclareUnicodeCharacter{0171}{\H{u}}
+  \DeclareUnicodeCharacter{0174}{\^W}
+  \DeclareUnicodeCharacter{0175}{\^w}
+  \DeclareUnicodeCharacter{0176}{\^Y}
+  \DeclareUnicodeCharacter{0177}{\^y}
+  \DeclareUnicodeCharacter{0178}{\"Y}
+  \DeclareUnicodeCharacter{0179}{\'Z}
+  \DeclareUnicodeCharacter{017A}{\'z}
+  \DeclareUnicodeCharacter{017B}{\dotaccent{Z}}
+  \DeclareUnicodeCharacter{017C}{\dotaccent{z}}
+  \DeclareUnicodeCharacter{017D}{\v{Z}}
+  \DeclareUnicodeCharacter{017E}{\v{z}}
+
+  \DeclareUnicodeCharacter{01C4}{D\v{Z}}
+  \DeclareUnicodeCharacter{01C5}{D\v{z}}
+  \DeclareUnicodeCharacter{01C6}{d\v{z}}
+  \DeclareUnicodeCharacter{01C7}{LJ}
+  \DeclareUnicodeCharacter{01C8}{Lj}
+  \DeclareUnicodeCharacter{01C9}{lj}
+  \DeclareUnicodeCharacter{01CA}{NJ}
+  \DeclareUnicodeCharacter{01CB}{Nj}
+  \DeclareUnicodeCharacter{01CC}{nj}
+  \DeclareUnicodeCharacter{01CD}{\v{A}}
+  \DeclareUnicodeCharacter{01CE}{\v{a}}
+  \DeclareUnicodeCharacter{01CF}{\v{I}}
+
+  \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}}
+  \DeclareUnicodeCharacter{01D1}{\v{O}}
+  \DeclareUnicodeCharacter{01D2}{\v{o}}
+  \DeclareUnicodeCharacter{01D3}{\v{U}}
+  \DeclareUnicodeCharacter{01D4}{\v{u}}
+
+  \DeclareUnicodeCharacter{01E2}{\={\AE}}
+  \DeclareUnicodeCharacter{01E3}{\={\ae}}
+  \DeclareUnicodeCharacter{01E6}{\v{G}}
+  \DeclareUnicodeCharacter{01E7}{\v{g}}
+  \DeclareUnicodeCharacter{01E8}{\v{K}}
+  \DeclareUnicodeCharacter{01E9}{\v{k}}
+
+  \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}}
+  \DeclareUnicodeCharacter{01F1}{DZ}
+  \DeclareUnicodeCharacter{01F2}{Dz}
+  \DeclareUnicodeCharacter{01F3}{dz}
+  \DeclareUnicodeCharacter{01F4}{\'G}
+  \DeclareUnicodeCharacter{01F5}{\'g}
+  \DeclareUnicodeCharacter{01F8}{\`N}
+  \DeclareUnicodeCharacter{01F9}{\`n}
+  \DeclareUnicodeCharacter{01FC}{\'{\AE}}
+  \DeclareUnicodeCharacter{01FD}{\'{\ae}}
+  \DeclareUnicodeCharacter{01FE}{\'{\O}}
+  \DeclareUnicodeCharacter{01FF}{\'{\o}}
+
+  \DeclareUnicodeCharacter{021E}{\v{H}}
+  \DeclareUnicodeCharacter{021F}{\v{h}}
+
+  \DeclareUnicodeCharacter{0226}{\dotaccent{A}}
+  \DeclareUnicodeCharacter{0227}{\dotaccent{a}}
+  \DeclareUnicodeCharacter{0228}{\cedilla{E}}
+  \DeclareUnicodeCharacter{0229}{\cedilla{e}}
+  \DeclareUnicodeCharacter{022E}{\dotaccent{O}}
+  \DeclareUnicodeCharacter{022F}{\dotaccent{o}}
+
+  \DeclareUnicodeCharacter{0232}{\=Y}
+  \DeclareUnicodeCharacter{0233}{\=y}
+  \DeclareUnicodeCharacter{0237}{\dotless{j}}
+
+  \DeclareUnicodeCharacter{02DB}{\ogonek{ }}
+
+  \DeclareUnicodeCharacter{1E02}{\dotaccent{B}}
+  \DeclareUnicodeCharacter{1E03}{\dotaccent{b}}
+  \DeclareUnicodeCharacter{1E04}{\udotaccent{B}}
+  \DeclareUnicodeCharacter{1E05}{\udotaccent{b}}
+  \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}}
+  \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}}
+  \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}}
+  \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}}
+  \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}}
+  \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}}
+  \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}}
+  \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}}
+
+  \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}}
+  \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}}
+
+  \DeclareUnicodeCharacter{1E20}{\=G}
+  \DeclareUnicodeCharacter{1E21}{\=g}
+  \DeclareUnicodeCharacter{1E22}{\dotaccent{H}}
+  \DeclareUnicodeCharacter{1E23}{\dotaccent{h}}
+  \DeclareUnicodeCharacter{1E24}{\udotaccent{H}}
+  \DeclareUnicodeCharacter{1E25}{\udotaccent{h}}
+  \DeclareUnicodeCharacter{1E26}{\"H}
+  \DeclareUnicodeCharacter{1E27}{\"h}
+
+  \DeclareUnicodeCharacter{1E30}{\'K}
+  \DeclareUnicodeCharacter{1E31}{\'k}
+  \DeclareUnicodeCharacter{1E32}{\udotaccent{K}}
+  \DeclareUnicodeCharacter{1E33}{\udotaccent{k}}
+  \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}}
+  \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}}
+  \DeclareUnicodeCharacter{1E36}{\udotaccent{L}}
+  \DeclareUnicodeCharacter{1E37}{\udotaccent{l}}
+  \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}}
+  \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}}
+  \DeclareUnicodeCharacter{1E3E}{\'M}
+  \DeclareUnicodeCharacter{1E3F}{\'m}
+
+  \DeclareUnicodeCharacter{1E40}{\dotaccent{M}}
+  \DeclareUnicodeCharacter{1E41}{\dotaccent{m}}
+  \DeclareUnicodeCharacter{1E42}{\udotaccent{M}}
+  \DeclareUnicodeCharacter{1E43}{\udotaccent{m}}
+  \DeclareUnicodeCharacter{1E44}{\dotaccent{N}}
+  \DeclareUnicodeCharacter{1E45}{\dotaccent{n}}
+  \DeclareUnicodeCharacter{1E46}{\udotaccent{N}}
+  \DeclareUnicodeCharacter{1E47}{\udotaccent{n}}
+  \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}}
+  \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}}
+
+  \DeclareUnicodeCharacter{1E54}{\'P}
+  \DeclareUnicodeCharacter{1E55}{\'p}
+  \DeclareUnicodeCharacter{1E56}{\dotaccent{P}}
+  \DeclareUnicodeCharacter{1E57}{\dotaccent{p}}
+  \DeclareUnicodeCharacter{1E58}{\dotaccent{R}}
+  \DeclareUnicodeCharacter{1E59}{\dotaccent{r}}
+  \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}}
+  \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}}
+  \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}}
+  \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}}
+
+  \DeclareUnicodeCharacter{1E60}{\dotaccent{S}}
+  \DeclareUnicodeCharacter{1E61}{\dotaccent{s}}
+  \DeclareUnicodeCharacter{1E62}{\udotaccent{S}}
+  \DeclareUnicodeCharacter{1E63}{\udotaccent{s}}
+  \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}}
+  \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}}
+  \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}}
+  \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}}
+  \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}}
+  \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}}
+
+  \DeclareUnicodeCharacter{1E7C}{\~V}
+  \DeclareUnicodeCharacter{1E7D}{\~v}
+  \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}}
+  \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}}
+
+  \DeclareUnicodeCharacter{1E80}{\`W}
+  \DeclareUnicodeCharacter{1E81}{\`w}
+  \DeclareUnicodeCharacter{1E82}{\'W}
+  \DeclareUnicodeCharacter{1E83}{\'w}
+  \DeclareUnicodeCharacter{1E84}{\"W}
+  \DeclareUnicodeCharacter{1E85}{\"w}
+  \DeclareUnicodeCharacter{1E86}{\dotaccent{W}}
+  \DeclareUnicodeCharacter{1E87}{\dotaccent{w}}
+  \DeclareUnicodeCharacter{1E88}{\udotaccent{W}}
+  \DeclareUnicodeCharacter{1E89}{\udotaccent{w}}
+  \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}}
+  \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}}
+  \DeclareUnicodeCharacter{1E8C}{\"X}
+  \DeclareUnicodeCharacter{1E8D}{\"x}
+  \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}}
+  \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}}
+
+  \DeclareUnicodeCharacter{1E90}{\^Z}
+  \DeclareUnicodeCharacter{1E91}{\^z}
+  \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}}
+  \DeclareUnicodeCharacter{1E93}{\udotaccent{z}}
+  \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}}
+  \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}}
+  \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}}
+  \DeclareUnicodeCharacter{1E97}{\"t}
+  \DeclareUnicodeCharacter{1E98}{\ringaccent{w}}
+  \DeclareUnicodeCharacter{1E99}{\ringaccent{y}}
+
+  \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}}
+  \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}}
+
+  \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}}
+  \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}}
+  \DeclareUnicodeCharacter{1EBC}{\~E}
+  \DeclareUnicodeCharacter{1EBD}{\~e}
+
+  \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}}
+  \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}}
+  \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}}
+  \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}}
+
+  \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}}
+  \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}}
+
+  \DeclareUnicodeCharacter{1EF2}{\`Y}
+  \DeclareUnicodeCharacter{1EF3}{\`y}
+  \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}}
+
+  \DeclareUnicodeCharacter{1EF8}{\~Y}
+  \DeclareUnicodeCharacter{1EF9}{\~y}
+
+  \DeclareUnicodeCharacter{2013}{--}
+  \DeclareUnicodeCharacter{2014}{---}
+  \DeclareUnicodeCharacter{2018}{\quoteleft}
+  \DeclareUnicodeCharacter{2019}{\quoteright}
+  \DeclareUnicodeCharacter{201A}{\quotesinglbase}
+  \DeclareUnicodeCharacter{201C}{\quotedblleft}
+  \DeclareUnicodeCharacter{201D}{\quotedblright}
+  \DeclareUnicodeCharacter{201E}{\quotedblbase}
+  \DeclareUnicodeCharacter{2022}{\bullet}
+  \DeclareUnicodeCharacter{2026}{\dots}
+  \DeclareUnicodeCharacter{2039}{\guilsinglleft}
+  \DeclareUnicodeCharacter{203A}{\guilsinglright}
+  \DeclareUnicodeCharacter{20AC}{\euro}
+
+  \DeclareUnicodeCharacter{2192}{\expansion}
+  \DeclareUnicodeCharacter{21D2}{\result}
+
+  \DeclareUnicodeCharacter{2212}{\minus}
+  \DeclareUnicodeCharacter{2217}{\point}
+  \DeclareUnicodeCharacter{2261}{\equiv}
+}% end of \utfeightchardefs
+
+
+% US-ASCII character definitions.
+\def\asciichardefs{% nothing need be done
+   \relax
+}
+
+% Make non-ASCII characters printable again for compatibility with
+% existing Texinfo documents that may use them, even without declaring a
+% document encoding.
+%
+\setnonasciicharscatcode \other
+
+
+\message{formatting,}
+
+\newdimen\defaultparindent \defaultparindent = 15pt
+
+\chapheadingskip = 15pt plus 4pt minus 2pt
+\secheadingskip = 12pt plus 3pt minus 2pt
+\subsecheadingskip = 9pt plus 2pt minus 2pt
+
+% Prevent underfull vbox error messages.
+\vbadness = 10000
+
+% Don't be so finicky about underfull hboxes, either.
+\hbadness = 2000
+
+% Following George Bush, get rid of widows and orphans.
+\widowpenalty=10000
+\clubpenalty=10000
+
+% Use TeX 3.0's \emergencystretch to help line breaking, but if we're
+% using an old version of TeX, don't do anything.  We want the amount of
+% stretch added to depend on the line length, hence the dependence on
+% \hsize.  We call this whenever the paper size is set.
+%
+\def\setemergencystretch{%
+  \ifx\emergencystretch\thisisundefined
+    % Allow us to assign to \emergencystretch anyway.
+    \def\emergencystretch{\dimen0}%
+  \else
+    \emergencystretch = .15\hsize
+  \fi
+}
+
+% Parameters in order: 1) textheight; 2) textwidth;
+% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip;
+% 7) physical page height; 8) physical page width.
+%
+% We also call \setleading{\textleading}, so the caller should define
+% \textleading.  The caller should also set \parskip.
+%
+\def\internalpagesizes#1#2#3#4#5#6#7#8{%
+  \voffset = #3\relax
+  \topskip = #6\relax
+  \splittopskip = \topskip
+  %
+  \vsize = #1\relax
+  \advance\vsize by \topskip
+  \outervsize = \vsize
+  \advance\outervsize by 2\topandbottommargin
+  \pageheight = \vsize
+  %
+  \hsize = #2\relax
+  \outerhsize = \hsize
+  \advance\outerhsize by 0.5in
+  \pagewidth = \hsize
+  %
+  \normaloffset = #4\relax
+  \bindingoffset = #5\relax
+  %
+  \ifpdf
+    \pdfpageheight #7\relax
+    \pdfpagewidth #8\relax
+    % if we don't reset these, they will remain at "1 true in" of
+    % whatever layout pdftex was dumped with.
+    \pdfhorigin = 1 true in
+    \pdfvorigin = 1 true in
+  \fi
+  %
+  \setleading{\textleading}
+  %
+  \parindent = \defaultparindent
+  \setemergencystretch
+}
+
+% @letterpaper (the default).
+\def\letterpaper{{\globaldefs = 1
+  \parskip = 3pt plus 2pt minus 1pt
+  \textleading = 13.2pt
+  %
+  % If page is nothing but text, make it come out even.
+  \internalpagesizes{607.2pt}{6in}% that's 46 lines
+                    {\voffset}{.25in}%
+                    {\bindingoffset}{36pt}%
+                    {11in}{8.5in}%
+}}
+
+% Use @smallbook to reset parameters for 7x9.25 trim size.
+\def\smallbook{{\globaldefs = 1
+  \parskip = 2pt plus 1pt
+  \textleading = 12pt
+  %
+  \internalpagesizes{7.5in}{5in}%
+                    {-.2in}{0in}%
+                    {\bindingoffset}{16pt}%
+                    {9.25in}{7in}%
+  %
+  \lispnarrowing = 0.3in
+  \tolerance = 700
+  \hfuzz = 1pt
+  \contentsrightmargin = 0pt
+  \defbodyindent = .5cm
+}}
+
+% Use @smallerbook to reset parameters for 6x9 trim size.
+% (Just testing, parameters still in flux.)
+\def\smallerbook{{\globaldefs = 1
+  \parskip = 1.5pt plus 1pt
+  \textleading = 12pt
+  %
+  \internalpagesizes{7.4in}{4.8in}%
+                    {-.2in}{-.4in}%
+                    {0pt}{14pt}%
+                    {9in}{6in}%
+  %
+  \lispnarrowing = 0.25in
+  \tolerance = 700
+  \hfuzz = 1pt
+  \contentsrightmargin = 0pt
+  \defbodyindent = .4cm
+}}
+
+% Use @afourpaper to print on European A4 paper.
+\def\afourpaper{{\globaldefs = 1
+  \parskip = 3pt plus 2pt minus 1pt
+  \textleading = 13.2pt
+  %
+  % Double-side printing via postscript on Laserjet 4050
+  % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm.
+  % To change the settings for a different printer or situation, adjust
+  % \normaloffset until the front-side and back-side texts align.  Then
+  % do the same for \bindingoffset.  You can set these for testing in
+  % your texinfo source file like this:
+  % @tex
+  % \global\normaloffset = -6mm
+  % \global\bindingoffset = 10mm
+  % @end tex
+  \internalpagesizes{673.2pt}{160mm}% that's 51 lines
+                    {\voffset}{\hoffset}%
+                    {\bindingoffset}{44pt}%
+                    {297mm}{210mm}%
+  %
+  \tolerance = 700
+  \hfuzz = 1pt
+  \contentsrightmargin = 0pt
+  \defbodyindent = 5mm
+}}
+
+% Use @afivepaper to print on European A5 paper.
+% From romildo@urano.iceb.ufop.br, 2 July 2000.
+% He also recommends making @example and @lisp be small.
+\def\afivepaper{{\globaldefs = 1
+  \parskip = 2pt plus 1pt minus 0.1pt
+  \textleading = 12.5pt
+  %
+  \internalpagesizes{160mm}{120mm}%
+                    {\voffset}{\hoffset}%
+                    {\bindingoffset}{8pt}%
+                    {210mm}{148mm}%
+  %
+  \lispnarrowing = 0.2in
+  \tolerance = 800
+  \hfuzz = 1.2pt
+  \contentsrightmargin = 0pt
+  \defbodyindent = 2mm
+  \tableindent = 12mm
+}}
+
+% A specific text layout, 24x15cm overall, intended for A4 paper.
+\def\afourlatex{{\globaldefs = 1
+  \afourpaper
+  \internalpagesizes{237mm}{150mm}%
+                    {\voffset}{4.6mm}%
+                    {\bindingoffset}{7mm}%
+                    {297mm}{210mm}%
+  %
+  % Must explicitly reset to 0 because we call \afourpaper.
+  \globaldefs = 0
+}}
+
+% Use @afourwide to print on A4 paper in landscape format.
+\def\afourwide{{\globaldefs = 1
+  \afourpaper
+  \internalpagesizes{241mm}{165mm}%
+                    {\voffset}{-2.95mm}%
+                    {\bindingoffset}{7mm}%
+                    {297mm}{210mm}%
+  \globaldefs = 0
+}}
+
+% @pagesizes TEXTHEIGHT[,TEXTWIDTH]
+% Perhaps we should allow setting the margins, \topskip, \parskip,
+% and/or leading, also. Or perhaps we should compute them somehow.
+%
+\parseargdef\pagesizes{\pagesizesyyy #1,,\finish}
+\def\pagesizesyyy#1,#2,#3\finish{{%
+  \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi
+  \globaldefs = 1
+  %
+  \parskip = 3pt plus 2pt minus 1pt
+  \setleading{\textleading}%
+  %
+  \dimen0 = #1\relax
+  \advance\dimen0 by \voffset
+  %
+  \dimen2 = \hsize
+  \advance\dimen2 by \normaloffset
+  %
+  \internalpagesizes{#1}{\hsize}%
+                    {\voffset}{\normaloffset}%
+                    {\bindingoffset}{44pt}%
+                    {\dimen0}{\dimen2}%
+}}
+
+% Set default to letter.
+%
+\letterpaper
+
+
+\message{and turning on texinfo input format.}
+
+% Define macros to output various characters with catcode for normal text.
+\catcode`\"=\other
+\catcode`\~=\other
+\catcode`\^=\other
+\catcode`\_=\other
+\catcode`\|=\other
+\catcode`\<=\other
+\catcode`\>=\other
+\catcode`\+=\other
+\catcode`\$=\other
+\def\normaldoublequote{"}
+\def\normaltilde{~}
+\def\normalcaret{^}
+\def\normalunderscore{_}
+\def\normalverticalbar{|}
+\def\normalless{<}
+\def\normalgreater{>}
+\def\normalplus{+}
+\def\normaldollar{$}%$ font-lock fix
+
+% This macro is used to make a character print one way in \tt
+% (where it can probably be output as-is), and another way in other fonts,
+% where something hairier probably needs to be done.
+%
+% #1 is what to print if we are indeed using \tt; #2 is what to print
+% otherwise.  Since all the Computer Modern typewriter fonts have zero
+% interword stretch (and shrink), and it is reasonable to expect all
+% typewriter fonts to have this, we can check that font parameter.
+%
+\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi}
+
+% Same as above, but check for italic font.  Actually this also catches
+% non-italic slanted fonts since it is impossible to distinguish them from
+% italic fonts.  But since this is only used by $ and it uses \sl anyway
+% this is not a problem.
+\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi}
+
+% Turn off all special characters except @
+% (and those which the user can use as if they were ordinary).
+% Most of these we simply print from the \tt font, but for some, we can
+% use math or other variants that look better in normal text.
+
+\catcode`\"=\active
+\def\activedoublequote{{\tt\char34}}
+\let"=\activedoublequote
+\catcode`\~=\active
+\def~{{\tt\char126}}
+\chardef\hat=`\^
+\catcode`\^=\active
+\def^{{\tt \hat}}
+
+\catcode`\_=\active
+\def_{\ifusingtt\normalunderscore\_}
+\let\realunder=_
+% Subroutine for the previous macro.
+\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }
+
+\catcode`\|=\active
+\def|{{\tt\char124}}
+\chardef \less=`\<
+\catcode`\<=\active
+\def<{{\tt \less}}
+\chardef \gtr=`\>
+\catcode`\>=\active
+\def>{{\tt \gtr}}
+\catcode`\+=\active
+\def+{{\tt \char 43}}
+\catcode`\$=\active
+\def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
+
+% If a .fmt file is being used, characters that might appear in a file
+% name cannot be active until we have parsed the command line.
+% So turn them off again, and have \everyjob (or @setfilename) turn them on.
+% \otherifyactive is called near the end of this file.
+\def\otherifyactive{\catcode`+=\other \catcode`\_=\other}
+
+% Used sometimes to turn off (effectively) the active characters even after
+% parsing them.
+\def\turnoffactive{%
+  \normalturnoffactive
+  \otherbackslash
+}
+
+\catcode`\@=0
+
+% \backslashcurfont outputs one backslash character in current font,
+% as in \char`\\.
+\global\chardef\backslashcurfont=`\\
+\global\let\rawbackslashxx=\backslashcurfont  % let existing .??s files work
+
+% \realbackslash is an actual character `\' with catcode other, and
+% \doublebackslash is two of them (for the pdf outlines).
+{\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}}
+
+% In texinfo, backslash is an active character; it prints the backslash
+% in fixed width font.
+\catcode`\\=\active
+@def@normalbackslash{{@tt@backslashcurfont}}
+% On startup, @fixbackslash assigns:
+%  @let \ = @normalbackslash
+
+% \rawbackslash defines an active \ to do \backslashcurfont.
+% \otherbackslash defines an active \ to be a literal `\' character with
+% catcode other.
+@gdef@rawbackslash{@let\=@backslashcurfont}
+@gdef@otherbackslash{@let\=@realbackslash}
+
+% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
+% the literal character `\'.
+% 
+@def@normalturnoffactive{%
+  @let\=@normalbackslash
+  @let"=@normaldoublequote
+  @let~=@normaltilde
+  @let^=@normalcaret
+  @let_=@normalunderscore
+  @let|=@normalverticalbar
+  @let<=@normalless
+  @let>=@normalgreater
+  @let+=@normalplus
+  @let$=@normaldollar %$ font-lock fix
+  @markupsetuplqdefault
+  @markupsetuprqdefault
+  @unsepspaces
+}
+
+% Make _ and + \other characters, temporarily.
+% This is canceled by @fixbackslash.
+@otherifyactive
+
+% If a .fmt file is being used, we don't want the `\input texinfo' to show up.
+% That is what \eatinput is for; after that, the `\' should revert to printing
+% a backslash.
+%
+@gdef@eatinput input texinfo{@fixbackslash}
+@global@let\ = @eatinput
+
+% On the other hand, perhaps the file did not have a `\input texinfo'. Then
+% the first `\' in the file would cause an error. This macro tries to fix
+% that, assuming it is called before the first `\' could plausibly occur.
+% Also turn back on active characters that might appear in the input
+% file name, in case not using a pre-dumped format.
+%
+@gdef@fixbackslash{%
+  @ifx\@eatinput @let\ = @normalbackslash @fi
+  @catcode`+=@active
+  @catcode`@_=@active
+}
+
+% Say @foo, not \foo, in error messages.
+@escapechar = `@@
+
+% These look ok in all fonts, so just make them not special.
+@catcode`@& = @other
+@catcode`@# = @other
+@catcode`@% = @other
+
+@c Finally, make ` and ' active, so that txicodequoteundirected and
+@c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}.  If we
+@c don't make ` and ' active, @code will not get them as active chars.
+@c Do this last of all since we use ` in the previous @catcode assignments.
+@catcode`@'=@active
+@catcode`@`=@active
+@markupsetuplqdefault
+@markupsetuprqdefault
+@c Local variables:
+@c eval: (add-hook 'write-file-hooks 'time-stamp)
+@c page-delimiter: "^\\\\message"
+@c time-stamp-start: "def\\\\texinfoversion{"
+@c time-stamp-format: "%:y-%02m-%02d.%02H"
+@c time-stamp-end: "}"
+@c End:
+
+@c vim:sw=2:
+
+@ignore
+   arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115
+@end ignore