? libtool
? pspp-0.4.2.tar.gz
? wdd.patch
? wdp.patch
? src/ui/gui/.libs
? src/ui/gui/libpsppire.la
? src/ui/gui/src_ui_gui_libpsppire_la-glade-register.lo
Index: Makefile.am
===================================================================
RCS file: /sources/pspp/pspp/Makefile.am,v
retrieving revision 1.17
diff -b -w -U3 -r1.17 Makefile.am
--- Makefile.am	15 Jul 2006 04:38:57 -0000	1.17
+++ Makefile.am	3 Jan 2007 22:51:14 -0000
@@ -49,3 +49,7 @@
 include $(top_srcdir)/src/automake.mk
 
 include $(top_srcdir)/tests/automake.mk
+
+if WITH_GUI_TOOLS
+include $(top_srcdir)/glade/automake.mk
+endif
Index: Smake
===================================================================
RCS file: /sources/pspp/pspp/Smake,v
retrieving revision 1.43
diff -b -w -U3 -r1.43 Smake
--- Smake	24 Dec 2006 22:22:55 -0000	1.43
+++ Smake	3 Jan 2007 22:51:14 -0000
@@ -69,6 +69,7 @@
 	echo '*' > gl/m4/.cvsignore
 	test -d intl || mkdir intl
 	echo '*' > intl/.cvsignore
+	libtoolize --force --automake
 	autopoint --force
 	aclocal -I m4 -I gl/m4
 	autoconf
@@ -123,5 +124,6 @@
 	rm -f config.h.in~
 	find . -name Makefile.in -exec rm -f {} \; 
 	rm -f compile
+	rm -f ltmain.sh
 
 .PHONY: all gettextize potfiles clean
Index: configure.ac
===================================================================
RCS file: /sources/pspp/pspp/configure.ac,v
retrieving revision 1.49
diff -b -w -U3 -r1.49 configure.ac
--- configure.ac	14 Dec 2006 03:36:00 -0000	1.49
+++ configure.ac	3 Jan 2007 22:51:14 -0000
@@ -8,10 +8,11 @@
 
 dnl Checks for programs.
 AC_GNU_SOURCE
+gl_EARLY
 AC_PROG_CC
 AM_PROG_CC_C_O
-AC_PROG_RANLIB
-gl_EARLY
+AC_LIBTOOL_DLOPEN
+AC_PROG_LIBTOOL
 
 PSPP_ENABLE_WARNING(-Wdeclaration-after-statement)
 
@@ -40,6 +41,12 @@
 fi
 AM_CONDITIONAL(WITHGUI, test x"$with_gui" != x"no")
 
+AC_ARG_WITH(gui_tools, [  --with-gui-tools          build the gui developer tools])
+if test x"$with_gui_tools" == x"yes" ; then 
+	PKG_CHECK_MODULES(GLADE_UI, libgladeui-1.0)
+fi
+AM_CONDITIONAL(WITH_GUI_TOOLS, test x"$with_gui_tools" == x"yes")
+
 PSPP_OFF_T
 
 AC_CHECK_LIB(gslcblas,main,,[PSPP_REQUIRED_PREREQ([libgslcblas])])
Index: glade/automake.mk
===================================================================
RCS file: glade/automake.mk
diff -N glade/automake.mk
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ glade/automake.mk	3 Jan 2007 22:51:14 -0000
@@ -0,0 +1,19 @@
+## Process this file with automake to produce Makefile.in  -*- makefile -*-
+
+module_LTLIBRARIES = libglade-psppire.la
+
+moduledir = `pkg-config --variable=moduledir libgladeui-1.0`
+catalogdir = `pkg-config --variable=catalogdir libgladeui-1.0`
+
+libglade_psppire_la_SOURCES = \
+	glade/dialog.c \
+	glade/bbox.c \
+	src/ui/gui/psppire-dialog.c \
+	src/ui/gui/psppire-buttonbox.c
+
+nodist_catalog_DATA = \
+	glade/psppire.xml
+
+
+libglade_psppire_la_CFLAGS = $(GLADE_UI_CFLAGS) $(GLADE_CFLAGS) \
+	-I src/ui/gui
Index: glade/bbox.c
===================================================================
RCS file: glade/bbox.c
diff -N glade/bbox.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ glade/bbox.c	3 Jan 2007 22:51:14 -0000
@@ -0,0 +1,76 @@
+#include <glade.h>
+#include <gtk/gtk.h>
+
+#include "psppire-buttonbox.h"
+
+void
+glade_psppire_button_box_post_create (GladeWidgetAdaptor *adaptor,
+				      GObject            *object,
+				      GladeCreateReason   reason)
+{
+  GladeWidget  *box_widget;
+
+  PsppireButtonBox    *bbox = PSPPIRE_BUTTONBOX (object);
+
+  g_return_if_fail (PSPPIRE_IS_BUTTONBOX (bbox));
+
+  box_widget = glade_widget_get_from_gobject (GTK_WIDGET (bbox));
+  if (!box_widget)
+    return;
+
+
+  if (reason == GLADE_CREATE_USER)
+    {
+      /* HIG complient border-width defaults on dialogs */
+      glade_widget_property_set (box_widget, "border-width", 5);
+    }
+
+}
+
+
+GtkWidget *
+glade_psppire_button_box_get_internal_child (GladeWidgetAdaptor  *adaptor,
+					     PsppireButtonBox    *bbox,
+					     const gchar         *name)
+{
+#if 0
+  g_print ("%s\n", __FUNCTION__);
+#endif
+
+  return bbox;
+}
+
+
+
+
+void
+glade_psppire_button_box_set_property (GladeWidgetAdaptor *adaptor,
+				   GObject            *object,
+				   const gchar        *id,
+				   const GValue       *value)
+{
+#if 0
+  g_print ("%s(%p) Type=\"%s\" Id=\"%s\"\n", __FUNCTION__, object,
+	   G_OBJECT_TYPE_NAME( object ),
+	   id);
+#endif
+
+  GWA_GET_CLASS (GTK_TYPE_WINDOW)->set_property (adaptor, object,
+						 id, value);
+}
+
+
+
+
+GList *
+glade_psppire_button_box_get_children (GladeWidgetAdaptor  *adaptor,
+				       PsppireButtonBox  *bbox)
+{
+  GList *list = NULL;
+
+  g_return_val_if_fail (PSPPIRE_IS_BUTTONBOX (bbox), NULL);
+
+  list = glade_util_container_get_all_children (GTK_CONTAINER (bbox));
+
+  return list;
+}
Index: glade/dialog.c
===================================================================
RCS file: glade/dialog.c
diff -N glade/dialog.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ glade/dialog.c	3 Jan 2007 22:51:14 -0000
@@ -0,0 +1,106 @@
+#include <glib.h>
+#include <gtk/gtk.h>
+
+#include "psppire-dialog.h"
+
+#include <glade-gtk.h>
+
+
+void GLADEGTK_API
+glade_psppire_dialog_post_create (GladeWidgetAdaptor *adaptor,
+				  GObject            *object,
+				  GladeCreateReason   reason)
+{
+  GladeWidget *widget ;
+
+  GladeWidget  *box_widget;
+
+  PsppireDialog    *dialog = PSPPIRE_DIALOG (object);
+
+  g_return_if_fail (PSPPIRE_IS_DIALOG (dialog));
+
+  widget = glade_widget_get_from_gobject (GTK_WIDGET (dialog));
+  if (!widget)
+    return;
+
+
+  if (reason == GLADE_CREATE_USER)
+    {
+      /* HIG complient border-width defaults on dialogs */
+      glade_widget_property_set (widget, "border-width", 5);
+    }
+
+  box_widget = glade_widget_adaptor_create_internal
+    (widget, G_OBJECT(dialog->box),
+     "hbox", "dialog", FALSE, reason);
+
+  /* These properties are controlled by the GtkDialog style properties:
+   * "content-area-border", "button-spacing" and "action-area-border",
+   * so we must disable their use.
+   */
+  glade_widget_remove_property (box_widget, "border-width");
+
+  /* Only set these on the original create. */
+  if (reason == GLADE_CREATE_USER)
+    {
+
+      /* HIG complient spacing defaults on dialogs */
+      glade_widget_property_set (box_widget, "spacing", 2);
+
+      glade_widget_property_set (box_widget, "size", 2);
+
+    }
+
+
+  /* set a reasonable default size for a dialog */
+  gtk_window_set_default_size (GTK_WINDOW (dialog), 320, 260);
+
+}
+
+
+GtkWidget *
+glade_psppire_dialog_get_internal_child (GladeWidgetAdaptor  *adaptor,
+					 PsppireDialog       *dialog,
+					 const gchar         *name)
+{
+#if 0
+  g_print ("%s\n", __FUNCTION__);
+#endif
+
+  g_assert (0 == strcmp (name, "hbox"));
+
+  return dialog->box;
+}
+
+
+
+void
+glade_psppire_dialog_set_property (GladeWidgetAdaptor *adaptor,
+				   GObject            *object,
+				   const gchar        *id,
+				   const GValue       *value)
+{
+#if 0
+  g_print ("%s(%p) Type=\"%s\" Id=\"%s\"\n", __FUNCTION__, object,
+	   G_OBJECT_TYPE_NAME( object ),
+	   id);
+#endif
+
+  GWA_GET_CLASS (GTK_TYPE_WINDOW)->set_property (adaptor, object,
+						 id, value);
+}
+
+
+
+GList *
+glade_psppire_dialog_get_children (GladeWidgetAdaptor  *adaptor,
+				   PsppireDialog  *dialog)
+{
+  GList *list = NULL;
+
+  g_return_val_if_fail (PSPPIRE_IS_DIALOG (dialog), NULL);
+
+  list = glade_util_container_get_all_children (GTK_CONTAINER (dialog));
+
+  return list;
+}
Index: glade/psppire.xml
===================================================================
RCS file: glade/psppire.xml
diff -N glade/psppire.xml
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ glade/psppire.xml	3 Jan 2007 22:51:14 -0000
@@ -0,0 +1,54 @@
+<glade-catalog name="psppire" library="glade-psppire">
+
+  <init-function>my_catalog_init</init-function>
+
+  <glade-widget-classes>
+
+    <glade-widget-class toplevel="True" name="PsppireDialog" generic-name="psppire-dialog" title="Psppire Dialog Box">
+      <post-create-function>glade_psppire_dialog_post_create</post-create-function>
+      <get-internal-child-function>glade_psppire_dialog_get_internal_child</get-internal-child-function>
+
+      <get-children-function>glade_psppire_dialog_get_children</get-children-function>
+
+
+      <set-property-function>glade_psppire_dialog_set_property</set-property-function>
+
+      <properties>
+	<property optional-default="False" optional="True" id="default-width" 
+	default="0"/>
+	<property optional-default="False" optional="True" id="default-height" 
+	default="0"/>
+	<property id="has-separator" default="False"/>
+      </properties>
+
+    </glade-widget-class>
+
+
+    <glade-widget-class name="PsppireButtonBox" generic-name="psppire-buttonbox" title="Psppire Button Box">
+
+          <post-create-function>glade_psppire_button_box_post_create</post-create-function>
+          <get-children-function>glade_psppire_button_box_get_children</get-children-function>
+
+      <get-internal-child-function>glade_psppire_button_box_get_internal_child</get-internal-child-function>
+
+      <set-property-function>glade_psppire_button_box_set_property</set-property-function>
+
+
+          <packing-defaults>
+	    <parent-class name="GtkHBox">
+             <child-property id="expand" default="False"/>
+             <child-property id="fill" default="False"/>
+             <child-property id="pack-type" default="GTK_PACK_END"/>
+	    </parent-class>
+          </packing-defaults>
+    </glade-widget-class>
+
+  </glade-widget-classes>
+
+  <glade-widget-group name="psppire-widgets" title="PSPPIRE Specific Widgets">
+    <glade-widget-class-ref name="PsppireDialog"/>
+    <glade-widget-class-ref name="PsppireButtonBox"/>
+  </glade-widget-group>
+
+</glade-catalog>
+
Index: po/de.po
===================================================================
RCS file: /sources/pspp/pspp/po/de.po,v
retrieving revision 1.32
diff -b -w -U3 -r1.32 de.po
--- po/de.po	1 Jan 2007 01:44:33 -0000	1.32
+++ po/de.po	3 Jan 2007 22:51:16 -0000
@@ -10,7 +10,7 @@
 msgstr ""
 "Project-Id-Version: PSPP 0.4.2\n"
 "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n"
-"POT-Creation-Date: 2006-12-29 15:57+0900\n"
+"POT-Creation-Date: 2007-01-03 18:41+0900\n"
 "PO-Revision-Date: 2006-05-26 17:49+0800\n"
 "Last-Translator: John Darrington <john@darrington.wattle.id.au>\n"
 "Language-Team: German <pspp-dev@gnu.org>\n"
@@ -182,7 +182,7 @@
 "system-missing, zero, or negative.  These case(s) were ignored."
 msgstr ""
 
-#: src/data/dictionary.c:1201
+#: src/data/dictionary.c:1206
 msgid "Variable suffix too large."
 msgstr ""
 
@@ -309,13 +309,13 @@
 msgstr ""
 
 #: src/data/format.c:310 src/data/por-file-reader.c:489
-#: src/data/sys-file-reader.c:602 src/ui/gui/data-editor.glade:1558
+#: src/data/sys-file-reader.c:602 src/ui/gui/data-editor.glade:1084
 #: src/ui/gui/psppire-var-store.c:482
 msgid "String"
 msgstr "Zeichenkette"
 
 #: src/data/format.c:310 src/data/por-file-reader.c:489
-#: src/data/sys-file-reader.c:602 src/ui/gui/data-editor.glade:1419
+#: src/data/sys-file-reader.c:602 src/ui/gui/data-editor.glade:980
 #: src/ui/gui/psppire-var-store.c:475
 msgid "Numeric"
 msgstr "Nummer"
@@ -4102,334 +4102,343 @@
 msgid "Style of bevel around the custom entry button"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:368 src/ui/gui/data-editor.glade:531
+#: src/ui/gui/data-editor.c:391 src/ui/gui/data-editor.glade:428
 msgid "Open"
 msgstr "Öffen"
 
-#: src/ui/gui/data-editor.c:376
+#: src/ui/gui/data-editor.c:399
 msgid "System Files (*.sav)"
 msgstr "Systemedatein (*.sav)"
 
-#: src/ui/gui/data-editor.c:382
+#: src/ui/gui/data-editor.c:405
 msgid "Portable Files (*.por) "
 msgstr "Tragbardatein (*.por)"
 
-#: src/ui/gui/data-editor.c:388 src/ui/gui/syntax-editor.c:140
-#: src/ui/gui/syntax-editor.c:538
+#: src/ui/gui/data-editor.c:411 src/ui/gui/syntax-editor.c:141
+#: src/ui/gui/syntax-editor.c:544
 msgid "All Files"
 msgstr "Alle Datei"
 
-#: src/ui/gui/data-editor.c:466
+#: src/ui/gui/data-editor.c:487
 msgid "Font Selection"
 msgstr "Schriftwahlung"
 
-#: src/ui/gui/data-editor.glade:38 src/ui/gui/syntax-editor.glade:39
+#: src/ui/gui/data-editor.c:663
+msgid "Weights off"
+msgstr ""
+
+#: src/ui/gui/data-editor.c:676
+#, c-format
+msgid "Weight by %s"
+msgstr ""
+
+#: src/ui/gui/data-editor.glade:18 src/ui/gui/syntax-editor.glade:39
 msgid "_File"
 msgstr "_Datei"
 
-#: src/ui/gui/data-editor.glade:56 src/ui/gui/data-editor.glade:85
+#: 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:86
 msgid "_Syntax"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:64 src/ui/gui/data-editor.glade:93
-#: src/ui/gui/data-editor.glade:313 src/ui/gui/syntax-editor.glade:65
+#: src/ui/gui/data-editor.glade:40 src/ui/gui/data-editor.glade:66
+#: src/ui/gui/data-editor.glade:253 src/ui/gui/syntax-editor.glade:65
 #: src/ui/gui/syntax-editor.glade:95
 #, fuzzy
 msgid "_Data"
 msgstr "Daten"
 
-#: src/ui/gui/data-editor.glade:144 src/ui/gui/syntax-editor.glade:142
+#: src/ui/gui/data-editor.glade:115 src/ui/gui/syntax-editor.glade:142
 msgid "_Edit"
 msgstr "_Bearbeiten"
 
-#: src/ui/gui/data-editor.glade:181
+#: src/ui/gui/data-editor.glade:150
 #, fuzzy
 msgid "Paste _Variables"
 msgstr "Variableansicht"
 
-#: src/ui/gui/data-editor.glade:190
+#: src/ui/gui/data-editor.glade:158
 msgid "Cl_ear"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:206
+#: src/ui/gui/data-editor.glade:171
 #, fuzzy
 msgid "_Find"
 msgstr "_Datei"
 
-#: src/ui/gui/data-editor.glade:230
+#: src/ui/gui/data-editor.glade:182
 msgid "_View"
 msgstr "_Ansicht"
 
-#: src/ui/gui/data-editor.glade:239
+#: src/ui/gui/data-editor.glade:189
 msgid "Status Bar"
 msgstr "Statusleiste"
 
-#: src/ui/gui/data-editor.glade:247
+#: src/ui/gui/data-editor.glade:196
 msgid "Toolbars"
 msgstr "Werkzeugregal"
 
-#: src/ui/gui/data-editor.glade:261
+#: src/ui/gui/data-editor.glade:208
 msgid "Fonts"
 msgstr "Schrift"
 
-#: src/ui/gui/data-editor.glade:269
+#: src/ui/gui/data-editor.glade:215
 msgid "Grid Lines"
 msgstr "Glitten"
 
-#: src/ui/gui/data-editor.glade:278 src/ui/gui/data-editor.glade:831
-#: src/ui/gui/data-editor.glade:1993 src/ui/gui/data-editor.glade:2270
+#: src/ui/gui/data-editor.glade:223 src/ui/gui/data-editor.glade:633
+#: src/ui/gui/data-editor.glade:1343 src/ui/gui/data-editor.glade:1521
 msgid "Value Labels"
 msgstr "Werten"
 
-#: src/ui/gui/data-editor.glade:293
+#: src/ui/gui/data-editor.glade:235
 msgid "Data"
 msgstr "Daten"
 
-#: src/ui/gui/data-editor.glade:301 src/ui/gui/data-editor.glade:655
+#: src/ui/gui/data-editor.glade:242 src/ui/gui/data-editor.glade:514
 msgid "Variables"
 msgstr "Variableansicht"
 
-#: src/ui/gui/data-editor.glade:323 src/ui/gui/data-editor.glade:734
+#: src/ui/gui/data-editor.glade:261 src/ui/gui/data-editor.glade:568
 #, fuzzy
 msgid "Insert Variable"
 msgstr "Variableansicht"
 
-#: src/ui/gui/data-editor.glade:333
+#: src/ui/gui/data-editor.glade:270
 #, fuzzy
 msgid "Insert Cases"
 msgstr "_Stecken"
 
-#: src/ui/gui/data-editor.glade:343 src/ui/gui/data-editor.glade:638
-#: src/ui/gui/data-editor.glade:2835
+#: src/ui/gui/data-editor.glade:279 src/ui/gui/data-editor.glade:502
+#: src/ui/gui/data-editor.glade:1891
 msgid "Go To Case"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:372 src/ui/gui/data-editor.glade:2946
+#: src/ui/gui/data-editor.glade:294 src/ui/gui/data-editor.glade:1956
 msgid "Sort Cases"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:382
+#: src/ui/gui/data-editor.glade:303
 msgid "Transpose"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:391
+#: src/ui/gui/data-editor.glade:311
 msgid "Restructure"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:400
+#: src/ui/gui/data-editor.glade:319
 #, fuzzy
 msgid "Merge Files"
 msgstr "Alle Datei"
 
-#: src/ui/gui/data-editor.glade:409
+#: src/ui/gui/data-editor.glade:327
 msgid "Aggregate"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:425 src/ui/gui/data-editor.glade:765
+#: src/ui/gui/data-editor.glade:341 src/ui/gui/data-editor.glade:589
 #, fuzzy
 msgid "Split File"
 msgstr "Alle Datei"
 
-#: src/ui/gui/data-editor.glade:434 src/ui/gui/data-editor.glade:801
+#: src/ui/gui/data-editor.glade:349 src/ui/gui/data-editor.glade:613
 msgid "Select Cases"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:443 src/ui/gui/data-editor.glade:783
+#: src/ui/gui/data-editor.glade:357 src/ui/gui/data-editor.glade:601
 msgid "Weight Cases"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:455 src/ui/gui/syntax-editor.glade:232
+#: src/ui/gui/data-editor.glade:368 src/ui/gui/syntax-editor.glade:232
 #, fuzzy
 msgid "_Windows"
 msgstr "_Datei"
 
-#: src/ui/gui/data-editor.glade:465 src/ui/gui/syntax-editor.glade:242
+#: src/ui/gui/data-editor.glade:376 src/ui/gui/syntax-editor.glade:242
 msgid "_Minimise All Windows"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:478 src/ui/gui/syntax-editor.glade:254
+#: src/ui/gui/data-editor.glade:388 src/ui/gui/syntax-editor.glade:254
 msgid "_Help"
 msgstr "_Hilfe"
 
-#: src/ui/gui/data-editor.glade:487 src/ui/gui/syntax-editor.glade:263
+#: src/ui/gui/data-editor.glade:395 src/ui/gui/syntax-editor.glade:263
 msgid "_Reference Manual"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:495 src/ui/gui/syntax-editor.glade:271
+#: src/ui/gui/data-editor.glade:402 src/ui/gui/syntax-editor.glade:271
 msgid "_About"
 msgstr "_Info"
 
-#: src/ui/gui/data-editor.glade:547
+#: src/ui/gui/data-editor.glade:439
 msgid "Save"
 msgstr "Speichen"
 
-#: src/ui/gui/data-editor.glade:564
+#: src/ui/gui/data-editor.glade:451
 msgid "Print"
 msgstr "Drucken"
 
-#: src/ui/gui/data-editor.glade:593
+#: src/ui/gui/data-editor.glade:471
 msgid "Undo"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:609
+#: src/ui/gui/data-editor.glade:482
 msgid "Redo"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:686
+#: src/ui/gui/data-editor.glade:535
 msgid "Find"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:715
+#: src/ui/gui/data-editor.glade:555
 #, fuzzy
 msgid "Insert Case"
 msgstr "_Stecken"
 
-#: src/ui/gui/data-editor.glade:851
+#: src/ui/gui/data-editor.glade:646
 msgid "Use Sets"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:983
+#: src/ui/gui/data-editor.glade:728
 msgid "Data View"
 msgstr "Datenansicht"
 
-#: src/ui/gui/data-editor.glade:1031
+#: src/ui/gui/data-editor.glade:755
 msgid "Variable View"
 msgstr "Variableansicht"
 
-#: src/ui/gui/data-editor.glade:1079
+#: src/ui/gui/data-editor.glade:785
 msgid "Information Area"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1126
+#: src/ui/gui/data-editor.glade:804
 msgid "Processor Area"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1169
+#: src/ui/gui/data-editor.glade:829
 msgid "OMS Area"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1212
+#: src/ui/gui/data-editor.glade:854
 msgid "Case Counter Area"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1255
+#: src/ui/gui/data-editor.glade:879
 msgid "Filter Use Status Area"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1298
+#: src/ui/gui/data-editor.glade:904
 msgid "Weight Status Area"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1341
+#: src/ui/gui/data-editor.glade:930
 #, fuzzy
 msgid "Split File Status Area"
 msgstr "Alle Datei"
 
-#: src/ui/gui/data-editor.glade:1386
+#: src/ui/gui/data-editor.glade:959
 msgid "Variable Type"
 msgstr "Variableansicht"
 
-#: src/ui/gui/data-editor.glade:1438 src/ui/gui/psppire-var-store.c:476
+#: src/ui/gui/data-editor.glade:994 src/ui/gui/psppire-var-store.c:476
 msgid "Comma"
 msgstr "Komma"
 
-#: src/ui/gui/data-editor.glade:1458 src/ui/gui/psppire-var-store.c:477
+#: src/ui/gui/data-editor.glade:1009 src/ui/gui/psppire-var-store.c:477
 msgid "Dot"
 msgstr "Punkt"
 
-#: src/ui/gui/data-editor.glade:1478
+#: src/ui/gui/data-editor.glade:1024
 msgid "Scientific notation"
 msgstr "Wissenschaftlichnotation"
 
-#: src/ui/gui/data-editor.glade:1498 src/ui/gui/psppire-var-store.c:479
+#: src/ui/gui/data-editor.glade:1039 src/ui/gui/psppire-var-store.c:479
 msgid "Date"
 msgstr "Datum"
 
-#: src/ui/gui/data-editor.glade:1518 src/ui/gui/psppire-var-store.c:480
+#: src/ui/gui/data-editor.glade:1054 src/ui/gui/psppire-var-store.c:480
 msgid "Dollar"
 msgstr "Euro"
 
-#: src/ui/gui/data-editor.glade:1538
+#: src/ui/gui/data-editor.glade:1069
 msgid "Custom currency"
 msgstr "Spezialwährung"
 
-#: src/ui/gui/data-editor.glade:1683
+#: src/ui/gui/data-editor.glade:1161
 msgid "positive"
 msgstr "positiv"
 
-#: src/ui/gui/data-editor.glade:1708
+#: src/ui/gui/data-editor.glade:1167
 msgid "negative"
 msgstr "negativ"
 
-#: src/ui/gui/data-editor.glade:1737
+#: src/ui/gui/data-editor.glade:1180
 msgid "Sample"
 msgstr "Muster"
 
-#: src/ui/gui/data-editor.glade:1815
-msgid "Decimal Places:"
-msgstr "Dezimalstellen:"
-
-#: src/ui/gui/data-editor.glade:1892
+#: src/ui/gui/data-editor.glade:1230
 msgid "Width:"
 msgstr "Große:"
 
-#: src/ui/gui/data-editor.glade:2111
-msgid "Value:"
-msgstr "Werte:"
+#: src/ui/gui/data-editor.glade:1274
+msgid "Decimal Places:"
+msgstr "Dezimalstellen:"
 
-#: src/ui/gui/data-editor.glade:2139
+#: src/ui/gui/data-editor.glade:1441
 msgid "Value Label:"
 msgstr "Kennsatz:"
 
-#: src/ui/gui/data-editor.glade:2355
+#: src/ui/gui/data-editor.glade:1454
+msgid "Value:"
+msgstr "Werte:"
+
+#: src/ui/gui/data-editor.glade:1587
 msgid "Missing Values"
 msgstr "Lösewerten"
 
-#: src/ui/gui/data-editor.glade:2441
-msgid "_No missing values"
-msgstr "_Kein Lösewerten"
-
-#: src/ui/gui/data-editor.glade:2466
-msgid "_Discrete missing values"
-msgstr "_Diskret Lösewerten"
-
-#: src/ui/gui/data-editor.glade:2595
+#: src/ui/gui/data-editor.glade:1605
 msgid "_Range plus one optional discrete missing value"
 msgstr "Wertebereich und ein optional Lösewert"
 
-#: src/ui/gui/data-editor.glade:2632
+#: src/ui/gui/data-editor.glade:1629
 msgid "_Low:"
 msgstr "_Tief:"
 
-#: src/ui/gui/data-editor.glade:2691
+#: src/ui/gui/data-editor.glade:1658
 msgid "_High:"
 msgstr "_Hoch:"
 
-#: src/ui/gui/data-editor.glade:2765
+#: src/ui/gui/data-editor.glade:1699
 msgid "Di_screte value:"
 msgstr "Di_skretwerte"
 
-#: src/ui/gui/data-editor.glade:2891
+#: src/ui/gui/data-editor.glade:1746
+msgid "_No missing values"
+msgstr "_Kein Lösewerten"
+
+#: src/ui/gui/data-editor.glade:1763
+msgid "_Discrete missing values"
+msgstr "_Diskret Lösewerten"
+
+#: src/ui/gui/data-editor.glade:1908
 msgid "Case Number:"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:3063 src/ui/gui/sort-cases-dialog.c:279
+#: src/ui/gui/data-editor.glade:2017
+msgid "Sort by:"
+msgstr ""
+
+#: src/ui/gui/data-editor.glade:2066 src/ui/gui/sort-cases-dialog.c:279
 msgid "Ascending"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:3082 src/ui/gui/sort-cases-dialog.c:281
+#: src/ui/gui/data-editor.glade:2079 src/ui/gui/sort-cases-dialog.c:281
 msgid "Descending"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:3103
+#: src/ui/gui/data-editor.glade:2095
 msgid "Sort Order"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:3140
-msgid "Sort by:"
-msgstr ""
-
 #: src/ui/gui/helper.c:105
 msgid "Sorry. The help system hasn't yet been implemented."
 msgstr "Es gibt noch nicht kein Helpsysteme. Schade!"
@@ -4485,11 +4494,12 @@
 msgid "%d"
 msgstr ""
 
-#: src/ui/gui/psppire.glade:10
-msgid "This is pre-alpha software.  It probably will not work."
+#: src/ui/gui/psppire.glade:9
+#, fuzzy
+msgid "This is pre-alpha software.  Use at your own risk."
 msgstr "Diese Software ist vor-Alpha.  Wahrscheinlich Funktioniert es nicht."
 
-#: src/ui/gui/psppire.glade:11
+#: src/ui/gui/psppire.glade:10
 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"
@@ -4507,6 +4517,28 @@
 "    02110-1301, USA.\n"
 msgstr ""
 
+#: src/ui/gui/psppire.glade:87 src/ui/gui/psppire.glade:170
+#: src/ui/gui/weight-cases-dialog.c:87
+msgid "Do not weight cases"
+msgstr ""
+
+#: src/ui/gui/psppire.glade:96
+msgid "Weight cases by"
+msgstr ""
+
+#: src/ui/gui/psppire.glade:125
+#, fuzzy
+msgid "Frequency Variable"
+msgstr "Variableansicht"
+
+#: src/ui/gui/psppire.glade:163
+msgid "Current Status: "
+msgstr ""
+
+#: src/ui/gui/psppire-var-select.c:260 src/ui/gui/sort-cases-dialog.c:339
+msgid "Var"
+msgstr ""
+
 #: src/ui/gui/psppire-var-store.c:471
 msgid "None"
 msgstr "Keine"
@@ -4519,30 +4551,26 @@
 msgid "Custom"
 msgstr "Spezial"
 
-#: src/ui/gui/sort-cases-dialog.c:339
-msgid "Var"
-msgstr ""
-
 #: src/ui/gui/sort-cases-dialog.c:367
 msgid "Criteria"
 msgstr ""
 
-#: src/ui/gui/syntax-editor.c:79
+#: src/ui/gui/syntax-editor.c:80
 #, c-format
 msgid "Save contents of syntax editor to %s?"
 msgstr ""
 
-#: src/ui/gui/syntax-editor.c:126
+#: src/ui/gui/syntax-editor.c:127
 #, fuzzy
 msgid "Save Syntax"
 msgstr "Speichern unter"
 
-#: src/ui/gui/syntax-editor.c:134 src/ui/gui/syntax-editor.c:532
+#: src/ui/gui/syntax-editor.c:135 src/ui/gui/syntax-editor.c:538
 #, fuzzy
 msgid "Syntax Files (*.sps) "
 msgstr "Systemedatein (*.sav)"
 
-#: src/ui/gui/syntax-editor.c:524
+#: src/ui/gui/syntax-editor.c:530
 msgid "Open Syntax"
 msgstr ""
 
Index: po/pspp.pot
===================================================================
RCS file: /sources/pspp/pspp/po/pspp.pot,v
retrieving revision 1.116
diff -b -w -U3 -r1.116 pspp.pot
--- po/pspp.pot	1 Jan 2007 01:44:33 -0000	1.116
+++ po/pspp.pot	3 Jan 2007 22:51:17 -0000
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n"
-"POT-Creation-Date: 2006-12-29 15:57+0900\n"
+"POT-Creation-Date: 2007-01-03 18:41+0900\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -181,7 +181,7 @@
 "system-missing, zero, or negative.  These case(s) were ignored."
 msgstr ""
 
-#: src/data/dictionary.c:1201
+#: src/data/dictionary.c:1206
 msgid "Variable suffix too large."
 msgstr ""
 
@@ -308,13 +308,13 @@
 msgstr ""
 
 #: src/data/format.c:310 src/data/por-file-reader.c:489
-#: src/data/sys-file-reader.c:602 src/ui/gui/data-editor.glade:1558
+#: src/data/sys-file-reader.c:602 src/ui/gui/data-editor.glade:1084
 #: src/ui/gui/psppire-var-store.c:482
 msgid "String"
 msgstr ""
 
 #: src/data/format.c:310 src/data/por-file-reader.c:489
-#: src/data/sys-file-reader.c:602 src/ui/gui/data-editor.glade:1419
+#: src/data/sys-file-reader.c:602 src/ui/gui/data-editor.glade:980
 #: src/ui/gui/psppire-var-store.c:475
 msgid "Numeric"
 msgstr ""
@@ -4097,324 +4097,333 @@
 msgid "Style of bevel around the custom entry button"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:368 src/ui/gui/data-editor.glade:531
+#: src/ui/gui/data-editor.c:391 src/ui/gui/data-editor.glade:428
 msgid "Open"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:376
+#: src/ui/gui/data-editor.c:399
 msgid "System Files (*.sav)"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:382
+#: src/ui/gui/data-editor.c:405
 msgid "Portable Files (*.por) "
 msgstr ""
 
-#: src/ui/gui/data-editor.c:388 src/ui/gui/syntax-editor.c:140
-#: src/ui/gui/syntax-editor.c:538
+#: src/ui/gui/data-editor.c:411 src/ui/gui/syntax-editor.c:141
+#: src/ui/gui/syntax-editor.c:544
 msgid "All Files"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:466
+#: src/ui/gui/data-editor.c:487
 msgid "Font Selection"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:38 src/ui/gui/syntax-editor.glade:39
+#: src/ui/gui/data-editor.c:663
+msgid "Weights off"
+msgstr ""
+
+#: src/ui/gui/data-editor.c:676
+#, c-format
+msgid "Weight by %s"
+msgstr ""
+
+#: src/ui/gui/data-editor.glade:18 src/ui/gui/syntax-editor.glade:39
 msgid "_File"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:56 src/ui/gui/data-editor.glade:85
+#: 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:86
 msgid "_Syntax"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:64 src/ui/gui/data-editor.glade:93
-#: src/ui/gui/data-editor.glade:313 src/ui/gui/syntax-editor.glade:65
+#: src/ui/gui/data-editor.glade:40 src/ui/gui/data-editor.glade:66
+#: src/ui/gui/data-editor.glade:253 src/ui/gui/syntax-editor.glade:65
 #: src/ui/gui/syntax-editor.glade:95
 msgid "_Data"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:144 src/ui/gui/syntax-editor.glade:142
+#: src/ui/gui/data-editor.glade:115 src/ui/gui/syntax-editor.glade:142
 msgid "_Edit"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:181
+#: src/ui/gui/data-editor.glade:150
 msgid "Paste _Variables"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:190
+#: src/ui/gui/data-editor.glade:158
 msgid "Cl_ear"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:206
+#: src/ui/gui/data-editor.glade:171
 msgid "_Find"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:230
+#: src/ui/gui/data-editor.glade:182
 msgid "_View"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:239
+#: src/ui/gui/data-editor.glade:189
 msgid "Status Bar"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:247
+#: src/ui/gui/data-editor.glade:196
 msgid "Toolbars"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:261
+#: src/ui/gui/data-editor.glade:208
 msgid "Fonts"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:269
+#: src/ui/gui/data-editor.glade:215
 msgid "Grid Lines"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:278 src/ui/gui/data-editor.glade:831
-#: src/ui/gui/data-editor.glade:1993 src/ui/gui/data-editor.glade:2270
+#: src/ui/gui/data-editor.glade:223 src/ui/gui/data-editor.glade:633
+#: src/ui/gui/data-editor.glade:1343 src/ui/gui/data-editor.glade:1521
 msgid "Value Labels"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:293
+#: src/ui/gui/data-editor.glade:235
 msgid "Data"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:301 src/ui/gui/data-editor.glade:655
+#: src/ui/gui/data-editor.glade:242 src/ui/gui/data-editor.glade:514
 msgid "Variables"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:323 src/ui/gui/data-editor.glade:734
+#: src/ui/gui/data-editor.glade:261 src/ui/gui/data-editor.glade:568
 msgid "Insert Variable"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:333
+#: src/ui/gui/data-editor.glade:270
 msgid "Insert Cases"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:343 src/ui/gui/data-editor.glade:638
-#: src/ui/gui/data-editor.glade:2835
+#: src/ui/gui/data-editor.glade:279 src/ui/gui/data-editor.glade:502
+#: src/ui/gui/data-editor.glade:1891
 msgid "Go To Case"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:372 src/ui/gui/data-editor.glade:2946
+#: src/ui/gui/data-editor.glade:294 src/ui/gui/data-editor.glade:1956
 msgid "Sort Cases"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:382
+#: src/ui/gui/data-editor.glade:303
 msgid "Transpose"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:391
+#: src/ui/gui/data-editor.glade:311
 msgid "Restructure"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:400
+#: src/ui/gui/data-editor.glade:319
 msgid "Merge Files"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:409
+#: src/ui/gui/data-editor.glade:327
 msgid "Aggregate"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:425 src/ui/gui/data-editor.glade:765
+#: src/ui/gui/data-editor.glade:341 src/ui/gui/data-editor.glade:589
 msgid "Split File"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:434 src/ui/gui/data-editor.glade:801
+#: src/ui/gui/data-editor.glade:349 src/ui/gui/data-editor.glade:613
 msgid "Select Cases"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:443 src/ui/gui/data-editor.glade:783
+#: src/ui/gui/data-editor.glade:357 src/ui/gui/data-editor.glade:601
 msgid "Weight Cases"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:455 src/ui/gui/syntax-editor.glade:232
+#: src/ui/gui/data-editor.glade:368 src/ui/gui/syntax-editor.glade:232
 msgid "_Windows"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:465 src/ui/gui/syntax-editor.glade:242
+#: src/ui/gui/data-editor.glade:376 src/ui/gui/syntax-editor.glade:242
 msgid "_Minimise All Windows"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:478 src/ui/gui/syntax-editor.glade:254
+#: src/ui/gui/data-editor.glade:388 src/ui/gui/syntax-editor.glade:254
 msgid "_Help"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:487 src/ui/gui/syntax-editor.glade:263
+#: src/ui/gui/data-editor.glade:395 src/ui/gui/syntax-editor.glade:263
 msgid "_Reference Manual"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:495 src/ui/gui/syntax-editor.glade:271
+#: src/ui/gui/data-editor.glade:402 src/ui/gui/syntax-editor.glade:271
 msgid "_About"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:547
+#: src/ui/gui/data-editor.glade:439
 msgid "Save"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:564
+#: src/ui/gui/data-editor.glade:451
 msgid "Print"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:593
+#: src/ui/gui/data-editor.glade:471
 msgid "Undo"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:609
+#: src/ui/gui/data-editor.glade:482
 msgid "Redo"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:686
+#: src/ui/gui/data-editor.glade:535
 msgid "Find"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:715
+#: src/ui/gui/data-editor.glade:555
 msgid "Insert Case"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:851
+#: src/ui/gui/data-editor.glade:646
 msgid "Use Sets"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:983
+#: src/ui/gui/data-editor.glade:728
 msgid "Data View"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1031
+#: src/ui/gui/data-editor.glade:755
 msgid "Variable View"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1079
+#: src/ui/gui/data-editor.glade:785
 msgid "Information Area"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1126
+#: src/ui/gui/data-editor.glade:804
 msgid "Processor Area"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1169
+#: src/ui/gui/data-editor.glade:829
 msgid "OMS Area"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1212
+#: src/ui/gui/data-editor.glade:854
 msgid "Case Counter Area"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1255
+#: src/ui/gui/data-editor.glade:879
 msgid "Filter Use Status Area"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1298
+#: src/ui/gui/data-editor.glade:904
 msgid "Weight Status Area"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1341
+#: src/ui/gui/data-editor.glade:930
 msgid "Split File Status Area"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1386
+#: src/ui/gui/data-editor.glade:959
 msgid "Variable Type"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1438 src/ui/gui/psppire-var-store.c:476
+#: src/ui/gui/data-editor.glade:994 src/ui/gui/psppire-var-store.c:476
 msgid "Comma"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1458 src/ui/gui/psppire-var-store.c:477
+#: src/ui/gui/data-editor.glade:1009 src/ui/gui/psppire-var-store.c:477
 msgid "Dot"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1478
+#: src/ui/gui/data-editor.glade:1024
 msgid "Scientific notation"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1498 src/ui/gui/psppire-var-store.c:479
+#: src/ui/gui/data-editor.glade:1039 src/ui/gui/psppire-var-store.c:479
 msgid "Date"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1518 src/ui/gui/psppire-var-store.c:480
+#: src/ui/gui/data-editor.glade:1054 src/ui/gui/psppire-var-store.c:480
 msgid "Dollar"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1538
+#: src/ui/gui/data-editor.glade:1069
 msgid "Custom currency"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1683
+#: src/ui/gui/data-editor.glade:1161
 msgid "positive"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1708
+#: src/ui/gui/data-editor.glade:1167
 msgid "negative"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1737
+#: src/ui/gui/data-editor.glade:1180
 msgid "Sample"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1815
-msgid "Decimal Places:"
-msgstr ""
-
-#: src/ui/gui/data-editor.glade:1892
+#: src/ui/gui/data-editor.glade:1230
 msgid "Width:"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:2111
-msgid "Value:"
+#: src/ui/gui/data-editor.glade:1274
+msgid "Decimal Places:"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:2139
+#: src/ui/gui/data-editor.glade:1441
 msgid "Value Label:"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:2355
-msgid "Missing Values"
-msgstr ""
-
-#: src/ui/gui/data-editor.glade:2441
-msgid "_No missing values"
+#: src/ui/gui/data-editor.glade:1454
+msgid "Value:"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:2466
-msgid "_Discrete missing values"
+#: src/ui/gui/data-editor.glade:1587
+msgid "Missing Values"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:2595
+#: src/ui/gui/data-editor.glade:1605
 msgid "_Range plus one optional discrete missing value"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:2632
+#: src/ui/gui/data-editor.glade:1629
 msgid "_Low:"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:2691
+#: src/ui/gui/data-editor.glade:1658
 msgid "_High:"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:2765
+#: src/ui/gui/data-editor.glade:1699
 msgid "Di_screte value:"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:2891
+#: src/ui/gui/data-editor.glade:1746
+msgid "_No missing values"
+msgstr ""
+
+#: src/ui/gui/data-editor.glade:1763
+msgid "_Discrete missing values"
+msgstr ""
+
+#: src/ui/gui/data-editor.glade:1908
 msgid "Case Number:"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:3063 src/ui/gui/sort-cases-dialog.c:279
+#: src/ui/gui/data-editor.glade:2017
+msgid "Sort by:"
+msgstr ""
+
+#: src/ui/gui/data-editor.glade:2066 src/ui/gui/sort-cases-dialog.c:279
 msgid "Ascending"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:3082 src/ui/gui/sort-cases-dialog.c:281
+#: src/ui/gui/data-editor.glade:2079 src/ui/gui/sort-cases-dialog.c:281
 msgid "Descending"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:3103
+#: src/ui/gui/data-editor.glade:2095
 msgid "Sort Order"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:3140
-msgid "Sort by:"
-msgstr ""
-
 #: src/ui/gui/helper.c:105
 msgid "Sorry. The help system hasn't yet been implemented."
 msgstr ""
@@ -4470,11 +4479,11 @@
 msgid "%d"
 msgstr ""
 
-#: src/ui/gui/psppire.glade:10
-msgid "This is pre-alpha software.  It probably will not work."
+#: src/ui/gui/psppire.glade:9
+msgid "This is pre-alpha software.  Use at your own risk."
 msgstr ""
 
-#: src/ui/gui/psppire.glade:11
+#: src/ui/gui/psppire.glade:10
 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"
@@ -4492,6 +4501,27 @@
 "    02110-1301, USA.\n"
 msgstr ""
 
+#: src/ui/gui/psppire.glade:87 src/ui/gui/psppire.glade:170
+#: src/ui/gui/weight-cases-dialog.c:87
+msgid "Do not weight cases"
+msgstr ""
+
+#: src/ui/gui/psppire.glade:96
+msgid "Weight cases by"
+msgstr ""
+
+#: src/ui/gui/psppire.glade:125
+msgid "Frequency Variable"
+msgstr ""
+
+#: src/ui/gui/psppire.glade:163
+msgid "Current Status: "
+msgstr ""
+
+#: src/ui/gui/psppire-var-select.c:260 src/ui/gui/sort-cases-dialog.c:339
+msgid "Var"
+msgstr ""
+
 #: src/ui/gui/psppire-var-store.c:471
 msgid "None"
 msgstr ""
@@ -4504,28 +4534,24 @@
 msgid "Custom"
 msgstr ""
 
-#: src/ui/gui/sort-cases-dialog.c:339
-msgid "Var"
-msgstr ""
-
 #: src/ui/gui/sort-cases-dialog.c:367
 msgid "Criteria"
 msgstr ""
 
-#: src/ui/gui/syntax-editor.c:79
+#: src/ui/gui/syntax-editor.c:80
 #, c-format
 msgid "Save contents of syntax editor to %s?"
 msgstr ""
 
-#: src/ui/gui/syntax-editor.c:126
+#: src/ui/gui/syntax-editor.c:127
 msgid "Save Syntax"
 msgstr ""
 
-#: src/ui/gui/syntax-editor.c:134 src/ui/gui/syntax-editor.c:532
+#: src/ui/gui/syntax-editor.c:135 src/ui/gui/syntax-editor.c:538
 msgid "Syntax Files (*.sps) "
 msgstr ""
 
-#: src/ui/gui/syntax-editor.c:524
+#: src/ui/gui/syntax-editor.c:530
 msgid "Open Syntax"
 msgstr ""
 
Index: src/data/automake.mk
===================================================================
RCS file: /sources/pspp/pspp/src/data/automake.mk,v
retrieving revision 1.13
diff -b -w -U3 -r1.13 automake.mk
--- src/data/automake.mk	22 Dec 2006 11:12:14 -0000	1.13
+++ src/data/automake.mk	3 Jan 2007 22:51:17 -0000
@@ -17,6 +17,7 @@
 	src/data/casefilter.h \
 	src/data/casefile.h \
 	src/data/casefile.c \
+	src/data/casefile-factory.h \
 	src/data/casefile-private.h \
 	src/data/fastfile.c \
 	src/data/fastfile.h \
Index: src/ui/gui/about.c
===================================================================
RCS file: /sources/pspp/pspp/src/ui/gui/about.c,v
retrieving revision 1.4
diff -b -w -U3 -r1.4 about.c
--- src/ui/gui/about.c	30 Dec 2006 23:30:32 -0000	1.4
+++ src/ui/gui/about.c	3 Jan 2007 22:51:17 -0000
@@ -1,3 +1,23 @@
+/*
+    PSPPIRE --- A Graphical User Interface for PSPP
+    Copyright (C) 2006, 2007  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
+    the Free Software Foundation; either version 2 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, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+    02110-1301, USA. */
+
+
 #include <gtk/gtk.h>
 #include <glade/glade.h>
 
@@ -36,8 +56,7 @@
 
   gtk_window_set_keep_above (GTK_WINDOW (about), TRUE);
 
-
-  gtk_dialog_run (about);
+  gtk_dialog_run (GTK_DIALOG (about));
 
   gtk_widget_hide (about);
 }
Index: src/ui/gui/automake.mk
===================================================================
RCS file: /sources/pspp/pspp/src/ui/gui/automake.mk,v
retrieving revision 1.19
diff -b -w -U3 -r1.19 automake.mk
--- src/ui/gui/automake.mk	23 Dec 2006 09:03:45 -0000	1.19
+++ src/ui/gui/automake.mk	3 Jan 2007 22:51:17 -0000
@@ -1,13 +1,24 @@
 ## Process this file with automake to produce Makefile.in  -*- makefile -*-
 
+
+
 bin_PROGRAMS += src/ui/gui/psppire
 
+
 src_ui_gui_psppire_CFLAGS = $(GTK_CFLAGS) $(GLADE_CFLAGS) -Wall
 
 src_ui_gui_psppire_LDFLAGS = \
 	-export-dynamic 
 
+lib_LTLIBRARIES = src/ui/gui/libpsppire.la
+
+src_ui_gui_libpsppire_la_CFLAGS = $(GLADE_CFLAGS) 
+
+src_ui_gui_libpsppire_la_SOURCES = \
+	src/ui/gui/glade-register.c
+
 src_ui_gui_psppire_LDADD = \
+	-dlopen src/ui/gui/libpsppire.la \
 	lib/gtksheet/libgtksheet.a \
 	src/language/liblanguage.a \
 	src/ui/libuicommon.a \
@@ -21,7 +32,7 @@
 	src/libpspp/libpspp.a \
 	$(GTK_LIBS) \
 	$(GLADE_LIBS) \
-	$(top_builddir)/gl/libgl.a \
+	gl/libgl.la \
 	@LIBINTL@ @LIBREADLINE@
 
 src_ui_gui_psppiredir = $(pkgdatadir)
@@ -65,10 +76,16 @@
 	src/ui/gui/psppire-data-store.h \
 	src/ui/gui/psppire-dict.c \
 	src/ui/gui/psppire-dict.h \
+	src/ui/gui/psppire-dialog.c \
+	src/ui/gui/psppire-dialog.h \
+	src/ui/gui/psppire-buttonbox.c \
+	src/ui/gui/psppire-buttonbox.h \
 	src/ui/gui/psppire-object.c \
 	src/ui/gui/psppire-object.h \
 	src/ui/gui/psppire-var-store.c \
 	src/ui/gui/psppire-var-store.h \
+	src/ui/gui/psppire-var-select.h \
+	src/ui/gui/psppire-var-select.c \
 	src/ui/gui/sort-cases-dialog.c \
 	src/ui/gui/sort-cases-dialog.h \
 	src/ui/gui/syntax-editor.c \
@@ -81,4 +98,8 @@
 	src/ui/gui/var-sheet.h \
 	src/ui/gui/var-type-dialog.c \
 	src/ui/gui/var-type-dialog.h \
-	src/ui/gui/window-manager.c
+	src/ui/gui/weight-cases-dialog.c \
+	src/ui/gui/weight-cases-dialog.h \
+	src/ui/gui/window-manager.c \
+	src/ui/gui/window-manager.h
+
Index: src/ui/gui/data-editor.c
===================================================================
RCS file: /sources/pspp/pspp/src/ui/gui/data-editor.c,v
retrieving revision 1.9
diff -b -w -U3 -r1.9 data-editor.c
--- src/ui/gui/data-editor.c	3 Jan 2007 02:03:18 -0000	1.9
+++ src/ui/gui/data-editor.c	3 Jan 2007 22:51:17 -0000
@@ -1,6 +1,6 @@
 /*
     PSPPIRE --- A Graphical User Interface for PSPP
-    Copyright (C) 2006  Free Software Foundation
+    Copyright (C) 2006, 2007  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
@@ -29,6 +29,8 @@
 
 #include "helper.h"
 #include "about.h"
+#include "psppire-dialog.h"
+#include "psppire-var-select.h"
 
 #define _(msgid) gettext (msgid)
 #define N_(msgid) msgid
@@ -40,6 +42,8 @@
 #include "psppire-data-store.h"
 #include "psppire-var-store.h"
 
+#include "weight-cases-dialog.h"
+
 
 static void insert_variable (GtkCheckMenuItem *m, gpointer data);
 
@@ -55,6 +59,9 @@
 static void select_sheet (struct data_editor *de, guint page_num);
 
 
+/* Callback for when the dictionary changes its weights */
+static void on_weight_change (GObject *, gint, gpointer);
+
 static void data_var_select (GtkNotebook *notebook,
 			    GtkNotebookPage *page,
 			    guint page_num,
@@ -100,37 +107,7 @@
   return FALSE;
 }
 
-
-/* Callback for when the dictionary changes its weights */
-static void
-on_weight_change (GObject *o, gint weight_index, gpointer data)
-{
-  struct data_editor *de = data;
-  GtkWidget *weight_status_area =
-    get_widget_assert (de->xml, "weight-status-area");
-
-  if ( weight_index == -1 )
-    {
-      gtk_label_set_text (GTK_LABEL (weight_status_area), _("Weights off"));
-    }
-  else
-    {
-      GtkSheet *var_sheet =
-	GTK_SHEET (get_widget_assert (de->xml, "variable_sheet"));
-
-      PsppireVarStore *vs = PSPPIRE_VAR_STORE
-	(gtk_sheet_get_model (var_sheet) );
-
-      struct variable *var = psppire_dict_get_variable (vs->dict,
-							weight_index);
-
-      gchar *text = g_strdup_printf (_("Weight by %s"), var_get_name (var));
-
-      gtk_label_set_text (GTK_LABEL (weight_status_area), text);
-
-      g_free (text);
-    }
-}
+static void weight_cases_dialog (GObject *o, gpointer data);
 
 
 /*
@@ -161,6 +138,16 @@
 
   connect_help (de->xml);
 
+  de->invoke_weight_cases_dialog =
+    gtk_action_new ("weight-cases-dialog",
+		    _("Weights"),
+		    _("Weight cases by variable"),
+		    "pspp-weight-cases");
+
+
+  g_signal_connect (de->invoke_weight_cases_dialog, "activate",
+		    G_CALLBACK (weight_cases_dialog), de);
+
   e->window = GTK_WINDOW (get_widget_assert (de->xml, "data_editor"));
 
   g_signal_connect (get_widget_assert (de->xml,"file_new_data"),
@@ -195,6 +182,17 @@
 		    G_CALLBACK (insert_variable),
 		    de);
 
+  gtk_action_connect_proxy (de->invoke_weight_cases_dialog,
+			    get_widget_assert (de->xml, "data_weight-cases")
+			    );
+
+  /* 
+  g_signal_connect (get_widget_assert (de->xml,"data_weight-cases"),
+		    "activate",
+		    G_CALLBACK (weight_cases_dialog),
+		    de);
+  */
+
 
   g_signal_connect (get_widget_assert (de->xml,"help_about"),
 		    "activate",
@@ -275,6 +273,10 @@
 		    G_CALLBACK (value_labels_toggled), de);
 
 
+  gtk_action_connect_proxy (de->invoke_weight_cases_dialog,
+			    get_widget_assert (de->xml, "button-weight-cases")
+			    );
+
   g_signal_connect (get_widget_assert (de->xml, "file_quit"),
 		    "activate",
 		    G_CALLBACK (file_quit), de);
@@ -644,12 +646,9 @@
   GtkSheet *var_sheet =
     GTK_SHEET (get_widget_assert (de->xml, "variable_sheet"));
 
-
-
   PsppireVarStore *vs = PSPPIRE_VAR_STORE
     (gtk_sheet_get_model (var_sheet) );
 
-
   switch ( gtk_notebook_get_current_page ( GTK_NOTEBOOK (notebook)) )
     {
     case PAGE_VAR_SHEET:
@@ -671,7 +670,85 @@
     }
 
   psppire_dict_insert_variable (vs->dict, posn, NULL);
+}
+
 
+/* Callback for when the dictionary changes its weights */
+static void
+on_weight_change (GObject *o, gint weight_index, gpointer data)
+{
+  struct data_editor *de = data;
+  GtkWidget *weight_status_area =
+    get_widget_assert (de->xml, "weight-status-area");
+
+  if ( weight_index == -1 )
+    {
+      gtk_label_set_text (GTK_LABEL (weight_status_area), _("Weights off"));
+    }
+  else
+    {
+      GtkSheet *var_sheet =
+	GTK_SHEET (get_widget_assert (de->xml, "variable_sheet"));
+
+      PsppireVarStore *vs = PSPPIRE_VAR_STORE
+	(gtk_sheet_get_model (var_sheet) );
+
+      struct variable *var = psppire_dict_get_variable (vs->dict,
+							weight_index);
+
+      gchar *text = g_strdup_printf (_("Weight by %s"), var_get_name (var));
+
+      gtk_label_set_text (GTK_LABEL (weight_status_area), text);
+
+      g_free (text);
+    }
+}
+
+
+static void
+weight_cases_dialog (GObject *o, gpointer data)
+{
+  gint response;
+  struct data_editor *de = data;
+  GtkSheet *var_sheet =
+    GTK_SHEET (get_widget_assert (de->xml, "variable_sheet"));
+
+
+  GladeXML *xml = glade_xml_new (PKGDATADIR "/psppire.glade",
+				 "weight-cases-dialog", NULL);
+
+
+  GtkWidget *treeview =  get_widget_assert (xml, "treeview");
+  GtkWidget *entry =  get_widget_assert (xml, "entry1");
+
+
+  PsppireVarStore *vs = PSPPIRE_VAR_STORE (gtk_sheet_get_model (var_sheet));
+
+  PsppireVarSelect *select = psppire_var_select_new (treeview,
+						     entry, vs->dict);
+
+
+  PsppireDialog *dialog = create_weight_dialog (select, xml);
+
+  response = psppire_dialog_run (dialog);
+
+  g_object_unref (xml);
+
+  if (response == GTK_RESPONSE_OK)
+    {
+      const GList *list = psppire_var_select_get_variables (select);
+
+      g_assert ( g_list_length (list) <= 1 );
+
+      if ( list == NULL)
+	psppire_dict_set_weight_variable (select->dict, NULL);
+      else
+	{
+	  struct variable *var = list->data;
+
+	  psppire_dict_set_weight_variable (select->dict, var);
+	}
+    }
 }
 
 
Index: src/ui/gui/data-editor.glade
===================================================================
RCS file: /sources/pspp/pspp/src/ui/gui/data-editor.glade,v
retrieving revision 1.8
diff -b -w -U3 -r1.8 data-editor.glade
--- src/ui/gui/data-editor.glade	3 Jan 2007 02:03:18 -0000	1.8
+++ src/ui/gui/data-editor.glade	3 Jan 2007 22:51:18 -0000
@@ -351,9 +351,9 @@
                       </widget>
                     </child>
                     <child>
-                      <widget class="GtkMenuItem" id="weight_cases1">
+                      <widget class="GtkMenuItem" id="data_weight-cases">
                         <property name="visible">True</property>
-                        <property name="sensitive">False</property>
+                        <property name="sensitive">True</property>
                         <property name="label" translatable="yes">Weight Cases</property>
                         <property name="use_underline">True</property>
                       </widget>
@@ -597,7 +597,7 @@
                 <child>
                   <widget class="GtkToolButton" id="button-weight-cases">
                     <property name="visible">True</property>
-                    <property name="sensitive">False</property>
+                    <property name="sensitive">True</property>
                     <property name="tooltip" translatable="yes">Weight Cases</property>
                     <property name="use_underline">True</property>
                     <property name="stock_id">pspp-weight-cases</property>
Index: src/ui/gui/data-editor.h
===================================================================
RCS file: /sources/pspp/pspp/src/ui/gui/data-editor.h,v
retrieving revision 1.2
diff -b -w -U3 -r1.2 data-editor.h
--- src/ui/gui/data-editor.h	24 Dec 2006 22:49:18 -0000	1.2
+++ src/ui/gui/data-editor.h	3 Jan 2007 22:51:18 -0000
@@ -1,6 +1,6 @@
 /*
     PSPPIRE --- A Graphical User Interface for PSPP
-    Copyright (C) 2006  Free Software Foundation
+    Copyright (C) 2006, 2007  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
@@ -28,6 +28,7 @@
 struct data_editor
 {
   struct editor_window parent;
+  GtkAction *invoke_weight_cases_dialog;
   GladeXML *xml;
 };
 
Index: src/ui/gui/glade-register.c
===================================================================
RCS file: src/ui/gui/glade-register.c
diff -N src/ui/gui/glade-register.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/ui/gui/glade-register.c	3 Jan 2007 22:51:18 -0000
@@ -0,0 +1,33 @@
+#include <glade/glade-build.h>
+#include "psppire-dialog.h"
+#include "psppire-buttonbox.h"
+
+GLADE_MODULE_CHECK_INIT
+
+
+static GtkWidget *
+dialog_find_internal_child (GladeXML *xml,
+			    GtkWidget *parent,
+			    const gchar *childname)
+{
+  if (!strcmp(childname, "hbox"))
+    return PSPPIRE_DIALOG (parent)->box;
+
+  return NULL;
+}
+
+void
+glade_module_register_widgets (void)
+{
+  glade_register_widget (PSPPIRE_DIALOG_TYPE, NULL,
+			 glade_standard_build_children,
+			 dialog_find_internal_child);
+
+
+  glade_register_widget (PSPPIRE_BUTTONBOX_TYPE, NULL,
+			 glade_standard_build_children,
+			 NULL);
+}
+
+
+
Index: src/ui/gui/psppire-buttonbox.c
===================================================================
RCS file: src/ui/gui/psppire-buttonbox.c
diff -N src/ui/gui/psppire-buttonbox.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/ui/gui/psppire-buttonbox.c	3 Jan 2007 22:51:19 -0000
@@ -0,0 +1,120 @@
+
+#include <glib.h>
+#include <gtk/gtk.h>
+#include <gtk/gtksignal.h>
+#include "psppire-buttonbox.h"
+#include "psppire-dialog.h"
+
+static void psppire_buttonbox_class_init          (PsppireButtonBoxClass *);
+static void psppire_buttonbox_init                (PsppireButtonBox      *);
+
+
+GType
+psppire_button_box_get_type (void)
+{
+  static GType buttonbox_type = 0;
+
+  if (!buttonbox_type)
+    {
+      static const GTypeInfo buttonbox_info =
+      {
+	sizeof (PsppireButtonBoxClass),
+	NULL, /* base_init */
+        NULL, /* base_finalize */
+	(GClassInitFunc) psppire_buttonbox_class_init,
+        NULL, /* class_finalize */
+	NULL, /* class_data */
+        sizeof (PsppireButtonBox),
+	0,
+	(GInstanceInitFunc) psppire_buttonbox_init,
+      };
+
+      buttonbox_type = g_type_register_static (GTK_TYPE_VBUTTON_BOX,
+					    "PsppireButtonBox", &buttonbox_info, 0);
+    }
+
+  return buttonbox_type;
+}
+
+static GObjectClass     *parent_class = NULL;
+
+
+static void
+psppire_buttonbox_class_init (PsppireButtonBoxClass *class)
+{
+}
+
+static void
+close_dialog (GtkWidget *w, gpointer data)
+{
+  PsppireDialog *dialog;
+
+  dialog = PSPPIRE_DIALOG (gtk_widget_get_toplevel (w));
+
+  dialog->response = GTK_RESPONSE_CANCEL;
+
+  psppire_dialog_close (dialog);
+}
+
+static void
+ok_button_clicked (GtkWidget *w, gpointer data)
+{
+  PsppireDialog *dialog;
+
+  dialog = PSPPIRE_DIALOG (gtk_widget_get_toplevel (w));
+
+  dialog->response = GTK_RESPONSE_OK;
+
+  psppire_dialog_close (dialog);
+}
+
+
+static void
+refresh_clicked (GtkWidget *w, gpointer data)
+{
+  PsppireDialog *dialog;
+
+  dialog = PSPPIRE_DIALOG (gtk_widget_get_toplevel (w));
+
+  psppire_dialog_reload (dialog, data);
+}
+
+
+static void
+psppire_buttonbox_init (PsppireButtonBox *buttonbox)
+{
+  GtkWidget *button ;
+
+  button = gtk_button_new_from_stock (GTK_STOCK_OK);
+  gtk_box_pack_start_defaults (GTK_BOX (buttonbox), button);
+  g_signal_connect (button, "clicked", G_CALLBACK (ok_button_clicked), NULL);
+  gtk_widget_show (button);
+
+  button = gtk_button_new_from_stock (GTK_STOCK_CANCEL);
+  g_signal_connect (button, "clicked", G_CALLBACK (close_dialog), NULL);
+  gtk_box_pack_start_defaults (GTK_BOX (buttonbox), button);
+  gtk_widget_show (button);
+
+  button = gtk_button_new_from_stock (GTK_STOCK_REFRESH);
+  g_signal_connect (button, "clicked", G_CALLBACK (refresh_clicked), NULL);
+  gtk_box_pack_start_defaults (GTK_BOX (buttonbox), button);
+  gtk_widget_show (button);
+
+  button = gtk_button_new_from_stock (GTK_STOCK_HELP);
+  gtk_box_pack_start_defaults (GTK_BOX (buttonbox), button);
+  gtk_widget_show (button);
+
+  gtk_widget_show (buttonbox);
+}
+
+
+GtkWidget*
+psppire_buttonbox_new (void)
+{
+  PsppireButtonBox *buttonbox ;
+
+  buttonbox = g_object_new (psppire_button_box_get_type (), NULL);
+
+  return GTK_WIDGET (buttonbox) ;
+}
+
Index: src/ui/gui/psppire-buttonbox.h
===================================================================
RCS file: src/ui/gui/psppire-buttonbox.h
diff -N src/ui/gui/psppire-buttonbox.h
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/ui/gui/psppire-buttonbox.h	3 Jan 2007 22:51:19 -0000
@@ -0,0 +1,38 @@
+#ifndef __PSPPIRE_BUTTONBOX_H__
+#define __PSPPIRE_BUTTONBOX_H__
+
+
+#include <glib.h>
+#include <glib-object.h>
+#include <gtk/gtkvbbox.h>
+
+
+G_BEGIN_DECLS
+
+#define PSPPIRE_BUTTONBOX_TYPE            (psppire_button_box_get_type ())
+#define PSPPIRE_BUTTONBOX(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), PSPPIRE_BUTTONBOX_TYPE, PsppireButtonBox))
+#define PSPPIRE_BUTTONBOX_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), PSPPIRE_BUTTONBOX_TYPE, PsppireButtonBoxClass))
+#define PSPPIRE_IS_BUTTONBOX(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PSPPIRE_BUTTONBOX_TYPE))
+#define PSPPIRE_IS_BUTTONBOX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PSPPIRE_BUTTONBOX_TYPE))
+
+
+typedef struct _PsppireButtonBox       PsppireButtonBox;
+typedef struct _PsppireButtonBoxClass  PsppireButtonBoxClass;
+
+struct _PsppireButtonBox
+{
+  GtkVButtonBox parent;
+};
+
+struct _PsppireButtonBoxClass
+{
+  GtkVButtonBoxClass parent_class;
+};
+
+GType          psppire_button_box_get_type        (void);
+GtkWidget*     psppire_buttonbox_new             (void);
+
+G_END_DECLS
+
+#endif /* __PSPPIRE_BUTTONBOX_H__ */
+
Index: src/ui/gui/psppire-dialog.c
===================================================================
RCS file: src/ui/gui/psppire-dialog.c
diff -N src/ui/gui/psppire-dialog.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/ui/gui/psppire-dialog.c	3 Jan 2007 22:51:19 -0000
@@ -0,0 +1,152 @@
+
+#include <gtk/gtk.h>
+#include <gtk/gtksignal.h>
+#include "psppire-dialog.h"
+
+static void psppire_dialog_class_init          (PsppireDialogClass *);
+static void psppire_dialog_init                (PsppireDialog      *);
+
+
+enum  {DIALOG_REFRESH,
+       n_SIGNALS};
+
+static guint signal [n_SIGNALS];
+
+
+GType
+psppire_dialog_get_type (void)
+{
+  static GType dialog_type = 0;
+
+  if (!dialog_type)
+    {
+      static const GTypeInfo dialog_info =
+      {
+	sizeof (PsppireDialogClass),
+	NULL, /* base_init */
+        NULL, /* base_finalize */
+	(GClassInitFunc) psppire_dialog_class_init,
+        NULL, /* class_finalize */
+	NULL, /* class_data */
+        sizeof (PsppireDialog),
+	0,
+	(GInstanceInitFunc) psppire_dialog_init,
+      };
+
+      dialog_type = g_type_register_static (GTK_TYPE_WINDOW,
+					    "PsppireDialog", &dialog_info, 0);
+    }
+
+  return dialog_type;
+}
+
+
+
+static GObjectClass     *parent_class = NULL;
+
+
+static void
+psppire_dialog_finalize (GObject *object)
+{
+  PsppireDialog *dialog ;
+
+  g_return_if_fail (object != NULL);
+  g_return_if_fail (PSPPIRE_IS_DIALOG (object));
+
+  dialog = PSPPIRE_DIALOG (object);
+
+  if (G_OBJECT_CLASS (parent_class)->finalize)
+    G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+
+static void
+psppire_dialog_class_init (PsppireDialogClass *class)
+{
+  GObjectClass *object_class = (GObjectClass *) class;
+
+  signal [DIALOG_REFRESH] =
+    g_signal_new ("refresh",
+		  G_TYPE_FROM_CLASS (class),
+		  G_SIGNAL_RUN_FIRST,
+		  0,
+		  NULL, NULL,
+		  g_cclosure_marshal_VOID__VOID,
+		  G_TYPE_NONE,
+		  0);
+
+
+  object_class->finalize = psppire_dialog_finalize;
+}
+
+
+
+
+static void
+close_dialog (GtkWidget *w, gpointer data)
+{
+  PsppireDialog *dialog = data;
+
+  psppire_dialog_close (dialog);
+}
+
+void
+psppire_dialog_close (PsppireDialog *dialog)
+{
+  g_main_loop_quit (dialog->loop);
+  gtk_widget_hide (GTK_WIDGET (dialog));
+}
+
+
+static void
+delete_event_callback (GtkWidget *w, GdkEvent *e, gpointer data)
+{
+  close_dialog (w, data);
+}
+
+
+static void
+psppire_dialog_init (PsppireDialog *dialog)
+{
+  dialog->box = gtk_hbox_new (FALSE, 5);
+
+
+  gtk_container_add (GTK_CONTAINER (dialog), dialog->box);
+
+
+  g_signal_connect (G_OBJECT (dialog), "delete-event",
+		    G_CALLBACK (delete_event_callback),
+		    dialog);
+
+  gtk_widget_show_all (dialog->box);
+}
+
+
+GtkWidget*
+psppire_dialog_new (void)
+{
+  PsppireDialog *dialog ;
+
+  dialog = g_object_new (psppire_dialog_get_type (), NULL);
+
+  return GTK_WIDGET (dialog) ;
+}
+
+gint
+psppire_dialog_run (PsppireDialog *dialog)
+{
+  dialog->loop = g_main_loop_new (NULL, FALSE);
+
+  gtk_widget_show (GTK_WIDGET (dialog));
+
+  g_main_loop_run (dialog->loop);
+
+  return dialog->response;
+}
+
+
+void
+psppire_dialog_reload (PsppireDialog *dialog, gpointer data)
+{
+  g_signal_emit (dialog, signal [DIALOG_REFRESH], 0, data);
+}
Index: src/ui/gui/psppire-dialog.h
===================================================================
RCS file: src/ui/gui/psppire-dialog.h
diff -N src/ui/gui/psppire-dialog.h
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/ui/gui/psppire-dialog.h	3 Jan 2007 22:51:19 -0000
@@ -0,0 +1,47 @@
+#ifndef __PSPPIRE_DIALOG_H__
+#define __PSPPIRE_DIALOG_H__
+
+
+#include <glib.h>
+#include <glib-object.h>
+#include <gtk/gtkwindow.h>
+
+
+G_BEGIN_DECLS
+
+#define PSPPIRE_DIALOG_TYPE            (psppire_dialog_get_type ())
+#define PSPPIRE_DIALOG(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), PSPPIRE_DIALOG_TYPE, PsppireDialog))
+#define PSPPIRE_DIALOG_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), PSPPIRE_DIALOG_TYPE, PsppireDialogClass))
+#define PSPPIRE_IS_DIALOG(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PSPPIRE_DIALOG_TYPE))
+#define PSPPIRE_IS_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PSPPIRE_DIALOG_TYPE))
+
+
+typedef struct _PsppireDialog       PsppireDialog;
+typedef struct _PsppireDialogClass  PsppireDialogClass;
+
+struct _PsppireDialog
+{
+  GtkWindow window;
+  GtkWidget *box;
+
+  /* Private */
+  GMainLoop *loop;
+  gint response;
+};
+
+struct _PsppireDialogClass
+{
+  GtkWindowClass parent_class;
+};
+
+GType          psppire_dialog_get_type        (void);
+GtkWidget*     psppire_dialog_new             (void);
+void           psppire_dialog_close           (PsppireDialog *);
+void           psppire_dialog_reload          (PsppireDialog *, gpointer data);
+gint           psppire_dialog_run             (PsppireDialog *);
+
+
+G_END_DECLS
+
+#endif /* __PSPPIRE_DIALOG_H__ */
+
Index: src/ui/gui/psppire-dict.c
===================================================================
RCS file: /sources/pspp/pspp/src/ui/gui/psppire-dict.c,v
retrieving revision 1.21
diff -b -w -U3 -r1.21 psppire-dict.c
--- src/ui/gui/psppire-dict.c	3 Jan 2007 02:03:18 -0000	1.21
+++ src/ui/gui/psppire-dict.c	3 Jan 2007 22:51:19 -0000
@@ -331,7 +331,7 @@
 
 /* Return the IDXth variable */
 struct variable *
-psppire_dict_get_variable (PsppireDict *d, gint idx)
+psppire_dict_get_variable (const PsppireDict *d, gint idx)
 {
   g_return_val_if_fail (d, NULL);
   g_return_val_if_fail (d->dict, NULL);
@@ -645,3 +645,18 @@
 {
   dict_rename_var (dict->dict, v, text);
 }
+
+
+void
+psppire_dict_set_weight_variable (PsppireDict *dict, struct variable *v)
+{
+  g_return_if_fail (v == NULL || var_is_numeric (v));
+  dict_set_weight (dict->dict, v);
+}
+
+
+struct variable *
+psppire_dict_get_weight_variable (const PsppireDict *dict)
+{
+  return dict_get_weight (dict->dict);
+}
Index: src/ui/gui/psppire-dict.h
===================================================================
RCS file: /sources/pspp/pspp/src/ui/gui/psppire-dict.h,v
retrieving revision 1.13
diff -b -w -U3 -r1.13 psppire-dict.h
--- src/ui/gui/psppire-dict.h	1 Jan 2007 01:44:33 -0000	1.13
+++ src/ui/gui/psppire-dict.h	3 Jan 2007 22:51:19 -0000
@@ -82,7 +82,7 @@
 void psppire_dict_clear (PsppireDict *d);
 
 /* Return the IDXth variable */
-struct variable * psppire_dict_get_variable (PsppireDict *d, gint idx);
+struct variable * psppire_dict_get_variable (const PsppireDict *d, gint idx);
 
 /* Delete N variables beginning at FIRST */
 void psppire_dict_delete_variables (PsppireDict *d, gint first, gint n);
@@ -104,6 +104,9 @@
 
 void psppire_dict_replace_dictionary (PsppireDict *, struct dictionary *);
 
+void psppire_dict_set_weight_variable (PsppireDict *, struct variable *);
+struct variable * psppire_dict_get_weight_variable (const PsppireDict *);
+
 
 G_END_DECLS
 
Index: src/ui/gui/psppire-var-select.c
===================================================================
RCS file: src/ui/gui/psppire-var-select.c
diff -N src/ui/gui/psppire-var-select.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/ui/gui/psppire-var-select.c	3 Jan 2007 22:51:19 -0000
@@ -0,0 +1,289 @@
+/*
+    PSPPIRE --- A Graphical User Interface for PSPP
+    Copyright (C) 2007  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
+    the Free Software Foundation; either version 2 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, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+    02110-1301, USA. */
+
+#include <config.h>
+
+#include "psppire-var-select.h"
+#include "psppire-object.h"
+
+#include "psppire-dict.h"
+
+#include <gettext.h>
+
+#define _(msgid) gettext (msgid)
+#define N_(msgid) msgid
+
+
+/* This object is an attempt to abstract a situation commonly found in PSPP
+   dialogs, where two widgets (typically GtkTreeViews) contain a list
+   of variables,  and the variables may be selected by the user and
+   transfered to between the widgets, in preparation for some
+   operation.
+
+   Currently it assumes that the first widget is  GtkTreeView and the
+   second is a GtkEntry (as required for the Weight Cases dialog).
+   It needs to be generalized further to make  it useful.
+*/
+
+static void setup_dictionary_treeview (GtkTreeView *,
+				       const PsppireDict *,
+				       GtkSelectionMode);
+
+
+/* --- prototypes --- */
+static void psppire_var_select_class_init (PsppireVarSelectClass *);
+static void psppire_var_select_init	     (PsppireVarSelect *);
+static void psppire_var_select_finalize   (GObject *);
+
+
+enum  {VARIABLE_SELECTED,
+       DESELECT_ALL,
+       n_SIGNALS};
+
+static guint signal[n_SIGNALS];
+
+
+/* --- variables --- */
+static GObjectClass     *parent_class = NULL;
+
+/* --- functions --- */
+/**
+ * psppire_var_select_get_type:
+ * @returns: the type ID for accelerator groups.
+ */
+GType
+psppire_var_select_get_type (void)
+{
+  static GType object_type = 0;
+
+  if (!object_type)
+    {
+      static const GTypeInfo object_info = {
+	sizeof (PsppireVarSelectClass),
+	(GBaseInitFunc) NULL,
+	(GBaseFinalizeFunc) NULL,
+	(GClassInitFunc) psppire_var_select_class_init,
+	NULL,   /* class_finalize */
+	NULL,   /* class_data */
+	sizeof (PsppireVarSelect),
+	0,      /* n_preallocs */
+	(GInstanceInitFunc) psppire_var_select_init,
+      };
+
+      object_type = g_type_register_static (G_TYPE_PSPPIRE_OBJECT,
+					    "PsppireVarSelect",
+					    &object_info, 0);
+    }
+
+  return object_type;
+}
+
+
+static void
+psppire_var_select_class_init (PsppireVarSelectClass *class)
+{
+  GObjectClass *object_class = G_OBJECT_CLASS (class);
+
+  parent_class = g_type_class_peek_parent (class);
+
+
+  signal [VARIABLE_SELECTED] =
+    g_signal_new ("variable_selected",
+		  G_TYPE_FROM_CLASS (class),
+		  G_SIGNAL_RUN_FIRST,
+		  0,
+		  NULL, NULL,
+		  g_cclosure_marshal_VOID__INT,
+		  G_TYPE_NONE,
+		  1,
+		  G_TYPE_INT);
+
+
+  signal [DESELECT_ALL] =
+    g_signal_new ("deselect_all",
+		  G_TYPE_FROM_CLASS (class),
+		  G_SIGNAL_RUN_FIRST,
+		  0,
+		  NULL, NULL,
+		  g_cclosure_marshal_VOID__VOID,
+		  G_TYPE_NONE,
+		  0);
+
+  object_class->finalize = psppire_var_select_finalize;
+}
+
+static void
+psppire_var_select_finalize (GObject *object)
+{
+  PsppireVarSelect *vs = PSPPIRE_VAR_SELECT (object);
+
+  g_list_free (vs->list);
+
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static void
+psppire_var_select_init (PsppireVarSelect *vs)
+{
+  vs->list = NULL;
+  vs->mode = GTK_SELECTION_SINGLE;
+}
+
+/* Return list of all the currently selected variables */
+const GList *
+psppire_var_select_get_variables (PsppireVarSelect *vs)
+{
+  return vs->list;
+}
+
+
+static void
+add_variable_to_selection (PsppireVarSelect *vs, struct variable *var)
+{
+  gtk_entry_set_text (GTK_ENTRY (vs->dest), var_get_name (var) );
+
+  if ( vs->mode == GTK_SELECTION_SINGLE)
+    {
+      g_list_free (vs->list);
+      vs->list = NULL;
+    }
+  vs->list = g_list_append (vs->list, var);
+
+  g_signal_emit (vs, signal [VARIABLE_SELECTED], 0, var_get_dict_index (var));
+}
+
+
+/* Add VAR to the list of selected variables */
+void
+psppire_var_select_set_variable (PsppireVarSelect *vs,
+				 struct variable *var)
+{
+  add_variable_to_selection (vs, var);
+}
+
+
+static void
+on_source_activate (GtkTreeView       *tree_view,
+		    GtkTreePath       *path,
+		    GtkTreeViewColumn *column,
+		    gpointer           user_data)
+
+{
+  PsppireVarSelect *vs = user_data;
+  GtkTreeModel *model = gtk_tree_view_get_model (tree_view);
+
+  GtkTreeSelection *selection = gtk_tree_view_get_selection (tree_view);
+
+  GList *list = gtk_tree_selection_get_selected_rows (selection, &model);
+
+  while (list)
+    {
+      struct variable *var;
+      GtkTreeIter iter;
+      GtkTreePath *path = list->data;
+
+      gtk_tree_model_get_iter (model, &iter, path);
+
+      gtk_tree_model_get (model, &iter, DICT_TVM_COL_VAR, &var, -1);
+
+      add_variable_to_selection (vs, var);
+
+      list = list->next;
+    }
+}
+
+
+/**
+ * psppire_var_select_new:
+ * @returns: a new #PsppireVarSelect object
+ *
+ * Creates a new #PsppireVarSelect.
+ */
+PsppireVarSelect*
+psppire_var_select_new (GtkWidget *source, GtkWidget *dest,
+			const PsppireDict *dict)
+{
+  PsppireVarSelect *vs
+    = g_object_new (G_TYPE_PSPPIRE_VAR_SELECT, NULL);
+
+  GtkTreeSelection *src_selection;
+
+  vs->source = source;
+  vs->dest = dest;
+  vs->dict = dict;
+
+
+  setup_dictionary_treeview ( GTK_TREE_VIEW (source),
+			      vs->dict, vs->mode);
+
+
+  src_selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (vs->source));
+
+  g_signal_connect (source, "row-activated",
+		    G_CALLBACK (on_source_activate), vs);
+
+  return vs;
+}
+
+void
+psppire_var_select_deselect_all (PsppireVarSelect *vs)
+{
+  g_list_free (vs->list);
+  vs->list = NULL;
+
+  gtk_entry_set_text ( GTK_ENTRY(vs->dest), "");
+
+  g_signal_emit (vs, signal [DESELECT_ALL], 0);
+}
+
+
+static void
+setup_dictionary_treeview (GtkTreeView *treeview, const PsppireDict *dict,
+			   GtkSelectionMode mode)
+{
+  /* Set up the dictionary treeview */
+  GtkTreeViewColumn *col;
+
+  GtkTreeSelection *selection =
+    gtk_tree_view_get_selection (treeview);
+
+  GtkCellRenderer *renderer = gtk_cell_renderer_text_new ();
+
+
+  gtk_tree_view_set_model (GTK_TREE_VIEW (treeview), GTK_TREE_MODEL (dict));
+
+  col = gtk_tree_view_column_new_with_attributes (_("Var"),
+						  renderer,
+						  "text",
+						  0,
+						  NULL);
+
+  /* FIXME: make this a value in terms of character widths */
+  g_object_set (col, "min-width",  100, NULL);
+
+  gtk_tree_view_column_set_sizing (col, GTK_TREE_VIEW_COLUMN_FIXED);
+
+  gtk_tree_view_append_column (treeview, col);
+
+  gtk_tree_selection_set_mode (selection, mode);
+}
+
+
+
+
Index: src/ui/gui/psppire-var-select.h
===================================================================
RCS file: src/ui/gui/psppire-var-select.h
diff -N src/ui/gui/psppire-var-select.h
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/ui/gui/psppire-var-select.h	3 Jan 2007 22:51:19 -0000
@@ -0,0 +1,87 @@
+/*
+    PSPPIRE --- A Graphical User Interface for PSPP
+    Copyright (C) 2007  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
+    the Free Software Foundation; either version 2 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, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+    02110-1301, USA. */
+
+
+#ifndef __PSPPIRE_VAR_SELECT_H__
+#define __PSPPIRE_VAR_SELECT_H__
+
+
+#include <glib-object.h>
+#include <glib.h>
+
+#include <gtk/gtk.h>
+#include "psppire-dict.h"
+
+G_BEGIN_DECLS
+
+
+/* --- type macros --- */
+#define G_TYPE_PSPPIRE_VAR_SELECT              (psppire_var_select_get_type ())
+#define PSPPIRE_VAR_SELECT(object)           (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_PSPPIRE_VAR_SELECT, PsppireVarSelect))
+#define PSPPIRE_VAR_SELECT_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST ((klass), G_TYPE_PSPPIRE_VAR_SELECT, PsppireVarSelectClass))
+#define G_IS_PSPPIRE_VAR_SELECT(object)        (G_TYPE_CHECK_INSTANCE_TYPE ((object), G_TYPE_PSPPIRE_VAR_SELECT))
+#define G_IS_PSPPIRE_VAR_SELECT_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), G_TYPE_PSPPIRE_VAR_SELECT))
+#define PSPPIRE_VAR_SELECT_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS ((obj), G_TYPE_PSPPIRE_VAR_SELECT, PsppireVarSelectClass))
+
+
+
+/* --- typedefs & structures --- */
+typedef struct _PsppireVarSelect	   PsppireVarSelect;
+typedef struct _PsppireVarSelectClass PsppireVarSelectClass;
+
+struct _PsppireVarSelect
+{
+  GObject             parent;
+  const PsppireDict   *dict;
+
+
+  /* <private> */
+  GtkSelectionMode    mode;
+  GtkWidget           *source;
+  GtkWidget           *dest;
+  GList               *list;
+};
+
+struct _PsppireVarSelectClass
+{
+  GObjectClass parent_class;
+};
+
+
+/* -- PsppireVarSelect --- */
+GType          psppire_var_select_get_type (void);
+
+
+PsppireVarSelect* psppire_var_select_new    (GtkWidget *,
+					     GtkWidget *,
+					     const PsppireDict *);
+
+/* Remove all variables from the selection */
+void         psppire_var_select_deselect_all  (PsppireVarSelect *);
+
+/* Return a list of all the currently selected variables */
+const GList *psppire_var_select_get_variables (PsppireVarSelect *);
+
+/* Append VAR to the list of selected variables */
+void         psppire_var_select_set_variable  (PsppireVarSelect *,
+					       struct variable *var);
+
+G_END_DECLS
+
+#endif /* __PSPPIRE_VAR_SELECT_H__ */
Index: src/ui/gui/psppire.glade
===================================================================
RCS file: /sources/pspp/pspp/src/ui/gui/psppire.glade,v
retrieving revision 1.12
diff -b -w -U3 -r1.12 psppire.glade
--- src/ui/gui/psppire.glade	30 Dec 2006 23:30:32 -0000	1.12
+++ src/ui/gui/psppire.glade	3 Jan 2007 22:51:19 -0000
@@ -1,10 +1,9 @@
-<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
-<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
-
+<?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="GtkAboutDialog" id="aboutdialog1">
-  <property name="destroy_with_parent">False</property>
   <property name="name">PSPPire</property>
   <property name="copyright">Free Software Foundation</property>
   <property name="comments" translatable="yes">This is pre-alpha software.  Use at your own risk.</property>
@@ -23,10 +22,204 @@
     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
     02110-1301, USA.
 </property>
-  <property name="wrap_license">False</property>
   <property name="artists">Patrick Brunier</property>
-  <property name="translator_credits"></property>
   <property name="logo">pspplogo.png</property>
+    <child internal-child="vbox">
+      <widget class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <child>
+          <placeholder/>
+        </child>
+        <child internal-child="action_area">
+          <widget class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">GTK_PACK_END</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+  <widget class="PsppireDialog" id="weight-cases-dialog">
+    <property name="border_width">5</property>
+    <property name="title">Weight Case</property>
+    <property name="default_width">363</property>
+    <property name="default_height">188</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="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="treeview">
+                    <property name="visible">True</property>
+                    <property name="headers_visible">False</property>
+                    <property name="fixed_height_mode">True</property>
+                    <property name="show_expanders">False</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>
+                    <property name="label_xalign">0</property>
+                    <child>
+                      <widget class="GtkVBox" id="vbox2">
+                        <property name="visible">True</property>
+                        <property name="border_width">5</property>
+                        <child>
+                          <widget class="GtkRadioButton" id="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="active">True</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">Weight cases by</property>
+                            <property name="focus_on_click">False</property>
+                            <property name="draw_indicator">True</property>
+                            <property name="group">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="GtkAlignment" id="alignment1">
+                                <property name="visible">True</property>
+                                <child>
+                                  <widget class="GtkAspectFrame" id="aspectframe1">
+                                    <property name="visible">True</property>
+                                    <property name="label_xalign">0</property>
+                                    <property name="shadow_type">GTK_SHADOW_NONE</property>
+                                    <child>
+                                      <widget class="GtkButton" id="button1">
+                                        <property name="width_request">40</property>
+                                        <property name="height_request">40</property>
+                                        <property name="visible">True</property>
+                                        <child>
+                                          <widget class="GtkArrow" id="arrow1">
+                                            <property name="visible">True</property>
+                                          </widget>
+                                        </child>
+                                      </widget>
+                                    </child>
+                                  </widget>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                              </packing>
+                            </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="entry1">
+                                    <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>
+        </child>
+        <child>
+          <widget class="PsppireButtonBox" id="psppire-buttonbox1">
+            <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>
Index: src/ui/gui/weight-cases-dialog.c
===================================================================
RCS file: src/ui/gui/weight-cases-dialog.c
diff -N src/ui/gui/weight-cases-dialog.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/ui/gui/weight-cases-dialog.c	3 Jan 2007 22:51:19 -0000
@@ -0,0 +1,127 @@
+/*
+    PSPPIRE --- A Graphical User Interface for PSPP
+    Copyright (C) 2007  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
+    the Free Software Foundation; either version 2 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, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+    02110-1301, USA. */
+
+
+#include <config.h>
+
+#include "psppire-var-select.h"
+#include <glade/glade.h>
+#include "helper.h"
+#include <gettext.h>
+
+#include "psppire-var-store.h"
+#include "weight-cases-dialog.h"
+
+#include "psppire-dialog.h"
+
+#define _(msgid) gettext (msgid)
+#define N_(msgid) msgid
+
+static void
+refresh_var_select (PsppireVarSelect *vs)
+{
+  struct variable *weight;
+
+  psppire_var_select_deselect_all (vs);
+
+  weight = psppire_dict_get_weight_variable (vs->dict);
+
+  if ( weight )
+    psppire_var_select_set_variable (vs, weight);
+}
+
+
+static void
+on_refresh (GtkWidget *dialog, gpointer data)
+{
+  refresh_var_select (data);
+}
+
+
+static void
+on_radiobutton_toggle (GtkToggleButton *button, gpointer data)
+{
+  PsppireVarSelect *vs = data;
+  if ( gtk_toggle_button_get_active (button) )
+    {
+      psppire_var_select_deselect_all (vs);
+    }
+}
+
+
+/* Callback for when new variable is selected.
+   IDX is the dict index of the variable selected.
+   Updates the label and toggle buttons in the dialog box
+   to reflect this new selection. */
+static void
+select_var_callback (PsppireVarSelect *vs, gint idx, gpointer data)
+{
+  GladeXML * xml  = data;
+
+  GtkWidget *label =  get_widget_assert (xml, "weight-status-label");
+
+  GtkWidget *radiobutton2 =  get_widget_assert (xml, "radiobutton2");
+
+  struct variable *var = psppire_dict_get_variable (vs->dict, idx);
+
+  gtk_label_set_text (GTK_LABEL (label), var_get_name(var));
+
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radiobutton2), TRUE);
+}
+
+
+
+static void
+deselect_all (PsppireVarSelect *vs, gpointer data)
+{
+  GladeXML * xml  = data;
+
+  GtkWidget *label =  get_widget_assert (xml, "weight-status-label");
+
+  GtkWidget *radiobutton1 =  get_widget_assert (xml, "radiobutton1");
+
+  gtk_label_set_text (GTK_LABEL (label), _("Do not weight cases"));
+
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radiobutton1), TRUE);
+}
+
+
+
+PsppireDialog *
+create_weight_dialog (PsppireVarSelect *select, GladeXML *xml)
+{
+  GtkWidget *dialog =  get_widget_assert (xml, "weight-cases-dialog");
+  GtkWidget *radiobutton1 =  get_widget_assert (xml, "radiobutton1");
+
+  g_signal_connect (dialog, "refresh", G_CALLBACK (on_refresh), select);
+
+  g_signal_connect (select, "variable-selected",
+		    G_CALLBACK (select_var_callback), xml);
+
+  g_signal_connect (select, "deselect-all",
+		    G_CALLBACK (deselect_all), xml);
+
+  g_signal_connect (radiobutton1, "toggled",
+		    G_CALLBACK (on_radiobutton_toggle),
+		    select);
+
+  refresh_var_select (select);
+
+  return PSPPIRE_DIALOG (dialog);
+}
Index: src/ui/gui/weight-cases-dialog.h
===================================================================
RCS file: src/ui/gui/weight-cases-dialog.h
diff -N src/ui/gui/weight-cases-dialog.h
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/ui/gui/weight-cases-dialog.h	3 Jan 2007 22:51:19 -0000
@@ -0,0 +1,28 @@
+/*
+    PSPPIRE --- A Graphical User Interface for PSPP
+    Copyright (C) 2007  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
+    the Free Software Foundation; either version 2 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, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+    02110-1301, USA. */
+
+
+#ifndef WEIGHT_CASES_DIALOG_H
+#define WEIGHT_CASES_DIALOG_H
+
+#include "psppire-dialog.h"
+
+PsppireDialog * create_weight_dialog (PsppireVarSelect *, GladeXML *);
+
+#endif
Index: src/ui/terminal/.cvsignore
===================================================================
RCS file: /sources/pspp/pspp/src/ui/terminal/.cvsignore,v
retrieving revision 1.1
diff -b -w -U3 -r1.1 .cvsignore
--- src/ui/terminal/.cvsignore	24 Dec 2006 06:44:29 -0000	1.1
+++ src/ui/terminal/.cvsignore	3 Jan 2007 22:51:19 -0000
@@ -1 +1,2 @@
 pspp
+.libs
Index: src/ui/terminal/automake.mk
===================================================================
RCS file: /sources/pspp/pspp/src/ui/terminal/automake.mk,v
retrieving revision 1.13
diff -b -w -U3 -r1.13 automake.mk
--- src/ui/terminal/automake.mk	22 Dec 2006 11:12:15 -0000	1.13
+++ src/ui/terminal/automake.mk	3 Jan 2007 22:51:19 -0000
@@ -14,6 +14,7 @@
 
 bin_PROGRAMS += src/ui/terminal/pspp
 
+
 src_ui_terminal_pspp_SOURCES =
 
 src_ui_terminal_pspp_LDADD =					\
@@ -28,7 +29,7 @@
 	lib/gsl-extras/libgsl-extras.a	\
 	src/data/libdata.a \
 	src/libpspp/libpspp.a \
-	gl/libgl.a	\
 	$(LIBICONV) \
+	gl/libgl.la \
 	@LIBINTL@ @LIBREADLINE@
 
Index: tests/formats/.cvsignore
===================================================================
RCS file: /sources/pspp/pspp/tests/formats/.cvsignore,v
retrieving revision 1.1
diff -b -w -U3 -r1.1 .cvsignore
--- tests/formats/.cvsignore	24 Dec 2006 06:44:29 -0000	1.1
+++ tests/formats/.cvsignore	3 Jan 2007 22:51:19 -0000
@@ -1 +1,2 @@
 inexactify
+.libs
Index: tests/libpspp/.cvsignore
===================================================================
RCS file: /sources/pspp/pspp/tests/libpspp/.cvsignore,v
retrieving revision 1.1
diff -b -w -U3 -r1.1 .cvsignore
--- tests/libpspp/.cvsignore	24 Dec 2006 06:44:29 -0000	1.1
+++ tests/libpspp/.cvsignore	3 Jan 2007 22:51:19 -0000
@@ -1,2 +1,3 @@
 ll-test
 llx-test
+.libs
